PDA

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



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

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

А потребление такого количества 155 серии - представляете ?
Думаю корпусов 50 не меньше. ибо полно триггеров, а ТМ2 имеют только по 2 элемента в корпусе.

shurik-ua
06.09.2014, 21:20
сделайте на 74HC* серии в смд корпусах и с питанием 3.3в - для применения с плисами )

HardWareMan
06.09.2014, 22:39
А потребление такого количества 155 серии - представляете ?
Думаю корпусов 50 не меньше. ибо полно триггеров, а ТМ2 имеют только по 2 элемента в корпусе.
А зачем ТМ2? Там почти все триггеры пачками тактируются либо от F1 либо от F2. Ставим ИР23 и вот уже 8 триггеров в одном флаконе. ;) А все-таки забавно, если на 1533 его собрать, сможет ли он преодолеть барьер в 3МГц? И если сможет, то как высоко?

balu_dark
06.09.2014, 23:31
ну так по идее можно попробовать задать в симуляторе задержку ттл чипов и по идее при синтезе он покажет максимальную частоту дизайна.
В любом случае 155 серия - во первых много жрет. во вторых - очень тормозная.
Заменить то на 74HC можно но человек задавал вопрос именно про 155 серию.

Ал-р
07.09.2014, 00:11
Это у ВАС там в эмуляторе-симуляторе можно менять на 74HC... - это СОВЕРШЕННО другое чем 155, логика якобы таже но входы совсем другие и внутренне другое и выходы другие. Менять можно только логически а в реальных схемах их припутывать друг-дружке к 74ALS нельзя ...

Viktor2312
07.09.2014, 00:23
На К155 серии будет работать на частоте 8 МГц без проблем. Да и кушать не так уж и много.

Ewgeny7
07.09.2014, 00:27
На К155 серии будет работать на частоте 8 МГц без проблем.
С чего уверенность? Цепочки логики-триггеров сколько задержки могут дать, не считал?

Viktor2312
07.09.2014, 01:12
С чего уверенность?

Потому, что во всех справочниках пишут, что предельная частота работы всех микросхем, за исключением некоторых, как К155ЛА12 (5 МГц), 10...30 МГц, и обычно тут же добавляют, что при проектировании цифровых приборов следует иметь в виду, что фактическое быстродействие триггеров и счётчиков превышает указанное в 1,5...2 раза.


Цепочки логики-триггеров сколько задержки могут дать, не считал?

Задержки, это уже другое, не считал. Но с 2...3 МГц К155 логика уж точно справится.

AIS
07.09.2014, 09:30
50 корпусов не так много.
Из спортивного интереса развожу вручную в Спринт-лейауте видеоконтроллер Микро 80. Причем развожу, чтобы выглядело под ретро - никаких дорожек между ногами микросхем, дорожки шириной 1мм - можно такую плату вручную маркером нарисовать и вытравить без фоторезиста и лазерного утюга. Практически готово, надо чуть переделать - забыл про конденсаторы по питанию.
Там 45 корпусов, так что 50 корпусов это реально.

---------- Post added at 09:30 ---------- Previous post was at 09:26 ----------

А по быстродействию - вообще не знаю какой в этом интерес - увеличивать быстродействие ВМ80. На эту тему мне интересней другое - какое получится быстродействие на 561 серии если собрать.

MVV
07.09.2014, 10:34
Собирал подобное, были критические места, где требовалось считать нс и распараллеливать логику, иначе не работало. К тому-же ещё важно было правильно развести сигнальные и питающие шины с блокировочными конденсаторами. Процесс отладки макета затягивался бывало на месяцы, т.к. приходилось разбирать и переделывать неработающие блоки. В общем геморное и неблагодарное это занятие, поэтому и перешел на универсальное и в разы практичное - FPGA.
А вообще то, многое зависит от человека и его цели. Просто многие ещё так и остались в 80-х, когда в аппаратуре доминировали три вида микросхем: ТТЛ, КМОП и ЭСЛ :) и интересно только долгое тра...

AIS
07.09.2014, 10:45
Просто многие ещё так и остались в 80-х, когда в аппаратуре доминировали три вида микросхем: ТТЛ, КМОП и ЭСЛ и интересно только долгое тра...
Да , хобби, оно такое - бессмысленное и беспощадное.:)
По нынешним временам смысла нет ни в ВМ80, ни в 155 серии , ни вообще в самопальных разработках, даже на новейшей элементной базе.

balu_dark
07.09.2014, 11:08
50 корпусов не так много.


50 корпусов всего - конечно не много а вот 50 корпусов только самого процессора - дофига. потребление около 1.5 ампер минимум вместо 200 мА за готовый чип и еще и размер платы нифига себе.
Проще и дешевле по всем параметрам( потреблению, габаритам и прочему) купить готовый процессор.

Единственно в случае реализации на CPLD надо посмотреть максимальную нагрузку чипа - с целью при необходимости добавить на плату переходник - регистры для усиления нагрузочной способности.

bigral
10.09.2014, 01:32
На эту тему мне интересней другое - какое получится быстродействие на 561 серии если собрать.

Думаю на 500khz должно заработать, тут же ещё момент какое предпологается напряжение питания? На пределе в 12в явно будет тормозить по сравнению с 3в.

Vslav
11.09.2014, 11:43
Если уж делать на 74xxx, то я бы применил 74HC и 74HCT (для наружных цепей), но корпусов будет много, 50 - это вы, ребята, большие оптимисты :), мне видится 150+ (давать прогнозы неблагодарное занятие, так что это просто мнение, скорее всего ошибочное). На TTL/TTLS такую большую схему сделать можно, но потреблять будет ой-ей. Когда-то давно для похожей большой TTL схемы проектировался импульсный источник на 1 кВт, 5В и несколько каналов в сумме дававших 200А - при испытаниях на КЗ оно пинцет расплавило в лужицу.

Если кем-то будет разработана печатная плата и будет продаваться набор для сборки "процессора ВМ80А в тумбочке" - то я бы вероятно купил для школьного кружка. Только светодиодов побольше, побольше :)

И я тут подумал - у меня все равно будет делаться КСМ (контроллер символьного монитора от ДВК/Э-60) на FPGA, так что 580-ый модуль мне тоже пригодится. Когда дойдут руки до КСМ-а, доделаю процессор - будет одна тактовая и шина Wishbone снаружи, так же есть интересная идея для турбо/обычного режима, сохранится растактовка. Такое уже можно и на OpenCores выложить, но это все нескоро.

CodeMaster
11.09.2014, 12:00
при испытаниях на КЗ оно пинцет расплавило в лужицу.

Это по сути сварочный инвертор и есть.

Viktor2312
11.09.2014, 12:15
Это по сути сварочный инвертор и есть.

Вот только он не нужен такой мощный, для питания 200шт. микросхем 5А более чем достаточно.

CodeMaster
11.09.2014, 12:19
Вот только он не нужен такой мощный, для питания 200шт. микросхем 5А более чем достаточно.

На какой частоте?

Viktor2312
11.09.2014, 17:09
На какой частоте?

Всмысле на какой частоте, а на какой частоте используют К155/К555 серию, не более 20 МГц.

CodeMaster
11.09.2014, 18:57
Всмысле на какой частоте

В смысле того, что потребление сильно зависит от рабочей частоты.

Viktor2312
11.09.2014, 19:38
В смысле того, что потребление сильно зависит от рабочей частоты.

А я ориентируюсь на данные указанные в справочниках на К155 и К555 серию. Которые совпадают с реальным потреблением, проверено на практике, а частота для этих серий находится в диапазоне до 10 МГц, на больших частотах могут быть проблемы, хотя некоторые экземпляры работают и на больших частотах.
Но если учитывать сказанные выше частоты, до 10 МГц, то никаких заоблачных потреблений не будет, и можно ориентироваться в среднем 2А на каждые 50 шт. микросхем. И это с большим запасом.

BarsMonster
13.10.2014, 00:37
Итак, на чем мы остановились?

dennt
13.10.2014, 01:25
BarsMonster, так работает же проц: http://zx-pk.ru/showthread.php?t=24003

Кстати, а только мне интересно что же внутри настоящей ULA от Спектрумов 48/128?
Никто еще доноров не предлагал?

CodeMaster
13.10.2014, 07:42
Кстати, а только мне интересно что же внутри настоящей ULA от Спектрумов 48/128?

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

HardWareMan
13.10.2014, 09:00
Сильно загружен, нет времени пока продолжать проект по отрисовки логической схемы по транзисторной. Надеюсь через пару-тройку дней выделю время для этого. Верилог модель действительно работает. http://zx-pk.ru/showthread.php?t=23349&page=25 Зеркало исходников: http://hwm.us.to/vm80/

Vslav
13.10.2014, 12:57
Итак, на чем мы остановились?
Вчера вечером остановились на 4 тыс (of 17) еще неразобранных транзисторов в схеме 1801ВМ1 :)
А 580-ый клон давно работает нормально, но есть еще что улучшить перед выкладыванием на ОpenCores. Буду делать реплику КСМ для ДВК, тогда его подпилю и будет совсем финиш.

Ewgeny7
13.10.2014, 21:57
Тоже использовал ядро vm80a.v для своей реализации Радио-86РК на ПЛИСине.
Машинка тикает исправно.
HardWareMan, я тоже хотел бы запустить экзорциста, в твоей реализации функции вывода на экран сделаны стандартно, по векторам эркашным?
Можно тебя попросить сделать файлик .RK с экзорцистом? :v2_blush:

HardWareMan
14.10.2014, 08:59
Вот, сделай как надо. Рабочий адрес как у оригинала: 0100Н.

Ewgeny7
14.10.2014, 19:32
Воть....
Переписал адреса для РК86 32кб.

http://savepic.org/6177517.jpg

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

---------- Post added at 19:32 ---------- Previous post was at 19:02 ----------

Таки мешается стек. На ALUOP NN наехало на "мусор" и по результатам выдало ошибку CRC.
Еще разок передвинул, ниже экрана.
Теперь всё спокойно тикает.

HardWareMan
14.10.2014, 20:34
Осталось только поделиться со страждущими.

Ewgeny7
14.10.2014, 23:12
Да жду пока закончит. Уже давно мучает ALUOP(ABCDEHLХРЕНВАМВСЕМ) :)

---------- Post added at 21:31 ---------- Previous post was at 21:20 ----------

Вот эксисайзер (https://yadi.sk/d/J-mPVD8wc2JJi), для Радио-86РК 32кб ОЗУ.

---------- Post added at 23:12 ---------- Previous post was at 21:31 ----------

Йес!

http://savepic.org/6187554.jpg

Можно идти спать.

BarsMonster
17.11.2014, 02:00
BarsMonster, так работает же проц: http://zx-pk.ru/showthread.php?t=24003
А можно попросить сделать аннотацию кристалла по результатам, где что?
И можно в исходниках явно прописать лицензию, разрешающую использование с указанием авторства, что-нить вроде CC-BY 3.0?


Кстати, а только мне интересно что же внутри настоящей ULA от Спектрумов 48/128?
Никто еще доноров не предлагал?
Пока нет. Сейчас тут меня пинают с ВГ93 :-)

Ну и морально готовлюсь подступиться к i80386 - не хватает интеловских камней, AMD-шных-то завались.

Vslav
17.11.2014, 09:04
А можно попросить сделать аннотацию кристалла по результатам, где что?

Типа взять фото кристалла и наложить полупрозрачные цветные области с подписями? Это не вопрос, сделаем.



И можно в исходниках явно прописать лицензию, разрешающую использование с указанием авторства, что-нить вроде CC-BY 3.0?

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



Ну и морально готовлюсь подступиться к i80386 - не хватает интеловских камней, AMD-шных-то завались.

Угу, я тоже AMD DX40 прикупил пачку, все никак не открою :). Там "всего" 275К транзисторов, но наверняка упакованы в библиотечные ячейки. И слоев металла там, скорее всего, уже не один, и нормы субмикронные (40МГц вроде по 0.8мкм), в-общем, отреверсить "на коленке", имхо, малореально. Будет так - открыл кристалл, посмотрел, и закрыл :)

AlexG
17.11.2014, 09:25
Типа взять фото кристалла и наложить полупрозрачные цветные области с подписями? Это не вопрос, сделаем.


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


Угу, я тоже AMD DX40 прикупил пачку, все никак не открою :). Там "всего" 275К транзисторов, но наверняка упакованы в библиотечные ячейки. И слоев металла там, скорее всего, уже не один, и нормы субмикронные (40МГц вроде по 0.8мкм), в-общем, отреверсить "на коленке", имхо, малореально. Будет так - открыл кристалл, посмотрел, и закрыл :)

Некоторый оффтоп: Может я что упустил... Z80 отреверсили или нет ещё ?

BarsMonster
17.11.2014, 09:40
Угу, я тоже AMD DX40 прикупил пачку, все никак не открою :). Там "всего" 275К транзисторов, но наверняка упакованы в библиотечные ячейки. И слоев металла там, скорее всего, уже не один, и нормы субмикронные (40МГц вроде по 0.8мкм), в-общем, отреверсить "на коленке", имхо, малореально. Будет так - открыл кристалл, посмотрел, и закрыл :)

Ну, в старых тройках вроде 1.5мкм. Товарищи например довольно успещно PS1 ковыряют - а там ведь 0.8мкм... Транзисторы - в объемных регистровых файлах...

Вот найденная фотка (не моя) - http://s.zeptobars.ru/i386-4x-stitch.jpg

"тут главное чтобы Интел не возражал" - Интел не может быть против, если торговую марку не используем, а все патенты протухли уже даже на четверки... ;-)

cpg
17.11.2014, 09:53
Народ, создал новую тему по ВГ-шке. Прошу:
http://zx-pk.ru/showthread.php?p=754364#post754364

Vslav
17.11.2014, 10:49
Ну, в старых тройках вроде 1.5мкм. Товарищи например довольно успещно PS1 ковыряют - а там ведь 0.8мкм...

"Безумству храбрых поём мы песню" (c) (psxdev.ru)
Только там три месяца тишина уже, лишь бы у них руки не опустились.



Вот найденная фотка (не моя) - http://s.zeptobars.ru/i386-4x-stitch.jpg
Из рентгенологии упёр, не иначе :).
Как и на костях - ничерта не видно и непонятно :).
А старый Интел DX16 или хотя бы 25 я с начала лета на барахолках/базарах присматриваю, пока не попадался.

