![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Чудная книжка: объясняет в деталях, как работают секционные процессоры серии К1804 (Am2900). Досталась мне за $0.01 на Амазоне. Неясных мест почти не осталось, можно начинать восстанавливать схему процессора микро-БЭСМ.

Заметьте забавную наклеечку в правом верхнем углу. Раньше книжка принадлежала профессору Гарольду Картеру из университета Цинцинатти.


Заметьте забавную наклеечку в правом верхнем углу. Раньше книжка принадлежала профессору Гарольду Картеру из университета Цинцинатти.

no subject
Date: 2016-10-05 20:20 (UTC)no subject
Date: 2016-10-05 22:44 (UTC)no subject
Date: 2016-10-06 01:30 (UTC)no subject
Date: 2016-10-06 08:24 (UTC)Am2901 тоже нужна? Могу поучаствовать в написании/тестировании.
Update: заглянул в гитхаб, а Am2901 уже там есть. Надо переползать на .sv, на нем компактнее
Update2: судя по всему Am2901 был перенесен со старого исходника на VHDL, который гуляет в Сети. Там есть сомнения что он корректно генерирует сигналы ускоренного переноса и флаг переноса/переполнения при битовых операциях.
no subject
Date: 2016-10-06 18:36 (UTC)Вы могли бы глянуть, что там не так с сигналом ускоренного переноса на Am2901? Имеющийся тест проходит, но не факт, что он покрывает всю функциональность. Может быть, стоит доработать тестовые вектора?
Вопрос соответствия Верилог-кода реальным чипам стоит во весь рост. Для Am2904 я даже собрал специальный стенд: http://ramlamyammambam.livejournal.com/423659.html
Осталось софт для стенда написать.
no subject
Date: 2016-10-06 18:56 (UTC)Я пока на простом Верилоге пишу.
>> Вы могли бы глянуть, что там не так с сигналом ускоренного переноса на Am2901?
Генерация ускоренного переноса и флагов переноса и переполнения работает верно в Am2901.sv только для операций сложения/вычитания. Для логических операций там логика генерации флагов другая (судя по документации на Am2901). Например Ваш модуль будет всегда генерировать C4 = 0 при логических операциях, в реальной микросхеме это не так. Судя по моему опыту изучения транзисторных схем АЛУ, там сделана оптимизация по числу транзисторов, много совмещенной логики, и флаги в логических операциях формируются по получившейся логике. То есть - в сложении/вычитании работают верно, а в остальных операциях - как вышло. Спасибо что хоть задокументировали. По хорошему - надо 2901 ставить на тот же стенд что и 2904 и запротоколировать работу флагов.
Еще одна проблема:
>> assign a = ram[Aadd];
>> assign b = ram[Badd];
В микросхеме a и b - это FF. По фронту клока они защелкиваются и их выход более на зависит от входных адресов Aadd и Badd, в модуле это не так.
no subject
Date: 2016-10-06 20:08 (UTC)Спасибо за подсказку с сигналом переноса и защелками на A и B - учту на будущее. Судя по даташиту, там не FF а latch. Переключается не фронтом, а уровнем сигнала CLK.
no subject
Date: 2016-10-06 20:34 (UTC)Память RAM - да, латч. А вот A, B, Q - вроде флип-флопы. Смотрите описание сигнала CP в табличке выводов микросхемы, там написано "The Q register and register stack outputs change on the clock LOW-to-HIGH transition".
Конечно, хорошо бы этот момент проверить на стенде, потому что также на диаграмме написано "A/B latch", вдруг у них этот флип-флоп образуется из двух латчей - собственно памяти и A/B. Но модель все равно неверная - тогда a/b будут изменяться при изменении адреса при низком CP.
>> учту на будущее
Вам спасибо - я потом упру у Вас выверенную модель 2901 для своего СМ-1420 :)
Вот мой вариант: Am2901 (http://u.zeptobars.ru/yuot/MISC/am2901.v). Он сразу заточен под FPGA (без латчей, блок памяти на FF), но пока именно ovr и p/g недописаны - я тоже увяз на них, наверное тоже желателен стенд для выяснения, в даташите что-то неосознаваемое написано.