PDA

Просмотр полной версии : Временные диаграммы (растактовки) "Ленинград-48" в ISIS Proteus



IgorR76
05.07.2020, 16:47
Мне часто задают вопросы о правильных осциллограммах работы компьютеров на Z80. Особенно в части ОЗУ, формировании RAS/CAS/WAIT, разделении доступа ЦП и видеоадаптера к ОЗУ. Поэтому решил сделать в Proteus симуляцию базовой версии "Ленинград-48", чтобы можно было увидеть и изучить любой сигнал схемы, и их взаимодействие.

Подобные работы уже были опубликованы (nedopc.org), но там схема "в лоб" не заработала, и приходилось отступать от оригинала. Мой же вариант предельно точно повторяет схему от micklab.ru, с сохранением нумерации элементов и выводов. Хорошо подойдёт для собирающих и восстанавливающих платы реальных компьютеров, имеющих осциллографы, но не знающих, что должен показать прибор на тех или иных выводах микросхем.

Некоторые изменения всё-таки внесены в схему, но они касаются базовых доработок платы для нормальной работы. А именно:
- входы DD4 (D0-D3) настроены под кварц 14.0 МГц;
- сигнал INT/ формируется не аналоговой цепочкой, а триггером, и имеет длину ровно 9 мкс;
- устранен конфликт шины данных, происходящий из-за "иголок" в сигнале CSRAM (Proteus выдавал предупреждение);
- ввиду отсутствия в Proteus симуляции динамического ОЗУ, блок микросхем 565РУ5 заменён на симулятор, с сохранением всех сигналов, подключаемым к РУ5;
- устранен дефект "неполный круг" значка (c);
- диоды в формирователе видео заменены на элемент "ИЛИ".
Все доп.элементы, применённые при доработках, обозначены как UD.

Самым тонким моментом является формирование сигнала WAIT/. Поскольку он вырабатывается только при работе программы в ОЗУ, было решено сделать виртуальный картридж для загрузки программы при старте компьютера. Я взял для этого простенькую игру "Sir Lancelot" - первую игру, которую я увидел на ZX-Spectrum. Она стартует сразу при запуске компьютера вместо Basic (ROM Basic48 слегка изменён), позволяет изучить тайминги WAIT/, и даже поиграть в неё.

Для просмотра нужных сигналов, выберите в меню слева пробник ( Probe / Voltage ), установите его на проводник, и добавьте пробник в окно анализатора (Digital Analysis) через контекстное меню (Add Traces...). В свойствах анализатора можно выбрать интересующий временной интервал для просмотра. После этого запустить расчёт (Simulate Graph).

Образец диаграммы:
http://igor76.ru/img/gr1.png (http://igor76.ru/img/gr1.png)

Спасибо Mick за схему и реплику "Ленинграда", участникам форума nedopc.org за dll Z80 и цветного монитора для Proteus.

Версия ISIS Proteus - 8.6sp2.

