PDA

Просмотр полной версии : Потактовый клон i8080 на FPGA/CPLD



Страницы : [1] 2

HardWareMan
02.05.2014, 18:57
Давно загорелся идеей клона КР580ВМ80 на CPLD. А при наличии документа Intel 8080 Microcomputer Systems Users Manual просто сам Б-г велел.

Основные достоинства, которые хочется получить: одно питание, одна тактовая последовательность (действительно, при анализе тактовая последовательность Ф1 не обязательна, однако если повторять еще и задержки шины, то ее придется использовать), точная растактовка, возможно более высокая рабочая скорость.

Я знаю, что есть куча готовых реализаций, но они все не наши. К тому же, хочется все сделать самому. Отправная точка это растактовки из документа, которые я свел в таблицу (см. вложение), циклограмма и блок-схема:
http://savepic.net/5339959.png
http://savepic.net/5330743.png

Голосуем.

Мое зеркало опробованных моделей тут (http://hwm.us.to/vm80/).
vslav пилит свою ветку тут (https://github.com/1801BM1/vm80a), есть особые фишки, вроде одной тактовой фазы.

ivagor
02.05.2014, 20:12
Я знаю, что есть куча готовых реализаций, но они все не наши.
А вариант b2mа?

HardWareMan
02.05.2014, 20:21
А вариант b2mа?
А он сам писал или использовал готовый? К тому же, ЕМНИП у него он для внутреннего использования, а не как отдельный чип. А я хочу получить именно автономный чип с Pin-to-Pin совместимостью.

Andrey_Korabelev
02.05.2014, 21:21
Прикидки есть по количеству макроселов?
Подумалось, что делать логику хардварную надо не в лоб, а реализовать в CPLD исполнитель некоего упрощенного микрокода и поставить микросхему ПЗУ (рядом с CPLD на платке-адаптере). Это будет комплексное программно-аппаратное решение.
...И тут мне что-то замечталось. Например реализовать в кремнии чип, который можно будет поставить, например в ПК8000, чтобы превратить его... в MSX! Имея более низкую тактовую частоту, скорости Z80 можно достичь уменьшением количества тактов на некоторые команды. Видеопроцессор можно эмулировать, подготавливая данные картинки внутри кристалла и перенося их в видеоозу используя пустые циклы шины... Нафига оно надо, конечно, но как концепт;)
Вообщем, HardWareMan, действуй!

HardWareMan
02.05.2014, 22:11
Нет, еще не прикидывал. Зачем городить ПЗУ сбоку? К тому же, в качестве бонуса, для любителей ЮТов и РКшек можно будет встроить ГФ24 и ВК38 внутрь. Тем самым избавившись от +12В и -5В окончательно и получив полную дешифрацию сигналов.

Andrey_Korabelev
03.05.2014, 11:47
За счет внешней памяти микрокода можно будет сложные алгоритмы заложить, или переключаться между ними и т.п. Для гибкости, вообщем.
Я так полагал, что пин-то-пин совместимость важна. О каком тогда встраивании речь?
Если создавать что-то новое, для новых схем, то из тех же ресурсов CPLD можно выжать гораздо больше производительности, отойдя от архитектуры I8080.

HardWareMan
03.05.2014, 12:45
За счет внешней памяти микрокода можно будет сложные алгоритмы заложить, или переключаться между ними и т.п. Для гибкости, вообщем.
Это можно реализовать как форку проекта.

Я так полагал, что пин-то-пин совместимость важна. О каком тогда встраивании речь?
Для встраивания, конечно, нужно будет сделать некоторые преобразования, согласен. Тоже как форка.

Если создавать что-то новое, для новых схем, то из тех же ресурсов CPLD можно выжать гораздо больше производительности, отойдя от архитектуры I8080.
Вся соль в оригинальности таймингов. Чтобы я воткнул, например, в Орион или Специалист и он на родных частотах крутил родной софт точно так-же, как и оригинал. А функциональный аналог сделать не мудрено. В том числе и на сотню мегагерц производительности.

Alex_LG
05.05.2014, 10:40
Голосуем.

Экономически не выгодно, оригинал можно купить за 1дол. и их в достатке, а самая дешевая FPGA, куда возможно влезет ядро - порядка 10 в розницу, рассчитывать на опт не нужно. Однополярное питание - с современной элементной базой вообще не проблема (например МС34063). Лично мне интересен оригинальный проц и его обвязка, а вот логику можно заменить на ПЛМ.

Как сам по себе, проект интересен, можно попробовать.

Cам задумывался над аналогичным, но на микроконтроллере - хочу сделать аналог мат сопроцессора AM9512 (улучшенный вариант интеловского C8231A), правда не знаю куда прикрутить, но желание есть... :)

Kakos_nonos
05.05.2014, 20:00
Можно на AVR-e сделать. Atmega8, потянет? Тоже цена копеечная.

Alex_LG
06.05.2014, 11:06
Atmega8, потянет?

Потянет, но выводов маловато.
Спектрум на AVR: http://zx.pk.ru/showthread.php?t=19442
СР/М с эмуляцией 8080: https://code.google.com/p/cp-mega88/
http://www.nedopc.org/forum/viewtopic.php?t=9273&sid=87b4adf48bab17d761e24b16fb017cef

HardWareMan
09.05.2014, 08:56
В общем, тут у меня вообще безумная идея. Описать процессор на Verilog не мудрено, многие вещи сами получаются. Это будет первый шаг. Второй шаг - переложить это потом на схемный ввод с использованием стандартной логики. Есть желание сделать клон, который будет можно повторить на голой логике (как тут в интернетах уже было). Обидно только одно: хорошей фотки кристалла пока нет, да и людей, что ее бы декодировали тоже нет. Так бы можно было бы узнать некоторые нюансы, как например то, что у Z80 ALU на 4 бита всего. в общем, сейчас дооформлю основу и вперед и с песней. Прогресс буду выкладывать тут.

BYTEMAN
09.05.2014, 13:11
http://www.visual6502.org/
Может попросить этих ребят?

---------- Post added at 14:11 ---------- Previous post was at 13:53 ----------

http://visual6502.org/images/pages/Zilog_Z84C00_die_shots.html

HardWareMan
09.05.2014, 17:31
У нас свои есть (http://breaknes.com/), но они, правда, сейчас заняты (http://forum.emu-russia.net/viewtopic.php?f=13&t=4106) трассировкой ЗЫЧа (http://psxdev.ru/news/71). Поставщик (http://zeptobars.ru/ru/?p=7) фоток общий. Собственно, вот единственные доступные фотки кристаллов: КР580ИК80 (http://s.zeptobars.ru/kr580ik80a-HD.jpg) и КР580ВМ80А (http://s.zeptobars.ru/kr580vm80a-HD.jpg) Но по ним, к сожалению, ничего не определить.

Andrey_Korabelev
09.05.2014, 19:06
Когда-нибудь кто-нибудь это сделает(сфоткает, разберет), либо фотошаблоны заводские попадут в общий доступ(у коллекционеров они наверняка уже есть). И мы узнаем, на что были способны наши предки, проектируя микросхемы на кульманах. Вопрос в другом. На что способны мы, с высоты тех знаний, которые мы получили, потеряв при этом энтузиазм первопроходцев и атмосферу полной магии?
Насколько лучше можно придумать, пользуясь теми же параметрами техпроцесса?
Понятно, что сейчас транзисторы раскладывает САПР. Но насколько трудоемко Verilog перевести в фотошаблон?

BarsMonster
09.05.2014, 20:27
Я уже начал неспешно ковырять новый КР580ВМ80 чтобы получить снимки более высокого качества + без металлов.

Однако сфоткать-то можно, разбирать некому. Если вы лично готовы потратить на восстановление схемы 1000 часов - то фотографии конечно будут :-)

"Но насколько трудоемко Verilog перевести в фотошаблон?" - если все настроено, и библиотеки правильные есть - то одно нажатие кнопки. Результат естественно будет намного менее "плотный", чем то, чего достигли ручным дизайном.

Шаблоны по ВМ80/ИК80 я уже спрашивал на ixbt, ни у кого такие вещи так просто не валяются, так что найти их будет крайне сложно.

Andrey_Korabelev
10.05.2014, 12:46
если все настроено, и библиотеки правильные есть - то одно нажатие кнопки. Результат естественно будет намного менее "плотный", чем то, чего достигли ручным дизайном.
Очень интересно, прокатит ли автоматическая разводка для subj (при условии "повторим подвиги наших отцов", конечно ;)

Titus
10.05.2014, 16:20
Так бы можно было бы узнать некоторые нюансы, как например то, что у Z80 ALU на 4 бита всего.
А Z80 уже разобрали? Если да, то поделись линками.

HardWareMan
11.05.2014, 05:44
Я уже начал неспешно ковырять новый КР580ВМ80 чтобы получить снимки более высокого качества + без металлов.

Однако сфоткать-то можно, разбирать некому. Если вы лично готовы потратить на восстановление схемы 1000 часов - то фотографии конечно будут :-)
Я думаю так: будут фотографии - найдутся и распознаватели. А послойно в шоп отрисовать даже я смогу достаточно быстро.



А Z80 уже разобрали? Если да, то поделись линками.
Практически но еще не весь. Основная тема у соседей (http://www.nedopc.org/forum/viewtopic.php?t=10254), некоторые вопросы были здесь (http://forum.emu-russia.net/viewtopic.php?f=13&t=5380). Какие-то документы и наработки вроде доступны.

BarsMonster
14.05.2014, 04:43
Очень интересно, прокатит ли автоматическая разводка для subj (при условии "повторим подвиги наших отцов", конечно ;)

Если делать на более современном CMOS техпроцессе (1мкм и менее), то и с автоматической разводкой все будет отлично работать и частоты будут выше оригинала.

Bolt
19.05.2014, 00:13
Если вы лично готовы потратить на восстановление схемы 1000 часов - то фотографии конечно будут :-)
Про 1000 часов с BarsMonster полностью согласен. Занимаюсь Z80 уже год с перерывами, "чистых" примерно дней 90.

На сведение слоёв, отрисовку подложки и металлизации "в полуавтоматическом режиме" ушло несколько часов, на отрисовку поликремния - несколько дней. Рисовал мышкой, под конец уже левой рукой, правая не выдержала нагрузки. До туннельного синдрома не дошло, но было неприятно. Это я так, энтузиастов предупреждаю :)


А Z80 уже разобрали?
Разбираю, перевожу в Verilog. Осталось перевести АЛУ, регистры, шины, обработку прерываний и всевозможные флаги: префиксы, обмен регистров и т.п. Основная сложность - регистры, двунаправленные внутренние шины, на ёмкости которых сохраняются данные, и коммутаторы шин, состоящие из одного транзистора. Прошу помощи у знатоков Verilog.

---------- Post added at 02:13 ---------- Previous post was at 00:18 ----------


Собственно, вот единственные доступные фотки кристаллов: КР580ИК80 (http://s.zeptobars.ru/kr580ik80a-HD.jpg) и КР580ВМ80А (http://s.zeptobars.ru/kr580vm80a-HD.jpg) Но по ним, к сожалению, ничего не определить.
Справа в центре 8-разрядный регистр хранения текущей инструкции, вход снизу. Сверху и снизу от него "решётки" декодеров.
Слева вверху 6 или 6+1 16-разрядных регистров, снизу входы-выходы, сверху очень похоже на схему инкремента/декремента и формирователя адреса, как в Z80. Младшие и старшие половины этих регистров на одной шине данных, и вообще она цельная. В Z80 шина разделена на 3 части и это позволяет, например, одновременно записывать результат из АЛУ в A и флаги в F. Здесь же, говорят, аккумулятор и флаги запрятаны где-то в АЛУ.
Слева внизу АЛУ, похоже что разрядов всё-таки 8. АЛУ, кажется, сквозное, снизу вход, сверху выход.
Между регистрами и декодером, в гуще логики, прямо по центру, вертикально - линии счётчика тактов. Эти же линии проходят справа от верхнего декодера. Сам счётчик правее и выше регистра инструкции.

Всё примерно, как оно кажется на первый взгляд.

В целом компоновка очень похожа на Z80, что с учётом наличия общего родственника i8080 вполне естественно.

Titus
19.05.2014, 07:45
Разбираю, перевожу в Verilog. Осталось перевести АЛУ, регистры, шины, обработку прерываний и всевозможные флаги: префиксы, обмен регистров и т.п. Основная сложность - регистры, двунаправленные внутренние шины, на ёмкости которых сохраняются данные, и коммутаторы шин, состоящие из одного транзистора. Прошу помощи у знатоков Verilog.

Хорошо бы иметь разобранный Z80 именно в виде схемы. Это нужно именно для точного понимания, как он работает.

Bolt
19.05.2014, 09:35
Хорошо бы иметь разобранный Z80 именно в виде схемы. Это нужно именно для точного понимания, как он работает.
Схема Z80 что на уровне транзисторов, что на уровне логики - тёмный лес. Рисую кусками, пытаюсь понять работу, описываю на Verilog, упрощая совсем очевидные вещи вроде синхронных триггеров. Прогоняю в симуляторе, корректирую. Потом собираюсь окружить чем-то спектрумоподобным и протестировать. После тестов и дополнительной оптимизации можно будет рисовать относительно простую схему. А так после всех оптимизаций, допущений и упрощений на этапе проектирования, ручного рисования фотошаблонов получается какая-то каша. Думаю, в 8080 будет ещё хуже, так как его рисовали раньше, опыта было меньше. В Z80 и так много межблочных связей, а управляющая логика 8080/580 может вообще оказаться этаким монолитом.

И ещё мнение: 580 копировали с 8080, но не фотографически, а схемотехнически. То есть смотрели на послойные фотографии 8080 и "близко к тексту" рисовали 580.

BarsMonster, сколько по времени займёт фотографирование 580-го? Я к тому, что 0,5 рисовальщика уже есть :) но не сейчас. На целого не тяну, надо и другими вещами заниматься.

HardWareMan
19.05.2014, 10:00
Когда я на несдеве буржуям показал фоточки ямахи, кое-кто тоже заинтересовался легальной стороной вопроса:
http://savepic.net/2670220m.jpg