HardWareMan
17.11.2014, 11:30
"Безумству храбрых поём мы песню" (c) (psxdev.ru)
Только там три месяца тишина уже, лишь бы у них руки не опустились.
Безумные обитают здесь (http://forum.emu-russia.net/viewtopic.php?f=13&t=4106&start=260).

Vslav
17.11.2014, 18:11
Попытался сегодня оценить степень своего безумства, вскрыл Am386DX40 91-го года выпуска. Выяснил такие факты:
- размер пластинки теплоотвода 10х10мм
- размер кристалла 6.5х7.5мм
- залито в корпусе теплоотводом вверх, кристаллом вниз
- кристалл толстый (порядка 0,8мм), толще ангстремовской серии 1801
- кристалл хрупкий, ломается если начать отдирать не с той стороны (что-то я не подумал что может быть кристаллом вниз)
- но менее хрупкий чем серия 1801, выдралась дыра из толщи кристалла, но сам он не раскололся (раскололся позже, когда я решил что уже все равно и потащил неаккуратно)
- буржуйская смола при выжигании воняет меньше, но все равно воняет :)

По самой топологии:
- обнаружено два слоя металлизации
- нормы таки субмикронные, мелковато все
- насчет библиотечных ячеек - очень похоже что да, но без 100-процентной уверенности

Картинка для привлечения внимания, снято без юстировки на x20 объектив:
http://i003.radikal.ru/1411/f6/1f17312b9d7dt.jpg (http://i003.radikal.ru/1411/f6/1f17312b9d7d.jpg)

Ну не знаю, кмк, видно плоховато, надо снимать на более качественном микроскопе и делать шлифовку как "безумцы" с PS1.

BarsMonster
17.11.2014, 19:12
Ну не знаю, кмк, видно плоховато, надо снимать на более качественном микроскопе и делать шлифовку как "безумцы" с PS1.

На PS1 - кристалл 8.15x8.1mm, снимали на 40x (~2900кадров на кристалл), и там 2 металла + поли.

Так что тройка ощутимо проще...

Ewgeny7
17.11.2014, 23:00
Картинка для привлечения внимания, снято без юстировки на x20 объектив
Ё-маё.... Как вы там можете что-то видеть и понимать? надо быть инопланетянином, наверное... :)

BarsMonster
18.11.2014, 16:37
А старый Интел DX16 или хотя бы 25 я с начала лета на барахолках/базарах присматриваю, пока не попадался.

Кинул клич в твиттере - нашлись 2 16-мегагерцовых на ebay, уже выкупил.

Еще подсказали, что он до сих пор в продаже на digikey, цены вполне скромные: http://www.digikey.com/product-search/en?pv506=404&FV=fff40027%2Cfff80164%2Cfffc016b&mnonly=0&newproducts=0&ColumnSort=0&page=1&stock=1&quantity=0&ptm=0&fid=0&pageSize=500

Vslav
18.11.2014, 17:36
Кинул клич в твиттере - нашлись 2 16-мегагерцовых на ebay, уже выкупил.

Так что, ждем качественных больших фоток троечки? :)
Троечка-то попроще чем PS1 - и транзисторов поменьше, и архитектура практически полностью документирована, но два металла - это два металла, шлифовать нада, однака.
А у парней с PS1 там заруба еще на пару лет, похоже.

BarsMonster
18.11.2014, 17:39
Так что, ждем качественных больших фоток троечки? :)
Троечка-то попроще чем PS1 - и транзисторов поменьше, и архитектура практически полностью документирована, но два металла - это два металла, шлифовать нада, однака.
А у парней с PS1 там заруба еще на пару лет, похоже.

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

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

BarsMonster
20.11.2014, 08:41
Типа взять фото кристалла и наложить полупрозрачные цветные области с подписями? Это не вопрос, сделаем.

Да, именно так. А еще интересно иметь описание кто что делал - чтобы всех причастных упомянуть - хочу статейку катануть, на русском и английском.

Ну и вопрос лицензии по прежнему актуален )

Vslav
20.11.2014, 12:36
Да, именно так. А еще интересно иметь описание кто что делал - чтобы всех причастных упомянуть - хочу статейку катануть, на русском и английском.
Хммм... Сомнительная какая-то слава, разве что под псевдонимом :)

esl
20.11.2014, 12:45
Хммм... Сомнительная какая-то слава, разве что под псевдонимом :)

В смысле сомнительная !

Людей которые могут такое сделать и довести до конца - в мире еденицы !
Их точно нужно знать поимённо !.

Viktor2312
20.11.2014, 12:51
хочу статейку катануть, на русском и английском.

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

esl
20.11.2014, 14:13
А на английском зачем, мы его всё равно не знаем
Учите ...
и немецкий, и французский, и .. китайский


а ведь есть нормальное русское слово кристалл.


Криста́ллы (от греч. xxxxxx, первоначально — лёд, в дальнейшем — горный хрусталь, кристалл) — твёрдые тела, в которых атомы расположены закономерно, образуя трёхмерно-периодическую пространственную укладку — кристаллическую решётку.
https://ru.wikipedia.org/wiki/%D0%9A%D1%80%D0%B8%D1%81%D1%82%D0%B0%D0%BB%D0%BB%D 1%8B

Viktor2312
20.11.2014, 15:06
Учите ...
и немецкий, и французский, и .. китайский

Спасибо, но и так есть, что поучить, а не забивать себе голову, всягой ерундой.

Криста́ллы (от греч. xxxxxx, первоначально — лёд, в дальнейшем — горный хрусталь, кристалл) — твёрдые тела, в которых атомы расположены закономерно, образуя трёхмерно-периодическую пространственную укладку — кристаллическую решётку.

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

Eltaron
20.11.2014, 16:09
есть нормальное русское слово кристалл.
Самое тупое слово на свете, хуже только "камни" применительно к рубинам в часах.
Кристалл - это шняга, которую надо в болдердаше собирать, и в диззи4.

Viktor2312
20.11.2014, 16:39
Самое тупое слово на свете, хуже только "камни" применительно к рубинам в часах.
Кристалл - это шняга, которую надо в болдердаше собирать, и в диззи4.

И тем не менее, это правильно, и в серьёзной литературе, как-то умудряются корректно, правильно и по русски писать. Например, журнал "Компоненты и технологии" тот же Зотов В. как-то умудряется писать на русском, а он супер классные статьи пишет по ПЛИС.

Пример:

https://img-fotki.yandex.ru/get/17849/48644933.2d/0_eadc6_533c7c1c_orig.png (http://fotki.yandex.ru/users/lpiti/view/961990)
ст01

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

Eltaron
20.11.2014, 16:59
И всё лаконично, по русски, что должно быть английским, как имена нарицательные, они на английском, а что переводится на корректный технический русский, переведено. И нет подмены понятий, разговорных словечек и другой словесной дряни.
Корректный технический русский, созданный журналистами-гуманитариями? Ну-ну. Не может слово "кристалл" в таком значении возникнуть нормальным образом. Или выдумано журналистами/радиолюбителями, или это технический жаргон, который и есть те самые "разговорные словечки".
Термины должны быть самоочевидными. Я из-за таких любителей повыдумывать русские аналоги где ни попадя всё детство думал, что однокристальная ЭВМ - это ЭВМ, выпиленная из монокристаллического кремния.

Viktor2312
20.11.2014, 17:45
Корректный технический русский, созданный журналистами-гуманитариями? Ну-ну. Не может слово "кристалл" в таком значении возникнуть нормальным образом. Или выдумано журналистами/радиолюбителями, или это технический жаргон, который и есть те самые "разговорные словечки".
Термины должны быть самоочевидными. Я из-за таких любителей повыдумывать русские аналоги где ни попадя всё детство думал, что однокристальная ЭВМ - это ЭВМ, выпиленная из монокристаллического кремния.

Ну, тогда я умываю руки, бесполезно, я в 11 лет знал, что такое однокристальная ЭВМ, так как было абсолютно понятно, что все компоненты ЭВМ, выполнены на одном кристалле. Пишите дальше все эти словечки, но скоро вас абсолютно станет не понятно, называйте кристаллы, микросхемы, БИС и СБИС вашими чипчиками, называйте конденсаторы капами или капациторами, мне пофиг.
Я лишь высказал своё пожелание, если уж писать хорошую статью, то не применять там английские слова тупа написанные русскими буквами.

Eltaron
20.11.2014, 17:58
на одном кристалле
Кристалле чего?

Viktor2312
20.11.2014, 18:03
Кристалле чего?

Это не важно. Понятна сама суть, что всё находится на одном кристалле и упаковано в один корпус, в отличии от микропроцессорного комплекта, как например, микропроцессорный комплект КР580, где микропроцессор на одном кристалле и соответственно, это отдельная микросхема, а системный контроллер на другом кристалле, который так же представляет собой отдельную микросхему.

Eltaron
20.11.2014, 18:14
Это не важно.
Да важно же! Если за словом не стоит физического смысла, значит это жаргон! Великодержавный Русский, но жаргон. Это, скорее всего, сокращение от "подложка из кристаллического кремния" или типа того.

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


я в 11 лет знал, что такое однокристальная ЭВМ
А я в 11 лет на Бейсике писал лучше, чем ты сейчас - и что? :) Меня мало интересовал уровень ниже ассемблера, но журнал "Радио" я почитывал, и обилие этого взявшегося из ниоткуда жаргона очень раздражало мой неокрепший мозг.

Vslav
20.11.2014, 18:19
Давайте не будем (спамить - зачеркнуто) мусорить :) в полезной теме? Спасибо.

AlexG
21.11.2014, 08:14
Самое тупое слово на свете, хуже только "камни" применительно к рубинам в часах.
Кристалл - это шняга, которую надо в болдердаше собирать, и в диззи4.

Оффтоп:
Нормальное слово "кристалл".
А вот всякие "чики", "чекиниться", "супервайзер по клинингу" и т.д. это мусор в языке

англо-русский словарь по вычислительной технике 1990г стр 97
chip -
1) кристалл
2) микрокадр
3) конфетти
4) элементарный сигнал
5) микросхема.

Толковый словарь по вычислительным системам 1990г стр 75
chip -
1) кристалл (подразумевается полупроводниковая пластина итд)
2) интегральная схема (нестрогое толкование термина)

Вопросы ?

SegaBoy
05.12.2014, 14:04
Кто может объяснить, как выполняется инструкция DAA и как выставляются флаги A и C в результате её исполнения?

Vslav
05.12.2014, 19:39
DAA - десятичная коррекция после сложения.
Входные параметры:
A - аккумулятор
AC - флаг переноса из младшего нибла в старший (из 3-его в 4-ый разряд)
C - флаг переноса (перенос из 7-го разряда)
Выполняет такие действия (R временная переменная):
R = 0;
if (((A & 0x0F) > 9) || AC) R |= 0x06;
if (((A & 0xF0) > 0x90) || C) R |= 0x60;
A = A + R;
Установить все флаги согласно результата операции сложения.
Возвращает:
A, установленные флаги

b2m
05.12.2014, 21:30
A = A + R;
Установить все флаги согласно результата операции сложения.

Не совсем. Если был перенос, то он останется. А просто в результате сложения A + R переноса может и не быть:
0x90+0x90=0x20 C=1
0x20+0x60=0x80 C=0

Vslav
06.12.2014, 02:25
Не совсем. Если был перенос, то он останется. А просто в результате сложения A + R переноса может и не быть

Да, верное замечание, флаги P, AC, Z, S ставятся как при обычном сложении A+R. Флаг C сохраняет свое значение, но устанавливается если добавлялся 0x60. Скорректированный алгоритм:
R = 0;
if (((A & 0x0F) > 9) || AC) R |= 0x06;
if (((A & 0xF0) > 0x90) || C) {R |= 0x60; C=1;}
A = A + R;
установить флаги S, Z, AC, P согласно результата сложения.

HardWareMan
10.12.2014, 13:53
А теперь то же самое, но на схеме. :3

Vslav
10.12.2014, 16:54
А теперь то же самое, но на схеме. :3

То есть? Готова схема в логических вентилях?

HardWareMan
10.12.2014, 17:07
То есть? Готова схема в логических вентилях?
Моя еще только в процессе, я на пару недель уезжал в Тайланд. Только вот вернулся. Думал у тебя уже есть.

Vslav
10.12.2014, 17:10
Моя еще только в процессе, я на пару недель уезжал в Тайланд. Только вот вернулся. Думал у тебя уже есть.
Так я не вижу в ней практического смысла, мне транзисторов и верилога достаточно. Это только если кто удовольствие хочет получить и перерисовать из транзисторов в стандартные логические вентили.

bigral
10.12.2014, 19:05
Так я не вижу в ней практического смысла, мне транзисторов и верилога достаточно. Это только если кто удовольствие хочет получить и перерисовать из транзисторов в стандартные логические вентили.

Хм что интересно, упоминали что Masatoshi Shima тоже рисовал процы оперируя чисто транзисторами а не логическими вентилями. Обьясните как так? Неужели легче понять логику работы думая о схеме как об аналоговой?

HardWareMan
10.12.2014, 20:44
Хм что интересно, упоминали что Masatoshi Shima тоже рисовал процы оперируя чисто транзисторами а не логическими вентилями. Обьясните как так? Неужели легче понять логику работы думая о схеме как об аналоговой?
Транзисторная схема не обязательно аналоговая. Ключевой режим и все такое. К тому же, транзисторная схема позволяет делать несколько нестандартные логические операции. Однако, мне интересна именно логическая схема а не транзисторная. Вот я и разбираю.

Titus
10.12.2014, 23:30
Транзисторная схема не обязательно аналоговая. Ключевой режим и все такое. К тому же, транзисторная схема позволяет делать несколько нестандартные логические операции. Однако, мне интересна именно логическая схема а не транзисторная. Вот я и разбираю.

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

ram_scan
20.12.2014, 15:46
Я тоже согласен, что большинству железячников ближе к пониманию именно логическая схема (в виде законченных блоков типа триггеров, счетчиков и т.д.), а не транзисторная или на непонятном иноземном языке верилоге. Я за то, чтобы приводить реверсенные чипы в логическую схему.

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

В качестве примера - с точки зрения сфероконной логической схемы динамическая и флэш память в принципе неработоспособные вещи (хотя на кристалле как таковых отдельных конденсаторов чуть меньше чем совсем нет). А по крайней мере в Z80 существует емкостная "подтяжка" шин.