Схема-оригинал.
(http://micklab.ru/file/leningrad/Leningrad.pdf)
Проект Proteus: 73027

ivagor
05.07.2020, 18:51
IgorR76, можете выложить третью картинку (собственно с временными диаграммами) в нормальном качестве? Протеус у меня сейчас не установлен, но картинку интересно было бы посмотреть.

IgorR76
05.07.2020, 19:16
За низкое качество картинок и необходимость пользоваться внешними хостингами хозяину форума большой минус!


IgorR76, можете выложить третью картинку (собственно с временными диаграммами) в нормальном качестве? Протеус у меня сейчас не установлен, но картинку интересно было бы посмотреть.
Добавил в первое сообщение. Хотя лучше диаграммы смотреть в Протеусе. Линейка, масштаб, временной скролл - как в настоящем лог. анализаторе.

ivagor
05.07.2020, 19:35
Спасибо за картинку, а с реалам она сравнивалась? В частности интересует tRSH (RAS hold time, время удержания активного RAS относительно активного CAS). В советских компьютерах этот параметр часто не выдерживался, но тут как то совсем жестко.

IgorR76
05.07.2020, 19:49
Реала нет. Надеюсь, кто-то проверит точность симуляции. Но в этом месте (ras/cas) причины не доверять Протеусу нет. Именно так эти сигналы и сформируются в реальной машине.

IgorR76
17.07.2020, 14:28
Спасибо за картинку, а с реалам она сравнивалась? В частности интересует tRSH (RAS hold time, время удержания активного RAS относительно активного CAS). В советских компьютерах этот параметр часто не выдерживался, но тут как то совсем жестко.
Сняли осциллограммы с реала, настоящего Ленинграда-48. Как и предполагалось, Протеус всё симулирует точно.
Вот они:

ЖЕЛТЫЙ - RAS ; СИНИЙ - CAS.
Совместный доступ проца/видео:
http://igor76.ru/img/lenosc1.png

Отображение BORDER. Только проц:
http://igor76.ru/img/lenosc2.png

PS. Оказываю помощь в запуске, восстановлении и ремонте любой техники. Недорого и качественно. Вопросы в личку.

NEO SPECTRUMAN
15.11.2020, 00:51
а готового пентагона в протеусе
случаем уже нема?

y-dmitry
31.05.2021, 14:41
Коллеги, подскажите как воспользоваться этим решением?

Ранее с Proteus-ом не сталкивался.
Указанную версию скачал, установил и стал открывать проект, но в ответ получил "град" сообщений об отсутствии каких-то библиотек.
Собираю Ленинград-1 с осцилографом в руках, а эпюры сигналов только из книжки по настройке, сделанные от руки.
Подскажите как этим решением пользоваться.

IgorR76
31.05.2021, 14:53
y-dmitry, какие именно ошибки?

y-dmitry
31.05.2021, 18:05
y-dmitry, какие именно ошибки?

По ссылке находятся скриншоты. Нумерация скринов сделана согласно очерёдности появления сообщений.
https://disk.yandex.ru/d/9pd0CUVrJ7hnHw

IgorR76
31.05.2021, 18:26
Предположу, что что-то не так с Протеусом. Плохо установился, дистрибутив неполный/с ошибками...
Попробуйте другую версию. К этому проекту такие ошибки вряд ли имеют отношение.
А симуляция то при этом запускается?

y-dmitry
31.05.2021, 21:24
Предположу, что что-то не так с Протеусом. Плохо установился, дистрибутив неполный/с ошибками...
Попробуйте другую версию. К этому проекту такие ошибки вряд ли имеют отношение.
А симуляция то при этом запускается?

Понять бы еще как симуляцию запускать.

- - - Добавлено - - -

Посмотрел видео по Proteus. Увы, времени на изучение этой проги нету.
Буду признателен, если вы, IgorR76, сделаете скрины с эпюрами и параметрами сигналов из программы.

- - - Добавлено - - -

Так. Попробовал запустить от имени Администратора. Прога меня не отругала и проект открылся без проблем.
Что делать дальше?

- - - Добавлено - - -

Вроде что-то получилось, но из за не знания принципов работы программы можно считать, что ничего не получилось, стало только сложнее и запутанее.

IgorR76, нужны пояснения.

- - - Добавлено - - -

Так. Победа. Я кое с чем разобрался.
Теперь нужно понять как считать частоту и амплитуду.

https://imageup.ru/img98/3748986/screenshot_1.jpg (https://imageup.ru/img98/3748986/screenshot_1.jpg.html)

IgorR76
31.05.2021, 22:06
y-dmitry, поздравляю! Движетесь в правильном направлении.

y-dmitry
31.05.2021, 22:16
y-dmitry, поздравляю! Движетесь в правильном направлении.

Подскажите как снять показания частоты сигнала (или период) и амплитуды.

IgorR76
01.06.2021, 00:35
y-dmitry, это относится только к Протеусу, и это оффтоп в этой теме. Здесь обсуждаем Ленинград и его растактовки.

y-dmitry
01.06.2021, 08:40
y-dmitry, это относится только к Протеусу, и это оффтоп в этой теме. Здесь обсуждаем Ленинград и его растактовки.

Спасибо за помощь. Тогда вопрос: почему у "растактовок" сдвинуты фазы (RAS и /RAS), у TI, H0, H1 не совпадают фронты, у некоторых пар сигналов (прямой и инверсный) разная длительность сигналов?
При "игре" я увеличил масштаб для изучения формы сигнала.
Я так понимаю, что польза от этого только, что бы представлять форму сигнала при его реальном исследовании и при исследовании сложных сигналов работы с памятью (нужно иметь представление о форме сигнала).
К сожалению измерить параметры сигналов в программе не получилось.

Добавлю скриншот

https://imageup.ru/img61/thumb/0113749133.jpg (https://imageup.ru/img61/3749133/011.jpg.html)

IgorR76
01.06.2021, 10:59
y-dmitry, опять же, этот вопрос фундаментальный, и к Ленинграду не относится.
Посмотрите схему. Инвертирование сигналов происходит логическим элементом. А он вносит задержку распространения. Протеус это учитывает. Синхронные схемы надо проектировать специально.
Ленинград асинхронный.

Амплитуды большинства реальных сигналов — 3...5в. В Протеусе применена цифровая симуляция имс мелкой логики, которая не учитывает аналоговые процессы и их амплитуды.

Больше оффтопить не буду. Найдите/заведите тему про Протеус и теорию схемотехники, там задавайте такие вопросы.

Михаил Каа
01.06.2021, 11:17
Не использовал Протеус несколько лет, но насколько помню при симуляции цифры не обсчитываются некоторые "аналоговые эффекты" (для ускорения вычислений, все зависит от используемой модели компонента и настроек симуляции).
То есть в общем то он покажет вполне адекватную картину, но на реальном осциллографе будет выглядеть несколько иначе.
Например: на графиках идеальные фронты, они в реальности будут не такие, но время между ними переданы (рассчитаны) точно.

y-dmitry
01.06.2021, 11:52
y-dmitry, опять же, этот вопрос фундаментальный, и к Ленинграду не относится.
Посмотрите схему. Инвертирование сигналов происходит логическим элементом. А он вносит задержку распространения. Протеус это учитывает. Синхронные схемы надо проектировать специально.
Ленинград асинхронный.

Амплитуды большинства реальных сигналов — 3...5в. В Протеусе применена цифровая симуляция имс мелкой логики, которая не учитывает аналоговые процессы и их амплитуды.

Больше оффтопить не буду. Найдите/заведите тему про Протеус и теорию схемотехники, там задавайте такие вопросы.

Я про Ленинград-1 и спрашиваю, поскольку его собираю сейчас с осцилографом в руках. Где оффтоп ?!
Вы это выложили для того что бы помочь таким как я или самоутвердиться ?

Я вас благодарю за ваше усердие и труд. Но ваше решение не подошло для человека, собирающего Ленинград-1 с осцилографом в руках.
Еще раз спасибо за помощь и поддержку.

- - - Добавлено - - -


Не использовал Протеус несколько лет, но насколько помню при симуляции цифры не обсчитываются некоторые "аналоговые эффекты" (для ускорения вычислений, все зависит от используемой модели компонента и настроек симуляции).
То есть в общем то он покажет вполне адекватную картину, но на реальном осциллографе будет выглядеть несколько иначе.
Например: на графиках идеальные фронты, они в реальности будут не такие, но время между ними переданы (рассчитаны) точно.

Вполне согласен. Использование разной элементной базы объясняет многое. Идеальной картины не будет даже при серийном производстве. Притом не учитывается время задержки у разных серий и производителей логических микросхем.
Так что остаётся один способ, самому снимать эпюры и публиковать их в отдельной ветке. Благо осцилограф цифровой и может сохранять скрины и 2-х канальный (позволит сравнивать сигналы). Есть и Китайский логический анализатор.
Попробую, может получиться.
Идея возникла очень давно, после прочтения книжки по сборке и настройке Ленинграда-1 с эпюрами сигналов, сделанных автором от руки.
Это может быть небольшим образовательным материалом для желающих разобраться с ZX, а не собирать его как DIY.

IgorR76
01.06.2021, 12:06
y-dmitry, всегда пожалуйста!

апро
16.12.2021, 21:46
Может кто скажет почему сигнал _WR используется только для записи в порт, а для записи в RAM применяется _WE формируемый из _MREQ, _RAS, _H1, _RD, _RFSH . Осциллограммы _WR и _WE одинаковы, только _WE более грязный(иголки). В чём фишка замены _WR на _WE?

Shofer
02.03.2023, 13:39
Может кто скажет почему сигнал _WR используется только для записи в порт, а для записи в RAM применяется _WE формируемый из _MREQ, _RAS, _H1, _RD, _RFSH . Осциллограммы _WR и _WE одинаковы, только _WE более грязный(иголки). В чём фишка замены _WR на _WE?
Смысл в том, чтобы увеличить время и положение активного состояния сигнала записи, то есть этого псевдоWR. Если проц выставляет MREQ, то это либо RD, либо WR, либо RFSH. Соответственно, если сделать MREQ=0, RD=1, RFSH=1, то это будет тот же WR, но с немножко другим положением. В ленинградоподобных компах работа с памятью сделана не так, как надо процу, а Т1=ПРОЦ, Т2=ЧТЕНИЕ БАЙТА ПИКСЕЛЕЙ, Т3=ПРОЦ, Т4=ЧТЕНИЕ БАЙТА АТРИБУТОВ. Поэтому используют неRD и неRFSH. Так точно запишутся данные. А WR не меняется на WE, а WE состоит из этих сигналов, чтобы запись происходила лишь тогда, когда можно, а не когда проц захотел.
Вот накидал диаграмму. Может кому ещё пригодится.

https://disk.yandex.ru/i/RU1IhYbhBZ8SOA

Rio444
02.03.2023, 15:22
Shofer, очень даже пригодится!
Если возможно добавить, для полноты картины не хватает информации, когда выставляются адреса: процессором, мультиплексором CPU/дисплей, мультиплексором RAS/CAS.

Кстати наткнулся на похожую диаграмму. Много раз заходил на сайт, но в упор её не видел)))

