x86128: (Default)
x86128 ([personal profile] x86128) wrote2019-04-30 11:35 pm

DE10-LITE приехала!

Спешу поделиться радостью: прямо перед праздничными выходными почта довезла плату с FPGA Altera Max10 в исполнении Terasic de10-lite.



Базовые хеловордлы пройдены: светодиоды, ключи, кнопки, HEX и писк через бузер освоены. Под парами лежат модули RS232 на 3.3v и модуль SD-карточек.

Версия бузера у меня buzzer он немного суров, т.к. имеет усилитель на транзисторе 2TY без ограничивающего резистора, поэтому ток протекающий через него получается великоват и он греется. Надо быть внимательным с полярностью управляющего сигнала.

Для МЭСМ-6 понадобится модуль PLL и блоки памяти M9K.

Вгрузка памяти программ и данных будет организована пока через mif-файл. Скрипт перевода oct файлов в mif готов.

В ближайшее время начну вкорячивать МЭСМ-6 в DE10-LITE.
vak: (Default)

[personal profile] vak 2019-05-02 05:54 am (UTC)(link)
Нехорошо, что адрес i_addr снимается в момент, когда устанавливается запрос i_read или i_write. Надо бы его на такт подзадержать. Скорее всего в этом дело.

Но сам факт, что коротенькая бэсмовская программа крутится на FPGA, не может не радовать. :)
vak: (Default)

[personal profile] vak 2019-05-02 06:39 pm (UTC)(link)
Видео замечательное. Это уже какая-то более сложная программа, раз умеет преобразовывать цифры в 7-сегментные регистры?
vak: (Default)

[personal profile] vak 2019-05-03 05:05 am (UTC)(link)
Ну ничего, первый блин комом. :)
Запощу видео в список рассылки бэсм6, пусть народ порадуется.
vak: (Default)

[personal profile] vak 2019-05-02 07:38 pm (UTC)(link)
В модуле mesm6_core на ibus_addr и dbus_addr нету отдельных регистров. К примеру, ibus_addr это просто часть регистра PC:

assign ibus_addr = pc[15:1];

Посмотрел ещё раз внимательно времянку на примере теста UJ. Вроде ibus_addr стабильно стоит аж до конца запроса к памяти, тут всё в порядке. Но выставляется адрес одновременно с запросом ibus_rd. То же самое при обращении к данным.



Проблема в том, что отсутствует опережение, то что называется Address Setup Time. Очевидно, для альтеровскиго ПЗУ опережение не нужно, а для памяти требуется. Надо учесть это в твоём коде привязки к блокам M9K.