Не, на сфероконичную логику это переложить конечно можно (применительно к процессору), мультиплексоров натыкать например. Только вот это только усложняет дело.

Поэтому думать полезно шырше.

HardWareMan
20.12.2014, 21:18
Именно что логическая схема устройства (а не транзисторная) и позволяет понимать всю логику работы и перекладывать в таргет этот ваш повторяемый косвенный эффект.

Vslav
16.01.2015, 06:51
Что в итоге получилось:
- убрана зависимость от фазы F1
- фаза F2 переведена на фронт, единая частота для всей системы
- добавлена шина Wishbone
- сохранение таймингов зависит от реализации внешней памяти. При чтении модель выставляет адрес на шину только в такте Т2, если память успевает выдать данные за такт то оригинальные таминги сохраняются. В моей примерной системе память регистровая, она умеет только за два такта, поэтому чтение всегда растянуто на один такт. При чтении используется бывший вход READY. При записи адрес выставляется также в такте Т2, но поскольку строб записи по факту будет в T3 тут не так критично. Торможение при записи (если вдруг внешний агент не готов) осуществляется общим разрешением клока (тот что был F2). Как ни странно, ресурсов это не забирает, что с разрешением, что без - практически одинаково
- Результаты на плате DE0 (Cyclone EP3C16F484C6):
112MHz clock, 814 LUTs and 296 flip-flops при оптимизации по скорости
94 MHz clock, 662 LUTs and 187 flip-flops при оптимизации по размеру
- все это можно найти на гитхабе

Vslav
02.02.2015, 22:39
BarsMonster написал в блоге статью про реверс (http://zeptobars.ru/ru/read/KR580VM80A-intel-i8080-verilog-reverse-engineering), это дело немножко оттвиттили и отфейсбучили, теперь в теме некоторый наплыв гостей, в-основном, англоязычных. Я попытался часть своих постов перевести на английский при помощи гугля, убедился что слово "дралоскоп" не переводится, и вообще, в постах у меня изрядно идиом :biggrin:

balu_dark
02.02.2015, 23:07
ну - драть от слова копировать (но типа не законно ) вот и назови его - копископом :) или свето копировальным аппаратом. Это если я правильно понял о чем идет речь. У нас дралоскопом( местное название было дробоскоп - почему не знаю.) Это был стеклянный стол с лампой снизу. На стол клался чертеж, сверху чистый ватман либо калька и все обводилось.
Этим способом копировали чертежи и задания по черчению у отличников.

esl
03.02.2015, 01:00
BarsMonster написал в блоге статью про реверс (http://zeptobars.ru/ru/read/KR580VM80A-intel-i8080-verilog-reverse-engineering), это дело немножко оттвиттили и отфейсбучили, теперь в теме некоторый наплыв гостей, в-основном, англоязычных. Я попытался часть своих постов перевести на английский при помощи гугля, убедился что слово "дралоскоп" не переводится, и вообще, в постах у меня изрядно идиом :biggrin:

Круто !
а можно ссылки на всё это, а то я потерялся.

Vslav
03.02.2015, 01:07
Круто !
а можно ссылки на всё это, а то я потерялся.
Там в статье есть ссылки на схему (http://s.zeptobars.ru/kr580vm80a/vm80a_sch10d.pdf) и полный пакет (http://s.zeptobars.ru/kr580vm80a/vm80a_rev10j.zip) полученных исходников.
Ну а перевода я не делал и не выкладывал, просто было любопытно как оно увидится через переводчик не русскоговорящими.

Udillak
03.02.2015, 02:02
Vslav,
Поздравляю с формальным релизом!!
В верилог модели есть несколько закоментированых кусков. Думаю стоит их убрать, раз уж модель пошла в мир, чтоб не вызывало недопонимания у людей. :)
Еще есть маленькая ошибка в двух одинаковых коментариях "no in original 8080", надо заменить на "absent in original 8080".

vlad6502
03.02.2015, 17:56
Супер ! Мегатруд!

кстати, у нас в институте упомянутый светокопировальный девайс называли "козлотрон" ;)

Udillak
03.02.2015, 18:30
Vslav,
Есть вопрос. На сайте у BarsMonster указано, что транзисторов 4758 и это число уже успело попасть на страницу википедии, однако в схеме транзисторов 4756. Очень интересно узнать, что это за 2 загадочных транзистора? :)

Vslav
03.02.2015, 22:55
однако в схеме транзисторов 4756. Очень интересно узнать, что это за 2 загадочных транзистора? :)
Вы плохо посчитали транзисторы, надо пересчитать еще раз, их ровно 4758 :)
Если серьезно, то при написании модели было обнаружено два транзистора, пропущенных при векторизации:
T4757 - добавлен в районе T733
T4758 - добавлен в районе T1552
Автоматически перенумеровать по ЕСКД, чтобы нумерация была сплошная - несложно, но в верилоге кое-где встречаются цепи и регистры с номерами транзисторов по текущей нумерации, поэтому я ее сознательно портить не стал. Может быть перенумерую, когда буду делать версию 2.0 - с единой тактовой, вишбоном и удобной турбосхемой.

Update: а наплыв гостей в тему все растет :)
Update2: прикольно, новый рекорд всего форума сегодня, правда, после обновления версии движка, но все равно приятно :)
Update3: ларчик открывается просто (http://habrahabr.ru/post/249613/)

Udillak
04.02.2015, 02:46
Спасибо большое за развёрнутый ответ.
Жаль, что в PDF файле схемы не получается провести текстовый поиск. :)

HardWareMan
04.02.2015, 06:29
Треду и года нет, а он уже практически подытожен. Это круто!