https://pic.maxiol.com/images2/1677758634.781442638.leningradscreentimi.gif
Сайт всем известен http://sblive.narod.ru/ZX-Spectrum/Leningrad48k/Leningrad48k.htm

Она конечно больше для понимания как формируется изображение. Сигналов доступа к памяти на ней нет.

- - - Добавлено - - -

Shofer, заметил небольшую неточность на диаграмме.
WRBUF - сигнал, по которому данные читаются из памяти и пишутся в промежуточный буфер между памятью и CPU.
Чтение происходит по положительному фронту инверсии этого сигнала - /WRBUF
И думаю стоит добавить, что запись в память происходит по отрицательному фронту /CAS (если /WERAM = 0).
Если, конечно, я сам не ошибаюсь?

И, если я правильно понял схему, запись в память происходит только по необходимости (т.е. запросу CPU), а чтение из неё в буфер постоянно. А там уже процессор сам решает, прочитать эти данные из буфера, или нет.

Shofer
02.03.2023, 16:06
Адрес проц выставляет от начала первого такта, то есть по фронту, а снимает по спаду 3-го такта, то есть адрес стоит на шине 2,5 такта. Это в идеале, в Ленинграде на эти даташитовские такты накладывается своя регуляция сигналом Н1. На моей диаграмме указано, когда доступ имеет проц, когда ВК. Старший/младший переключает неинвертированный RAS. Низкий /RAS защёлкнул в РУшках младший адрес, потом низкий /CAS защёлкнул старшую часть и в этот момент РУшка выбирается, то есть спад /CAS можно считать за CSRAM. В этот момент РУшка выдаёт/принимает данные. Если посмотреть на диаграмму, то как раз в эти моменты активны сигналы записи (WERAM) и чтения (WRBUF, SCR и /Н2).