The copyright-like exclusive rights in an integrated circuit (http://en.wikipedia.org/wiki/Integrated_circuit_layout_design_protection) symbolized by Ⓜ expire after ten years. After that point, copy and paste becomes legal, assuming that there are no patents in the way. (Patents expire twenty years after the original filing date, subject to extensions for undue delay at the patent office or undue delay in getting regulatory approval for marketing. The FM synthesis patent expired in 1995.)
А мы все знаем, насколько дотошны буржуи к правовым аспектам.

Titus
19.05.2014, 10:46
Сейчас в лоб никто реверс-инжиниринг (http://ru.wikipedia.org/wiki/Обратная_разработка)
А чего же делают?

Titus
19.05.2014, 15:14
У нас другие цели - узнать, как работают ретромикрухи.

Vslav
19.05.2014, 16:41
Желания-то по реверсу чипов большие - и 1801ВМх и 1810ВМ8х, и 580ВМ1/Z80, и кучка всяких БМК 1801, 1515, 1545, 1527 серий. Но занятие весьма и весьма времязатратное, поэтому как хобби движется потихоньку.

HardWareMan
19.05.2014, 17:09
Я тоже двачую за статус "хобби" для всего этого. Для души. Ну и крута же потом иметь результат, о котором и не мечтал еще 20 лет назад...

BarsMonster
19.05.2014, 17:13
BarsMonster, сколько по времени займёт фотографирование 580-го? Я к тому, что 0,5 рисовальщика уже есть :) но не сейчас. На целого не тяну, надо и другими вещами заниматься.

Считанные дни-недели, я ссылку опубликую тут (ну и на своем сайте подниму).

Titus
19.05.2014, 19:42
Желания-то по реверсу чипов большие - и 1801ВМх и 1810ВМ8х, и 580ВМ1/Z80, и кучка всяких БМК 1801, 1515, 1545, 1527 серий. Но занятие весьма и весьма времязатратное, поэтому как хобби движется потихоньку.

Все упирается во внятные фотки. Ибо рисовальщиков можно найти гораздо больше, чем микроскопщиков.

Vslav
19.05.2014, 21:48
Все упирается во внятные фотки. Ибо рисовальщиков можно найти гораздо больше, чем микроскопщиков.
И не просто внятные фотки нужны, а очень качественные. Например, когда реверсились 1801ВП1 по достаточно хорошим фотографиям BarsMonster-a, периодически возникала ситуация с неоднозначностью, то есть было неясно - есть ли вот в этом конкретном месте переходное отверстие/проводник или нет. Спасало то, что БМК имеет достаточно регулярную структуру, и библиотека функциональных ячеек хорошо известна. Также имеются средства автоматической проверки по набору схемных правил, поэтому ситуации успешно разруливались с высокой степенью достоверности. Но мне это в конце-концов надоело, а просить "человека с микроскопом" каждый раз перефотографировать сомнительный участок тоже не будешь, поэтому пришлось таки свой микроскоп покупать. Так как теперь при реверсе в любой момент можно "подсмотреть глазками" интересующий участок, это значительно снизило напряженность работы.
Далее, если с БМК более-менее все ясно, то вот со старыми процессорами, топология которых рисовалась вручную в примитивных САПР, возникают новые вопросы. В этих микросхемах сложно выделить функциональные ячейки, или их вообще нет - все на уровне отдельных транзисторов, или они есть, но они очень примитивные - тоже на один-два-три транзистора. Поэтому требования к качеству фотографий для реверса значительно возрастает, снимать нужно на объективе с бОльшим увеличением, количество снимков растет в квадрате.
И еще проблема вылазит - для БМК достаточно фотографии только верхнего слоя металла, а вот для нерегурярного н-МОП процессора серии 1801 уже вероятно придется делать две, а то и три фотографии - отдельно для слоя металла, для слоя поликремния и для слоя диффузии. То есть надо еще выполнять селективное травление или шлифовку образца, одного микроскопа тут недостатоно. Получается что и трудоемкость получения панорамной фотографии возрастает - она просто с бОльшим разрешением (сшить нужно 400-1000 снимков) и самих фотографии нужно две-три. Таким образом, трудоемкость реверса процессора выше на порядок чем для БМК.
Да, и рисовать в таком случае тоже надо гораздо аккуратнее - поскольку если нет ячеек, то нет и автоматической проверки схемных правил. Для ВП1 я позволял себе не особо заботиться о точности прорисовки. А там всякие нюансы бывали, одна лишняя черточка - и триггер превращается в мультиплексор. Но, при запуске автоматической проверки, сходу вылавливалось примерно 50-70 таких "мимодумных" ошибок прорисовки. Потом еще одна-две ошибки выявлялись при анализе схемы, при моделировании уже все проходило "чисто". А вот для процессора так просто не получится, все "косяки" прорисовки уже придется выявлять "ручками" при анализе схемы и моделировании.



На сведение слоёв, отрисовку подложки и металлизации "в полуавтоматическом режиме" ушло несколько часов, на отрисовку поликремния - несколько дней. Рисовал мышкой, под конец уже левой

А в каком графическом редакторе рисовали?



и т.п. Основная сложность - регистры, двунаправленные внутренние шины, на ёмкости которых сохраняются данные

Хм, а разве Z80 не имеет статический дизайн? Вот для 1801ВМ1 в технической документации явно указано что минимальная частота 100 кГц и останавливать тактирование нельзя. Почему так - пока загадка. Для Z80 разве тоже нижний предел тактовой частоты существует?

Bolt
19.05.2014, 22:32
А в каком графическом редакторе рисовали?
...
Хм, а разве Z80 не имеет статический дизайн? Вот для 1801ВМ1 в технической документации явно указано что минимальная частота 100 кГц и останавливать тактирование нельзя. Почему так - пока загадка. Для Z80 разве тоже нижний предел тактовой частоты существует?
Графический редактор - GIMP.

Тактирование Z80 останавливать можно, но только при #CLK=1, в нуле его долго держать нельзя, предел длительности #CLK=0 указан в документации. В схеме много транзисторов, затвор которых подключается через ещё один транзистор, который управляется #CLK. То есть при #CLK=0 затворы отключаются от схемы и всё работает только за счёт ёмкости затворов. Похожая ситуация с недокументированными битами регистра флагов (F3 и F5), при формировании флагов для записи в регистр эти разряды внутренней шины остаются без управления, поэтому что в ёмкости проводника осталось с предыдущего такта (аккумулятор, результат арифметической операции, часть адреса и т.п.), то в эти разряды и запишется.

BarsMonster
20.05.2014, 00:49
Что-ж, вот новые фотографии 580ВМ80 сверху:

Первые фотографии после травления, больше грязи - меньше перетрава.
http://s.zeptobars.ru/kr580vm80a-3.jpg
http://s.zeptobars.ru/kr580vm80a-3-HD.jpg

Еще одно травление, грязи меньше, местами подтравило
http://s.zeptobars.ru/kr580vm80a-2.jpg
http://s.zeptobars.ru/kr580vm80a-2-HD.jpg

В темном поле - контрастно видна металлизация без via:
http://s.zeptobars.ru/kr580vm80a-metal-darkfield.jpg
http://s.zeptobars.ru/kr580vm80a-metal-darkfield-HD.jpg

В светлом поле с хитрой поляризацией - видна металлизация с via:
http://s.zeptobars.ru/kr580vm80a-metal-polarization.jpg
http://s.zeptobars.ru/kr580vm80a-metal-polarization-HD.jpg

Осталось стравить металлизацию и сделать фотографию поликремния.

cpg
20.05.2014, 07:24
Добрый день.
Собираюсь реверсить 1818ВГ93. Технология схожая с 580 комплектом - т.е. nmos без обедненных транзисторов.
Выслал BarsMonster'у 2 микросхемы разных заводов - жду.
Всвязи с этим есть ряд вопросов.
Кто чем "сшивает" изображения?
Кто чем векторизует?
Нет-ли жнлающих поучавствовать в проекте?
Времени это займет ацкое кол-во у меня одного...
Конечная цель - сделать наиболее точный эмуль на ПЛИС части интерфейса как минимум.

HardWareMan
20.05.2014, 08:18
Вот этот кусочек:
http://savepic.net/5519713.png
Если предыдущая догадка верна и внизу здесь IR, а над ним дешифрация, то можно предположить, что каждая секция дешифратора это отдельный машинный цикл?

Titus
20.05.2014, 08:19
Еще раз хочу заметить для всех, кто реверсирует - есть два типа интересующихся людей. Первые - это хардварщики, которые хотят повторить это в ПЛИС и тому подобном. А есть программисты, которые хотят повторить это в эмуляторах. Даже есть третий тип - программисты, которые хотят знать, как точно работает та или иная микруха.
Поэтому убедительная просьба не переводить полученные данные только во всякие Verilog'и, а выкладывать еще и принципиальные схемы.

HardWareMan
20.05.2014, 08:26
Поэтому убедительная просьба не переводить полученные данные только во всякие Verilog'и, а выкладывать еще и принципиальные схемы.
Всякие верилоги нужны как раз программистам. :3 Схемный ввод никто не отменял. Например, первый удачный реверс PPU от денди именно таким и был:
http://savepic.net/5534048m.png (http://savepic.net/5534048.png)

Vslav
20.05.2014, 08:40
Кто чем "сшивает" изображения?

Hugin. Но BarsMonster полуфабрикатами обычно не делится - сам сшивает :)


Кто чем векторизует?

Sprint Layout 6.0
Это такая простенькая программка для рисования печатных плат. Позволяет фоном поставить две фотографии и уже прямо поверх них рисовать проводнички, контактные площадки и прочий арт. Полученные вектора выводятся в формате gerber. Дальше - по желанию. Лично я импортирую герберы в PCAD, заменяю ячейки на компоненты и средствами автоматической обратной аннотации получаю принципиальную схему. Но почти в нечитаемом виде, приходится долго сидеть в схемном редакторе и приводить в "человеческий" вид, с автоматической проверкой списка цепей, разумеется - это исключает внос ошибок. Радует только что инструментарий именно для редактирования топологии и схем "заточен", иначе вместо удовольствия было бы мучение.

Titus
20.05.2014, 08:42
Всякие верилоги нужны как раз программистам. :3
Может каким-то и нужны, но я верилогов совсем не понимаю.
А схему понимаю.

cpg
20.05.2014, 08:49
Спасибо за ответ.
А что за инструмент в pcad-2004 присутствует "автоматической обратной аннотации"?
И почему именно pcad 2004?

HardWareMan
20.05.2014, 09:00
Может каким-то и нужны, но я верилогов совсем не понимаю.
Что их там понимать то? Не сложнее этих ваших С.

Vslav
20.05.2014, 09:07
А что за инструмент в pcad-2004 присутствует "автоматической обратной аннотации"?
И почему именно pcad 2004?

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

Средства прямой и обратной аннотации есть в почти любом "приличном" пакете для разработки печатных плат. Сделано это для сквозного контроля процесса проектирования. Прямая аннотация - это когда вносятся изменения в схему, и потом их автоматически можно внести в топологический проект платы. И наоборот - обратная аннотация, это когда вносим изменения в топологию платы (с изменением электрической схемы) и эти изменения автоматически можно перенести в рисунок схемы.
В случае с БМК это выглядит так - на топологию добавляем компонент, и после обратной аннотации он автоматически появляется в схеме. Затем запускаем операцию реконнекта - она ищет в топологии "висящие" проводники и автоматически появляются цепи, ну и в схеме после обратного переноса соответственно тоже. Это гораздо быстрее и безошибочнее чем делать все руками.

---------- Post added at 10:07 ---------- Previous post was at 10:03 ----------



Что их там понимать то? Не сложнее этих ваших С.

Программисты обычно сложно в HDL въезжают. Дело ведь не только в синтаксисе. Язык С процедурный, в нем описываются действия. А Verilog, хотя синтаксически и выглядит как C, описывает элементы и связи.

cpg
20.05.2014, 09:30
Средства прямой и обратной аннотации есть в почти любом "приличном" пакете для разработки печатных плат.
Наверное Вы имеете ввиду "import/export ECOs" в PCAD?

Какие основные принцыпы векторизации?
Вот например в oracl есть автоматика, почему ей не пользуются?

---------- Post added at 11:30 ---------- Previous post was at 11:29 ----------


oracl
Извиняюсь. Имел ввиду corel

HardWareMan
20.05.2014, 09:33
Программисты обычно сложно в HDL въезжают. Дело ведь не только в синтаксисе. Язык С процедурный, в нем описываются действия. А Verilog, хотя синтаксически и выглядит как C, описывает элементы и связи.

В любом языке можно написать так, что через месяц не въедет даже сам создатель этого кода, даже при наличии описания. Например, насколько сложно въехать программисту в этот небольшой пример?

reg [31:0]A[1:0];
reg B[31:0];
reg [31:0]Count;

function [31:0]ROL9;
input [31:0]D;
begin
ROL9[31:0] = {D[22:0],D[31:23]};
end

always @(posedge Clk) begin
A[0] <= 32'h85483A73;
B <= Count[31:0] + 32'hF67CCBB8;
A[1] <= ROL9(A[0] + B);
end

Vslav
20.05.2014, 09:56
Наверное Вы имеете ввиду "import/export ECOs" в PCAD?

Да. Интересно что мало кто про них знает, даже из опытных конструкторов. Мне встречались достаточно опытные люди, которые при выдвижении требования сквозного контроля, задавали вопрос - а зачем?
Ответ - а затем что опытный образец платы оплачивается "из своих", а сквозной автоматический контроль помогает значительно снизить количество ревизий плат из-за глупых ошибок.



Какие основные принцыпы векторизации?

Да какие там принципы - "нажимай да дуй", дралоскоп в чистом виде.



Вот например в corel есть автоматика, почему ей не пользуются?

Видимо не дает достаточной степени достоверности, фотографии слишком много деталей других слоев содержит. Но если попробуете что из автоматов и поделитесь результатами - будет отлично. Но ВМ80 относительно простой, за недельку спокойно векторизуется, это не проблема. А вот над распутыванием схемы посидеть немало придется.

---------- Post added at 10:56 ---------- Previous post was at 10:49 ----------


Например, насколько сложно въехать программисту в этот небольшой пример?

Программисту в примере не все очевидно. Надо бы знать что такое блокируемое (мне это термин не нравится - предпочитаю сблоченное или групповое) присвоение '<=', чтобы понимать, например, значение A[0] в последней строчке блока always. Неплохо также знать что такое список чувствительности. Да и функции несут немного другую нагрузку и в них есть ряд ограничений.

cpg
20.05.2014, 10:04
Интересно что мало кто про них знает, даже из опытных конструкторов.
Просто я с pcad работаю с 97-го года )
Кстати говоря, в pcad возможностей столько, что сам алтимум наверно о них не всегда знает


ВМ80 относительно простой
мне кажется, что ВГ93 будет проще раза в два.

HardWareMan
20.05.2014, 11:06
Программисту в примере не все очевидно. Надо бы знать что такое блокируемое (мне это термин не нравится - предпочитаю сблоченное или групповое) присвоение '<=', чтобы понимать, например, значение A[0] в последней строчке блока always.
Я тоже его не люблю. Мне проще понимать "тактируемый D триггер" (например 555ИР23) и "прозрачная защелка" (555ИР22). Первый работает строго по перепаду, второй прозрачен всегда, пока действует условие и защелкивает когда условие не действует.

И я ненавижу "список чувствительности". Он порождает кучу латчей, что есть неверно. Тактовый сигнал должен быть один на каждый always, но можно разный для каждого always.

PPS Ну и всегда для непонимающих можно предоставить результат RTL viewer'а:
http://savepic.net/5521779.png

Bolt
20.05.2014, 15:14
Вот этот кусочек:
http://savepic.net/5519713.png
Если предыдущая догадка верна и внизу здесь IR, а над ним дешифрация, то можно предположить, что каждая секция дешифратора это отдельный машинный цикл?
В Z80 каждый выход декодера (здесь это горизонтальные линии металлизации) это какая-то инструкция или группа по маске, например, 00xxx101 - декремент регистра, или 00xx1001 - add HL,RR. Они дополнительно группируются, а потом уже около сотни многовходовых элементов, на которые заведены в том числе циклы и такты. Их выходы это уже и есть (почти) управляющие сигналы АЛУ, регистров и прочего. "Секции" в нём тоже есть, но это, видимо, просто питание так заведено на дешифратор.

---------- Post added at 17:07 ---------- Previous post was at 16:38 ----------


...убедительная просьба не переводить полученные данные только во всякие Verilog'и, а выкладывать еще и принципиальные схемы.
Согласен. Схема наглядней Verilog'а, но всё-таки в тексте таскать туда-сюда куски схемы мне показалось проще. Поэтому в конце я (или может кто-то другой) всё равно переведу в схему, но она не будет один в один как на кристалле, там есть много мест, в которых можно повысить наглядность и читаемость. Например, тот же счётчик циклов. У него очень закрученные условия инкремента/сброса, но в результате упростил до (условно) "(цикл1 И такт3 И выход_декодера) ИЛИ (цикл2 И такт4 И выход_декодера) ИЛИ ...". То есть изначально оно наверное так и было, но её "сжали" чтобы было меньше транзисторов.

---------- Post added at 17:14 ---------- Previous post was at 17:07 ----------


Мне проще понимать "тактируемый D триггер" (например 555ИР23) и "прозрачная защелка" (555ИР22). Первый работает строго по перепаду, второй прозрачен всегда, пока действует условие и защелкивает когда условие не действует.

Z80 в основном построен на "прозрачных защёлках", описываю их так:

always @(*) if (clk)
begin
...
end
iverilog (симулятор такой) понимает правильно, Quartus вроде тоже.

HardWareMan
20.05.2014, 15:39
Z80 в основном построен на "прозрачных защёлках", описываю их так:

always @(*) if (clk)
begin
...
end
iverilog (симулятор такой) понимает правильно, Quartus вроде тоже.
Это потому, что латч требует всего 2 транзистора, а D триггер гораздо больше. Вот пример из дендечипа:
http://savepic.net/5512339.png
Когда левый транзистор закроется на одном из полупериодов /PCLK, заряд, оставшийся на затворе правого транзистора, поддержит его открытым. Естественно, эта схема не статична и требует минимальной тактовой частоты. У многих старых чипов и процессоров есть минимальная разрешенная частота.

Titus
20.05.2014, 16:40
Согласен. Схема наглядней Verilog'а, но всё-таки в тексте таскать туда-сюда куски схемы мне показалось проще. Поэтому в конце я (или может кто-то другой) всё равно переведу в схему, но она не будет один в один как на кристалле, там есть много мест, в которых можно повысить наглядность и читаемость. Например, тот же счётчик циклов. У него очень закрученные условия инкремента/сброса, но в результате упростил до (условно) "(цикл1 И такт3 И выход_декодера) ИЛИ (цикл2 И такт4 И выход_декодера) ИЛИ ...". То есть изначально оно наверное так и было, но её "сжали" чтобы было меньше транзисторов.

Главное, чтобы при таком упрощении и приведении к общему виду, не потерялась изюминка изначальной схемы (какой-нибудь фирменный глюк или же еще какая-то особенность).

Bolt
20.05.2014, 16:57
Я больше боюсь зависимости работы схемы от скорости переключения элементов. Пока попалось только две "линии задержки" на соединённых последовательно инверторах, но они особой роли не играют.

BarsMonster
20.05.2014, 17:23
Фотографии после травления металлизации. Похоже стравились оба слоя, если я не ошибаюсь. Неужели это был металл+металл, а не металл+поликремний?

Из-за сложностей со сшивкой (3 раза переснимал - ни разу не удалось сшить, слишком все монотонно и похоже) - разрешение вдвое меньше предыдущих фото.

http://s.zeptobars.ru/kr580vm80a-Si.jpg
http://s.zeptobars.ru/kr580vm80a-Si-HD.jpg


Чтобы не искать - фотографии до травления: http://zx.pk.ru/showthread.php?t=23349&page=4#postmenu_711678

Пост сдал.

Vslav
20.05.2014, 19:04
Ура, это как раз та самая недостающая для надежного распознавания схемы часть.
ИМХО, это был металл + поликремний (мне кажется что там видно самосовмещенные затворы), все стравилось.