Vslav
04.02.2015, 12:19
Спасибо большое за развёрнутый ответ.
Жаль, что в PDF файле схемы не получается провести текстовый поиск. :)
Хорошо, маленький сюрприз - схема (http://u.zeptobars.ru/yuot/8080/vM80_10d.sch) и топология (http://u.zeptobars.ru/yuot/8080/vm80_10d.pcb)

AlexG
04.02.2015, 15:02
Хорошо, маленький сюрприз - схема (http://u.zeptobars.ru/yuot/8080/vM80_10d.sch) и топология (http://u.zeptobars.ru/yuot/8080/vm80_10d.pcb)
Я прикинул на калькуляторе:
5000 транзисторов по 5*5мм == 125000 мм^2 или 50см на 25 см
Получилось вполне разумная площадь процессора. Можно паять для милитари на радиационно стойких транзисторах.
Кто возьмётся ?

MVV
04.02.2015, 17:19
Получилось вполне разумная площадь процессора. Можно паять для милитари на радиационно стойких транзисторах.
Кто возьмётся ?
Если взять к примеру в корпусе SOT23 (http://www.siongboon.com/projects/2005-09-07_home_pcb_fabrication/footprint/sot23_philips.pdf) посадочное место PCB 4.5мм х 4.6мм.
5k транзисторов x $0.1/шт = $500 и это только процессор, Cmax которого с трудом дотянет 200kHz???. Интересно, сколько это будет кушать W?

Уже делали:
Проектирование собственного компьютера (http://habrahabr.ru/post/178071/)
Строим декоративный транзисторный компьютер (http://habrahabr.ru/post/179705/)

Решили, что лучше и дешевле уже на FPGA :)

Вот если сделать ещё soft-core ez80 (http://www.zilog.com/index.php?option=com_product&task=product&businessLine=1&id=77&parent_id=77&Itemid=57) по типу NextZ80 (opencores.org/project,nextz80) для новых FPGA проектов под Unix, было-бы интересней. Хотя, кому что... :)

esl
06.02.2015, 20:27
http://www.righto.com/search/label/8085
прикольные тексты с описаниями z80 8085, классно офрмленые

Vslav
06.02.2015, 20:41
прикольные тексты с описаниями z80 8085, классно офрмленые
Угу, расковырять процессор мало - надо еще популярно это дело подать :)
580ВМ80А - это был побочный проект, перед заходом на 1801ВМ1, поэтому он так получился "бегом-бегом". По ВМ1 пишется подробный документ, но он не совсем в популярной форме, а "вкусняшки" по реверсу я краткими постами в соответствующей ветке выкладываю.

Udillak
18.03.2015, 01:30
Нефедов А.В., автор цикла справочников, "Интегрнальные микросхемы и их зарубежные аналоги" видимо имел доступ к проектной документации по 580-й серии. В своем справочнике он указал, что в КР580ВМ80А 4750 интегральных элементов. :)
Вот скан страницы справочника с этой информацией Нефедов А.В. Интегральные микросхемы и их зарубежные аналоги. Том 6. (http://radiowiki.ru/images/thumb/d/dc/%D0%9D%D0%B5%D1%84%D0%B5%D0%B4%D0%BE%D0%B2_%D0%90. %D0%92._%D0%98%D0%BD%D1%82%D0%B5%D0%B3%D1%80%D0%B0 %D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%BC%D0%B8%D0%BA% D1%80%D0%BE%D1%81%D1%85%D0%B5%D0%BC%D1%8B_%D0%B8_% D0%B8%D1%85_%D0%B7%D0%B0%D1%80%D1%83%D0%B1%D0%B5%D 0%B6%D0%BD%D1%8B%D0%B5_%D0%B0%D0%BD%D0%B0%D0%BB%D0 %BE%D0%B3%D0%B8._%D0%A2%D0%BE%D0%BC_6.djvu/page264-800px-%D0%9D%D0%B5%D1%84%D0%B5%D0%B4%D0%BE%D0%B2_%D0%90. %D0%92._%D0%98%D0%BD%D1%82%D0%B5%D0%B3%D1%80%D0%B0 %D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%BC%D0%B8%D0%BA% D1%80%D0%BE%D1%81%D1%85%D0%B5%D0%BC%D1%8B_%D0%B8_% D0%B8%D1%85_%D0%B7%D0%B0%D1%80%D1%83%D0%B1%D0%B5%D 0%B6%D0%BD%D1%8B%D0%B5_%D0%B0%D0%BD%D0%B0%D0%BB%D0 %BE%D0%B3%D0%B8._%D0%A2%D0%BE%D0%BC_6.djvu.png)
Там же можно найти информацию по количеству транзисторов в остальных микросхемах серии.

HardWareMan
04.07.2015, 19:37
Сегодня выделил время на ВМ80. Исправил некоторые найденные косяки, запилил еще несколько узлов. Примерный прогресс:
http://savepic.ru/7513799.png
Слева заглушки несуществующих цепей (приходящих с других листов). Покрытие первого листа (закрашенное - реализовано и проверено):
http://savepic.ru/7506631.jpg

Vslav
04.07.2015, 21:58
Крута! А в чем рисуется и проверяется?
И картинка не масштабируется по клику :)

HardWareMan
05.07.2015, 07:56
Крута! А в чем рисуется и проверяется?
И картинка не масштабируется по клику :)
Да все в кактусе. Не масштабируется, да, но пока и не надо. По завершению, когда модель будет работоспособна, я попробую сделать оптимизацию (есть несколько потенциальных узлов) и потом проект ляжет здесь, для всех желающих. Ну а позже, можно будет попробовать переложить его на верилог, я думаю он сильно упроститься относительно первоначального.

HardWareMan
06.07.2015, 15:11
Вот и закончился первый лист, за исключением 3х маленьких узлов, которые я пока не отследил куда идут, хочу их в качестве оптимизации переместить поближе к месту назначения. Принялся, как и обещал, за 3й, где регистр инструкций и дешифраторы.

Итак, известно, что внутренняя шина данных у процессора двунаправленная, в первом листе для буфера внешней шины данных используются 2 сигнала управления: nDBIN_PIN и nDB_ENA. Первый разрешает проброс внешних сигналов с ножек на внутреннюю шину, а второй наоборот включает буферы с внутренней шины на внешние ножки. Так же, процессор использует емкость внутренней шины данных для временного запоминания, об этом, кстати, мало где говорится, но в одном из советских справочниках по ВМ80 на блок-схеме показан некий "Bus precharge", эта блок-схема была найдена пользователями соседнего NedoPC. Так вот, на этой схеме он находится на 4й странице:
http://savepic.su/5800364.png
Накачка шины включается всегда, кроме состояния сброса и записи в такте Т3, синхронно по F1. К чему я это? А вот к чему. Регистр инструкций имеет следующую схему управления:
http://savepic.su/5788079.png
Сигнал F2 проходит на регистр только либо в такте Т3 машинного цикла М1, либо в момент сброса. А во время сброса накачка шины запрещена, т.е. там 0. Входы и выходы так же неактивны. Следует ли рассматривать это явление как занесение 00H в регистр инструкций (сброс IR)? Я помню вроде есть требования на период сигнала сброса, имеет ли к нему отношение сама емкость внутренней шины?

В любом случае, регистр инструкций позже все равно запишет новое действующее значение в такте Т3 машинного цикла М1. А запись NOPа по сбросу, я предполагаю, нужен для приведение остальных схем в известное состояние не пробрасывая сам сигнал сброса по всей схеме и усложняя ее. Например для АЛУ, хотя я его еще не разбирал, он пойдет следующим листом.

---------- Post added at 17:05 ---------- Previous post was at 15:50 ----------

А вот и первое научное объяснение первому недокументированному опкоду:
http://savepic.su/5774759.png
Все потому, что не учитывается 1 бит при дешифрации:
http://savepic.su/5819814.png
Логический эквивалент:
http://savepic.su/5818790.png

---------- Post added at 17:11 ---------- Previous post was at 17:05 ----------

То же самое у CALL:
http://savepic.su/5806502.png
http://savepic.su/5793190.png
http://savepic.su/5805478.png

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

А вот и NOPы!
http://savepic.su/5779878.png
http://savepic.su/5773734.png
http://savepic.su/5827001.png

---------- Post added at 17:29 ---------- Previous post was at 17:16 ----------

А вот так элегантно "вырезан" опкод 76H, чтобы не вызывать бессмысленную команду MOV M,M и заменить ее на HLT.
http://savepic.su/5797304.png
http://savepic.su/5785016.png

---------- Post added at 17:37 ---------- Previous post was at 17:29 ----------

Вот и JMP:
http://savepic.su/5782971.png
http://savepic.su/5790139.png
http://savepic.su/5768635.png

---------- Post added at 18:11 ---------- Previous post was at 17:37 ----------

Обнаружены дублирующие куски схемы. На схеме сигналы помечены как, например, ID_OPA/ID_OPAX, ID_OPI/ID_OPIX. Даже есть ID_HLT/ID_HLTX. Я не знаю, зачем эти повторы, единственное что приходит на ум это то, что они находятся в разных местах кристалла, и добавить еще один элемент ИЛИ-НЕ проще чем тянуть провод. Так как сейчас перевод "влоб", то я их оставлю, а в будущем постараюсь сократить.

HardWareMan
06.07.2015, 17:41
Текущий прогресс:
http://savepic.su/5809611.png
Заполнение третьего листа:
http://savepic.ru/7561600.jpg
Регистр инструкций, 4 матрицы. Они замкнули практически полностью первый лист (слева на первом листе заглушек значительно поубавилось). Если закончить 3й лист полностью, то заглушки уйдут совсем. Останется только АЛУ на 2м и регистровый файл на четвертом.

---------- Post added at 20:41 ---------- Previous post was at 20:15 ----------

А действительно. Симуляция текущей схемы показывает, что генерация сброса порождает цикл чтения NOP без генерации внешних сигналов управления, причем такт Т1 растягивается на все время действия сигнала сброса:
http://savepic.su/5830092.png
Вполне логичное решение для приведение процессора во вменяемое состояние.

Udillak
01.09.2015, 10:23
Нашел фотографии литографических масок (http://www.computerhistory.org/revolution/digital-logic/12/287/1608) для Intel 8080.

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

53313
53314
53315

Vslav
01.09.2015, 12:28
Маски прикольные, несмотря на невысокое разрешение вполне можно отвреверсить процессор. От ВМ80А топология i8080A очевидно отличается, общее расположение блоков одинаково, часть блоков очень похожи. Не совсем близнецы.

HardWareMan
10.01.2016, 17:01
Прогресс 3го листа:
http://savepic.ru/8275290.jpg
Очень интересная и логичная затея: ВМ80 формирует свое слово состояния, запоминая его в отдельном регистре на весь машинный цикл, а затем использует его биты для управления внутренней логикой. Т.е., само по себе слово состояния всегда есть в любом процессоре, просто здесь его выводят наружу чтобы не требовалось угадывать мысли процессора.
Так же обнаружил мультиплексор бит 0-2/3-5, которые участвуют не только в выборе номера регистра, но еще и номера регистровой пары. Кстати, в самом мультиплексоре стоит отдельный 3NOR, который активирует аккумулятор (код 111 = 7).

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

Очень интересно обрабатываются флаги. Берется сигнал с вышеупомянутого мультиплексора 0-2/3-5 бит 0/3 и ANDится с ORом бита внутренней шины данных и комбинации выходов мультиплексора. В результате получаем сигнал JMPTAKE, который переключает процессор на переход. Кусочек эквивалентной схемы:
http://savepic.ru/8258689.png
И мультиплексор:
http://savepic.ru/8263809.png
Что тут забавного:
1. Бит флага привязан к комбинации битов 1/4 и 2/5 опкода. Если посмотреть на табличку, то биты 4 и 5 выбирают флаг, а бит 3 установку или сброс. В обоих случаях это один и тот же выбор мультиплексора: ((T4 == 0) | (ID_MOV == 0)) & (ID_O P == 0)
2. Внутренняя шина данных используется не только для передачи данных, но и при анализе флагов. Я еще не добрался до АЛУ, но я думаю здесь тот же механизм что и выставление флагов в команде PUSH PSW.
3. Сигнал T4F1 формируется на листе с АЛУ и является сигналом T4, засинхронизированным к F1. Вообще, чем больше я анализирую схему тем сильнее убеждаюсь, что именно F1 является основной тактовой последовательностью. А F2 используется в основном для внешней синхронизации. Теоретически, можно попробовать запустить процессор (виртуальный, конечно) только на F1, подогнав все схемы, использующие F2, например, под инверсию F1.

Vslav
10.01.2016, 17:35
2. Внутренняя шина данных используется не только для передачи данных, но и при анализе флагов. Я еще не добрался до АЛУ, но я думаю здесь тот же механизм что и выставление флагов в команде PUSH PSW.

АЛУ свои флаги на шину не выдает, только в зашелки флагов. В модели, кстати, трансляция флагов на шину выброшена (кроме случая push PSW), наружу они не выходят, используются внутри только схемой переходов по флагам, это упростило мультиплексор шины и заметно итоговую частоту подняло. Думаю, проводнички сэкономили, или была какая-то задумка еще у интеловцев с флагами на шине, так оно и осталось.

HardWareMan
10.01.2016, 19:59
АЛУ свои флаги на шину не выдает, только в зашелки флагов. В модели, кстати, трансляция флагов на шину выброшена (кроме случая push PSW), наружу они не выходят, используются внутри только схемой переходов по флагам, это упростило мультиплексор шины и заметно итоговую частоту подняло. Думаю, проводнички сэкономили, или была какая-то задумка еще у интеловцев с флагами на шине, так оно и осталось.
Я понимаю, что итоговая симуляционная модель может иметь значительные упрощения и оптимизации, но мы сейчас говорим за конкретную транзисторную схему. И я вижу, что биты опкода ANDятся с битами шины, между прочим разряды которой соответствуют флагам. Дойду до АЛУ там и пойму что и как.

PS Для тех кто не понял всю красоту формирования JMPTAKE: OR результат бита с его позицией (позиция - комбинация битов 4 и 5 в опкоде) ANDится с битом 3 опкода. Причем, OR результат с прямым битом 3, а NOR результат с инверсным битом 3. На выходе по OR получаем результат. Таким образом, мы в одной маленькой схемке обрабатываем одновременно сброс флага в CNx/JNx и установку флага в Cx/Jx. Очень красиво, я считаю.

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

Последний кусочек листа №3: триггер-перекидушка, который перекинется только если в такте T2 будет замечена команда ID_XCHG. При этом это возможно только если F2 будет =1 (F2MX это инверсия F2):
http://savepic.ru/8308910.png
Я сначала стормозил: почему он всегда перекидывается и не предустанавливается. Но потом понял, что он на выходе просто переключает роутинг управления регистрами DE и HL, и в сущности не важно кто из них кто. Таким образом работает однотактовый своп HL и DE. Уверен, что подобный трюк использован и в Z80 с регистровыми банками (команды EXX и EX AF,AF'). Так что третий лист закончен и прогресс следующий:
http://savepic.ru/8307876.png
Что делать следующим: АЛУ или регистровый файл с 16ти битным INC/DEC?

Vslav
10.01.2016, 21:12
Что делать следующим: АЛУ или регистровый файл с 16ти битным INC/DEC?

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

HardWareMan
11.01.2016, 04:53
Во-первых, смотря как поставлена задача. Быть может, вопрос стоит "как съесть слона за раз, если он такой большой?".
Во-вторых, мне больше по душе русское: Глаза боятся а руки делают. Всегда вспоминаю когда начинаю делать что-то большое и скучное.

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

А АЛУ забавный.

Ewgeny7
11.01.2016, 22:02
А АЛУ забавный
Я скромно помалкиваю, ибо - балбес.
Но хочется спросить - и?

HardWareMan
12.01.2016, 07:43
Ну все веселье еще впереди. На вскидку: нет вычитания, есть сложение с инверсией + взведенный перенос. Флаг четности действительно XOR всех бит результата (четность бит а не четность результата). Флаг перенос С вообще отдельная схема. С DAA тоже очень интересно сделано. В общем я пока не готов еще выдать полную палитру впечатлений, я пока еще разбираюсь что к чему.

Atari
28.11.2016, 06:50
поднимаю машинку (пока в эмуляции) на вм80а.

использовал сабжевую модель.

виснет :v2_cry:

ModelSim SE 10.1c,
ПЗУ "Monitor-F" http://zx-pk.ru/threads/24511-yut-88-displejnyj-modul.html

последняя исполняемая команда: адрес FDC2 = C2, FDC3 = DF, FDC4 = FD ..... дальше на шине адреса появляются нули и проц начинает косить с начала ОЗУ... соответсвенно дальше быстро виснет.

HardWareMan
28.11.2016, 07:07
Где графики и отчеты Моделсима?

Atari
28.11.2016, 13:16
Спасибо за быстрый ответ, честно говоря не ожидал :v2_dizzy_vodka3:

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

если скажете куда смотреть то конечно постараюсь.

вот скриншот.

на нем видно как проц вынимает С2 и... нужно лезть внутрь проца...

http://i.piccy_.info/i9/0fb5bf529bb928b99971d4d7d17144cd/1480328055/246528/1094208/brok1.jpg
http://i.piccy_.info/i9/0fb5bf529bb928b99971d4d7d17144cd/1480328055/246528/1094208/brok1.jpg

Vslav
28.11.2016, 13:40
А можно весь проект куда-то выложить? В осциллограмме на первый взгляд ничего криминального не видно.

Atari
28.11.2016, 21:33
могу в почту, жду адрес в ЛС.

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

да, Господа :v2_unsur:

не хочу вас растраивать, но это ваш косяк. прикрутил другую модель i8080 и всё заколосилось :v2_yahoo:

HardWareMan
28.11.2016, 22:25
Atari, как же так, кормилец? У нас в железе (http://zx-pk.ru/threads/23349-potaktovyj-klon-i8080-na-fpga-cpld/page24.html) все работает!

Atari
28.11.2016, 22:50
видел, почему и ухватился.

очень хорошо работает... но спотыкается...


я знаю почему не любят бетта тестеров :v2_dizzy_botan:

извините за банальность :v2_blush:

Vslav
28.11.2016, 23:35
я знаю почему не любят бетта тестеров

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

На месте бета-тестера следует быть совсем осторожным :)

Там в системе шина болтается в неизвестном состоянии при активном сбросе, и при старте в регистр инструкции соответственно заносится xx с этой шины. Вследствие чего впадает в неопределенное состояние триггер-переключатель DE/HL и эти регистры тоже моделируются как неопределенные. На реальном железе этой проблемы нет, это проблема исключительно моделирования.

Вариант решения:
- при активном reset на входах pin_din обеспечивать 8'b00000000 (nop)

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

http://s018.radikal.ru/i509/1611/06/9fca1ae23fadt.jpg (http://radikal.ru/big/djfbq61jn9p43)
На картинке в начале при активном reset входные сигналы pin_dbin неопределены.
Можно, конечно, регистр инструкций и обнулять при активном reset, но оригинал так не делает, транзистор T2722 явно говорит что надо прогружать регистр с шины по активному reset.

PS. Бли-и-и-и-н-н-н-н, в схеме всего 4 (четыре!!) крохотных листика, исходник в одном файле на 30Кб, после 1801 - это шара :)

Atari
28.11.2016, 23:53
дык, Господа....

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

Vslav
29.11.2016, 00:16
я на своей картинке указал конкретное место на котором спотыкается, до него молотит без вопросов.
первые две мкросекунды я видел много много раз...
:v2_dizzy_facepalm:
И я на своей картинке указал конкретное место. Если поправить мое "конкретное место", то в твоем "конкретном месте" спотыкаться перестанет. Я глубоко в программу не вникал, но после коррекции она успешно поехала дальше. Там имеет место распространяющаяся неопределенность моделирования, в конце-концов она зажирает весь процесс. Точку ее зарождения я указал.

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

Строчку:
if (~f2 & (reset | (m1 & t3))) i <= pin_din;

Заменить на:
if (~f2 & (reset | (m1 & t3))) i <= reset ? 8'b00000000 : pin_din;

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

Atari
29.11.2016, 00:46
а теперь, извиняюсь....

это заменить где? все мои сырцы а Вас есть, дайте пожалуста хоть +- 5 строк.

Vslav
29.11.2016, 00:48
это заменить где?

Файл vm80a.v, строчка 593.

Atari
29.11.2016, 01:38
если с разверткой разберусь то попробую (в ФПГА)

HardWareMan
29.11.2016, 09:36
Можно, конечно, регистр инструкций и обнулять при активном reset, но оригинал так не делает, транзистор T2722 явно говорит что надо прогружать регистр с шины по активному reset.
Да, но не забывай, что эта шина в этот момент отрезана от входа и не накачивается:
http://savepic.ru/12433439.png
Я уже писал об этом здесь.

Vslav
29.11.2016, 12:45
Да, но не забывай, что эта шина в этот момент отрезана от входа и не накачивается:

Угу, получается у оригинала в регистр пишется мусор. Я что-то такое про эти грабли помню, у меня тоже не моделировалось из-за этого, пришлось прицепить вход i на входные пины непосредственно, там еще из-за этого мультиплексор шины данных хорошо разгрузился, ЕМНИП и максимальная частота выросла.

Update:
Посмотрел код "отдохнувшим" взглядом и после опыта с ВМ1, упростить можно модельку ВМ80 очень серьезно. Я же старался сохранить максимальную совместимость с оригиналом для моделирования и синтезируемое ядро в одном проекте. А надо разделить на два, как с ВМ1 сделано. Тогда чисто синтезируемая ветка на wishbone с одним тактовым сигналом просто катастрофически упрощается, регистры элементарно в блок памяти засовываются, частота растет. А то 670LE и 240FF как-то толсто для 8-битника.

Atari
29.11.2016, 13:36
да, Господа, еще раз снимаю щляпу.

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

фотку не привожу т.к. ПЗУ не залил, т.е. процик вертит мусором по экрану.

упростить синтезируемую модель - это очень хорошо, щас всяких FPGA как грязи, может народ подтянется.

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

ладно, покажу "как есть", чтоб меня свитсуном не считали...

http://i.piccy_.info/i9/10c36f8edae6d1e2ab4b25578fe0812f/1480415712/597856/1094582/IMG_20161129_032924.jpg

Vslav
29.11.2016, 13:41
да, Господа, еще раз снимаю щляпу.

Та мы только котика в песочнице помучали...

Да, на Xilinx интересно будет на результат посмотреть. А то все Altera да Altera.

Atari
29.11.2016, 13:55
надо разобраться как бинарники подгружать, покаместь единственный выход только как в знакогенераторе, но это такой гемор....

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

а еслиб вы знали сколько ISE ворнингов насыпает :v2_dizzy_facepalm:

тут "и мои и ваши", все сырцы у вас есть, так что разберетесь где чьи:

WARNING:Xst:1710 - FF/Latch <t382> (without init value) has a constant value of 0 in block <cpu>. This FF/Latch will be trimmed during the optimization process.
WARNING:Xst:1710 - FF/Latch <intr> (without init value) has a constant value of 0 in block <cpu>. This FF/Latch will be trimmed during the optimization process.
WARNING:Xst:1710 - FF/Latch <t976> (without init value) has a constant value of 0 in block <cpu>. This FF/Latch will be trimmed during the optimization process.
WARNING:Xst:1710 - FF/Latch <inta> (without init value) has a constant value of 0 in block <cpu>. This FF/Latch will be trimmed during the optimization process.
WARNING:Xst:1710 - FF/Latch <hold> (without init value) has a constant value of 0 in block <cpu>. This FF/Latch will be trimmed during the optimization process.
WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch <t887> (without init value) has a constant value of 0 in block <cpu>. This FF/Latch will be trimmed during the optimization process.
WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch <t980> (without init value) has a constant value of 0 in block <cpu>. This FF/Latch will be trimmed during the optimization process.
WARNING:Xst:2677 - Node <control_word_0> of sequential type is unconnected in block <control_word>.
WARNING:Xst:2677 - Node <control_word_1> of sequential type is unconnected in block <control_word>.
WARNING:Xst:2677 - Node <control_word_2> of sequential type is unconnected in block <control_word>.
WARNING:Xst:2677 - Node <control_word_3> of sequential type is unconnected in block <control_word>.
WARNING:Xst:2677 - Node <control_word_5> of sequential type is unconnected in block <control_word>.
WARNING:Xst:2677 - Node <control_word_6> of sequential type is unconnected in block <control_word>.
WARNING:Xst:1898 - Due to constant pushing, FF/Latch <mstart> is unconnected in block <cpu>.
WARNING:Xst:1710 - FF/Latch <t383> (without init value) has a constant value of 0 in block <cpu>. This FF/Latch will be trimmed during the optimization process.
WARNING:Xst:1710 - FF/Latch <minta> (without init value) has a constant value of 0 in block <cpu>. This FF/Latch will be trimmed during the optimization process.
WARNING:Xst:2677 - Node <inte> of sequential type is unconnected in block <cpu>.
WARNING:Xst:1898 - Due to constant pushing, FF/Latch <t3144> is unconnected in block <cpu>.
WARNING:Xst:2677 - Node <control_word_0> of sequential type is unconnected in block <vk28>.
WARNING:Xst:2677 - Node <control_word_1> of sequential type is unconnected in block <vk28>.
INFO:Xst:3226 - The RAM <ram/Mram_ram> will be implemented as a BLOCK RAM, absorbing the following register(s):WARNING:Xst:2677 - Node <control_word_2> of sequential type is unconnected in block <vk28>.
WARNING:Xst:2677 - Node <control_word_3> of sequential type is unconnected in block <vk28>.
WARNING:Xst:2677 - Node <control_word_5> of sequential type is unconnected in block <vk28>.
WARNING:Xst:1710 - FF/Latch <cpu/t976> (without init value) has a constant value of 0 in block <kefircheg>. This FF/Latch will be trimmed during the optimization process.
WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch <cpu/intr> (without init value) has a constant value of 0 in block <kefircheg>. This FF/Latch will be trimmed during the optimization process.
WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch <cpu/t382> (without init value) has a constant value of 0 in block <kefircheg>. This FF/Latch will be trimmed during the optimization process.
WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch <cpu/hold> (without init value) has a constant value of 0 in block <kefircheg>. This FF/Latch will be trimmed during the optimization process.
WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch <cpu/inta> (without init value) has a constant value of 0 in block <kefircheg>. This FF/Latch will be trimmed during the optimization process.
WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch <cpu/t980> (without init value) has a constant value of 0 in block <kefircheg>. This FF/Latch will be trimmed during the optimization process.
WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch <cpu/t887> (without init value) has a constant value of 0 in block <kefircheg>. This FF/Latch will be trimmed during the optimization process.
WARNING:Xst:1898 - Due to constant pushing, FF/Latch <cpu/inte> is unconnected in block <kefircheg>.
WARNING:Xst:1898 - Due to constant pushing, FF/Latch <cpu/mstart> is unconnected in block <kefircheg>.
WARNING:Xst:1710 - FF/Latch <cpu/t383> (without init value) has a constant value of 0 in block <kefircheg>. This FF/Latch will be trimmed during the optimization process.
WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch <cpu/minta> (without init value) has a constant value of 0 in block <kefircheg>. This FF/Latch will be trimmed during the optimization process.
WARNING:Xst:1898 - Due to constant pushing, FF/Latch <cpu/t3144> is unconnected in block <kefircheg>.
WARNING:Xst:2677 - Node <control_word/control_word_6> of sequential type is unconnected in block <kefircheg>.
WARNING:Xst:2040 - Unit kefircheg: 8 multi-source signals are replaced by logic (pull-up yes): data_bus<0>, data_bus<1>, data_bus<2>, data_bus<3>, data_bus<4>, data_bus<5>, data_bus<6>, data_bus<7>.
WARNING:Xst:1710 - FF/Latch <counter_3> (without init value) has a constant value of 0 in block <board>. This FF/Latch will be trimmed during the optimization process.

Vslav
29.11.2016, 14:00
а еслиб вы знали сколько ISE ворнингов насыпает
Квартус тоже насыпает, но они все касаются I/O основной платы (напоминает что 3.3V совместимость, требует задания токов и прочего, все это не нужно для тестового проекта на DE0), к IP-ядру вроде претензий у него нет. Если ISE чего в самом vm80a.v не нравится - то выкладывайте, посмотрим в чем проблема.

HardWareMan
29.11.2016, 15:37
Вот погодите, закончу я перевод в логическую схему, проведу свертывание схемы, вот тогда и посмотрим, насколько похудеет и т.д.

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


Угу, получается у оригинала в регистр пишется мусор. Я что-то такое про эти грабли помню, у меня тоже не моделировалось из-за этого, пришлось прицепить вход i на входные пины непосредственно, там еще из-за этого мультиплексор шины данных хорошо разгрузился, ЕМНИП и максимальная частота выросла.
Не, я еще раз говорю: внутренняя шина имеет емкость. В начале цикла по F1 в нее закачивается лог.1 на каждую линию. Затем по необходимости эти лог.1 зануляются и получаются данные. По сбросу накачка запрещена, что дает стабильный лог.0. В купе с блокировкой внешних сигналов это дает принудительное выполнение NOP для автомата и некоторые модификации (предустановки) некоторых регистров (например регистр адреса). Отсюда и требование - не менее 3х тактов вроде, чтобы попасть на чтение опкода. Поведение емкостной шины у нас не симулируется. Поэтому, можно применить принудительное зануление внутренней шины без ущерба качеству симуляции.

Vslav
29.11.2016, 15:54
По сбросу накачка запрещена, что дает стабильный лог.0.

А это почему? Разве при сбросе активируются какие-то агенты шины производящие обнуление? Если нет, а сброс долгий (сотни миллисекунд для микросхемы - долго), то состояние шины будет определяться утечками. А эта штука зависит от технологии, производителя и партии, простым смертным предсказать никак нельзя, имхо.

HardWareMan
29.11.2016, 17:22
Vslav, вот именно утекают в схемы приемники. Т.е. весь заряд какой бы он ни был теряется.

Vslav
29.11.2016, 17:31
Vslav, вот именно утекают в схемы приемники. Т.е. весь заряд какой бы он ни был теряется.
А это откуда следует? Заряд может прекрасно и натекать, зависит от паразитных параметров конкретной схемы.
Представь что под затвор одного из транзисторов накачки попало чуток грязи. Немного, транзистор закрывается, но не так чтобы очень хорошо, килоом 10 в закрытом состоянии дает. И все работает нормально, 10К закрытого состояния для работы достаточно. А вот затворы приемников чудесно отпечатались, там десятки мегаом входного сопротивления. И получаем в состоянии сброса, когда все выключено, банальный делитель из паразитных резисторов.

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

В подтверждение своего тезиса о натекании заряда приведу хороший пример - 565РУ5. Грубо говоря - это массив маленьких изолированных конденсаторов. Если ее оставить без регенерации, то спустя какое-то время все ячейки придут к определенным состояниям. К РАЗНЫМ - будут и нули и единицы. Потому что в какой-то ячейке утечка на землю, а в какую-то натекает с питания.

kolk
29.11.2016, 19:54
К РАЗНЫМ - будут и нули и единицы. Вроде-бы это состояние является общеизвестной функцией адреса - изображение на экране спектрума без ПЗУ тому иллюстрация.

Vslav
29.11.2016, 20:04
Вроде-бы это состояние является общеизвестной функцией адреса
Может быть. У меня сейчас изготовлена плата универсального тестера РУ-шек, я проверю при случае.


- изображение на экране спектрума без ПЗУ тому иллюстрация.
А разве процессор не исполняет циклически RST 7 (подтянутая к единице шина)? И не заполняет видеопамять адресами возврата? Я не большой знаток спектрума, могу и ошибаться.

s_kosorev
29.11.2016, 20:12
изображение на экране спектрума без ПЗУ тому иллюстрация
Скорее без процессора

HardWareMan
30.11.2016, 06:21
Какой именно Спектрум имеется в виду? Если наши, с шахматкой и прозрачной регенерацией, то это не тот случай. Если оригинал, то я не в курсе, ULA там регенерирует или сам Z80.

kolk
30.11.2016, 09:25
Имеется в виду шахматка. Область графического экрана регенерируется прозрачно почти везде :) Формально это состояние после выключения питания, а не регенерации; но, насколько я помню по Радио-86РК, они совпадают.

Надо у технологов спрашивать, как и зачем это сделано. На вопрос "как?" может ответить и реверс РУшек.

Atari
30.11.2016, 20:00
да, к стати, синтезатор ISE почти в конце выдал такую строчку: Maximum Frequency: 70.285MHz

т.е. как я понимаю, данную модель разогнать до 50 МГц - легко ;)

Vslav
30.11.2016, 20:03
т.е. как я понимаю, данную модель разогнать до 50 МГц - легко ;)