- - - Добавлено - - -



WRBUF - сигнал, по которому данные читаются из памяти и пишутся в промежуточный буфер между памятью и CPU.
Чтение происходит по положительному фронту инверсии этого сигнала - /WRBUF
На самом деле, во-первых, ИР22 работает не по фронту, а по уровню, то есть пока на 11 пине высокий, на выходах тоже самое, а во-вторых, инверсия или неиверсия - на разных схемах по-разному, из-за того, что наверно ИР23 кто-то ставил, либо из-за несинхронности схемы, которую собирали из чего попало, что было под рукой .

- - - Добавлено - - -


И, если я правильно понял схему, запись в память происходит только по необходимости (т.е. запросу CPU), а чтение из неё в буфер постоянно. А там уже процессор сам решает, прочитать эти данные из буфера, или нет.
Именно так

Rio444
02.03.2023, 18:04
На самом деле, во-первых, ИР22 работает не по фронту, а по уровню, то есть пока на 11 пине высокий, на выходах тоже самое, а во-вторых, инверсия или неиверсия - на разных схемах по-разному, из-за того, что наверно ИР23 кто-то ставил, либо из-за несинхронности схемы, которую собирали из чего попало, что было под рукой .
Вы абсолютно правы! Это у Прусака в схеме ошибка. У него на ИР22 подаётся инверсный /WRBUF.
Посмотрел схемы из других источников, там всё правильно, WRBUFF.