BarsMonster
20.05.2014, 19:29
ИМХО, это был металл + поликремний (мне кажется что там видно самосовмещенные затворы), все стравилось.

Проблема в том, что поликремний травится в buffered oxide etch не должен. Травится только алюминий и стекло.

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

Так что пока мистика.

Vslav
20.05.2014, 19:41
Проблема в том, что поликремний травится в buffered oxide etch не должен. Травится только алюминий и стекло.

Выглядит оно очень и очень похоже на ангстремовский н-МОП серии 1801, а в том техпроцессе точно поликремний.



Так что пока мистика.

Угу, есть непонятка, но все равно вышло очень удачно.

Bolt
20.05.2014, 21:12
А почему контактные площадки "поликремниевые", а не металлизированные? Такое возможно? Как к ним подключаться?

BarsMonster
20.05.2014, 21:22
А почему контактные площадки "поликремниевые", а не металлизированные? Такое возможно? Как к ним подключаться?

На самом деле они металлические, но метал стравился, т.к. он не был защищен стеклом и потому так выглядит.

На kr580vm80a-3-HD.jpg видно что в уголках некоторых площадок еще остался металл.

Bolt
20.05.2014, 21:45
Да, посмотрел внимательно в большом разрешении, теперь вижу.

Bolt
20.05.2014, 23:46
Пост сдал.
Если надо обвести слои, то готов пост принять :) Могу выделить диффузию, сигналы и питание в металлизации, начать поликремний. Делать буду вручную, если кто-то может сделать проще или сразу рисовать схему с фотографий - отпишитесь, чтобы двойную работу не делать.

Для примера регистр инструкции Z80. Синий - "минус" питания в металлизации; красный - "плюс"; зелёный - сигналы (есть ещё оранжевый, но это уже при рисовании схемы отмечал), голубой - диффузия; фиолетовый - поликремний.

Vslav
21.05.2014, 06:36
Если надо обвести слои, то готов пост принять :)

В SprintLayout нарисуете?
Проект я создал, за вечер (21.00-24.00) накидал примерно так:
http://s003.radikal.ru/i202/1405/60/aca3e3efacf3t.jpg (http://s003.radikal.ru/i202/1405/60/aca3e3efacf3.png)
Но сейчас я занят достаточно плотно на работе, пока нет времени заниматься реверсом. Трудозатраты на ручную векторизацию оцениваю примерно в 100 часов, и часов 200-300 на получение вменяемой потранзисторной электрической схемы, нарисованной в PCAD.

cpg
21.05.2014, 06:53
т.к. он не был защищен стеклом
Т.е. самый верхний слой - есть слой стекла с маской под пады?
Если так, а для чего он нужен? Микруха ведь всё-равно в корпусе. Или корпус не совсем герметичен и SO2 сверху выполняет роль защитной маски?

Vslav
21.05.2014, 07:28
Т.е. самый верхний слой - есть слой стекла с маской под пады? Если так, а для чего он нужен?

Так называемый слой пассивации. Служит для защиты схемы, микроэлектронщики рассказывают что без этого слоя пластину нельзя даже из чистой комнаты вынести - неработоспособность кристаллов гарантирована.

cpg
21.05.2014, 08:51
Так называемый слой пассивации.
Но он всегда из стекла или нет?

---------- Post added at 10:51 ---------- Previous post was at 10:49 ----------

И еще вопрос. А как народ определяет области диффузии? ведь на образах их не видно. Интуитивно?

Bolt
21.05.2014, 09:09
В SprintLayout нарисуете?Нет, к сожалению, не пользуюсь.

---------- Post added at 11:09 ---------- Previous post was at 11:06 ----------


И еще вопрос. А как народ определяет области диффузии? ведь на образах их не видно. Интуитивно?Вот здесь видно http://zx.pk.ru/showpost.php?p=711831&postcount=51
Раскрасил диффузию (кое-где есть пробелы) http://yadi.sk/d/jVcoDNkBQsQMG

Порядок разрядов шины данных под регистрами, сверху вниз: 0,1,2,3, 7,6,5,4
Порядок разрядов регистра инструкции, слева направо: 7,6, 0,1,2, 5,4,3 (в Z80 0,1,2, 7,6, 3,4,5)

Декодер опишу позже.

Bolt
21.05.2014, 12:55
Декодер состоит из двух основных частей, расположенных сверху и снизу от регистра инструкции. В верхней части 36 выходов, в нижней 14. На выходе появляется логическая 1, если инструкция соответствует шаблону (см. вложенный файл), при этом возможен запрет выхода, например, выход, соответствующий инструкции halt, запрещает выходы mov M,R и mov R,M.

Верхние выходы группируются в 7 групп, на выходе логический 0, если шаблон входит в группу (проводники справа от декодера), но при этом имеется дополнительная логика, например, шаблон inc/dec R входит во 2-ю группу только если не активна 3-я группа (на проводнике лог. 1).

Ещё ниже есть третья часть декодера, декодирующая только разряды 3, 4, 5, имеющая 8+7 выходов (номер регистра? номер функции?), у каждой группы выходов свой сигнал запрета.

Картинка для рассматривания http://yadi.sk/d/unEGKPqvQtQBB

HardWareMan
21.05.2014, 16:36
Я тоже позже увидел вторую часть декодера и при шел к такому же мнению.

Bolt
21.05.2014, 21:51
Что-то я увлёкся :) http://yadi.sk/d/1yvc687JQwB9H

Vslav
22.05.2014, 06:55
Я тоже вечерком увлекся :). У меня результат скромнее, но надеюсь наверстать автоматической генерацией схемы :)

cpg
22.05.2014, 07:41
Я тоже вечерком увлекся :).
Вот это качество!!!! После такой векторизации можно на производство отдавать.
А зачем разработчикик в полигоне земли, который возле пада - cutout сделали?

Bolt
22.05.2014, 08:02
Я тоже вечерком увлекся :). У меня результат скромнее, но надеюсь наверстать автоматической генерацией схемы :)Я действительно увлёкся, у меня же ещё Z80 не завершён :)

Vslav
25.05.2014, 12:27
Дорисовал слой металлизации, потихоньку начал поликремний и диффузию - одновременно с распознаванием транзисторов.

cpg
26.05.2014, 07:41
Дорисовал слой металлизации, потихоньку начал поликремний и диффузию - одновременно с распознаванием транзисторов.

Вы какой версией Sprint Layout пользуетесь?

Vslav
26.05.2014, 08:12
Вы какой версией Sprint Layout пользуетесь?
Версия 6.0
Насчитал уже 4690 транзисторов. Документация говорит о примерно 4500. Чуток поскромничали :)

Vslav
27.05.2014, 21:48
Пока получилось 4719 транзисторов. Пару часиков посидел над схемой.
Надо аннотировать транзисторы группами, а то потом тяжело растаскивать.
В приложении - схема выходных каскадов A8-A15

HardWareMan
27.05.2014, 22:23
Жду с нетерпением остального! Всем участникам неиссякаемых лучей добра!

Bolt
27.05.2014, 22:36
Не, ну с такой скоростью мне тут делать нечего :)

Может "верхние" транзисторы, у которых затвор-сток соединены, сразу на резисторы заменять? И как вообще процесс будет выглядеть? Что будет после прорисовки транзисторов?

Vslav
28.05.2014, 00:27
Не, ну с такой скоростью мне тут делать нечего :)

Дальше скорость невысокая ожидается. Времени у меня на разбор 100-200 транзисторов в день. Соответственно 20-40 дней, а может и больше, как время будет свободное.



Может "верхние" транзисторы, у которых затвор-сток соединены, сразу на резисторы заменять?

Пока оно полезно - позволяет увидеть ошибки векторизации, висячие выводы сразу дают ошибку. Кое-какую топологию, которая не влияет на логику я выкинул - кое-где то структуры похожие то ли на резисторы, то ли на конденсаторы ускоряющие закрытие верхнего транзистора.



И как вообще процесс будет выглядеть? Что будет после прорисовки транзисторов?

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

Vslav
28.05.2014, 10:18
Разобрал устройство двунаправленного буфера разряда шины данных.
Состоит из 28 транзисторов, в том числе внутри содержит примитивный триггер, используется транзитивная логика. Шина данных внутри процессора с 3-им состоянием. Соответственно внутренний триггер можно исрользовать как скрытый регистр. Наверняка используется для хранения первого прочитанного байта адреса и прочих 16-битных констант в коде команды.

HardWareMan
28.05.2014, 10:45
Как интересно!

Bolt
28.05.2014, 11:28
NET00113=1 - запись D7 с внутренней шины в защёлку T230...T233 (2 инвертора последовательно, замыкаемые в кольцо), NET00111=1 - хранение. Сигналы противофазны, причём NET00113 может быть постоянно равен 0.
Из-за таких транзисторов (T229, T234) и ограничена минимальная тактовая частота.
NET00104=0 - активация выходного драйвера на PIN_D7, при NET00104=1 PIN_D7 в z-состоянии.
NET00102=0 - активация выходного драйвера на внутреннюю шину.
Внутренняя шина данных относительно внешней не инвертирована.
Защёлка только одна и хранит она то, что должно выводиться на пины D0...D7.

T214 - защита от отрицательного напряжения на входе.

NET0002=1 - перевод A0...A15 в z-состояние.

Vslav
28.05.2014, 13:11
NET00113=1 - запись D7 с внутренней шины в защёлку T230...T233 (2 инвертора последовательно, замыкаемые в кольцо)

Когда T234 открыт имеем классический триггер на двух транзиcторах (верхние можно для упрощения восприятия заменить на резисторы).
T234 и T229 - транзитивная логика, как проходные ключи работают (транзитивная логика)
Т234 открыт, Т229 закрыт - хранение
Т234 открыт, Т229 открыт - возможна выдача из триггера на шину данных (если больше на шине никого нет)
Т234 закрыт, Т229 закрыт - неопределенное состояние
Т234 закрыт, Т229 открыт - запись значение в триггер
Неопределенное состояние есть, но не факт что оно используется в работе, поэтому пока нельзя утверждать что частота ограничена снизу.

Bolt
28.05.2014, 15:06
Про выдачу обратно в шину аж интересно стало, так ли это. Сомневаюсь. Жду продолжения :)

Vslav
28.05.2014, 17:46
Про выдачу обратно в шину аж интересно стало, так ли это. Сомневаюсь. Жду продолжения :)
Нормально оказалось все - цепи 111 и 113 управляются через инвертор, от есть - открыт только один из транзисторов, и режима только два - хранение и запись.

Vslav
29.05.2014, 08:09
Начал разбирать регистр инструкции. Забавно получается - триггеры постоянно тактируются F2 (если ничего не напутано). Если остановится F2 в низком уровне - регистр инструкции все "забудет". Чем такое обусловлено - непонятно. Несколько транзисторов чтобы такого не было бюджет не разорили бы. Затейники, получается что ВМ80А тоже имеет особенность тактирования как и Z80.
Еще странность - выход на шину данных с блока регистров содержит только нижний транзистор, верхний я пока не нашел, ну не может же оно быть "открытый коллектор", да без "подтяжки".

Bolt
29.05.2014, 08:42
Разбираю аналогичный узел (внешних D0...D7) Z80 и не даёт мне покоя вот этот триггер, управляемый NET00111 и NET00113. На всякий случай спрошу.

Затворы T225 и T238 точно соединяются с затвором T230? Может с затвором T231? Тогда всё становится больше похоже на в Z80, и даже внутренняя шина относительно внешней инвертирована. В Z80 при ld [HL],const в этом триггере байт с пинов защёлкивается и отправляется обратно, здесь тоже можно, но как-то оно... не так аккуратно, что ли. Можете выложить схему управления этим триггером?

---------- Post added at 10:16 ---------- Previous post was at 10:11 ----------


Еще странность - выход на шину данных с блока регистров содержит только нижний транзистор, верхний я пока не нашел, ну не может же оно быть "открытый коллектор", да без "подтяжки".
Тогда ищите precharge - шина в какой-то момент "заряжается", подключаясь напрямую к +5, может даже одновибратором, а потом нужные разряды разряжаются нижними транзисторами. Получается быстрее, чем тянуть её вверх подтяжками.

---------- Post added at 10:34 ---------- Previous post was at 10:16 ----------

Рекомендую начать разбор от регистра инструкции :) пока не трогая внешние пины типа INT, HOLD, READY и прочие. В Z80 в их схемах чёрт ногу сломит, потом оказалось что они вообще как бы сбоку приклеены, из них всего несколько сигналов выходит, не сильно влияющих на работу остальной схемы, а от регистра инструкции просто куча комбинационной логики, которая потом синхронизируется тактовым сигналом чтобы иголок не было и идёт на регистры, АЛУ и остальное.

---------- Post added at 10:42 ---------- Previous post was at 10:34 ----------

Ещё вопрос знатокам. Какую задержку может дать транзистор или логический элемент в nMOS? Сколько нс сигнал будет идти из одного угла кристалла в другой через 5-10 логических элементов?

Vslav
29.05.2014, 09:01
Затворы T225 и T238 точно соединяются с затвором T230? Может с затвором T231?

Да. И еще 7 раз такая же схема для остальных разрядов, ошибка (что я не разглядел цепи) маловероятна.



Тогда всё становится больше похоже на в Z80, и даже внутренняя шина относительно внешней инвертирована. В Z80 при ld [HL],const в этом триггере байт с пинов защёлкивается и отправляется обратно, здесь тоже можно, но как-то оно... не так аккуратно, что ли. Можете выложить схему управления этим триггером?

В последней выложенной схеме есть фрагмент формирования цепи 113.
Это просто инвертированный сигнал с цепи 111.



Тогда ищите precharge - шина в какой-то момент "заряжается",

Пока не нашел. В том то и дело что с других блоков на шину выходят полноценные каскады из двух транзисторов - верхнего и нижнего, а вот с блока регистров непонятка. Пока неясно в чем дело, может распознавания ошибка где. Или BarsMonster нафотошопил фрагмент, чтобы мы запутались :)



Рекомендую начать разбор от регистра инструкции :) пока не трогая внешние пины типа INT, HOLD, READY и прочие. В Z80 в их схемах чёрт

Я как акын - что вижу, о том пою :). То есть, что мне ясно - разбираю. Дальше вероятно будет сумматор адреса и блок регистров, а потом - да, пойдет блок декодера. Иначе к АЛУ трудно подобраться.

Bolt
29.05.2014, 09:20
Схема предзаряда находится на шине данных между регистром инструкции и основными регистрами. Каждый разряд шины через два последовательно соединённых транзистора подключается к +5.

Что такое "сумматор адреса"?

Vslav
29.05.2014, 09:45
Схема предзаряда находится на шине данных между регистром инструкции и основными регистрами. Каждый разряд шины через два последовательно соединённых транзистора подключается к +5.

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


Что такое "сумматор адреса"?
Схема формирования адреса - блок 16 разрядного сумматора плюс 16 разрядный же мультплексор. Кажется там и PC где-то рядом.

Bolt
29.05.2014, 10:11
Ну не 16-разрядный сумматор, это как-то совсем круто для такого процессора, а 16-разрядный инкремент/декремент.


Увы, не подключается. На этом фрагменте сигналы шины данных подключены к затворам, то есть они управляющие и это не может быть схемой "подзаряда".
Как это к затворам? Снизу идёт +5, через via уходит на полисиликон (голубой), через 16 транзисторов (по 2 на разряд), потом через via в металлизацию, на шину. Затворы транзисторов (фиолетовый) соединяются (8 первых и 8 вторых), одни затворы на тактовый F1, вторые не рассмотрел куда.

Vslav
29.05.2014, 10:25
Ну не 16-разрядный сумматор, это как-то совсем круто для такого процессора, а 16-разрядный инкремент/декремент.
Может быть и так, возможно только инкремент, увидим :)



Как это к затворам? Снизу идёт +5, через via уходит на полисиликон

Ага, чего-от меня переклинило. Действительно подключаются к +5, спасибо за подсказку. Тогда веселее, непоняткой меньше.

Vslav
29.05.2014, 12:39
Чего-то регистров сильно много, в два раза больше чем нужно, на сдвоенные триггеры срабатывающие по фронту непохоже. Как бы не теневой набор регистров вылазит :)

HardWareMan
29.05.2014, 13:56
Забавно получается - триггеры постоянно тактируются F2 (если ничего не напутано). Если остановится F2 в низком уровне - регистр инструкции все "забудет".
Не зря я, значит, интуитивно "притормаживаю" ВМ80 в МХ2 на Ф1=0 и Ф2=1 на 1 такт, чтобы получить из 2,5МГц производительности 2МГц производительность (с джиттером на 1 такт частоты 2,5МГц).