Quartus на Cyclone III на плате DE0 дает 100+ МГц.

HardWareMan
30.11.2016, 20:22
А ежели с комбинаторикой разобраться (что возможно будет после завершения преобразования транзисторной схемы в логическую и ее анализа) то и все 200 на каком-нибудь старшем Cyclone IV/V или Arria2 GX.

Atari
30.11.2016, 21:22
70 МГц это скорость "всего проекта", в т.ч. с моими кусками - памятью и видеовыводом.

Atari
05.12.2016, 13:03
на данный момент процик стучит на 25 МГц т.е. тактовая 100 поделена на 4... экзорциста еще не гонял.

хочу разогнать до 50...100 МГц.

вопрос: насколько критична фазировка f1 и f2 ? можно делать "по простому" или нужно делить на 9 как в оригинальной 8224 (гф24)?

Vslav
05.12.2016, 13:35
вопрос: насколько критична фазировка f1 и f2 ? можно делать "по простому"

Можно сделать произвольную тактовую последовательность по таким правилам:

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

То есть - можно просто чередовать фазы F1/F2, без пустых пропусков.

kolk
06.12.2016, 01:22
Оригинальному процессору пропуск после Ф2 тоже не нужен? Не поможет ли более длинный Ф2 по сравнению с Ф1 получить большую частоту на FPGA?

HardWareMan
06.12.2016, 06:56
На оригинале меандр на F2 обусловлен чисто удобством сопряжения с внешними устройствами, потому как именно по F2 обычно и организована синхронизация обмена. Но ключевая фаза у него F1, и в ДЩ тоже от нее пляска идет. В ПЛИС же скорости достаточно, чтобы не выдерживать соотношения между F1 и F2, поэтому можно просто чередовать.

Atari
07.12.2016, 05:15
охренеть :v2_confu:

http://i.piccy_.info/i9/eef7c72444d37cc7fc4e23e1d68672d7/1481076336/553561/1097222/IMG_20161207_040036.jpg

25 МГц, экзорцист в ПЗУ 0000-1fff, видео e800-efff двухпортовая без арбитража, RAM - f000-f7ff, ПЗУ - f800-ffff "монитор-ф" ЮТ-88.

клок - 1(f1),2(f2),1(-)

HardWareMan
07.12.2016, 05:40
Не все экзорцисты (https://web.archive.org/web/20151006085348/http://www.idb.me.uk/sunhillow/8080.html) одинаково полезны. Правильный есть в этом треде (пару десятков страниц назад), но даже он требует допиливания под вашу систему. А судя по одинаковым значениям у вас скорее всего ОЗУ стека повело конкретно (т.е. нужно допиливание под вашу карту памяти).

Atari
07.12.2016, 05:49
так я Ваш (от специалиста) и перепиливал.
ячейки с f000 до f0ff (потолок стека)

за-то быстро :v2_clap2:

HardWareMan
07.12.2016, 06:36
Там еще ОЗУ кроме стека используется. Т.е., в Спеце я их перенес в экран (последний столбец) для визуализации процесса.

Atari
07.12.2016, 11:40
я читал.
у Вас заняты 256 байт с bf00 по bfff, у меня эти ячейки находятся с f000 по f0ff (я уже писАл).
впрочем наверное уберу кадровое гашение и перенесу их в видео ОЗУ для наглядности.

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

а зачем некоторые строки преобразованы в байты?



...
0049 0000 C3 13 00 begin: jmp start
0050 0003
0051 0003 ; machine state before test (needs to be at predictably constant address)
0052 0003 000000000000 msbt: .db 00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00 h,00h
0053 0011 00 00 spbt: .db 00h,00h
0054 0013 ;msbt .equ 0F000h
0055 0013 ;spbt .equ 0F010h
.....
0215 012E ; aluop a,<b,c,d,e,h,l,(hl),a> (753,664 cycles)
0216 012E ;alu8r: db 0ffh ; flag mask
0217 012E ; tstr 080h,0c53eh,0573ah,04c4dh,msbt,0e309h,0a666h,0d0h, 03bh,0adbbh
0218 012E ; tstr 03fh,0,0,0,0,0,0,0,-1,0 ; (16,384 cycles)
0219 012E ; tstr 0,0ffh,0,0,0,-1,-1,0d7h,0,0 ; (46 cycles)
0220 012E ; db 0cfh, 076h, 02ch, 086h ; expected crc
0221 012E ; tmsg 'aluop <b,c,d,e,h,l,m,a>'
0222 012E FF800000003E alu8r: .db 0FFH,080H,000H,000H,000H,03EH,0C5H,03AH,057H,04DH, 04CH,003H,001H,009H,0E3H,066H
0223 013E A6D03BBBAD3F .db 0A6H,0D0H,03BH,0BBH,0ADH,03FH,000H,000H,000H,000H, 000H,000H,000H,000H,000H,000H
0224 014E 000000000000 .db 000H,000H,000H,000H,000H,000H,0FFH,000H,000H,000H, 000H,000H,000H,0FFH,000H,000H
0225 015E 0000000000FF .db 000H,000H,000H,000H,000H,0FFH,0FFH,0FFH,0FFH,0D7H, 000H,000H,000H,0CFH,076H,02CH
0226 016E 86 .db 086H
0227 016F 616C756F7020 .text "aluop <b,c,d,e,h,l,m,a>."
0228 0187 000000000000 .db 0,0,0,0,0,0,0
....

backa
17.01.2017, 03:34
Ну а позже, можно будет попробовать переложить его на верилог, я думаю он сильно упроститься относительно первоначального.
Хотелось бы поинтересоваться как обстоят дела с "отрисовкой" - есть шанс довести до конца?? Уж больно интересная тема - "первый процессор"))) как первая любовь не забывается никогда!

