vak: (Улыбка)
[personal profile] vak
Чудная книжка: объясняет в деталях, как работают секционные процессоры серии К1804 (Am2900). Досталась мне за $0.01 на Амазоне. Неясных мест почти не осталось, можно начинать восстанавливать схему процессора микро-БЭСМ.



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

Date: 2016-10-05 20:20 (UTC)
From: [identity profile] 1500py470.livejournal.com
А сколько стоила пересылка?

Date: 2016-10-05 22:44 (UTC)
From: [identity profile] spamsink.livejournal.com
Опередил.

Date: 2016-10-06 08:24 (UTC)
From: [identity profile] 1801bm1.livejournal.com
Симпатичная книжка :)
Am2901 тоже нужна? Могу поучаствовать в написании/тестировании.

Update: заглянул в гитхаб, а Am2901 уже там есть. Надо переползать на .sv, на нем компактнее
Update2: судя по всему Am2901 был перенесен со старого исходника на VHDL, который гуляет в Сети. Там есть сомнения что он корректно генерирует сигналы ускоренного переноса и флаг переноса/переполнения при битовых операциях.
Edited Date: 2016-10-06 15:20 (UTC)

Date: 2016-10-06 18:56 (UTC)
From: [identity profile] 1801bm1.livejournal.com
>>СистемВерилог далеко ушёл вперед от VHDL, это верно
Я пока на простом Верилоге пишу.

>> Вы могли бы глянуть, что там не так с сигналом ускоренного переноса на Am2901?
Генерация ускоренного переноса и флагов переноса и переполнения работает верно в Am2901.sv только для операций сложения/вычитания. Для логических операций там логика генерации флагов другая (судя по документации на Am2901). Например Ваш модуль будет всегда генерировать C4 = 0 при логических операциях, в реальной микросхеме это не так. Судя по моему опыту изучения транзисторных схем АЛУ, там сделана оптимизация по числу транзисторов, много совмещенной логики, и флаги в логических операциях формируются по получившейся логике. То есть - в сложении/вычитании работают верно, а в остальных операциях - как вышло. Спасибо что хоть задокументировали. По хорошему - надо 2901 ставить на тот же стенд что и 2904 и запротоколировать работу флагов.

Еще одна проблема:
>> assign a = ram[Aadd];
>> assign b = ram[Badd];
В микросхеме a и b - это FF. По фронту клока они защелкиваются и их выход более на зависит от входных адресов Aadd и Badd, в модуле это не так.

Date: 2016-10-06 20:34 (UTC)
From: [identity profile] 1801bm1.livejournal.com
>> Судя по даташиту, там не FF а latch.
Память 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 недописаны - я тоже увяз на них, наверное тоже желателен стенд для выяснения, в даташите что-то неосознаваемое написано.