Тогда ищите precharge - шина в какой-то момент "заряжается", подключаясь напрямую к +5, может даже одновибратором, а потом нужные разряды разряжаются нижними транзисторами. Получается быстрее, чем тянуть её вверх подтяжками.
А вот про пречердж как раз промелькивало в одной из русских внутренних блок-диаграмм. Вот, у соседей (http://www.nedopc.org/forum/viewtopic.php?p=101051#101051) промелькнуло как-то (СЗМ - Схема Заряда Магистрали), кликабельно:
http://savepic.net/5575559.gif (http://savepic.net/5596060.png)
http://savepic.net/5599110.gif

СФС - Схема формирования сброса
ВМД - Внутренняя магистраль данных
СЗМД - Схема заряда магистрали данных

[БА - Буфер адреса]
БА - Буфер адреса
СУпр - Схема управления буфером адреса

[БД - Буфер данных]
БД - Буфер данных
СУБД - Схема управления буфером данных

[БРг - Блок регистров]
СК - Счетчик команд
УС - Указатель стека
RA - Регистр адреса
I/D - Схема инкремента и декремента
М1,2 - 8ми разрядный мультиплексор
М3 - 16ти разрядный мультиплексор

[АЛУ - Арифметико-логическое устройство]
Rn - 8ми разрядный регистр
КП - Кодопреобразователь
СМ - Комбинационный сумматор
А - Аккумулятор
F - Регистр условий
СДК - Схема десятичной коррекции

[СУ - Схема управления]
РК - Регистр команд
ПЛМn - Программируемая матрица декодера
СВР - Схема выборки регистра
САП - Схема анализа переходов
СВС - схема выдачи состояния
СУМЦ - Схема управления машинными циклами
СУМТ - Схема управления машинными тактами
СУПР - Схема управления регистрами

[CC - Схема cинхронизации]
СФМТ - Схема формирования машинных тактов
СФМЦ - Схема формирования машинных циклов
СФС - Схема формирования сигнала Sync

[СУОИ - Схема управления обменом информации]
САПР - Схема анализа прерываний
САЗШ - Схема анализа захвата шины
САГ - Схема анализа готовности
PS А вот и сам док (http://hwm.us.to/ftp/McrProc.rar), кому интересно. Страницы с 37 до 66. Попутно, там даны интересные блок-схемы других микросхем комплекта. Есть на что взглянуть.

Bolt
29.05.2014, 21:29
Чего-то регистров сильно много, в два раза больше чем нужно, на сдвоенные триггеры срабатывающие по фронту непохоже. Как бы не теневой набор регистров вылазит :)
Да нормально там регистров :)

6 16-разрядных чётко видно, может ещё где запрятаны. BC DE HL PC SP что-то еще, на приведённой HardWareMan блок-схеме их 7. Там по два инвертора в кольце должно быть, по 4 транзистора на бит. На каждый 16-разрядный регистр по 32 коммутирующих транзистора (горизонтальные полисиликоновые проводники на фотографии, "перечёркивающие" блок регистров), подсоединяющие этот регистр к 32-проводной шине (прямой и инвертированный бит). С этой шины через схему чтения и два коммутатора (старший и младший байт) данные идут на 8-разрядную ШД. С 8-разрядной ШД через мощные драйверы (по 2 на бит, прямой/инверсный) и коммутаторы (также 2, для каждого байта свой) происходит запись, драйверы "передавливают" инверторы в нужное состояние.

Сужу по Z80, здесь вроде такая же структура просматривается с поправкой на два напряжения питания. Если надо могу что-нибудь для наглядности нарисовать :)

Vslav
29.05.2014, 21:56
Да нормально там регистров :)

Да, оказалось всего шесть 16-тиразрядных регистров, соединенных общей 16-битной шиной. Возможны побайтные чтение-запись со стороны общей шины 8-битной шины, а также 16-битное чтение-запись со стороны схемы инкремента-декремента. Как работает понятно, но там 1000+ транзисторов, это несколько вечеров рисовать.

Bolt
29.05.2014, 22:29
А надо ли это всё вырисовывать? Может потом? А пока 8 проводов ШД и 10 проводов управления, остальное - "чёрный ящик".

---------- Post added at 00:29 ---------- Previous post was at 00:23 ----------


А вот про пречердж как раз промелькивало в одной из русских внутренних блок-диаграмм. Вот, у соседей (http://www.nedopc.org/forum/viewtopic.php?p=101051#101051) промелькнуло как-то (СЗМ - Схема Заряда Магистрали)То есть оно как бы к другому блоку относится? Но у регистров и правда на чтение только нижний транзистор. Хотя может и этот же precharge использоваться...

Vslav
31.05.2014, 11:01
А надо ли это всё вырисовывать? Может потом? А пока 8 проводов ШД и 10 проводов управления, остальное - "чёрный ящик".

Да, надо подумать как это сблокировать. Создать отдельный триггер как встроенный компонент, или, наконец, пришло время разобраться с поддержкой иерархии в PCAD. Ну а так "в лоб" я уже примерно треть блока регистров нарисовал. Дальше будет схема 16-битного инкремента-декремента и от нее и от блока регистров потянется уже управление к декодеру инструкций.

Vslav
02.06.2014, 10:50
Блок регистров, мултиплексор, буфер адреса, схема инкремента-декремента 16-битного значения. Реализация инкремента-декремента с частичным параллельным переносом, максимальная цепочка последжовательного переноса - 5 стадий. Любопытно что то что инкрементится/декрементится будет попутно попадать на выходы A15-A0. Посмотрим как INX/DCX сделаны, думаю что не на этой схеме, потому что нет выхода на флаги.

HardWareMan
02.06.2014, 14:04
Я думаю, что I/D сделан по подобию реверсивного 16ти битного счетчика. Схема простая и обкатанная.

Vslav
04.06.2014, 10:23
Я думаю, что I/D сделан по подобию реверсивного 16ти битного счетчика. Схема простая и обкатанная.

Там не совсем счетчик, триггеров нет. Есть просто комбинационная схема +1/-1, и отдельный регистр. Полностью на параллельный перенос не пошли - транзисторы решили сэкономить, а на самом экономном полностью последовательном переносе. видимо. скорости не хватало. В итоге сделали компромисc - три стадии последовательного переноса, между ними параллельный. Гибрид, в-общем.

Вчера, кажется нарыл, СФМЦ. Забавно, там самих триггеров нет, все на емкостях затворов построено. То есть, по F1 заряжаем затвор тразистора, его выход управляет через ключ включаемый по F2 затвором другого транзистора. Такой себе флип-флоп, всего 4 транзистора на стадию. А на традиционной схеме понадобилось бы 12 или даже более, учитывая входную функцию. Вот так сурово раньше транзисторные бюджеты экономили.

Bolt
05.06.2014, 10:27
Главное, чтобы при таком упрощении и приведении к общему виду, не потерялась изюминка изначальной схемы (какой-нибудь фирменный глюк или же еще какая-то особенность).
Поясню на примере, что можно упростить в Z80 для повышения наглядности.

Есть провод, указывающий, какие биты опкода брать для получения номера регистра

assign w185 = ~(~(w[40] | w[45]) & (w210 | ~w[47]));
куча инверсий упрощается до вполне понятной логики "A or B or C"

assign w185 = w[40] | w[45] | (w[47] & ~T2);
Потом мультиплексор, но его выходы также инвертированы

assign w3[351] = w185 ? ~cmd[0] : ~cmd[3];
assign w3[357] = w185 ? ~cmd[1] : ~cmd[4];
assign w3[361] = w185 ? ~cmd[2] : ~cmd[5];
Дальше бардак

assign w3[355] = ~(w3[357] | w3[361]);

... (w3[351] | w3[355]) ... // это обращение к каким регистрам?
... ~(w3[351] | w3[355]) ...
который с учётом инверсии выходов мультиплексора приводится к

assign w3[355] = (cmdmux1 & cmdmux2); // =1 при обращении к регистру 6 или 7 (SP/[HL]/A)

... (~cmdmux0 | (cmdmux1 & cmdmux2)) ... // =1 - обращение к регистру 0 2 4 6 7 (B D H [HL] A)
... ~(~cmdmux0 | (cmdmux1 & cmdmux2)) ... // =1 - обращение к регистру 1 3 5 (C E L)
или даже
(cmdmux[0]==0) | (cmdmux==7) // любой старший регистр или аккумуляторпричём w3[355] больше нигде не используется, его можно убрать.

Мне кажется в 580ВМ80 логику И-НЕ / ИЛИ-НЕ так же можно будет сильно упростить при переводе на HDL, а инкремент/декремент со всеми ускоренными переносами вообще привести к одной строчке :)
Или оставлять как есть?

Titus
05.06.2014, 11:56
Поясню на примере, что можно упростить в Z80 для повышения наглядности.

Это опять же Verilog-оподобный язык. Меня интересуют схемы)

Vslav
05.06.2014, 18:25
Мне кажется в 580ВМ80 логику И-НЕ / ИЛИ-НЕ так же можно будет сильно упростить при переводе на HDL, а инкремент/декремент со всеми ускоренными переносами вообще привести к одной строчке :)
Или оставлять как есть?

Ну схема рисуется 1-к-1. А вот на НDL, думаю, надо будет писать понятнее, все равно синтезатор перекрутит под конкретную платформу, так что смысла оставлять нативное представление логических функций никакого нет.

Vslav
08.06.2014, 13:06
Разобрал декодер инструкций. Ковыряю СФМЦ и СФМТ - достаточно запутанные логически, надо будет помоделировать. Осталось всего разобрать 1871 транзистор. Порядка 3 тысяч разобрано, но они в упорядоченных структурах, поэтому остаток будет разбираться медленее. Есть ошибки переноса топологии, то транзистор забыл врисовать, то затвор не рассмотрелся под металлом, то просто проводник мелкий не провел, но большая часть таких ошибок на этапе перерисовки схемы вылазит, остаток выявит моделирование.

Bolt
08.06.2014, 13:15
Что такое СФМЦ и СФМТ?

Vslav
08.06.2014, 13:16
По картинке в этом топике - Схема Формирования Машинных Циклов и Схема Формирования Машинных Тактов

Bolt
10.06.2014, 18:52
А сколько всего существует разновидностей этого процессора? ВМ80 и ИК80 отличаются только маркировкой, старый/новый стандарт?

esl
10.06.2014, 19:46
А сколько всего существует разновидностей этого процессора? ВМ80 и ИК80 отличаются только маркировкой, старый/новый стандарт?

Были как минимум 2 снимка кристалла которые не совсем совпадали, если не изменяет память :)

Bolt
10.06.2014, 20:34
Дык я ж и спрашиваю, потому что Z80 сходу попалось 3 фотографии, и они не совсем совпадают, причём не совпадают очень интересно ;)
Дело не в общем виде кристалла и расположении блоков, там то ли закладки от копирования, устранённые в копиях, то ли это ошибки, которые были исправлены.

Очень интересно, нет ли в 580ВМ80 чего-то подобного. Но чтобы это найти моделирования мало, надо "вручную" полностью проследить логику работы процессора.

Vslav
10.06.2014, 22:06
Расковырялось примерно 3/4 процессора. В приложении текущие варианты декодера и АЛУ. Схема сумматора-кодопреобразователя весьма дивная.
Осталось самая мутная и нерегулярная часть.

Vslav
10.06.2014, 22:10
Дык я ж и спрашиваю, потому что Z80 сходу попалось 3 фотографии, и они не совсем совпадают, причём не совпадают очень интересно ;)
Z80 много кто клонировал, так что варианты возможны. А вот 580xx80 - известно только про киевский Микроприбор. ВМ80А это вроде улучшенная версия ИК80 под усовершенствованный техпроцесс, по слухам может работать от одного питания +5V (можно подать вместо +12V) и что ему не надо -5V, а можно "землю". Но мне сомнительно что без смещения подложки оно будет работать, а встроенного генератора смещения не наблюдается.

BarsMonster
10.06.2014, 23:53
Z80 много кто клонировал, так что варианты возможны. А вот 580xx80 - известно только про киевский Микроприбор. ВМ80А это вроде улучшенная версия ИК80 под усовершенствованный техпроцесс, по слухам может работать от одного питания +5V (можно подать вместо +12V) и что ему не надо -5V, а можно "землю". Но мне сомнительно что без смещения подложки оно будет работать, а встроенного генератора смещения не наблюдается.

Я их обоих ковырял - центральный фарш практически один в один, периферия отличается. Техпроцесс чуть-чуть тоньше у ВМ80.

http://zeptobars.ru/ru/read/kr580ik80a

Смещение подложки - по мере совершенствования техпроцесса (уменьшение количества грязи) есть шанс, что оно перестает быть необходимым для NMOS техпроцесса. В журнале Радио писали, что можно так делать у ВМ80, но естественно это нестандартный режим.

Vslav
17.06.2014, 17:30
Потихоньку разрисовал схему формирования циклов и тактов. Достаточно запутанная, надо будет изучать на модели. Осталось разобрать примерно 15 процентов - схему управления АЛУ и блоком регистров.

Ewgeny7
18.06.2014, 08:04
по слухам может работать от одного питания +5V (можно подать вместо +12V) и что ему не надо -5V, а можно "землю". Но мне сомнительно что без смещения подложки оно будет работать, а встроенного генератора смещения не наблюдается.
Это не слухи, это правда. У меня проц нормально работал, когда +5 вместо +12, и Gnd вместо -5. Только тактовая должна быть ниже максимальной, в ЮТ используется 1,78мГц, на этой частоте при одном питании +5 заработали все имеющиеся у меня ВМ80А разных годов и производств. А вот ИК80 не завелись....

Vslav
19.06.2014, 07:43
Кажется накопал странное - флажки состояния для схемы анализа переходов транслируются через шину данных в определенном такте. Думал ошибка, но никуда больше выходы триггеров с флажками не подключаются. Также накопал еще триггер скрытого временного флага - используется временно во всяких операциях АЛУ.
Еще есть странное место - затвор одного транзистора постоянно подключен к +5В (топологию перепроверил, вроде так) транзистор все время открыт, часть логической схемы (7-8 транзисторов) при этом не используется. То ли исправленный баг, то ли фокус какой, уже на моделировании буду разбираться.

Vslav
20.06.2014, 15:23
Все транзисторы импортированы в схему. Получилось 4756 штук. Примерно 800 болтаются пока неприкаянными, это схема управления блоком регистров, там тупо канонические деревья - инструкция/цикл/такт, кое-где латчи внутрь встроены, муторно рисовать. Как будем Verilog модель делать? "Честную" с описанием латчей на затворах, или сразу введем общую тактовую, а F1/F2 как разрешения тактирования? Это удобно в FPGA засунуть потом.

HardWareMan
20.06.2014, 21:03
Я думаю можно сделать просто тактовую. Привязанную к фронтам, т.к. даже на латчах изменение происходит во время фронта. А вот последовательность двухфазовая, ага.

Vslav
20.06.2014, 21:16
Не всегда оно по фронту. Фиксация входных сигналов (данных с шины, например), происходит в момент спадания сигнала разрешения латча, а не по фронту. Поэтому предалагаю сделать одну глобальную тактовую, а F1 и F2 использовать как разрешения. Для моделирования-то можно и "честные" латчи сделать, но для FPGA все равно потом переписывать.

HardWareMan
21.06.2014, 03:43
Ну фронты бывают разные: передние и задние. И, хотя, правильнее говорить фронт и спад, в моем посте я употребил "фронт" в качестве "перепад".

Если сделать F1 и F2 как ENA, тогда их действие будет практически как обычный латч, который поквантован на изначальную тактовую частоту (скажем 50МГц). На общее поведение модели это не скажется.

Vslav
22.06.2014, 07:51
Очень прикольная новость. Накопал триггер, который инвертируется по определенному сигналу. А вот начальной установки у него никакой, то есть как при включении питания "Бог пошлет", такое значение и примет, от RESET и прочего никак не зависит. Ну, само по себе ерунда, обычный делитель частоты, бывает. А потом оказалось что выходы триггера рулят стробами в блоке регистров. Получается что каким именно регистром отрулится - непонятно, долго искал ошибку, думал что неправильно разобрал топологию. Потом дело дошло до входа этого триггера, а это такт T2 инструкции XCHG (по факту цикла М1 следующей команды). И выходит интересная вещь - регистры DE и HL переименовываются! И этот загадоный триггер содержит индекс регистровой пары которая в данный момент играет роль HL. Я еще ломал голову как это XCHG выполняется за 4 такта если архитектура мультиплексора такое не позволяет - физически обменять содержимое регистровых пар, а тут вон оно как - трюк переименования регистров, примененный уже в 1974-ом году.

HardWareMan
22.06.2014, 08:19
Вот откуда уши у команд обмена регистровых файлов у Z80. С другой стороны все предельно логично. Я бы именно так и поступил.

Titus
22.06.2014, 08:24
Переименование - это и логично и понятно.

А не нашлось ли при раскопке каких-либо недокументированных ранее возможностей, режимов или глюков?

Vslav
22.06.2014, 09:00
Переименование - это и логично и понятно.

А не нашлось ли при раскопке каких-либо недокументированных ранее возможностей, режимов или глюков?
Рано пока говорить об этом, надо дорисовать схему, написать модель и провести моделирование. Хорошо бы на реальном стенде прогнать "живой" 580ВМ80А и параллельно его реализацию на FPGA с постоянным сравнением сигналов, но я этим если и буду заниматься для 580-го, то уже после реверса 1801ВМ1.

Titus
22.06.2014, 09:40
я этим если и буду заниматься для 580-го, то уже после реверса 1801ВМ1.

Было бы очень интересно его реверсировать.