HardWareMan
17.01.2017, 08:20
К сожалению пока вялотекуще. Но я пытаюсь выделять больше квантов времени.

HardWareMan
08.02.2017, 18:28
Маньяки. Они везде. (http://lovqvist.net/8080/index.html)

Mick
08.02.2017, 18:47
Маньяки. Они везде.

Даешь ВМ80 на операционниках. :)

Vslav
03.11.2017, 17:22
Картинка для привлечения внимания :)
http://s019.radikal.ru/i633/1711/51/57bba88b155ct.jpg (http://radikal.ru/big/vfgeqksw0ageh)

shurik-ua
03.11.2017, 19:16
Маньяки. Они везде. (http://lovqvist.net/8080/index.html)

як то кажуть - пан має час и натхнення )

Vslav
01.02.2018, 18:32
Закинул ядро vm80a на GitHub (https://github.com/1801BM1/vm80a)
На opencores.org более закрытое сообщество, для скачивания требуется регистрация,
проект вышел бы более закрытым, поэтому выбрал github, хотя git мне неудобнее
чем svn

Из нового
- упорядочил директории под требования открытого проекта
- прикрутил UART и адаптировал на него Exerciser
- начал адаптацию на плату DE1 (в планах еще пара плат)

Vslav
02.02.2018, 21:06
А кто-нибудь с Xilinx работал? Повозился я с ISE, давненько я так не страдал. Особенно доставляет инициализация памяти (та что ROM, с программой). Сначала попробовал core generator, он притащил в проект кучу вонючего хлама на много мегабайт, а всего-то надо сгенерировать блок 16К*8. Потом он никак не хотел жрать .coe файл (контент для инициализации). Там у него особо извращенческие требования, умирает сразу при любой непонятке. Потом начал падать мой любимый srec_cat (я им пытался .coe родить из хекса) - оказывается там с 2014 года ошибка в генерации .coe до сих пор неисправленная. Потом я попробовал пару разных конвертеров. Наконец, с десятой попытки генератор сожрал .coe, он его удовлетворил. Урюкам из х#йлинкса даже не приходит в голову что кто-то может генерить файлы не из их EDK - нет никаких утилит для генерации .coe файлов из стандартных. Запустился 580-ый процессор, но полезли проблемы. Начал корректировать тестовую программу, и выяснилось, что для подстановки нового контента снова надо генерить память генератором с самого начала. Долго и нудно, снова мудачизм полный...

Посмотрел что народ делает. Оказывается можно память тупо задать массивом и инициализировать ее $readmemh(), который у х#йлинкса стал синтезируемым. Новости географические, блин. Перешел в состояние радостно-отстраненного удивления. Вышел из него. Очередная долгая и нудная возня с форматом файла для $readmemh(). О, да! Их считыватель не жрет .mem файлы по стандарту Верилога, только очень ограниченное подмножество. В софте 2014 года, Карл! Который продается по $4K. Посмотрел примеры, подобрал формат. Но не нашел утилиту которая его автоматически может генерировать из .bin/.hex. Приходится допатчивать руками после каждой компиляции. Может кто из опытных чего посоветует? Нужен быстрый маршрут обновления содержимого ROM в Спартане после перекомпиляции ассемблерных исходников тестового кода 580-го.

Ну... В итоге все заработало на плате AX309 со Sparta6-SLX9-3, сравним с DE0 и Cyclone III:
- частота проекта чуть более 100МГц у обоих, примерно одинакова
- LUT 750 у Spartan и 948 у Cyclone
- REG 451 (260 slices) у Spartan и 416 у Cyclone

svofski
02.02.2018, 21:27
Vslav, сочувствую. Я только скачал ISE на днях, повозился пару часов с этим адом, меня тяжко стошнило и я стал Квартус еще больше ку.

Vslav
02.02.2018, 21:38
Vslav, сочувствую
Да ладно, это был любопытный опыт. Это как в "Голубую устрицу" забежал, осмотрелся и выскочил. Успел, без потерь :)
Привыкнуть к ISE можно, но Квартус как-то побыстрее работает (ISE ну очень неспешно все делает), ошибок меньше, в ISE есть явные косяки, даже просто в текстовом редакторе. Симулятор не пробовал, там все равно есть интеграция с привычным Modelsim.

Проверилась переносимость кода, вылезло что все константы надо задавать 64-битными, Q2 делитель правильно посчитал, а вот XST его обрезал, в итоге UART неверно битрейт генерировал. А так - все быстро завелось. Еще с блочной памятью разобрался, теперь ВМ1 понятно как портировать. Lattice еще попробовать, что ли... Есть на Али недорогие платы с MachXO3

PS. Проект для Spartan-6 на плате AX309 опубликован.

Vslav
03.02.2018, 01:12
Кстати, портировал проект на DE2-115, там толстый Cyclone IV E EP4CE115. Так частота упала до 73МГц. Микросхема то большая, отлично, но - медленнее.

AlexG
03.02.2018, 11:51
в ise есть planahead он более понятен чем исе. Смотрите видео и читайте документацию от xilinx. Докучи есть понятие вебпак - он бесплатный.
пс: лично по мне xilinx более приятен и интуитивно понятен чем altera. У каждого есть свои "причуды и глюки".
пс: просьба ко всем: не развивать тему кто лучше! Лично я "сижу" на вивадо - он тож есть бесплатный.

Vslav
03.02.2018, 12:48
в ise есть planahead он более понятен чем исе
Да, planahead хорошая штука, мне понравилась. Правда я редко и квартусовским аналогом Floorplan Editor пользуюсь.



пс: лично по мне xilinx более приятен и интуитивно понятен чем altera. У каждого есть свои "причуды и глюки".
пс: просьба ко всем: не развивать тему кто лучше! Лично я "сижу" на вивадо - он тож есть бесплатный.

Это вопрос привычки. Увы, Вивадо не поддерживает Spartan6, приходится кушать исю, как она есть.
Согласен, тему тут развивать не будем, не нужен нам холивар. Я посмотрел на Xilinx, представление получил, проверил портируемость кода и ОК.

Titus
03.02.2018, 13:33
Кстати, портировал проект на DE2-115

Оффтоп: ВМ2 очень просит словами благодарных пользователей себя доделать)

Vslav
03.02.2018, 15:26
Интересная жизнь, однако. Сижу, убираю зависимость от F1. Все хорошо, процессор сохнет, уже ~600LUT и менее 200 триггеров. Выношу последние стробы из F1, и тут оно хлоп - перераспределяет регистры для этих стробов - и у снова 260 триггеров. Ну зато 100МГц, да. А я наивный чукотский юноша - хотел чтобы и быстро и компактно :)


Оффтоп: ВМ2 очень просит словами благодарных пользователей себя доделать)
Та доделаем, 580-ый - это один из моих висячих хвостов, вот щаз его отрубим, всяко веселее будет.

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

Update: в-общем, все хорошо, флажок "Register Retiming" в Квартусе позволяет собрать ядро или быстро (100МГц, 300 регистров) или компактно (93МГц, менее 190 регистров). Только Квартус глючит, надо выйти и стереть промежуточную базу, иначе флажок не воздействует.

andreil
03.02.2018, 15:29
Ну, тут уже те 7% разницы не так существенны, как экономия 110 регистров...

Titus
03.02.2018, 15:46
Только Квартус глючит
Квартус глючит, а Титус канючит)

Vslav
04.02.2018, 10:57
Что в итоге получилось:
- убрана зависимость от фазы F1
- фаза F2 переведена на фронт, единая частота для всей системы
- добавлена шина Wishbone
- сохранение таймингов зависит от реализации внешней памяти. При чтении модель выставляет адрес на шину только в такте Т2, если память успевает выдать данные за такт то оригинальные таминги сохраняются. В моей примерной системе память регистровая, она умеет только за два такта, поэтому чтение всегда растянуто на один такт. При чтении используется бывший вход READY. При записи адрес выставляется также в такте Т2, но поскольку строб записи по факту будет в T3 тут не так критично. Торможение при записи (если вдруг внешний агент не готов) осуществляется общим разрешением клока (тот что был F2). Как ни странно, ресурсов это не забирает, что с разрешением, что без - практически одинаково
- результаты на плате DE0 (Cyclone EP3C16F484C6) - 104МГц clock, 607 LUTs and 187 flip-flops без оптимизации по скорости
- все это выложено в репозиторий

AlexG
04.02.2018, 11:36
ОФФТОП
planahead эта тоже полноценная среда разработки как ISE. По сути из planahead сделана VIVADO
те сперва Foundation потом ISE потом Planahead потом VIVADO. В конторе используют и xil и alt "в параллель" - посему осведомлён в причудах и того и другого. VIVADO только с 7 семейства. Нынче "сделана" ISE 14.7 для виндовс 10 и спартан 6 онли.

Vslav
04.02.2018, 11:37
Как оно конвертировалось, с точки зрения абстрактной логики, картинка:

64092

Весь процессор ВМ80 можно представить как схему состоящую из двух групп защелок (latch), первая группа срабатывает от фазы F1, вторая от фазы F2. Между группами защелок имеются наборы логики, часть логических функций формирует выходные сигналы. Можно переписать логику так что она будет зависеть только от выходов группы защелок F2, и свести ее к единому набору, а защелки группы F2 непосредственно присоединяются к выходам группы F1. Далее остается только заменить группы защелок на регистры (flip-flops). Регистры являются нативными базовыми элементами FPGA и предоставляют уже готовую реализацию. Как видно из картинки, в схеме остались только элементы, срабатывающие по фронту F2, соответственно все выходные сигналы будут тоже синхронизированы с фронтом F2, что нам и требовалось для системы в FPGA. Внутренняя же логика обработки процессора осталась практически той же самой, все такты T и циклы М неизменны, их отлично видно на симуляторе.

Update: еще прикол в том что Wishbone достаточно простой, и почти совпадает с внешней шиной оригинального i8080 (если не цепляться к синхронности). В системе WB шину модели можно в пару строчек конвертировать в привычную шину.

Mick
04.02.2018, 12:07
Картинка для привлечения внимания

Скажи, а ты 580ВМ1 не планируешь также разобрать на транзисторы, как ВМ80?

andreil
04.02.2018, 12:12
Update: еще прикол в том что Wishbone достаточно простой, и почти совпадает с внешней шиной оригинального i8080 (если не цепляться к синхронности). В системе WB шину модели можно в пару строчек конвертировать в привычную шину.
С этого места поподробнее, я записываю ;)
В моей реализации Ориона, например, сигнал DSYN формируется как "cpu_rd or cpu_wr", а в оригинальной реализации - задержанный на 1 такт F2 сигнал SYNC от процессора.
Глядя на сигналы и комментарии к ним, понимаю, что надо плясать от wb_tgc_o и wb_we_o, но что там ещё надо намешать - хз даже =/

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


Скажи, а ты 580ВМ1 не планируешь также разобрать на транзисторы, как ВМ80?
А при реверсе сперва как раз на транзисторы и разбирается в любом случае ;)
Потом уже по схеме восстанавливается логика.

Vslav
04.02.2018, 12:25
Скажи, а ты 580ВМ1 не планируешь также разобрать на транзисторы, как ВМ80?
Пока запланировано только фото. Я сейчас делаю новый микроскопный столик, моторизованный, двухкоординатный, с простеньким гониометром. Это упростит процесс фотографирования, как доделаю - отсниму кучку накопившихся микросхем.

andreil
04.02.2018, 12:35
Пока запланировано только фото. Я сейчас делаю новый микроскопный столик, моторизованный, двухкоординатный, с простеньким гониометром. Это упростит процесс фотографирования, как доделаю - отсниму кучку накопившихся микросхем.
Это хорошо, будет работы людям надолго :)
Я вот думаю изучить топологию КМОП и прочие, что бы присоединиться к реверсу ВГ93, а то тема совсем заглохла =/

Vslav
04.02.2018, 12:52
С этого места поподробнее, я записываю ;)
В моей реализации Ориона, например, сигнал DSYNC формируется как "cpu_rd or cpu_wr", а в оригинальной реализации - задержанный на 1 такт F2 сигнал SYNC от процессора.

На DSYN, фазы и прочее - забить. Можно использовать сигналы типа гангнам ВК28-стайл:



nMEMRD = ~(wb_stb_o & ~wb_we_o & ~wb_tgc_o[1] & ~wb_tgc_o[4]);
nMEMWR = ~(wb_stb_o & wb_we_o & ~wb_tgc_o[1] & ~wb_tgc_o[4]);
nIORD = ~(wb_stb_o & ~wb_we_o & wb_tgc_o[1] & ~wb_tgc_o[4]);
nIOWR =~(wb_stb_o & wb_we_o & wb_tgc_o[1] & ~wb_tgc_o[4]);
nINTA = ~(wb_stb_o & wb_tgc_o[4]);


