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

Базовые хеловордлы пройдены: светодиоды, ключи, кнопки, HEX и писк через бузер освоены. Под парами лежат модули RS232 на 3.3v и модуль SD-карточек.
Версия бузера у меня buzzer он немного суров, т.к. имеет усилитель на транзисторе 2TY без ограничивающего резистора, поэтому ток протекающий через него получается великоват и он греется. Надо быть внимательным с полярностью управляющего сигнала.
Для МЭСМ-6 понадобится модуль PLL и блоки памяти M9K.
Вгрузка памяти программ и данных будет организована пока через mif-файл. Скрипт перевода oct файлов в mif готов.
В ближайшее время начну вкорячивать МЭСМ-6 в DE10-LITE.

Базовые хеловордлы пройдены: светодиоды, ключи, кнопки, HEX и писк через бузер освоены. Под парами лежат модули RS232 на 3.3v и модуль SD-карточек.
Версия бузера у меня buzzer он немного суров, т.к. имеет усилитель на транзисторе 2TY без ограничивающего резистора, поэтому ток протекающий через него получается великоват и он греется. Надо быть внимательным с полярностью управляющего сигнала.
Для МЭСМ-6 понадобится модуль PLL и блоки памяти M9K.
Вгрузка памяти программ и данных будет организована пока через mif-файл. Скрипт перевода oct файлов в mif готов.
В ближайшее время начну вкорячивать МЭСМ-6 в DE10-LITE.
no subject
По этим картинкам:
видно, что стоят синхронизирующие защелки, но так как у нас и так сигналы засинхронизированы я и подумал, что надо сначала адрес выставить, потом защелкнуть и только потом считать результат.
Но с толку сбило, что ПЗУ то заработало сразу! (11-бит потому что 4к-слова сделал, чтобы памяти на осциллограф оставить)
Любопытно, что IP-блок ROM (который тоже внтури M9K RAM) работает нормально.
Но эти "ловушки" мне нравятся, т.к. пришлось квест пройти с SignalTap а это вещь нужная. Даже и не знал что он есть и хорошо работает.
Я и сам с трудом сдерживаю эмоции :) По-детски радуюсь :)
Да короткая программа работает:
https://youtu.be/ZBcn2QYrOnk
no subject
no subject
function [7:0] to_hex(input [3:0] ival);
begin
to_hex = ival == 0 ? 8'b00111111 :
ival == 1 ? 8'b00000110 :
ival == 2 ? 8'b01011011 :
ival == 3 ? 8'b01001111 :
ival == 4 ? 8'b01100110 :
ival == 5 ? 8'b01101101 :
ival == 6 ? 8'b01111101 :
ival == 7 ? 8'b00000111 :
ival == 8 ? 8'b01111111 :
ival == 9 ? 8'b01101111 :
ival == 10 ? 8'b01110111 :
ival == 11 ? 8'b01111100 :
ival == 12 ? 8'b00111001 :
ival == 13 ? 8'b01011110 :
ival == 14 ? 8'b01111001 :
ival == 15 ? 8'b01110001 :
$
end
endfunction
Вчера уже поздно попробовал прогнать тест a+x a-x x-a.
Вместо стоп команды я сделал вывод PASS или FAIL с вывдом на хекс цифры
К большому сожалению:
Потом разделил частоту процессора до 2Гц, вывел PC на HEX-индикатор и стало ясно что прыгает после первой проверки с адреса 3.
Сегодня в течении дня я постараюсь выложить проект на гитхаб.
no subject
Запощу видео в список рассылки бэсм6, пусть народ порадуется.
no subject
Осталась проблема с ПЗУ. Её до завтра оставлю, т.к. там вылезли косяки с командой uj или другими переходами. Смотря в какую левую или правую часть команды ставишь переход то работает то нет. Видимо та же проблема с таймингами.
no subject
https://youtu.be/WmhsyinIhco
Ломается на арифметическом тесте....
no subject
assign ibus_addr = pc[15:1];
Посмотрел ещё раз внимательно времянку на примере теста UJ. Вроде ibus_addr стабильно стоит аж до конца запроса к памяти, тут всё в порядке. Но выставляется адрес одновременно с запросом ibus_rd. То же самое при обращении к данным.
Проблема в том, что отсутствует опережение, то что называется Address Setup Time. Очевидно, для альтеровскиго ПЗУ опережение не нужно, а для памяти требуется. Надо учесть это в твоём коде привязки к блокам M9K.
no subject
Я первым делом в RTL model viewer проверил, что все синтезированные цепи соответствуют коду RTL. Всё проследил по проводам. Все места где были подозрения тоже проверил - там всё правильно.
Затем полез уже в Technology Map и там увидел что квартус там нагенерил. Там "дичь".
И такая вещь:
Похоже конечно на регистровый файл, но там еще паутина из регистров которые называются "M"
Буду это всё думать...