---------- Post added at 11:40 ---------- Previous post was at 11:34 ----------


Рано пока говорить об этом, надо дорисовать схему, написать модель и провести моделирование. Хорошо бы на реальном стенде прогнать "живой" 580ВМ80А и параллельно его реализацию на FPGA с постоянным сравнением сигналов

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

Vslav
22.06.2014, 20:03
Последняя страничка пошла. Интересно, оставшиеся транзисторы получится на ней разместить, или для парочки прийдется отдельный листик заводить? :)

Udillak
22.06.2014, 21:08
Последняя страничка пошла.

Просмотрел схему декодера - все "недокументированные" команды соответствуют своим описаниям из разных источников, включая википедию. А жаль. :)

Еще было интересно, есть ли недокументированное использование трех неиспользуемых битов регистра флагов, но, исходя из схемы АЛУ, они ни как не задействованы и регистр соответствует документации - SZ0A0P1C. Хотя, при этом, на странице википедии (http://en.wikipedia.org/wiki/Intel_8080#Flags) в схеме регистров процессора пятый бит регистра флагов обозначен как Interrupt Flag. Может в i8080 оно так и есть.

HardWareMan
23.06.2014, 08:06
Переименование - это и логично и понятно.
Лет 10 назад, когда я писал свое ядро эмулятора ВМ80 я в качестве регистров применял указатели а не сами переменные. Потом он был расточен до Z80.

HardWareMan
04.07.2014, 12:05
Ну что там? Народ писается кипятком уже!

Vslav
07.07.2014, 19:19
О, прошу прощения, перед отпуском был завал (обычный ежегодный), даже основной проект не получилось до самого конца добить, было не до хобби. Состояние по хобби такое - схему 580-го дорисовал, начал Verilog описание, оно там небольшое выходит. Уже вернусь домой - закончу и выложу все скопом, тут у меня крошечный ноут жены, который мои девушки рвут из рук и материалы не взял с собой. Да и расслабон полный, уж простите меня.

Vslav
13.07.2014, 16:43
Поскольку отпуск еще будет относительно долго и сразу после отпуска у меня не будет особо много времени на 580-ый, а также есть еще желающие написать свое HDL-описание, то решил не жадничать и попросил товарища выложить имеющийся на данный момент вариант схемы (http://forum.pk-fpga.ru/viewtopic.php?f=43&t=5552)

Titus
13.07.2014, 20:13
Не обнаружились ли какие-либо недокументированные ранее особенности проца?

HardWareMan
13.07.2014, 21:30
Это максимально полная схема? Есть белые пятна?

Vslav
14.07.2014, 00:08
Недокументированных возможностей не обнаружилось пока. Возможно что-то вылезет при моделировании, но я сомневаюсь. Белых пятен нет, это полная схема. Единственное что - надо будет перенумеровать транзисторы по ЕСКД.
Также возможны ошибки реверса (не слишком вероятны, но тем не менее), надо написать HDL-модель и прогнать на ней 8080 execiser, например. Я думаю как-нибудь осилим баги, если таковые вдруг будут.

cpg
17.07.2014, 07:48
Проделали большую работу и потратили много личного времени! Спасибо!
Чем собираетесь моделировать (среда) и до какого уровня (!транзистьоров)?
Для прогона execiser нужно как-то интерфейс организовать для вывода результатов - какие соображения?

Vslav
19.07.2014, 19:53
Чем собираетесь моделировать (среда) и до какого уровня (!транзистьоров)?

До уровня транзисторов, думаю, моделировать не стоит. Опишу логику на Verilog - там всего несколько сот строк выходит, для моделирования буду использовать ModelSim. Сначала логику напишу "прямо по транзисторам", потом чуток "причешу" в более читаемый вид, потому что !(!a & !b) следует превратить в (a | b). Для синтеза в FPGA (или другую платформу) это не имеет абсолютно никакого значения, а исходник становится внятным.



Для прогона execiser нужно как-то интерфейс организовать для вывода результатов - какие соображения?
Да вроде там нет особых проблем, думаю средств консольного вывода Verilog типа $display или $monitor вполне хватит. Я так автоматически табличку кодов клавиш 014 составил, потом просто скопипастил из окошка консоли в файл, простота использования мне понравилась. Можно выводить и не в консоль а сразу в лог-файл. "Прошивку" execiser-а тоже можно в модель считывать из отдельного файла. В-общем, штатных средств Verilog достаточно.

Vslav
27.07.2014, 17:42
Вернулся из отпуска. Как раз приехал микроскопный объективчик Nikon CF Plan 20x/0.50/160/0.17, было хорошее настроение - за вечер отфотал 1801ВМ1. Всего вышло 306 снимков, весом 8 гигабайт, общим разрешением 39K*39K - полтора гигапикселя. Потом оно при сборке уперлось в недостаток памяти (у меня всего 16) и быстродействия 4770, поэтому сделал даунскейлинг до 19K*19K, всего ~0.35Gpx в итоге. Два дня занял процесс подготовки к сборке, и примерно 4 часа сама сборка.
BarsMonster любезно согласился выложить большой файл у себя на хостинге, поэтому кому интересно - результаты тут (500MB) (http://s.zeptobars.ru/KR1801VM1-HD.jpg). Размер данных 500 мегабайт, браузер скорее всего ляжет, поэтому сохраняйте в файл на диске, потом смотрите. Сорри за оффтоп, но думаю многим будет интересно. Теперь пока вернусь к 580-му. Как дойдут руки до 1801 - открою отдельную тему.

cpg
28.07.2014, 13:34
микроскопный объективчик Nikon CF Plan 20x/0.50/160/0.17
А можно подробнее описать вашу оптическую систему?

Vslav
28.07.2014, 14:07
А можно подробнее описать вашу оптическую систему?
Да ничего особенного, недорогой китайский условно "металлографический" микроскоп. Подробности я на специализированном форуме (http://www.forum.shvedun.ru/viewtopic.php?f=6&t=1856) обсуждал, там есть список дополнительно прикупленных объективов и образцы изображений с них. Поскольку я абсолютный новичок в микроскопии, то последовательно наступил на все классические "грабли" (очередные были буквально вчера, когда до меня в разговоре с BarsMonster-ом вдруг дошло что цветность надо было ограничивать не камерой при съемке панорамы, а постобработкой), но в любом случае - было интересно :)

Vslav
03.08.2014, 21:10
Обработал уже 3 страницы схемы из 4-х. Осталась неописанной только страничка с АЛУ. Тот кусок который уже написан (внешние сигналы, автоматы состояний, декодер, регистровый блок) при пробной компиляции занимает половинку от альтерки MAX 5Z570. Есть шанс сделать недорогую однокорпусную замену 580-му, только на 40 МГц, 3-вольтовый, ну и корпус 64TQFP :)
PS. Пошлифовал 1801ВМ1 зубной пастой, докопался до слоя диффузии, все что нужно видно отлично, можно фотографировать.

HardWareMan
04.08.2014, 10:11
Обработал уже 3 страницы схемы из 4-х. Осталась неописанной только страничка с АЛУ. Тот кусок который уже написан (внешние сигналы, автоматы состояний, декодер, регистровый блок) при пробной компиляции занимает половинку от альтерки MAX 5Z570. Есть шанс сделать недорогую однокорпусную замену 580-му, только на 40 МГц, 3-вольтовый, ну и корпус 64TQFP :)
PS. Пошлифовал 1801ВМ1 зубной пастой, докопался до слоя диффузии, все что нужно видно отлично, можно фотографировать.

Это ажуенно! Я как раз по случаю прикупил мешок EPM570T100 (http://www.aliexpress.com/snapshot/6120232756.html)!

shurik-ua
05.08.2014, 00:44
Случайно набрёл на статью по вашей тематике, возможно она представляет для вас интерес: http://www.securitylab.ru/analytics/439497.php

ivagor
05.08.2014, 05:11
Тема про 8085 обсуждалась в ветке по ПК-6128Ц. Кстати, вот оригинал (http://www.righto.com/2013/02/looking-at-silicon-to-understanding.html) статьи. В блоге этого автора еще много интересных материалов и по 8085 и не только.

cpg
05.08.2014, 06:55
Михаил (BarsMonster) ответил по поводу вскрытия 1818ВГ93.
Оказалось, что один чип оказался без пассивирования)) хе-хе)) А вы говорите такого не бывает)) В итоге металлизация угробилась. Второй чип пока вроде не вскрывал. Отсылал я ему 2 чипа - завода квазар и ещё одного украинского завода (логотип "Э").
Когда дело дойдёт до восстановления - создам отдельную тему.

Vslav
05.08.2014, 08:56
Михаил (BarsMonster) ответил по поводу вскрытия 1818ВГ93.
Оказалось, что один чип оказался без пассивирования)) хе-хе)) А вы говорите такого не бывает)) В итоге металлизация угробилась.
Хм... А может концентрация кислоты по каким-то причинам была недостаточная?
Потому что при достаточной концентрации кислота сама по себе алюминий травить не должна, или незначительно (http://chemistry-chemists.com/N1_2010/194-197.pdf)

580ВМ80А полностью перевел в Verilog, но еще до начала моделирования видно что есть косяки (с вероятностью 99% возникшие при ручном переводе схемы в HDL) - при компиляции оптимизатор выкинул регистр инструкций, так что пока про занимаемое количество логических элементов судить рановато. Буду писать тестбенч и для начала пытаться отладить схему тактирования T1-T5 и M1-M5.

HardWareMan
05.08.2014, 10:11
А можно посмотреть промежуточные результаты? Или только готовое покажете?

Vslav
05.08.2014, 11:31
Да ничего секретного нет, кроме косяков :) Ошибки точно есть, но где именно - пока не найдено. Ну если есть интерес - то в приложении промежуточный Verilog. Файлик маленький, в отличие от схемы.

Схема претерпела небольшие изменения - кое-где переименовались цепи (значки инверсии появились/исчезли), перенумерованы транзисторы (по ЕСКД - теперь легче искать по номеру), кое-где для наглядности подвигал элементы, но собственно цепи не менялись, поэтому пока возиться с выкладыванием большого промежуточного файла схемы не буду.

Update: а execiser на реальном i8080 долго выполняется оказывается - часами. Моделировать его целиком будет сложно, придется на отладочном ките в реальной FPGA системку замутить, наверное.
.

ivagor
05.08.2014, 12:38
Ускоренный вариант эксисайзера (http://zx-pk.ru/showpost.php?p=651940&postcount=191), может пригодится

Vslav
05.08.2014, 12:48
Да, спасибо, я скачал Ваш код, финальные значения CRC такие же как и в родном экзорцисте?
Накидал тестбенч простой - подсовывает NOP, и весело затарахели T1-T3 и M1, по SYNC выдался честный статус 0xA2 (чтение команды из памяти).
Но, оказалось что такое сравнение: I == 8'b00xxx000, работает не так как я его понимал. Есть ли какие альтернативы помимо casex ? Пока ручками пропишу свою функцию сранения.

Update: написал свою функцию сравнения с использованием '==='. Хотя оператор заявлен как несинтезируемый, но поскольку возможно разрешение конструкции в момент компиляции, то синтез прошел нормально, дизайн все еще влазит в 570-ую, но уже берет 90 процентов емкости.

ivagor
05.08.2014, 13:23
финальные значения CRC такие же как и в родном экзорцисте?
да

---------- Post added at 17:23 ---------- Previous post was at 17:10 ----------


Есть ли какие альтернативы помимо casex ?
Уже неактуально, но в принципе наверно можно было что-то вроде (I[7:6]==2'b00)&&(I[2:0]==3'b000)

Vslav
05.08.2014, 20:15
Решил таки выкинуть всю логику где сравнивается c 'x', чтобы спать спокойно. Еще нашел пару своих косяков - теперь стали тарахтеть T1-T4 в цикле M1. А не как было T1-T3 - а никто и не заметил ;)

Особенно доставляет емкостная шина данных, если там поставить "честный" регистр и эмулировать емкость, то получается два весьма разлапистых мультиплексора (отдельные на сброс/установку, ну или один но очень большой), да и данные будут задерживаться на такт, пришлось вникать как оно там по фазам разложено и добавлять расширение строба только в нужных местах, в итоге заработала инструкция LXI, и даже выполняется за оригинальные 10 тактов.

Сейчас нашел Прекрасный ассемблер Онлайн (спасибо автору, IAR-то для Z80 у меня есть, но его на ноуте лениво ставить), буду запускать предварительный тест экзорциста.

HardWareMan
05.08.2014, 21:23
А как преобразовалась схема? Были ли в ней найдены ошибки, если да то какие? Я понимаю, что не сложно перерисовать нагрузочные транзисторы в сопротивления и потом перевести транзисторную схему в логическую. Было ли это сделано? Если есть более свежий вариант схемы, где его можно взять?

Извиняюсь, что столько вопросов, но народ хочет разобраться! (с)

svofski
05.08.2014, 21:39
Сейчас нашел Прекрасный ассемблер Онлайн (спасибо автору, IAR-то для Z80 у меня есть, но его на ноуте лениво ставить), буду запускать предварительный тест экзорциста.
На здоровье ;)

Vslav
05.08.2014, 21:55
А как преобразовалась схема?

Я не знаю - оно само, внутри моей головы :)
Я просто лежал с ноутбуком на диване, смотрел на схему и выписывал руками уравнения. То есть переводил соединения транзисторов в логику. Много тразисторов просто никак не отобразилось - буферные, pull-up и прочие.



Были ли в ней найдены ошибки, если да то какие?

Пока в схеме ошибок не найдено, найдено несколько ошибок перевода схемы в Verilog. Сейчас вот pre-экзорцист гоняю - почему-то не ставятся флаги, разбираюсь, но не думаю что это ошибка схемы, вероятнее ошибка переноса в текст.



Я понимаю, что не сложно перерисовать нагрузочные транзисторы в сопротивления и потом перевести транзисторную схему в логическую. Было ли это сделано?

Нет смысла перерисовывать - это большая и ненужная работа, можно сразу в текст переводить, это проще и намного быстрее.



Если есть более свежий вариант схемы, где его можно взять?

Более "свежий" вариант есть, но изменения косметические, сама логика связей не менялась, поэтому пока промежуточный вариант и не выкладываю, файл большой, тут на форуме не выложить - надо искать сторонний хост или Woland-а просить.

Update: выполняет LXI, MVI, CPI, JZ, JNZ, JMP, доходит до первой инструкции CALL и улетает далеко, фактически происходит переход по указателю стека. Глючит автомат состояний и тут уже, кажется, ошибка восстановления топологии. В приложении - текущий проект.

Update2: ага, нашел пропущенный транзистор. М-а-а-а-ленький затвор в виде короткого ответвления от цепи F1, прикрытый сверху параллельным металлическим проводником.

ivagor
06.08.2014, 14:06
Желательно написать небольшую "обертку" для этого варианта 580, чтобы его можно было использовать вместо t80 или k580wm80a.v (b2m) в имеющихся проектах ретрокомпов. Не хватает разделенных шин данных на чтение и запись и "мешают" два отдельных ce.

Vslav
06.08.2014, 16:16
Желательно написать небольшую "обертку" для этого варианта 580, чтобы его можно было использовать вместо t80 или k580wm80a.v (b2m) в имеющихся проектах ретрокомпов. Не хватает разделенных шин данных на чтение и запись и "мешают" два отдельных ce.
Да, я собирался сравнить с T80. Интересно каковы результаты будут, но не думаю что отреверсенный вариант эффективнее по скорости/ресурсам выйдет, тут мы за точность клона боролись, а не за скорость/ресурсы. С тактированием беда, что-то мне кажется что i8080 не двухфазный, а трех - F1, F2, и ~F1 & ~F2. Посмотрим, когда дойдет до оптимизации, попытаемся поработать на чистых двух фазах.

Поправил ряд с десяток багов в Verilog-описании, отыскался еще один пропущенный транзистор (всего два), и наконец предварительный экзорцист завершился успешно. Полный тест в виду длительности надо уже на реальной плате запускать, DE0 попробую.

Update: симуляция заработала и на двух фазах, но почему-то просит два такта CLK на активной F2, но это уже скорее всего моя проблема, а не начального дизайна.

bigral
08.08.2014, 16:49
Так а слой поликремния и дифузионный тоже в sprint layout-e рисуется (так же как и слой метализации) да? Получается что на этом этапе какбы идет "разработка" печатной платы из 3-х слоев?

Vslav
08.08.2014, 19:52
Так а слой поликремния и дифузионный тоже в sprint layout-e рисуется (так же как и слой метализации) да? Получается что на этом этапе какбы идет "разработка" печатной платы из 3-х слоев?
Угу. Хотя Sprint не самый лучший топологический редактор, он 32-битный, отсюда у него всего в работе 2 гигабайта памяти и, например, большой .jpg он загрузить не может, надо преобразовать в .bmp, но и там он упирается в картинку 12К*12К, нельзя использовать компоненты - я было начал использовать транзисторы, так он на первой тысяче дохнуть начал, пришлось транзисторы просто палочками в 4-ом слое наносить. Потом в PCAD-е уже добавлял "честные" транзисторы связанными группами - а то навалить сразу кучу и потом несколько тысяч транзисторов руками растаскивать по схеме тоже долго было бы. Сам PCAD жрет 50К (проверял) транзисторов и даже не кашляет.