Ну и wb_ack_i теперь заменяет бывший READY, подать туда постоянно высокий и получить обычный процессор с шиной ISA8 :)
Теги wb_tgc_o стабильны на протяжении всего цикла обмена и содержат всю информацию что выводил раньше ВМ80А при активном DSYN - M1, IO, stack, INTA и прочее. Убраны только ненужные подтверждения прерываний в момент останова, ну и защелка по DSYN теперь просто не нужна.

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

Vslav
04.02.2018, 16:44
Добавил клок-модератор. Теперь легко эмулируется любая низкая частота, без понижения частоты системной шины. Можно три часа гнать экзорциста как на оригинальном процессоре, а можно дернуть тублер и пройти тест на сотке за две с половиной минуты. Причем тумблер можно перекидывать "на лету", в любой момент.

Vslav
06.02.2018, 20:39
Поправил выход из режима halt по прерыванию. В книжке было написано что выход из halt только по сбросу, а реально оно должно выходить и по прерыванию. Я про это забыл, сегодня вот изучал исходники КСМ, увидел там инструкцию hlt, пришлось вносить правки в корку :)

Titus
06.02.2018, 20:56
Поправил выход из режима halt по прерыванию. В книжке было написано что выход из halt только по сбросу, а реально оно должно выходить и по прерыванию. Я про это забыл, сегодня вот изучал исходники КСМ, увидел там инструкцию hlt, пришлось вносить правки в корку
Так что же, ваша модель основана на инструкции, а не на реверсе?

Vslav
06.02.2018, 21:06
Так что же, ваша модель основана на инструкции, а не на реверсе?
Основана на реверсе, но сделана оптимизация. Когда я сделал форк на вишбон, то выполнил ряд оптимизаций - убрана фаза F1, убраны HOLD/HLDA/WAIT, ну и еще выбросил по ошибке просыпалку, считая что она тоже не нужна. Теперь выяснилось, что это я погорячился, вернул просыпалку на место. Экзорцист-то все тестирует, кроме HLT. Пришлось еще тестик на HLT добавить.

Titus
06.02.2018, 21:52
Но, надеюсь, оригинальная потранзисторная схема осталась? Для будущих поколений, которые захотят пойти не путем верилога.

Vslav
06.02.2018, 22:24
Но, надеюсь, оригинальная потранзисторная схема осталась? Для будущих поколений, которые захотят пойти не путем верилога.
Там на гитхабе все расписано в описании проекта. И схема выложена полностью со всеми материалами, и верилог. В репозитории две ветки - одна оригинальная, полифазная, с F1/F2, а вторая оптимизированная под SoC, хотя и сохранением всех растактовок T1-T5/М1-М10.

HardWareMan
07.02.2018, 09:56
Titus, http://hwm.us.to/vm80/

Vslav
07.02.2018, 10:23
Titus, http://hwm.us.to/vm80/
Может стоит апдейт первого поста сделать? Там ссылки все повыкладывать, а то по теме искать - не айс.

HardWareMan
07.02.2018, 20:12
Ищите остальные, кидайте в личку. Я добавлю.

HardWareMan
13.02.2018, 23:56
Разлохматил второй лист, который с АЛУ. Он действительно забавный. Остался последний, с регистрами и адресными мультиплексорами.

HardWareMan
14.02.2018, 18:31
Все, разлохматил последний лист, с регистрами и 16ти битным счетчиком. Процессор - чистая стэйт-машина, никакого микрокода. Теперь точно ясно, что повторять его влоб смысла вообще нет, нужно делать изложение на тему. Речь конечно о реализации на FPGA/CPLD. Интересного там только сам ALU - он просто изящен, хоть и не настолько продвинут в математическом смысле, как у Z80. Ну еще и стэйт машина циклов, но ее можно и самому накорябать за полминуты. Забавно еще то, что только регистры реально хранят значения во времени и аккумулятор, хотя он часть ALU (его выбор - отдельная цепь). У ALU несколько внутренних регистров: X, R и A, причем X и R практически каждый такт перезаписываются. A, выполняет роль, собственно, аккумулятора. При расчете, данные из A сначала копируются в R. Второй операнд параллельно грузится в X и результат вычисляется комбинаторной логикой напрямую (затраты времени чисто задержка в логике), который может быть записан обратно в А, минуя внутреннюю шину, или сразу выставлен на внутреннюю шину данных. Она, кстати, двунаправленная, точнее там что-то вроде монтажного ИЛИ + накачка перед использованием, т.е. используется ёмкостный эффект - это уже обсуждали. Это позволяет загрузить опкод NOP (накачка внутренней шины отключается при активном сбросе), удерживая сброс в течение нескольких тактов (в доке написано, что их число минимально 3), что уменьшает накладные расходы в схеме. Таким образом, вот эта схема не верна, так как Accumulator Latch имеет доступ к внутренней шине.
http://jpegshare.net/images/2c/87/2c871bebb087cbf96896bfa0f30ca295.png
А, еще регистр флагов. Он отсутствует как регистр - так, набор триггеров. 4 из них вообще тупые: P, Z, AC и S. А вот C - развитой. У него сложная цепь управления, т.к. он реально участвует в куче команд.

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

Теперь я знаю Кунг-Фу ВМ80!

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

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

HardWareMan
14.02.2018, 22:45
Ах да, последнее на сегодня. Когда-то давно, на NedoPC возник спор (http://www.nedopc.org/forum/viewtopic.php?p=100974#p100974), что происходит на ногах у ВМ80 во время выполнения 16ти битного сложения командой DAD. По количеству машинных циклов было понятно, что эта команда прогоняется через ALU и занимает 3 машинных цикла, что подтверждает всем известная дока. Большинство арифметических команд накладывается на цикл М1 следующего опкода, если результат ALU надо сохранить в аккумулятор (помечены сноской 9 в известной доке на карте растактовки). Это возможно благодаря внутренней шине ALU, о чем я уже упомянул выше. Однако, команда DAD единственная из тех, что использует машинные циклы М2 и М3, но при этом ей не нужна шина, потому, что все необходимые данные уже внутри, в регистрах. Так вот, я хочу поставить жирную точку в этом споре. Легче всего это отследить по сигналу SYNC. Вот его схема:
http://jpegshare.net/images/45/85/458599a911d180350c6c010635f89ac7.png
Здесь видно, что сигнал SYNC формируется из сигнала T1, который может блокироваться сигналом RESET (все верно, сигнал SYNC в состоянии сброса не генерируется, но при этом машина молотит, загружая каждый раз опкод NOP в регистр инструкции). Этот сигнал запоминается сначала по тактовой фазе F1 и затем по тактовой последовательности F2. Помешать сформированному сигналу может только лог.1 на READY_INT, который, складываясь по NOR будет давить SYNC к лог.0. Напомню, что сигнал SYNC имеет положительную полярность: активный лог.1. Таким образом, SYNC это всего лишь T1 задержанный до T2. Внутри, READY_INT блокирует сигнал WR (перед выдачей на ножку WR) и обнуляет сигнал-статус SY_WO, который по сути является битом D1 в слове состояния и который означает, что процессор хочет запись. Это, в свою очередь, блокирует DBIN выход. Зачем сделано именно так? Это упрощает генерацию сигнала чтения DBIN, который генерируется чаще и должен быть длиннее. Теперь сигнал READY_INT:
http://jpegshare.net/images/fc/64/fc64673a1f1f5432d04839ffc099e67e.png
Сигнал формируется только от ID_DADX, который стреляет на все 4 опкода команды DAD (09H, 19H, 29H и 39H) и два сигнала машинный циклов M4 и M5. Сигналы машинных циклов M4 и M5 сначала складываются по ИЛИ, а затем по ИЛИ-НЕ (что эквивалентно И). Т.е., блокировка происходит для M4 или M5 только при команде DAD. Соответственно, сигналы SYNC, DBIN и WR во время исполнения 2 и 3 циклов команды DAD не активны. READY_INT так же блокирует вход READY, что не даст вам остановить ВМ80 сигналом неготовности во время прогона вычислений команды DAD. Шину адреса он не блокирует - там будет активность. Шина данных так же управляется только внутренним сигналом SY_WO, поэтому на шине данных так же будет что-то выставлено (в том числе и слово состояния в своем временном слоту). Произойдет обычная запись, но при отсутствии стробирующих сигналов DBIN и WR конфликта шины или чего-то деструктивного не будет. На остальные входы и выходы READY_INT не влияет.

Очевидно, что в схеме ошибка. Вместо M4 и M5 должны быть M2 и M3. Я специально в тексте объяснения написал соответственно этой схеме, чтобы не было путаницы. Но в целом и так ясно. Не понятно, почему сигнал назван именно как READY_INT, ведь к прерываниям он отношения не имеет (сокращение INT у меня ассоциируется с ними), быть может как READY INTERNALLY? Но все это сейчас уже и не важно, наверное.

Vslav
15.02.2018, 02:43
Однако, команда DAD единственная из тех, что использует машинные циклы М2 и М3, но при этом ей не нужна шина
Ну название Mn оно достаточно условно, n - это обычно номер цикла, а не тип, который используется в документации на процессор. Хотя M1 совпадает как по номеру так и по типу. На DAD есть переход M1->M4, а не M1->M2, поэтому и блокировка генерации внешнего цикла шины на M4/M5.



Не понятно, почему сигнал назван именно как READY_INT
...
быть может как READY INTERNALLY?
Угу, это READY internal, потому что когда оно реверсилось было сразу видно что сигнал влияет на готовность и уходит куда-то глубоко внутрь. А куда именно - сразу не раскопаешь, поэтому было принято такое рабочее название, потом так и осталось. А в последней ревизии rtl (когда я все причесал под монофазность) оно называется dad_m45, так нагляднее.

HardWareMan
15.02.2018, 04:03
Ну название Mn оно достаточно условно, n - это обычно номер цикла, а не тип, который используется в документации на процессор. Хотя M1 совпадает как по номеру так и по типу. На DAD есть переход M1->M4, а не M1->M2, поэтому и блокировка генерации внешнего цикла шины на M4/M5.
Я только сейчас понял, почему Lavr недоумевал. Я всегда машинные циклы обозначал как Mn именно как номер машинного цикла во времени: M1 - чтение опкода, M2 дочитка операнда и т.д. Именно поэтому и посчитал ошибкой в схеме, т.к. DAD продолжительностью в 3 машинных цикла и только в 1м есть активность шины. Так описано в оригинальной доке, там M используется только для номера, а в таблице типа нет никаких литер (кроме N как обозначение числа в слове состояния).

А Lavr смотрел в свою странную книжецу, где Mn это обозначение типа машинного цикла: чтение опкода, чтение данных, запись данных и т.д.

Вот как бывает важно читать правильные документы.

HardWareMan
16.02.2018, 08:30
Оказывается, трюк с обнулением (http://zx-pk.ru/threads/23349-potaktovyj-klon-i8080-na-fpga-cpld.html?p=815971&viewfull=1#post815971) внутренней шины данных используется не только для регистра инструкций. Дело в том, что выборка регистровой пары R0 (напомню, что всего в процессоре 6 регистровых пар, от R0 до R5: PC, HL, DE, BC, SP и WZ) не активируется в Т1 и Т2 в M1. А сброс это растянутый T1 в M1. А защелка адреса может записывать только со внутренней 16ти битной шины регистрового файла. Поэтому, пока удерживается сброс формируются сигналы записи в регистры без указания регистра, что приводит к установке внутренней шины регистров в 0. Это попадает в защелку адреса. 16ти битный сумматор, который может работать в 3х режимах: +1, 0 и -1, тут же высчитывает следующий адрес, который и запишется в PC после загрузки регистра инструкций. Таким образом, при сбросе PC фактически хранит свое состояние до загрузки опкода из ячейки памяти с адресом 0000H. Сам 16ти битный сумматор собран на комбинаторике, со схемой ускоренного переноса. Я еще не проверял, но похоже что INX RP и DCX RP работают через него, поэтому не используют ALU и его флаги.

HardWareMan
16.02.2018, 19:49
Выход HLDA означает, что процессор отработал входной сигнал HOLD запроса доступа к шине и освободил ее. Вот его схема:
http://jpegshare.net/images/37/f1/37f18268071f869c01aa09ee355496d9.png
Меня интересует комментарий Vslav: нет ли тут ошибки? Ведь при установке HLDA произойдет блокировка на элементе, эквивалентном 2И-НЕ (транзисторы Т787 и Т788).

Что касается DAD, он действительно прыгает с M1 на M4 сразу. Ну, по крайней мере, моя моделька прыгает на данном этапе отладки.
http://jpegshare.net/images/85/ca/85cac8e49fa5e2bdf3627fd0c1160bec.png

andreil
16.02.2018, 20:49
Меня интересует комментарий Vslav: нет ли тут ошибки? Ведь при установке HLDA произойдет блокировка на элементе, эквивалентном 2И-НЕ (транзисторы Т787 и Т788).
ИМХО, это будет только при активном F2. После его спада на выходе защёлки будет Z-состояние, что для 2И-НЕ приравнивается к лог. "1", если не ошибаюсь... А при активации F1 следующего цикла это состояние (HLDA после inst 1303) запишется и дальше, что мы и наблюдаем в симуляции выше.

HardWareMan
16.02.2018, 21:09
andreil, это полевые транзисторы. В них заряд остается, если цепь разорвана. Не на всегда, но в пределах тактовой частоты считай что статично (эффект регенерации). Именно поэтому, LATCH на них всего 2 транзистора, вместо 6х. Ну и отсутствие заряда как раз и рассматривается - блокировка произойдет.

andreil
16.02.2018, 21:14
andreil, это полевые транзисторы. В них заряд остается, если цепь разорвана. Не на всегда, но в пределах тактовой частоты считай что статично (эффект регенерации). Именно поэтому, LATCH на них всего 2 транзистора, вместо 6х. Ну и отсутствие заряда как раз и рассматривается - блокировка произойдет.
Возможно и так, в таких схемах быстро запутываюсь, нет опыта. Опирался на схемное представление в углу...

HardWareMan
16.02.2018, 21:25
Возможно и так, в таких схемах быстро запутываюсь, нет опыта. Опирался на схемное представление в углу...
А схемное то как раз еще проще. Конструкция из 2х транзисторов, когда один разрывает цепь затвора у второго ничто иное как инвертирующая прозрачная защелка. Т.е., пока действует лог.1 на управляющем входе (транзистор в цепи затвора открыт) сигнал беспрепятственно проходит и может меняться сколько угодно. Как только управляющее напряжение падает до лог.0 (транзистор закрылся) последнее состояние сигнала запоминается и выход его будет удерживать до следующей активации. А так как обе защелки работают в разные фазы, то по факту они друг друга поддерживают в кольце.

Vslav
17.02.2018, 00:47
Меня интересует комментарий Vslav: нет ли тут ошибки? Ведь при установке HLDA произойдет блокировка на элементе
Ошибки нет, ключ к пониманию - транзистор T375, первый лист внизу слева. Нарисован по-идиотски, не влез где положено. Перерисовал его поближе к формирователю HLDA.

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


andreil, это полевые транзисторы. В них заряд остается, если цепь разорвана. Не на всегда, но в пределах тактовой частоты считай что статично (эффект регенерации). Именно поэтому, LATCH на них всего 2 транзистора, вместо 6х. Ну и отсутствие заряда как раз и рассматривается - блокировка произойдет.
Это ты еще LSI-11 древнейшую схемотехнику не видел. Ковыряю потихоньку CP1611, AKA 581ИК1, вот там жесть, понимаешь что это латч, а как оно конкретно работает - непонятно совсем. Потому что там надо знать тип транзистора, кто из двух передавливает, из фото неясно, приходится угадывать по смыслу. Хорошо хоть подробное описание чипсета есть, сильно помогает.

HardWareMan
17.02.2018, 06:51
Ошибки нет, ключ к пониманию - транзистор T375, первый лист внизу слева. Нарисован по-идиотски, не влез где положено. Перерисовал его поближе к формирователю HLDA.
Семён Семёныч! (с)
http://jpegshare.net/images/8e/1c/8e1cbed0beee5bcd5ba0d914691a8516.png
Тогда NAND превращается в AND, а после него нарисовывается NOR и все работает. Спасибо. Вот много раз матерился, что блин, не работает поиск в этом PDFе! И вроде не картинка, а текст не ищет. :( В чем ты его создавал? Может это можно как-то исправить?

Vslav
17.02.2018, 10:41
Вот много раз матерился, что блин, не работает поиск в этом PDFе! И вроде не картинка, а текст не ищет. :( В чем ты его создавал? Может это можно как-то исправить?
Для PCAD-а есть бесплатный вьюер - http://techdocs.altium.com/display/ALEG/Legacy+Downloads+for+P-CAD
Как для схемы, так и для топологии, там есть поиск, список цепей, содержимое цепей, и навигация.
Файл создавался PDF-creator, исправить нельзя, шрифты пикада векторные, они выводятся наружу как векторная картинка, а не текст - при большом увеличении видны вектора букв. Поэтому поиск в pdf работать не будет, и я выложил полные пикадные базы. Я думал ты давно в пикад смотришь, по pdf тяжело, он же только "на посмотреть" :)

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



[после него нарисовывается NOR и все работает

Ага, я тоже подвис, но я то помню что машинку HOLD/HLDA я тестировал и все жужжало, поэтому начал искать засаду :)

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



И вроде не картинка, а текст не ищет

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

HardWareMan
17.02.2018, 11:51
Похоже у тебя экранный замыливатель включен, действительно выглядит как текст, надо же :)
Акробат Х так делает сам. В общем, все жужжит по части растактовки, я сейчас вылизываю ALU. Гоняю команды в ручном режиме. :)
http://jpegshare.net/images/25/e3/25e38184ebd4a2779e31248d1291494b.png

HardWareMan
17.02.2018, 13:59
Кстати, общий план, чтобы оценить масштабы:
http://hwm.us.to/vm80/VM80_1.jpg (http://hwm.us.to/vm80/VM80.jpg)
Использовал пока синхронные латчи, чтобы облегчить симуляцию и быть максимально аутентичным. Когда схема приведется в рабочее состояние, я ее причешу и переведу полностью на синхронные триггеры.

Titus
17.02.2018, 14:33
Что делается... Того и гляди ВМ2 в виде подобной логической схемы кто-то сделает)

