Текущий план проекта мэсм-6
Apr. 11th, 2019 03:13 pmПо хардверу
(*) Добавить регистры-модификаторы режима прерываний: так называемые К[] регистры.
(*) Сделать экстракоды
(*) Сделать команду IJ - выход из прерывания.
(*) Реализовать внешние прерывания.
(*) FPGA: соорудить систему-на-кристалле для Altera Max 10. Для начала процессор, память данных, память команд.
(*) FPGA: система-на-кристалле для Xilinx Spartan-7.
(*) Контроллер внешних прерываний.
(*) Последовательный асинхронный порт UART.
(*) Таймер.
(*) Порты GPIO.
(*) Порты SPI.
(*) Порты I2C.
(*) Схема платы МЭСМ-6.
(*) Разводка платы.
(*) Изготовление платы.
По софту
(*) Собрать Паскаль-Монитор компилятором FreePascal. Добиться, чтобы он выдавал ровно тот же объектный код.
(*) Документировать объектный код, выдаваемый компилятором (так называемый "стандартный массив").
(*) Дизассемблер для этого объектного код, на основе имеющегося DTRAN.
(*) Линкер для этого объектного кода.
(*) Ассемблер, принимающий на вход упрощённый БЕМШ/Madlen, и выдающий совместимый объектный код.
(*) Переписать рантайм библиотеку Паскаля на этот ассемблер. Адаптировать к нуждам приложений Arduino.
(*) Библиотеки обслуживания прерываний, таймера, портов UART, GPIO, SPI, I2C. Всё в стиле Ардуино, но на Паскале и ассемблере.
(*) Набор примеров простых ардуинных приложений на Паскале.
(*) Руководство по компилятору на основе имеющейся документации Паскаль-Монитор.
(*) Пакет plug-in для стандартной среды Arduino, добавляющий компилятор Паскаль, библиотеки и примеры для платы МЭСМ-6.
Планы наполеоновские, но есть шанс постепенно осилить. Кто за что готов из этого списка взяться - объявляйтесь. Тут работы на роту хватит.
План не высечен в граните: будем менять по мере продвижения и изменения концепции.
no subject
Date: 2019-04-15 11:13 pm (UTC)Регистры всех периферийных блоков я бы предложил отобразить в память. Занять под них диапазон 77000-77777. Так к ним удобнее будет обращаться из языков высокого уровня. Команды РЕГ и УВВ не особо нужны. Совместимость с БЭСМ-6 нам тут никак не помогает.
Модуль MMU это правильно. Он должен ловить обращения к окну периферийных регистров и переадресовывать в конкретный модуль. И еще собирать прерывания от периферийных модулей в контроллер прерываний. К процессору идёт только один общий сигнал запроса прерывания.
Карту адресов для периферийных модулей можем обсудить отдельно.
Реализацию периферийных блоков можно заимствовать из других opensource проектов. Упрощать и адаптировать к нашей ситуации.
no subject
Date: 2019-04-16 04:22 am (UTC)Видимо надо брать AHB-Lite или Simple Bus Architecture
Они достаточно простые, причем из AHB можно убрать поддержку транзакций на первом этапе.
То есть это у нас будет аналог медленных каналов БЭСМ-6.
Но я в перспективе хочу чтобы были DMA контроллеры для framebuffer и SD-card, то есть какую-то быстру шину предусмотреть. Но это потом конечно. (именно поэтому как-то не очень хочется от архитекуры БЭСМ отходить)
no subject
Date: 2019-04-17 04:48 am (UTC)DMA-контроллеры позже можно добавить.
no subject
Date: 2019-04-17 04:56 am (UTC)Для нашей системы вот этот мультиплексор будет просто космических масштабов.
Или это принято нормальным считать? Мне кажется там длина пути сигнала в этой цепочке будет очень большая.
Или не заморачиваться с третьим состоянием?
no subject
Date: 2019-04-17 06:02 am (UTC)Вот как здесь:
https://github.com/MIPSfpga/mipsfpga-plus/blob/master/system_rtl/mfp_ahb_lite_matrix.v#L422
И декодер адресов:
https://github.com/MIPSfpga/mipsfpga-plus/blob/master/system_rtl/mfp_ahb_lite_matrix.v#L372