ДВК на FPGA

запуск проекта dvk-fpga

Posted by Unik on 28.08.2021

В этом году появился новый FPGA проект от forth32 по ДВК. И он оказался хорош во всём. До него был только "Эмулятор ДВК от Patron", но в fpga ничего подобного не было. Я об этом узнал только месяц назад и сразу захотел его попробовать. Так как мои познания в fpga ограничиваются запуском готовых проектов, то выбрал плату из тех что поддерживаются, а именно Alinx AX4010.

Для запуска проекта понадобится:

  • Alinx AX4010 (EP4CE10)
  • PS/2 arduino module либо любой разъём ps/2
  • Altera USB Baster для прошивки
  • SDHC карта
  • Клавиатура PS/2
  • Монитор с VGA
  • Блок питания 5В с USB

Скачать проект можно здесь - https://github.com/forth32/dvk-fpga

И вот что в нём есть:

Процессорные платы:
• К1801ВМ1(МС1201.01)
• К1801ВМ2(МС1201.02)
• М2(МС1260)
• М4(МС1280)

Периферийные устройства:
• Последовательный порт ИРПС, используемый для подключения консольного терминала (TT:) 
  по адресу 177560, а также дополнительных терминалов, последовательных принтеров (LS:) и 
  магистралей связи с другими ЭВМ (XL:) по адресу 176500
• Параллельный порт ИРПР (LP:) для подключения параллельного принтера
• Дисковый контроллер RK11 (RK:) с подключенными к нему 8 дисками RK05
• Дисковый контроллер RK611 (DM:) с подключенными к нему 8 дисками RK07
• Дисковый контроллер RX11 (DX:) с подключенными к нему двумя дисками RX01
• Дисковый контроллер КМД (MY:) с подключенными к нему двумя дисководами
• Контроллер жесткого диска RD50C (DW:) с подключенным к нему HDD на 64М
• Текстовый терминал КСМ подключенный к консольному ИРПС
• Графический контроллер КГД
• ОЗУ размером 64К
• ПЗУ размером 1К с эмулятором пульта и набором загрузчиков
• Пользовательское ПЗУ размером 8К по адресам 140000-157777

Проект создан в Quartus версии 18.0 поэтому качаем такую же версию Quartus Prime Lite Edition, a также "Cyclone IV device support". ModelSim можно не качать. Для скачивания понадобится зарегистрироваться на сайте.

Затем подключаем к плате модуль PS/2:

CLK к R12
DAT к R11
VCC к VCC(5V)
GND к GND

Устанавливаем Quartus, открываем в нём проект для AX4010(top.qpf) и запускаем компиляцию, которая длится 5-10мин. Затем заливаем скомпилированый файл top.sof через "Tools -> Programmer": нажимаем на "Hardware setup...", выбираем USB-Blaster и JTAG. Start!

И всё, сразу запустилось! Но до первого выключения питания. Для сохранения прошивки нужно получить JIC файл для EPCS16(т.к. 16M Flash) и так же его прошить. Подробнее про это есть в моем запуске PDP2011.

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

SD карта

По умолчанию включены все переферийные модули из которых получаем набор из 8 дисков RK, одного диска DW, двух дисков DX, 4 дисков MY и 8 дисков DM, которые образуют дисковый банк размером 2Гб(банков может быть больше одного!).

Для облегчения начального запуска проекта, в каталоге disk лежит полный образ дискового банка в файле initdisk.img. Этот образ содержит в себе:

• полный дистрибутив RT-11 v5.4 на диске DW0
• загрузочный диск RT-11 v5.4 на RK0 и DX0
• загрузочный образ XXDP 2.5 на диске RK1
• загрузочный диск RT-11 v5.1 и набор игр и графических программ на MY0
• ФОДОС-ТМОС на диске MY1 и RK2

Стартовый набор initdisk.img можно записать на SD-карту с нулевого блока командой: dd if=initdisk.img of=/dev/sdx

Для записи конкретных образов дисков на SD-карту используется программа sd-store, а для извлечения образов с карты – программа sd-extract.

Поддерживаются только SDHC карты. Автор предупреждает что некоторые карты некорректно работают в режиме SPI и они не подойдут.

В системе присутствует драйвер DW, разбивающий HDD на 4 одинаковых диска по 16Мб. Можно переразбить диск командой "set dw part". На дисках RK0 и DW0 лежат исходные тексты драйвера DW.MAC и командный файл DWBLD.COM для сборки драйвера.

Не все платы содержат в себе загрузчики со всех имеющихся дисковых устройств. Полный набор загрузчиков есть только в мониторе 279 платы МС1201.02. Монитор платы МС1201.01 умеет загружать систему только с дисков DX, а платы МС1260 и МС1280 вообще не содержат ни одного загрузчика.

Терминал

Блок КСМ работает в разрешении 24 строки по 80 символов. Самая верхняя строка экрана терминала — служебная строка. В эту строку выводятся буквенные индикаторы режимов работы красного цвета:

LINE режим связи с ЭВМ
LOCAL автономный режим
CAPS включен CAPS LOCK
ALT включен альтернативный режим дополнительной клавиатуры
KOI7 включена кодировка КОИ7 Н2
LAT включена кодировка Н0
RUS включена кодировка Н1
HOLD включен режим HOLD SCREEN
WAIT терминал ждет команды Scroll для продолжения вывода
MUTE звуковой сигнал отключен

В режиме КОИ7 Н0 терминал работает со стандартной таблицей ASCII, в точности как оригинальный VT52. При этом отображаются малые и большие латинские буквы. Из кодировки Н0(LAT) можно переключиться в кодировку Н1(RUS) по Left-ALT, при этом терминал отображает малые русские буквы вместо больших латинских, и большие русские вместо малых латинских.

Чтобы было удобно просматривать большие тексты на терминале, например по команде "DIR" нужно послать команду HOLD терминалу. В режиме HOLD можно листать вывод построчно(ScrollLock) и постранично(Shift+ScrollLock)

В RT-11 для этого есть команды:

SET TT HOLD - включение HOLD
SET TT NOHOLD - выключение

Клавиатура

Раскладка букв и символов во всех режимах примерно соответствует стандартной раскладке АТ-клавиатуры (qwerty/йцукен) с небольшими отличиями, которые легко выявить опытным путем. Поле цифровой дополнительной клавиатуры используется в точности так же, как на клавиатуре МС7004 — в стандартном режиме вводятся цифры, в альтернативном — управляющие коды. Клавиши - и + соответствуют стрелкам вверх-вниз. Клавиши Numlock,/,* соответствуют кодам PF1, PF2 и PF3 стандартной клавиатуры VT52 и расположены в тех же местах. Отсутствующие клавиши влево-вправо перенесены на поле управления курсором, там же продублированы стрелки вверх-вниз.

Управляющие клавиши АТ-клавиатуры имеют следующие значения:

F5 Уменьшение скорости последовательного интерфейса
F6 Увеличение скорости последовательного интерфейса
F7 Переключение формы курсора - блок/подчеркивание
F8 Включение-отключение мигания курсора
F9 Отключение-включение звукового сигнала.
F10 Переключение режимов Line/Local
F11 Включение/отключение кодировки КОИ7 Н2
L-ALT Переключение кодировки RUS(Н1) / LAT(Н0)
R-ALT Ввод кода LF(ПС) — переход на новую строку
Scrollock Вывод следующей строки в режиме HoldScreen (с shift - вывод страницы)
PgDn Раздвижка экрана вниз
PgUp Раздвижка экрана вверх
Home Установка курсора в начало экрана
Ins Раздвижка строки вправо