HardWareMan
17.02.2018, 15:46
Что делается... Того и гляди ВМ2 в виде подобной логической схемы кто-то сделает)


https://www.youtube.com/watch?v=UtRFvxQb59M

HardWareMan
17.02.2018, 20:01
Перерисовал его поближе к формирователю HLDA.
Ты, ежели чего-то исправлял или дополнял то сделай PDF, я у себя тоже обновлюсь.

Vslav
17.02.2018, 23:00
Ты, ежели чего-то исправлял или дополнял то сделай PDF, я у себя тоже обновлюсь.
А я сделал, там на гитхабе выложено.

HardWareMan
18.02.2018, 11:36
Vslav, да я уже разобрался. Только в PDFе в новом третий лист с багами. Обнови.
http://jpegshare.net/images/2b/91/2b91026f7a8434c09324809c182b4693.png

Vslav
18.02.2018, 14:26
Vslav, да я уже разобрался. Только в PDFе в новом третий лист с багами. Обнови.

Почему-то галочка Rotate слетела, поправил.
Пришло время делать КСМ на основе нового ядра :) Почитал документацию, 16КБ для экрана жирно, хватит 4К с сохранением функционала (48 80-символьных строк внутри ), курсор немного по другому будет управляться, ну и PS/2 клавиатура вместо 7004. Фирмваре внутренний конечно патчится.

IgorR76
04.10.2018, 13:40
Основана на реверсе, но сделана оптимизация. Когда я сделал форк на вишбон, то выполнил ряд оптимизаций - убрана фаза F1, убраны HOLD/HLDA/WAIT, ну и еще выбросил по ошибке просыпалку, считая что она тоже не нужна. Теперь выяснилось, что это я погорячился, вернул просыпалку на место. Экзорцист-то все тестирует, кроме HLT. Пришлось еще тестик на HLT добавить.
Вы отключили HOLD/HLDA ? А как же ПДП, например, на РК-86 ? В соседней ветке люди "вериложили" ВТ57. Не будет работать?

Vslav
04.10.2018, 18:29
Вы отключили HOLD/HLDA ? А как же ПДП, например, на РК-86 ? В соседней ветке люди "вериложили" ВТ57. Не будет работать?
HOLD/HLDA "отключен" только в варианте для Wishbone. Оно там просто не нужно, потому что принцип работы шины немножко другой.

IgorR76
04.10.2018, 18:54
Vslav, огромное спасибо за классный проект ВМ80 на верилоге. Большой объем за относительно короткий срок. Буду продвигать по возможности.

red.err404
25.03.2019, 10:06
Vslav, спасибо за проект кр580вм80а на верилоге. На базе вашего проекта сделал реализацию кр580вм80 для Proteus, Logisim(evolution version) и Atmega2560 (тестовые версии). Для этого была написана программа для сохранения структуры схемы в формат *.circ и набор лог.компонентов для создания структуры на с. Для Atmega2560 такой подход по скорости плох, но для простых тестов на макетке, думаю пойдет. Корпус для Proteus'а взял отсюда:http://www.nedopc.org/forum/viewtopic.php?t=10110.

https://vk.com/video_ext.php?oid=27141210&id=456239205&hash=03ace0bfcfc8538f

https://vk.com/video_ext.php?oid=27141210&id=456239206&hash=7b856064cebf7679

https://vk.com/video_ext.php?oid=27141210&id=456239207&hash=56179faaed5979f5
Файлы проектов в архиве:
https://drive.google.com/open?id=1BYoub1fusAP4eU6NMCtfpQvfTeJ8bYjf

Vslav
25.03.2019, 16:25
Спасибо, я вечерком из дома архивчик посмотрю. Если там реальный проект 580вм80 под логисим - то это очень круто и полезно. Хотел бы утащить в свою репку на гитхабе, не хотите законтрибутить?

Vslav
25.03.2019, 21:22
Пытаюсь открыть с logisim 2.7.1 (вроде как последний с сайта) - "Встроенная библиотека ТТЛ недоступна в этой версии". Дальше схему открывает, но висит напрочь...

red.err404
25.03.2019, 21:48
Я не против. Но проект пока тупой перевод в лоб, verilog -> json (структура схемы см. рисунок 1) -> circ (см. рисунок 2).
68586
Результат такого преобразования на рисунке ниже
68587
Проект под Logisim evolution version https://github.com/reds-heig/logisim-evolution (позволяет потом схему заливать в ПЛИС)

Vslav
25.03.2019, 22:00
Проект под Logisim evolution version https://github.com/reds-heig/logisim-evolution (позволяет потом схему заливать в ПЛИС)
Скачал там уже собранный jar, запустил, при открытии проекта пишет что все равно нет встроенной TTL библиотеки, при попытке открыть страничку main - выпадает окно что симулятор закрашился :(

red.err404
25.03.2019, 22:08
Если такое сообщение,
https://pp.userapi.com/c850620/v850620362/edcf1/yXYRAJKAy4w.jpg
То меню -> моделировать -> сбросить моделирование -> включить моделирование -> такты включены

Vslav
26.03.2019, 09:00
Нет, сначала диалоговое окно дважды выпадает -
"K580VM80A: Встроенная библиотека TTL не доступна в этой версии."
Потом открывается пустое поле, но слева есть список в котором есть K580VM80A, выбираешь main - открывается новое окно с какими-то элементами, но такой картинки с системой на ВМ80 нет, потом все тупо висит или выпадает сообщение о краше симулятора. Версия 2.14.6, кстати, у них там предсобранная лежит. Качать исходники и собирать 2.15 не буду - с Явой никогда не работал, времени жалко.

Update: таки склонировал репку логисима, обновил JRE, попытался запустить или собрать - gradle падает с исключением - не находит tools.jar. Надо еще JDK ставить. Ну не судьба значит.

Update2: нашел в закладке releases 2.15, на библиотеку уже не ругается, но все равно крашится - "Logisim has crashed. Save your work and restart simulator". Нет, это точно не судьба.

Roman_msk
15.04.2019, 11:41
Добрый день,
есть возможность помочь в реализации КР580ВМ80А на ПЛИС или CPLD? может кто провел полную интеграцию на Альтере ... был бы очень благодарен за символьный компонент, ибо проще понимается когда работаешь в символьном редакторе, может кто может подсобить с библиотекой готовой для Квартуса?

floxar
05.05.2019, 16:45
Здравствуйте. Решили попробовать реализовать данный процессор на технологии 180 нм. Есть несколько вопросов понимающим людям:
1) есть ли схема на вентилях или более подробное разбитие на блоки самого процессора.
2) зачем в некоторых инверторах на затвор и сток в одном случае +12В, в другом на затвор +12, а на сток +5?

Vslav
05.05.2019, 18:27
Здравствуйте. Решили попробовать реализовать данный процессор на технологии 180 нм. Есть несколько вопросов понимающим людям:
1) есть ли схема на вентилях или более подробное разбитие на блоки самого процессора.
2) зачем в некоторых инверторах на затвор и сток в одном случае +12В, в другом на затвор +12, а на сток +5?
ИМХО, это не подходящие вопросы для реализации на 180нм. Надо начинать с выбора/доступности фаба , получения от него PDK и решения вопроса с софтом для проектирования. Сам процессор простой, пересинтезировать его на предложенном инструментарии на полученный PDK не особо большая проблема.

floxar
05.05.2019, 19:06
PDK есть, софт - Cadence

Vslav
05.05.2019, 20:19
PDK есть, софт - Cadence
Отлично, тогда берете HDL-код, изменяете желаемым образом и синтезируете по стандартному маршруту. +12В на 180нм крайне маловероятно что понадобятся :)

floxar
05.05.2019, 20:47
Отлично, тогда берете HDL-код, изменяете желаемым образом и синтезируете по стандартному маршруту. +12В на 180нм крайне маловероятно что понадобятся :)

Интересует именно вручную скомпоновать схемотехнику и спроектировать топологию (кодом владеем оочень плохо). Поэтому интересует подробное описание блоков https://hsto.org/getpro/habr/post_images/ac0/e00/b08/ac0e00b0863c190940c844892378996d.jpg

Romych
06.07.2020, 12:57
https://m.habr.com/ru/news/t/509748/
Гугл даёт возможность выпустить чип в "железе"!

Mick
06.07.2020, 13:28
Гугл даёт возможность выпустить чип в "железе"!

Интереснее выпустить КР580ВМ1 - вот это редкость, но его вроде в распотрошенном виде нет.

LeoN65816
06.07.2020, 14:03
Гораздо интереснее было бы получить вот такой вкусный чип - W65C832 (http://dtsheet.com/doc/644045/etc-w65c832pl-10), 8/16/32-битный 6502 (разработан, но не выпущен в серию) - вот это конфетка!

Titus
06.07.2020, 14:09
https://m.habr.com/ru/news/t/509748/
Гугл даёт возможность выпустить чип в "железе"!
Возникает два вопроса:
1. Зачем это надо гуглу?
2. Есть ли смысл выпускать какой-то ретрочип по нормам 130нм (а другими чипами на этом форуме не занимаются), или же проще сделать его на FPGA, как и делали раньше.

Vslav
06.07.2020, 14:27
Три проблемы:
- ретрочипы мало кому интересны в кремнии, очень маловероятно что одобрят, и есть вопросы лицензионные вопросы по архитектурам
- PDK как таковой еще не открыт, опубликована только одна ячейка
- непонятно что с инструментарием, софт для разработки должен быть лицензионным с подтверждением, это денег обычно стоит больше чем испечь сам проект в MPW. Ну есть старенький VLSI Magic, можно попробовать, но...

Romych
06.07.2020, 15:11
Да, я на самом деле тоже так думаю. Гугл ищет наверняка новый, полностью Open Source проект. Благие намерения в этом, конечно есть, сделать выпуск кастомных чипов более доступным. Ну только действительно, зачем, смысл есть только при достаточно массовом выпуске, а для единичных экземпляров дешевле FPGA. Ну и показать, что гугл корпорация добра, которая продвигает выпуск OpenSource чипов для IoT завязанных на сервисы гугла:)

hitomi2500
06.07.2020, 19:39
Возможно гугл просто пробует понизить порог входа на свой фаб. Чтобы запустить замкнутый круг "большие объёмы - низкие цены", надо сначала поработать в убыток. А опенсорс возможно чтобы не было наплыва любителей халявы, а ещё чтобы подтолкнуть комьюнити к развитию, иначе опять же больших объёмов не будет. Если взлетит - это конечно будет здорово.