Vslav
09.08.2014, 22:22
На данный момент:
- разобрался почему требовалось два такта F2, теперь работает за один такт F1 и за один такт F2.
- причесал исходник согласно "рекомендаций лучших собаководов" :) - lowercase всех автоматически сгенерированных имен, _n в конце и еще всякие мелочи
- разнес входную и выходную шины данных, для старого тестбенча сделал простую обертку чтобы было как в предыдущей версии, можно использовать для генерации одночиповой замены процессора
- запустил простую системку на плате DE0
- протестил пока предварительный экзорцист на плате DE0 - работает на 50МГц, Fmax показывает что должно и 100МГц пойти, но пока лень прикручивать PLL к системе

Сейчас буду патчить полный экзорцист и прогонять его на реальной DE0. Потом еще останется потестить прерывания, HALT, HOLD/HLDA и READY и на этом можно будет считать реверс законченным

Titus
10.08.2014, 02:15
Сейчас буду патчить полный экзорцист и прогонять его на реальной DE0. Потом еще останется потестить прерывания, HALT, HOLD/HLDA и READY и на этом можно будет считать реверс законченным

В общем, никаких потайных команд, регистров и флагов не открылось (

HardWareMan
10.08.2014, 10:26
В общем, никаких потайных команд, регистров и флагов не открылось (
Зато точный потактовый клон! Уже жду недождусь!

Vslav
10.08.2014, 19:22
Сегодня в реальной FPGA на DE0 заработало 23 теста из 25 основного пакета экзорциста. Пока осталось два неработающих теста ALU. Особенно долго я искал почему не работают тесты STAX/LDAX/MOV M*, много чего перепробовал, а суммы не совпадают. А проблема оказалась в директиве org 100h. У меня же нет CP/M, модуль исполняемый компилируется и грузится с нулевого адреса, поэтому адреса тестовых переменных переместились и тест давал неверный результат. Ошибка переноса программы такая, не в процессоре. С директовой org 100h результаты верные, ну а с ALU буду разбираться чего там не работает, вообще удивительно как он при неработающем ALU все остальные тесты сумел корректно вычислить.

HardWareMan
10.08.2014, 19:40
Финишная прямая! Главное, чтобы открылось второе дыхание! А проектом под DE0 поделишься? У меня есть плата, я бы тоже погонял.
А что именно из тестов ALU не проходит?

Vslav
10.08.2014, 20:52
У меня есть плата, я бы тоже погонял. А что именно из тестов ALU не проходит?
Тесты ALUOP NN и ALUOP <B, C, D, E, H, L, M, A> дают неверные CRC32. Думаю с корректностью установки флажков проблемы.
Проект под DE0 в этом же архиве. Нужно только скомпилировать Execiser\Work\8080exe.asm при помощи zmac assembler (гуглится и выкачивается - мелкий), там есть .bat для этого и также препроцессор локальных меток (atxt32.exe).

Udillak
11.08.2014, 01:59
Тесты ALUOP NN и ALUOP <B, C, D, E, H, L, M, A> дают неверные CRC32. Думаю с корректностью установки флажков проблемы.


Эти тесты, насколько я понимаю, проверяют инструкции ADI и ADD. Обе они формируют id_add в верилог описании. В документе Intel MCS-80 к ним и некоторым другим инструкциям есть сноска:


The results of these arithmetic, logical or rotate instructions
are not moved into the accumulator (A) until
state T2 of the next instruction cycle. That is, A is loaded
while the next instruction is being fetched; this overlapping
of operations allows for faster processing.

Может быть в этом проблема?
Из "других" инструкций, для которых действует вышеуказаное правило, тестируется только RLC в тесте <rlc,rrc,ral,rar>, но эта инструкция, видимо, работает правильно.

ivagor
11.08.2014, 04:43
инструкции ADI и ADD
а также вычитание и логические

Vslav, имхо для упрощения и ускорения процесса выявления проблем нужен тест с пофлаговыми CRC, наподобие такого (http://zx-pk.ru/showpost.php?p=654746&postcount=151)

Vslav
11.08.2014, 07:08
Эти тесты, насколько я понимаю, проверяют инструкции ADI и ADD.

Плюс к ним дополнительно SUB, SBB, CMP, ORA, ANA, XRA.



MCS-80 к ним и некоторым другим инструкциям есть сноска:

Этот момент работает нормально, когда разбирался я тоже заметил как поздно результат пишется. Это у них pipelinе такой - пока выбираем следующую команду, ALU отрабатывает всю свою длинную цепь переноса из целых 8 бит (для 1973 года - нормально, без сарказма) и наконец успевает выработать правильный результат. Хоть транзисторы и были медленные тогда, но принципы не меняются :). Цепь переноса в ALU построена интересно - четные биты нормальные, а во нечетные инвертированные, такая вот самая быстрая физическая реализация в NOR/NAND логике, подозреваю что современные сумматоры тоже похоже устроены.

Я думаю что, по-крайней мере, ADD, SUB, ORA, XRA, ANA, CMP дают верные результаты (значения аккумулятора как минимум), иначе экзорцист не работал бы - он сам использует эти инструкции для работы. Вероятнее проблема в ADC/SBB или в формировании какого-либо второстепенного флажка типа AC или P. Одну ошибку в формировании AC я уже вчера исправил (в архиве исправленная версия), но не помогло.


Vslav, имхо для упрощения и ускорения процесса выявления проблем нужен тест с пофлаговыми CRC, наподобие такого (http://zx-pk.ru/showpost.php?p=654746&postcount=151)
Да, спасибо за тест, но пока не хочу разбираться там с цветами и выводом. Я думаю чуть-чуть модифицировать уже портированный тест экзорциста - изолировать под одной логической инструкции и прогнать его на эталонной машине и получить верные значения CRC32 для этих изолированных тестов.
Может у кого-от есть под рукой такая эталонная машина с живым 8080/580 и он согласится прогнать мой модифицированный экзорцист. Или кто посоветует эмулятор в котором экзорцист нормально проходит?

HardWareMan
11.08.2014, 08:28
Есть специалист экспресс, готов содействовать!

ivagor
11.08.2014, 08:29
эмуляторы
Башкирия-2М (http://bashkiria-2m.narod.ru/index/files/0-11)
Virtual Vector (http://asdasd.rpg.fi/~svo/virtualvector/)

HardWareMan
11.08.2014, 08:39
эмуляторы
Башкирия-2М (http://bashkiria-2m.narod.ru/index/files/0-11)
Virtual Vector (http://asdasd.rpg.fi/~svo/virtualvector/)

Я думаю, что раз мы делаем клон настоящего железа, то желательно проверять на настоящем железе.

Vslav
11.08.2014, 09:07
Есть специалист экспресс, готов содействовать!
CP/M там есть?
Я вечером скомпилирую нужный тест, тогда выложу .com и .mac.
Ну и попробую на эмуляторе Башкирии прогнать для начала.

HardWareMan
11.08.2014, 10:32
У меня нет. Можешь просто скомпилировать под конкретный адрес? А как запустить я найду способ. В идеале - с 0000, но если там с 0100, то тоже ничего.

Vslav
11.08.2014, 11:11
У меня нет. Можешь просто скомпилировать под конкретный адрес? А как запустить я найду способ. В идеале - с 0000, но если там с 0100, то тоже ничего.
Скомпилировать не проблема, проблема в выводе информации. На DE0 я вывожу на семисегментник, и кнопочки обрабатываю. Для Специалиста прийдется вспоминать вызовы Монитора. Может быть попробую, если на эмуляторе Специалиста получится код отладить.
Запустил эмулятор Башкирии, загрузил CP/M с готового образа. А вот утилита для переноса файлов (например, 'img.exe A disk1.cpm 8080exe.com') не работает, просто молча завершается и все, в образ диска никаких изменений не вносится. Листинг тоже не делает. Не тот формат образа?

esl
11.08.2014, 12:01
авторы эмуляторов (Virtual Vector, B2M) потратили много времени чтобы эти тесты проходили ;)
я думая можно их использовать

https://github.com/begoon/i8080-core
это коре 8080
там эти экзерцисы прямо в тестовом запуске стоят.
автор - Alexander Demin кроме того много запускал этот тест на реальных процах (смотреть на сайте exec...)

имхо тут эмулятоам доверять можно.

Vslav
11.08.2014, 12:18
Да, эта ссылочка повеселее, все-таки с Visual Studio я сильно чаще имею дело чем с эмуляторами :). Все собрал и экзорциста запустил, вечером сделаю нужные мне модификации и буду тестировать.

HardWareMan
11.08.2014, 17:15
Скомпилировать не проблема, проблема в выводе информации. На DE0 я вывожу на семисегментник, и кнопочки обрабатываю. Для Специалиста прийдется вспоминать вызовы Монитора. Может быть попробую, если на эмуляторе Специалиста получится код отладить.

Я могу все сделать сам. Только дай все необходимые файлы и все. Лучше подстраховаться и все же прогнать на реале.

авторы эмуляторов (Virtual Vector, B2M) потратили много времени чтобы эти тесты проходили ;)
я думая можно их использовать
Например, вот так?
http://savepic.ru/5562125.png
Нет, спасибо, нам такой хоккей не нужен. Проверять надо на настоящей железке, иначе смысла нет вообще.

esl
11.08.2014, 17:35
Например, вот так?
http://savepic.ru/5562125.png
Нет, спасибо, нам такой хоккей не нужен. Проверять надо на настоящей железке, иначе смысла нет вообще.
это о чем ?

речь то собственно шла про то что есть ряд эмуляторов на которых результаты работы экзорциста совпадают с результатами на железе

причем в тестах экзорциса в осоновмом принимали участие авторы эмуляторов.

т.е. экзорцист тут можно сравнивать с эмуляторами (вполне орпеделёнными).

про что вы - я не понял вообще.

---------- Post added at 18:35 ---------- Previous post was at 18:27 ----------

просто если вы не в курсе, не стоит и писать ....

http://www.idb.me.uk/sunhillow/8080.html
из 13 результатов с реала там
1 (и первый с реала) - Alexander Timoshenko
9 штук - Alexander Demin (автор того кора что я указал выше)

оба имеют прямое отношение к эмуляторам.

HardWareMan
11.08.2014, 17:51
это о чем ?

Есть множество примеров, когда для прохождение тестов авторы эмуляторов ставили специальные хаки внутри эмулятора. Вот о чем речь. Если конкретно в данном случае я не прав - я буду только рад. Однако, финальный тест я бы все же прогнал на реальном железе либо опирался на результаты уже прогнанного теста на реальном железе. Ибо повторюсь: мы делаем не эмулятор процессора 580ВМ80А (пусть даже и точный), мы делаем его клон и он должен полностью соответствовать железному оригиналу, чтобы его можно было просто заменять в плате и не иметь потом при этом каких-то последствий.

esl
11.08.2014, 18:00
Есть множество примеров, когда для прохождение тестов авторы эмуляторов ставили специальные хаки внутри эмулятора. Вот о чем речь. Если конкретно в данном случае я не прав - я буду только рад. Однако, финальный тест я бы все же прогнал на реальном железе либо опирался на результаты уже прогнанного теста на реальном железе. И

Я про это и говорю.
Авторы этих эмуляторов потратили много времени на то чтобы они проходили этот тест
и вылизали всё,
без хаков.
именно по этой причине они и принимали активное участие в общении с автором теста и его оптимизации (Ivagor)

Заодно - посмотрите КАК работает этот тест.

использование эмулятора тут даст приличную экономию времени.

HardWareMan
11.08.2014, 18:31
использование эмулятора тут даст приличную экономию времени.
Не больше чем нормально подготовленый оригинал. У меня Специалист с поддержкой SD карты, время на запуск - чисто копирование на карту. И, кстати, почему "экзорцист" когда "эксесайзер" (Exerciser)?

PS В догонку про оверлап. Помимо записи результата ALU от предыдущей операции в цикле М1 следующей добавлю еще и вот что. При срабатывании условного перехода, команды возврата или обычного джампа, значение нового адреса заносится в РС как WZ+1 в машинном цикле М1 следующей команды, причем на ША выставляется значение WZ. В то время как PCHL выполняет копирование HL в PC нормально в 4м-5м такте исполнения.
http://savepic.ru/5570309.png
Это учтено/получилось в схеме?

Vslav
11.08.2014, 19:40
Не больше чем нормально подготовленый оригинал. У меня Специалист с поддержкой SD карты, время на запуск - чисто копирование на карту. И, кстати, почему "экзорцист" когда "эксесайзер" (Exerciser)?

Потому что позволяет "изгонять мелких бесов" - баги. Главное что все и так прекрасно понимают о какой программе идет речь. :)
Эмулятор реально экономит время, все тесты на эмуляторе у меня выполняются секунд 10, а на DE0 где 25МГц эффективная частота ядра i8080 классический (ускоренный - он у меня глючит, где-то накосячил при переносе) около 20 минут.

В-общем, разбил я тест ALU на 8 подтестов add, adc, sub, sbi, ana, ora, xra, cmp и оказалось что только ana выполняется неверно. Как и предполагалось - неверно выставлялся второстепенный флажок AC. В документации часто пишут, что при выполнении ana флаг AC принимает неопределенное значение. А по факту - это перенос от суммы третьих разрядов аккумулятора и второго операнда и еще одной единички, или, другими словами просто or третьих разрядов операндов.

Было:

psw_ac <= c[3] & ~id_xra & ~id_ora & ~id_rxc;
А должно быть:

psw_ac <= (c[3] & ~id_xra & ~id_ora & ~id_rxc) | (id_ana & (x[3] | r[3]));



цикле М1 следующей команды, причем на ША выставляется значение WZ.
....
Это учтено/получилось в схеме?
Конечно. Более того, там на ША много чего еше левого выставляется - все 16-тиразрядные инкременты/декременты эпизодически на ША выскакивают, в том числе при INX/DCX. Схема так устроена - входной аргумент для +/-1 у нее с буфера адреса берется.

PS. Пока писал пост - все тесты завершились успешно. Разберусь где я ошибся в ускоренном варианте экзорциста и буду тестировать HOLD, HLT, READY и прерывания.

Udillak
11.08.2014, 20:03
Пока писал пост - все тесты завершились успешно.

Скорость работы над проектом просто ошеломительная!
Форумчане, готовые хоть немного помочь, ну ни как не поспевают. :rolleyes:

HardWareMan
11.08.2014, 20:54
PS. Пока писал пост - все тесты завершились успешно. Разберусь где я ошибся в ускоренном варианте экзорциста и буду тестировать HOLD, HLT, READY и прерывания.
В специалисте данные сигналы не используются и я могу протестировать корку на реале. Для этого достаточно исправить эту строчку и все?

Vslav
11.08.2014, 21:33
В специалисте данные сигналы не используются и я могу протестировать корку на реале. Для этого достаточно исправить эту строчку и все?
Да, достаточно.

HardWareMan
11.08.2014, 21:54
В 570 не влазит, эээх...
http://savepic.ru/5530428.png
Посмотрел результат в RTL Viewer, это байтораздирающее зрелище. Просто печально.

balu_dark
11.08.2014, 22:17
а бывает можно с параметрами оптимизации поиграть - может и влезет.

Vslav
11.08.2014, 22:52
а бывает можно с параметрами оптимизации поиграть - может и влезет.
Если чего-то не используется - прерывания, HOLD, READY - то эти цепи можно наружу не выводить, а внутри подать неактивные сигналы, тогда возможно оно пооптимизируется, кое-что синтезатор выкинет и может влезть в 570-ую.

Update: в приложении 580-ое ядро, проект для DE0, исходники адаптированного (и ускоренного) execiser-а.

HardWareMan
12.08.2014, 06:46
Супер! Такую работу не стыдно и на OpenCores (http://opencores.org/projects) положить. Вон они заявляют (http://opencores.org/project,cpu8080):

The super compact core

Chris Strahm has been working on a "super compact" 8080 core. The idea is to strip out
features that are not absolutely required for most designs.

He's been reporting cell counts (LUTS) of below 1500.
Это ничто, по сравнению с данным вариантом. При условиее абсолютной совместимости.

Vslav
12.08.2014, 07:54
Такую работу не стыдно и на OpenCores (http://opencores.org/projects)
Угу, у меня там есть аккаунт, весьма вероятно что выложу.



Это ничто, по сравнению с данным вариантом. При условиее абсолютной совместимости.

Что-то многовато у них ячеек вышло, где-то есть неудачный синтез, видимо. Или это указаны ресурсы на всю систему.
А по нашему 580-му есть пара идеек по оптимизации. Например, регистр инструкций грузится в противофазе F2 только с входных пинов шины данных, поэтому можно сделать отдельный входной path на него и упростить мультиплексор d. Также совсем необязательно флагам подаваться на схему проверки условий тоже через шину данных, это опять упрощение мультиплексора (а их там 8 штук - по ширине шины данных). На растактовку такие оптимизации никак не повлияют, надо попробовать, хорошо бы все-таки в 570-ую MAX V втиснуться.

HardWareMan
12.08.2014, 08:12
Что-то многовато у них ячеек вышло, где-то есть неудачный синтез, видимо. Или это указаны ресурсы на всю систему.
А по нашему 580-му есть пара идеек по оптимизации. Например, регистр инструкций грузится в противофазе F2 только с входных пинов шины данных, поэтому можно сделать отдельный входной path на него и упростить мультиплексор d. Также совсем необязательно флагам подаваться на схему проверки условий тоже через шину данных, это опять упрощение мультиплексора (а их там 8 штук - по ширине шины данных). На растактовку такие оптимизации никак не повлияют, надо попробовать, хорошо бы все-таки в 570-ую MAX V втиснуться.
Годнота! Я сначала прогоню в окружении Специалиста данный вариант процессора: благо у меня есть девборды, которые это позволят. Если модель себя полностью оправдает, то можно будет заняться неразрушающей оптимизацией. А еще вот у меня какой вопрос: а почему нельзя было отказаться от основной частоты и сделать F1/F2 как тактовые? Невозможность полностью разделить сферы влияния (есть такие регистры, которые должны меняться по обоим тактовым сигналам)? И еще, я бы все же хотел преобразовать транзисторную схему в эквивалентную логическую. Быть может, что не увидел ты увижу я? Какие узлы могут свернуться а какие упростятся. Соответственно, есть окончательный и исправленный вариант транзисторной схемы?

ivagor
12.08.2014, 08:32
Работа с прерываниями в целом и команда HLT в частности проверялись?
Попытался заменить на этот проц в v06cc - кое-что делает, но на HLT стопорится

b2m
12.08.2014, 09:21
А вот утилита для переноса файлов (например, 'img.exe A disk1.cpm 8080exe.com') не работает, просто молча завершается и все, в образ диска никаких изменений не вносится. Листинг тоже не делает. Не тот формат образа?
Не та утилита. Если это с моего сайта, то:
img.exe для дисков формата FAT12/FAT16 (.img, .dsk, .bkd)
cmp.exe для дисков формата CP/M Башкирии, 2 отдельных раздела на каждой стороне (.cpm)
kdi.exe для дисков формата CP/M (.kdi, .odi, .fdd)

Проще было после загрузки CP/M открыть окно отладчика и загрузить файл с адреса 0x100, а потом запустить его с того-же адреса (установить PC=0100).

Vslav
12.08.2014, 09:35
Годнота! Я сначала прогоню в окружении Специалиста данный вариант процессора: благо у меня есть девборды, которые это позволят.

Отлично, дополнительное тщательное тестирование никогда не помешает.


а почему нельзя было отказаться от основной частоты и сделать F1/F2 как тактовые?

Была задача как можно точнее эмулировать latch и сначала было неясно сколько же тактов при активных уровнях F1/F2 ему понадобилось бы для прихода в стабильное состояние. Такое место, где ему понадобилось 2 клока при F2 действительно выявилось одно и оно легко откорректировалось. Так что можно попробовать переделать на прямое тактирование F1/F2, но я уже смысла не вижу и сомневаюсь что синтез лучше пройдет. Да и проекты с несколькими тактовыми доменами сложнее.


я бы все же хотел преобразовать транзисторную схему в эквивалентную логическую. Быть может, что не увидел ты увижу я? Какие узлы могут свернуться а какие упростятся. Соответственно, есть окончательный и исправленный вариант транзисторной схемы?

Да, конечно есть. Закончу тесты и выложу все материалы. Ну если "горит" - то отпиши в личку свой email, сброшу тебе корректную последнюю схему (около 3 МБ pdf). Разумеется, она не "секретная", просто лень искать хостинг для большого файла, а тут такое не выложить.
И, безусловно, было бы также интересно иметь "альтернативный перевод" транзисторной схемы.


Работа с прерываниями в целом и команда HLT в частности проверялись?
Попытался заменить на этот проц в v06cc - кое-что делает, но на HLT стопорится

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

---------- Post added at 10:35 ---------- Previous post was at 10:25 ----------



Не та утилита. Если это с моего сайта, то:
img.exe для дисков формата FAT12/FAT16 (.img, .dsk, .bkd)
cmp.exe для дисков формата CP/M Башкирии, 2 отдельных раздела на каждой стороне (.cpm)
kdi.exe для дисков формата CP/M (.kdi, .odi, .fdd)

Хм, cmp.exe я на сайте не нашел, пришлось пробовать img.exe, ну и нехорошо как-то молча завершаться, сказала бы уже что формат не тот или хотя бы что FAT не смогла найти.

HardWareMan
12.08.2014, 09:49
Была задача как можно точнее эмулировать latch и сначала было неясно сколько же тактов при активных уровнях F1/F2 ему понадобилось бы для прихода в стабильное состояние. Такое место, где ему понадобилось 2 клока при F2 действительно выявилось одно и оно легко откорректировалось. Так что можно попробовать переделать на прямое тактирование F1/F2, но я уже смысла не вижу и сомневаюсь что синтез лучше пройдет. Да и проекты с несколькими тактовыми доменами сложнее.
Ну, собственно, 2 тактовые и не нужно. После получения полного клона можно попробовать "склеить" тактовые частоты в одну F2. Именно она и задает, собственно, основную работу (судя по растактовкам в датащите). Стало быть пожертвовав наносекундной неточностью выставления сигналов на шине (отвязав от F1 и привязав к F2) можно попробовать. Но это так, как форка от оригинального проекта. Мыло намылю.

PS Небольшое зеркало проекта сделаю у себя: http://hwm.us.to/vm80/

Titus
12.08.2014, 09:56
Да, конечно есть. Закончу тесты и выложу все материалы. Ну если "горит" - то отпиши в личку свой email, сброшу тебе корректную последнюю схему (около 3 МБ pdf). Разумеется, она не "секретная", просто лень искать хостинг для большого файла, а тут такое не выложить.
И, безусловно, было бы также интересно иметь "альтернативный перевод" транзисторной схемы.

sderni.ru

5 секунд, и файл залит. Без регистрации и прочей фигни.

HardWareMan
12.08.2014, 11:10
sderni.ru

5 секунд, и файл залит. Без регистрации и прочей фигни.
Получил схему, доступна по указанной мной выше ссылке.

PS Про сдёрни не знал, раньше пользовал залил.ру, но он походу умер...

Vslav
12.08.2014, 11:11
ОК, актуальная на данный момент схема 580ВМ80А ревизия D (http://sderni.ru/238886)

Titus
12.08.2014, 11:21
ОК, актуальная на данный момент схема 580ВМ80А ревизия D (http://sderni.ru/238886)

Крутень) И хватило же терпения это все делать)

Жду не дождусь реверса линейки 1801ВМ1/2, и чипов от УКНЦ. Дабы можно было наконец-то написать точный эмуль. А то даже такие простые блоки, как программируемый таймер (http://zx-pk.ru/showthread.php?t=20673) в УКНЦ никак программно реверсинженерить не удается, ввиду плохо поддающихся предсказанию результатов)

HardWareMan
12.08.2014, 11:33
Нужно только скомпилировать Execiser\Work\8080exe.asm при помощи zmac assembler (гуглится и выкачивается - мелкий), там есть .bat для этого и также препроцессор локальных меток (atxt32.exe).
Нагуглил ZMAC (http://members.shaw.ca/gp2000/zmac.html), пробую собрать Ексесайзер для Специалиста. Получаю кучу ошибок разного калибра. На первых парах пытаюсь собрать оригинал. ЧЯДНТ?

Vslav
12.08.2014, 12:12
Нагуглил ZMAC (http://members.shaw.ca/gp2000/zmac.html), пробую собрать Ексесайзер для Специалиста. Получаю кучу ошибок разного калибра. На первых парах пытаюсь собрать оригинал. ЧЯДНТ?
Препроцессор локальных меток atxt32 в начале запускается? Там есть build.bat, можно в нем подглядеть процесс сборки.

Update:
- в HDL исправлены ошибки с командой rst
- также решена проблема с HLT - не заходило в TW
- проверены прерывания, симуляция + на реальной DE0
- проверена работа READY, вроде все OK, циклы расширяются
- почему-то умирает на HOLD, не рестартует после снятия, разбираюсь


Крутень) И хватило же терпения это все делать)

Я так прикинул - 2 транзистора в минуту в среднем, 40 часов всего, как раз месяц вечерами рисовалось.



Жду не дождусь реверса линейки 1801ВМ1/2, и чипов от УКНЦ

Закончим тут, будем потихоньку ВМ1 ковырять.

esl
12.08.2014, 12:18
Эх, остался бы Viktor2312 он бы на транзисторах собрал ...
Это же его любовь.

Vslav
12.08.2014, 13:43
Эх, остался бы Viktor2312 он бы на транзисторах собрал ...
Это же его любовь.

Будем надеяться что здоровье поправится и человек вернется.
Разобрался я с HOLD-ом, опять проблема неточной эмуляции латча, немного перекроил там логику, теперь процессор должен рестартовать как настоящий - по обнаружению снятия HOLD по фронту F2. А вообще надо паять "железный" модуль с реальным процессором, типа как я сделал для 1801ВМx и запускать клон и реальный процессор в параллель и выполнять к окончанию тактовых фаз сравнение внешних сигналов клона и оригинала. Самый точный тест получится. Для 1801 я такой тест и собираюсь делать, для 580-го - возможно, но только после 1801 уже.

Осторожно с моим примером execiser - он для ожидания кнопки стал использовать HLT и прерывание 20h с частотой 1 кГц на плате DE0. Если куда переносить - то надо откатить на старый вариант процедуры waitk (ждет кнопку button1) - он там же закомментарен.

На этом пока с 580-ым все, если больше никаких ошибок не вылезет.

ivagor
12.08.2014, 14:24
Версия i заработала в v06cc, круто! Правда есть странные проблемы с ресетом, но не факт, что это проблемы проца,

HardWareMan
12.08.2014, 14:36
Зазеркалил новый вариант. С эксерсайзером поступил проще: взял готовый бинарник с сайта и подправил вызовы. Сейчас кручу на настоящем процессоре на предмет эталонного результата. Затем в ход пойдет модель.

Mick
12.08.2014, 14:42
Эх, остался бы Viktor2312 он бы на транзисторах собрал ...
Это же его любовь.

Кто соскучился по Виктору, то могут с ним спокойно пообщаться на его форуме о его любви и прочем. Тут нечего флеймить.

svofski
12.08.2014, 15:10
ivagor, какого размера проц выходит? И для сравнения сколько занимает T80, чтобы сразу.

ivagor
12.08.2014, 15:33
есть странные проблемы с ресетом, но не факт, что это проблемы проца
Это сказались специфика тактирования в конкретном проекте.


какого размера проц выходит
Еще немного побалуюсь с тактированием и запощу результат в ветке про вектор на de1

balu_dark
13.08.2014, 18:31
HardWareMan - новости есть с тестирования на реале ?

HardWareMan
14.08.2014, 07:27
HardWareMan - новости есть с тестирования на реале ?
Да как-то странно ведет себя тест на Специалисте. Пытаюсь подпилить под работоспособность. После этого буду припаивать модель.

balu_dark
14.08.2014, 08:33
кстати надо еще учесть согласование уровней. Особенно 12 вольтовые клоки.

HardWareMan
14.08.2014, 12:29
кстати надо еще учесть согласование уровней. Особенно 12 вольтовые клоки.
Электрическая часть ващпе не проблема. Меня интересует тест. Она там кучу трюков пользует, что на некоторых тестах стек выкидывает в экран, рисуется мусор и все благополучно повисает. Мне интересно, это особенность скомпилирования под CP/M или просто гранаты у меня не той системы? В общем, сейчас я принялся за анализ исходника и правки его под окружение Специалиста. Думаю в ближайшие сроки осилю. Этот тест не только процессор тестирует, но и стабильность работы: продолжительность то большая. В будущем пригодиться как дополнение к тестам памяти.

Udillak
14.08.2014, 13:59
Надо бы узнать у BarsMonster-а, какой именно процессор он травил и фотографировал. Т.е. кто и когда его произвёл. Ведь были же разные ревизии у разных производителей.

bigral
14.08.2014, 17:27
Надо бы узнать у BarsMonster-а, какой именно процессор он травил и фотографировал. Т.е. кто и когда его произвёл. Ведь были же разные ревизии у разных производителей.

Думал об этом на днях, и пришел к выводу что это конечно важно (с точки зрения фиксации факта reverse engeneering-a для истории). Но! На фоне того что ЛИЦЕНЗИОННЫЕ(от разных производителей AMD, NEC и т.д.) i8080 и тем более i8085 выдают РАЗНЫЕ hash коды в exerciser-e о какой "борьбе за чистоту" может ити речь? И какой процент софта вообще откажется ити на i8085 потому что он другой hash генерит?

(К стати, думаю если написать такую прогу как exerciser на pdp-11, то не найдется ни одного процессора у которого бы совпали hash коды с другой моделью, но при этом как-то "живут люди").

esl
14.08.2014, 17:30
вроде ТОЛЬКО AMD имеет отличия
да и то, оно AMD вроде не лицензия а типа "своя разработка"
а остальные - лицензии и пока нет отличий.

HardWareMan
14.08.2014, 19:44
Вот что за разгильдяйство творится. Перелопатил исходник эксесайзера и получил оригинальный бинарник на своем ТАСМе. Далее, подправил вывод текста и хекса, установку стека и запустил. Мой говноэмуль выдает говно, но работает:
http://savepic.ru/5578223.png
Эмуль EMU80 тоже не попал, но так же работает:
http://savepic.ru/5630446.png
А реал крашится на середине первого теста DAD:
http://savepic.ru/5609966.png
В результате стек падает в 09BXXH (т.е. в экран, это нормально, там перед тестом инициализация регистра SP значением 09BC9H) и вываливает на ввод символа. Далее, если нажать кнопку весь тест зацикливается и до следующего выпадания. То ли память барахлит, то ли что-то еще - я не знаю. Можно попробовать вынести переменные теста за пределы программы и исполнить его прямо из ПЗУ. Или уже свой какой-то тест написать... Другие программы на реале работают без проблем.

PS Тест взял со значениями для 580ВМ80А.

esl
14.08.2014, 19:58
в эмуляторе b2m пробовали ?
там в теории должно без ошибок быть.

HardWareMan
14.08.2014, 20:41
Ну вполне ожидаемо:
http://savepic.ru/5590520.png
Походу, надо плотно тестировать память. Или может процессор, я прям не знаю. Но начну с памяти.

* * *


http://savepic.ru/5612843.png
Теперь понятно. Ну что-ж, будем искать...

* * *

Надо же, а после прогрева все работает вроде как правильно. Придется расчехлить МХ2 и поиграть с ним. Процессор то все равно одинаковый.

HardWareMan
16.08.2014, 21:44
Ну, вот и встало все на свои места. Прошил тест в МХ2 и все сразу взлетело с полпинка. Не смотрите что все синее, просто я для простоты не сделал настройку цвета а для контроля и так сойдет. Как только прогоню весь тест полностью и убежусь что все тесты проходятся моим КР580ВМ80А корректно попробую корку в этой же плате. Ожидайте новостей.
http://savepic.ru/5600497.jpg

Vslav
17.08.2014, 02:15
А "корка" на чем прогонятся будет? В смысле во что залита будет и каким способом подключаться вместо физического процессора?

HardWareMan
17.08.2014, 07:37
А "корка" на чем прогонятся будет? В смысле во что залита будет и каким способом подключаться вместо физического процессора?
У меня есть несколько разных девборд. В данном случае, я буду использовать эту (http://www.aliexpress.com/item/CoreEP4CE6-EP4CE6E22C8N-EP4CE6-ALTERA-Cyclone-IV-CPLD-FPGA-Development-Core-Board-with-Full-IO-Expanders/709604488.html). Примотаю изолентой левел шифтер этажеркой под DIP40 и всего делов. В ней 6К ЛЕ, так что хватит побаловаться в полную. Затем можно будет подумать про выкидывание HOLDа и, возможно, INTа. Хотя второе используется в том же Орионе и мне не хочется его терять, т.к. есть хитрый план на ПЛИСине сделать универсальный переключаемый комп Спец-Орион. Собственно, в симуляции все отлично, нужно делать в железе.

Vslav
17.08.2014, 08:51
А генератор тактовой (снизу там на фото осциллятор, похоже, стоит) на этой платке на какую частоту?
Я тут подумал - для стабильной работы vm80a_core надо чтобы F1/F2 были синхронизированы с этой высокой тактовой (ну или F1/F2 вырабатывались от нее). Поэтому на входы F1/F2 надо бы добавить еще защелки (внутри ПЛИС, ессно, по высокой тактовой) для нормальной работы, 10...20нс задержки никак не повлияют на остальную схему. Прочие входные сигналы вроде бы в модуле сэмплятся явно, больше защелок не нужно.

HardWareMan
17.08.2014, 08:56
А генератор тактовой (снизу там на фото осциллятор, похоже, стоит) на этой платке на какую частоту?
Я тут подумал - для стабильной работы vm80a_core надо чтобы F1/F2 были синхронизированы с этой высокой тактовой (ну или F1/F2 вырабатывались от нее). Поэтому на входы F1/F2 надо бы добавить еще защелки (внутри ПЛИС, ессно, по высокой тактовой) для нормальной работы, 10...20нс задержки никак не повлияют на остальную схему. Прочие входные сигналы вроде бы в модуле сэмплятся явно, больше защелок не нужно.
Ну да, это классика Альтеры: 50МГц. То, что ключевые сигналы надо пропускать через синхронизатор - это верно. Я могу даже задействовать отдельный вход и подключить к высокой самого компьютера (8МГц в случае с Экспрессом и 40МГц в случае с МХ2). Тогда будет полная синхронность.

Вот уже почти час молотит самый долгий тест:
http://savepic.ru/5596190.jpg
В спецах, кстати, согласовать F1/F2 проще простого: достаточно подтягивающие сопротивления убрать и поставить перемычки/обычные инверторы, либо переключить с 12в на 5в/3.3в.

* * *
Прошло около 2х часов, колбасит все еще ALUOP <B,C,D,E,H,L,M,A>... Когда буду тестировать корку, то передвину этот тест в самый конец списка.

* * *
2,5 часа:
http://savepic.ru/5575703.jpg

* * *

Посыпались остальные тесты, пока полет нормальный...

Итак, тест рабочий! Процессор мой тоже похоже рабочий. МХ2 стабилен (чего не скажешь о Экспрессе). Приступаю к монтажу нашего клона.
http://savepic.ru/5570601.jpg

ivagor
17.08.2014, 11:35
Итак, тест рабочий!
А с чем связаны сомнения в рабочести теста?

balu_dark
17.08.2014, 11:53
Ну и после тест комплита поставить или вечный цикл или перевод строки. Чтобы не путались люди и кони.

HardWareMan
17.08.2014, 11:57
А с чем связаны сомнения в рабочести теста?
По причине пересборки CP/M версии в обычный RKS бинарник для простого Специалиста/МХ/МХ2. Несколько другое окружение, несколько другие адреса и т.д.

Ну и после тест комплита поставить или вечный цикл или перевод строки. Чтобы не путались люди и кони.
Да, так и сделал в текущей версии. И еще укоротил сообщения, чтобы помещались в 64 символа. И еще много чего сделал. Например, перенес все служебные ячейки теста в 0BFxxH (последний столбик экрана). Наглядно видно что не завис и что-то считает. Вот так:
http://savepic.ru/5580857.jpg

balu_dark
17.08.2014, 13:56
ну и сам RKS если можно - приаттачить :)


ПыСы Я в плане - чтобы цикл не повторялся по кругу - для тестов памяти можно менее долгий/муторошный тест использовать.
А этот - просто по окончанию вывести надпись комплит и все.
А то сейчас нет надписей старт стоп и когда оно по кругу молотит - неясно откуда считать текущий тест. А так - доехало до конца - остановилось и все. ну или для желающих продолжить - добавить опрос кнопки Y для продолжения цикла.

Vslav
17.08.2014, 14:46
Прошло около 2х часов, колбасит все еще ALUOP <B,C,D,E,H,L,M,A>...
Я так понимаю это оригинальный исходный экзорцист? Может, надо было ускоренный вариант экзорциста пробовать? Принцип в нем абсолютно тот же, суммы те же самые, только ускорена методика подготовки тестовой модели, но работает примерно в 3 раза быстрее.

ivagor
17.08.2014, 14:58
Может, надо было ускоренный вариант экзорциста пробовать? Принцип в нем абсолютно тот же, суммы те же самые, только ускорена методика подготовки тестовой модели, но работает примерно в 3 раза быстрее.
Если речь про 8080exe7, то он, к сожалению, только в 2 раза быстрее оригинала, не в 3. С костылем сипиэма успешно отрабатывает в emu в конфигах специалиста и MX2.
Или есть Ваш вариант ускоренный в 3 раза?

HardWareMan
17.08.2014, 15:12
Я так понимаю это оригинальный исходный экзорцист? Может, надо было ускоренный вариант экзорциста пробовать? Принцип в нем абсолютно тот же, суммы те же самые, только ускорена методика подготовки тестовой модели, но работает примерно в 3 раза быстрее.
Оригинал, тест хороший. Около 3х часов идет. Пусть будет так, я просто поменял местами тесты так, что самые долгие (по тактам) идут в конце, позволяя основное тестировать как раз в заявленные полчаса. Скриншот работы вверху. RKS приложен: отрабатывает прямо из загрузчика Специалиста, но монитор присутствовать должен (лень было искать точки входа загрузчика, поэтому использую мониторные).

PS Забыл добавить, что я изменил в мониторе скроллинг, чтобы он 0BFxxH не сдвигал, а в стандарте cдвигает (тестов больше чем 25). Поэтому необходимо перенести стек за пределы экрана (в самом начале есть 31 FF BF). Заранее извиняюсь.

Vslav
17.08.2014, 17:09
Или есть Ваш вариант ускоренный в 3 раза?

Не, такого быстрого нету. Мне казалось что автор модификации писал про ускорение в 3 раза, но у меня реально получилось ускорится только чуть больше чем в 2 раза. Лично мне нравится запускать ускоренный вариант как экономящий время - я его наверное раз сто запускал, но то такое, кому что больше подходит.

ivagor
17.08.2014, 17:20
С костылем сипиэма успешно отрабатывает в emu в конфигах специалиста и MX2.
Уточню - выложенный вариант exe7 правильно проходит на специалисте все тесты, кроме inx sp/ dcx sp. Чтобы все тесты проходили верно и на специалисте, нужно откатить посттестовый фрагмент до исходного состояния (подробнее здесь (http://zx-pk.ru/showpost.php?p=733064&postcount=197)). Повышенная скорость при этом сохранится, но тестирование 8085 и 580ВМ1 станет не вполне корректным, как и для оригинального эксисайзера.

HardWareMan
17.08.2014, 18:47
Уточню - выложенный вариант exe7 правильно проходит на специалисте все тесты, кроме inx sp/ dcx sp. Чтобы все тесты проходили верно и на специалисте, нужно откатить посттестовый фрагмент до исходного состояния (подробнее здесь (http://zx-pk.ru/showpost.php?p=733064&postcount=197)). Повышенная скорость при этом сохранится, но тестирование 8085 и 580ВМ1 станет не вполне корректным, как и для оригинального эксисайзера.
Я использовал вариант с вышеуказанного сайта, вариант для КР580ВМ80А.

HardWareMan
18.08.2014, 21:29
На скорую руку был собран вот такой адаптер:
http://savepic.ru/5605147.jpg
И вот он как работает (точнее, не работает):
http://savepic.ru/5611291.jpg
Активность есть на всех необходимых сигналах и она вроде как более или менее правильная. Тактовая последовательность четкая. В отличии от всех журнальных 8мибиток, которые предоставляют данные во втором такте после сигнала SYNC (когда F2=0), МХ2 предполагает, что процессор защелкивает данные по перепаду F2 0=>1. Загодя до этого данные на шину поступают: реальный процессор работает на ура. Отсюда быстрый вопрос для Vslav: в какой момент времени защелкивает данные модель?
Самому разбираться хоть и надо но это долго.

Нашел такое место:

if (dbin_pin) di <= pin_din;
if (f2) dbin_pin <= t1124 & (m1f1 | ~sy_hlta);
Поменял на:

if (dbin_pin | !f2) di <= pin_din;
Большую часть экрана стал закидывать мусором. Может я и не правильно что-то делаю, конечно.

Vslav
18.08.2014, 22:13
Отсюда быстрый вопрос для Vslav: в какой момент времени защелкивает данные модель?

Начал отвечать на вопрос, решил помоделировать, так при нормальной растактовке (2/9 + 4/9 + 3/9) процессор не завелся. Только при сплошных однотактовых F1/F2 . Завтра уже постараюсь разобраться что там сломалось.

HardWareMan
18.08.2014, 23:08
WOW!
http://savepic.ru/5623572.jpg
Истина где-то рядом... Ощущение, что что-то не так с записью данных.

По поводу тактовой. В МХ2 она следующая (а так же в Спеце и Орионе):
http://savepic.ru/5626665.jpg
Датащит допускает спад F1 прикрутить к фронту F2 (дельта = 0), оригинал хавает, но как с этим у модели?

---------- Post added at 03:08 ---------- Previous post was at 02:25 ----------

АААААААААААААААААААААААА! Модель РАБОЧАЯ! Нужно было пропустить обе тактовые F1/F2 через триггеры, чтобы обеспечить их стабильность и синхронизацию к CLK 50MHz!
http://savepic.ru/5608232.jpg
Я сделал топором:
http://savepic.ru/5621546.png
А по хорошему это надо сделать внутри корки.

Udillak
18.08.2014, 23:09
Начал отвечать на вопрос, решил помоделировать, так при нормальной растактовке (2/9 + 4/9 + 3/9) процессор не завелся. Только при сплошных однотактовых F1/F2 . Завтра уже постараюсь разобраться что там сломалось.

Прочитал и сразу заметил - растактовка должна быть немного другая: 2-5-2.
Специально проверил в мануале интела. Хотя, с другой стороны, это не должно влиять на логическую модель.

HardWareMan
18.08.2014, 23:14
Основные тесты пройдены, остались три самых тяжелых с АЛУ. Это примерно на 3 часа зарубы, я пошел спать. Утром отпишу что и как.
http://savepic.ru/5604138.jpg
http://savepic.ru/5623595.jpg

HardWareMan
19.08.2014, 05:33
Модель все тесты проходит! Можно приступать к оптимизиции и прочим процедурам!
http://savepic.ru/5609254.jpg

balu_dark
19.08.2014, 07:27
Основные тесты пройдены, остались три самых тяжелых с АЛУ. Это примерно на 3 часа зарубы, я пошел спать. Утром отпишу что и как.
http://savepic.ru/5604138.jpg
http://savepic.ru/5623595.jpg


Плата преобразователя уровней выглядить брутальненько :)
Какие именно чипы использовались?

HardWareMan
19.08.2014, 07:53
Плата преобразователя уровней выглядить брутальненько :)
Какие именно чипы использовались?

Чипы классические, китайские: SN74LVC8T245DBR (http://www.aliexpress.com/snapshot/6077765955.html). Для адресов можно применить SN74LVC16T245DGGR (http://www.aliexpress.com/snapshot/6071301170.html). А вообще, в хозяйстве это не надо. Можно просто поставить LTTL 245й на шину данных, т.к. она двухсторонняя, а остальное запитать через обычные х245/х537. Которые все равно должны стоять в компьютере для разгрузки ВМ80 (за исключением специалиста и РКшки они есть везде). Теперь надо попытаться похудеть до 570ЛЕ, чтобы влезть в CPLD.

Vslav
19.08.2014, 07:59
Нужно было пропустить обе тактовые F1/F2 через триггеры, чтобы обеспечить их стабильность и синхронизацию к CLK 50MHz!

Так я вроде честно об этом заранее рассказал, что без этой синхры стабильно работать не будет (http://zx-pk.ru/showpost.php?p=733001&postcount=218)



Я сделал топором:

Круто и решительно :).



А по хорошему это надо сделать внутри корки.

Да, наверное. Только, думаю, не в vm80a_core, а в обертке vm80a. В проектах на FPGA тактовые CLK F1 и F2 обычно являются производными от одного клока и синхронизация не нужна. Найду проблему почему у меня модель перестала работать на "честном" тактировании и добавлю синхронизацию в обертку.

HardWareMan
19.08.2014, 08:06
Только, думаю, не в vm80a_core, а в обертке vm80a. В проектах на FPGA тактовые CLK F1 и F2 обычно являются производными от одного клока и синхронизация не нужна. Найду проблему почему у меня модель перестала работать на "честном" тактировании и добавлю синхронизацию в обертку.
Можно и так. А можно их формировать внутри обертки. И тогда входная тактовая будет одна. Получится как-бы ГФ24 онбоард. Причем, так же как и ГФ24, сигналы READY/HOLD (и я бы еще RESET) надо так же пропустить через триггеры:
http://savepic.ru/5592894.png
Это будет полезно для встраиваемых проектов. Можно будет еще и в обертке нацепить ВКшку - ну, собственно, я об этом изначально и говорил. Жалко, что Спец и Орион не прокатят из одной тактовой - там нужна строгая синхронизация. Но если их делать на CPLD/FPGA, то проблем нет.

Vslav
19.08.2014, 08:33
Причем, так же как и ГФ24, сигналы READY/HOLD (и я бы еще RESET) надо так же пропустить через триггеры:

Это сделано уже, в оригинальном дизайне есть защелки на все эти сигналы, и я их честно перенес в корку. А вот F1/F2 - это уже наша придумка, в клоне они используются не совсем так как в динамической логике оригинала, поэтому добавить синхронизаторы на F1/F2 - наша явная задача.



Жалко, что Спец и Орион не прокатят из одной тактовой - там нужна строгая синхронизация. Но если их делать на CPLD/FPGA, то проблем нет.
Достаточно сделать генерацию F1/F2 на той же CPLD/FPGA и использовать в схеме Спеца/Ориона. То есть, F1/F2 на процессорном модуле сделать выходами и тактировать остальную схему. Но это уже не точный попиновый клон.

Вообще я вижу как получившуюся корку можно хорошо пооптимизировать, оставить одну тактовую, сделать стандартную синхронную шину типа AHB/Avalon/Wishbone, есть задумка как экономно по ресурсам/ячейкам сделать режимы Turbo/Original (а то глобальный clock_ena, например, в T80 - это просто грабеж какой-то). Но это получится именно качественный "потактовый" клон, а не "попиновый". Для "попинового" надо будет добавить соответствующую обертку.

HardWareMan
19.08.2014, 08:46
Нечего добавить. Хватит слов, приступим к делу!

Vslav
19.08.2014, 10:55
Пофиксил:
- проблема ненадежного выхода из RESET при длительном (на несколько тактов F2), подправил генерацию t1f1
- при длительном F2 не рестартовало нормально после снятия HOLD, подправил
- немного упростил шину данных, так как флаги теперь на схему анализа перехода транслируются напрямую (а не через шину данных), лишние выдачи флагов на шину можно убрать.
- в модуль vm80a добавил синхронизацию фазовых сигналов F1/F2
- потестировал на модели с разными схемами тактирования, работает
- потестировал на DE0, работает

HardWareMan
19.08.2014, 11:18
Схоронил, зазеркалил (http://hwm.us.to/vm80/), скомпилировал, запустил. Неплохой результат уже!
http://savepic.ru/5635929.png
http://savepic.ru/5633881.png
http://savepic.ru/5623641.png
Еще бы чуть-чуть сбросить весу и цены бы ему не было. Как закончится эксесайзер - отпишу, но пока все ОК.
При принудительной установке READY, HOLD и INT выигрываем всего 10ЛЕ. Не густо. Я думаю, что в проекте есть места, где можно получить выигрыш без поломки совместимости. Нужно только поискать.

HardWareMan
19.08.2014, 14:36
Ну усё, данная модель ревизии "j" все тесты прошла по чесноку.
http://savepic.ru/5607270.jpg

HardWareMan
20.08.2014, 16:01
Занимаюсь анализом схемы. Есть занятные места. Возможно таки получится похудеть не потеряв внешней и внутренней совместимости с оригиналом.

HardWareMan
05.09.2014, 04:14
Продолжаю преобразовывать транзисторную схему ВМ80А. Скажу сразу, я заменил латчи на D триггеры, т.к. в рамках данной схемы их поведение одинаково (проверял на симуляции) а ПЛИС не очень любят латчи как таковые. Таким образом, схеме не требуется внешняя синхронизирующая частота, все на честных F1 и F2. Так же, были убраны лишние двойные инверсии (особенность транзисторного дизайна) в процессе восстановления логики. Я уже почти закончил первый лист, где тактовые и цикловые формирователи. Вот:
http://savepic.ru/5822866m.jpg (http://savepic.ru/5822866.jpg)
На данный момент схема занимает 36LE и способна взлететь на:
http://savepic.ru/5823890.png
Очень интересно, как это будет выглядеть в итоге. Даже сейчас видны мультиплексоры и некоторые другие элементы на "россыпухе", которые можно свернуть в один элемент для наглядности. Но это будет уже вторым заходом, после подтверждения правильности схемы в тестах.

balu_dark
05.09.2014, 08:46
Хм - на таких частотах клон специалиста - сделает карту 3d ускорителя :) куда уж там о бедном синклере говорить :)
А вот когда будет одно питание и один клок - будет совсем хорошо. Вернее питание то уже и так одно.

HardWareMan
05.09.2014, 19:27
Исправил несколько неточностей в схеме и добавил еще несколько блоков. Еще немного и первый лист будет полностью готов. Затем примусь сразу за 3й, чтобы инструкции хавало и можно было уже проверить, потому как на втором там АЛУ, а на четвертом регистры.

AIS
06.09.2014, 13:03
Прошу прощения, что влезаю со своим любопытством - сколько примерно корпусов выйдет, если собирать аналог ВМ80 на 155 серии?

HardWareMan
06.09.2014, 13:32
Прошу прощения, что влезаю со своим любопытством - сколько примерно корпусов выйдет, если собирать аналог ВМ80 на 155 серии?
А сразу и не поймешь. Как доделаю схему можно будет оценить.