Текущий план проекта мэсм-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-13 06:12 am (UTC)Я переделал микрокод вместо массива в конструкцию case. Добавилось 10 LUTов, но вышло даже чуть быстрее.
Было: 52.88 MHz - 57.42 MHz
Total combinational functions: 4,625
Dedicated logic registers: 678
Стало: 55.39 MHz - 59.94 MHz
Total combinational functions: 4,635
Dedicated logic registers: 678
no subject
Date: 2019-04-13 12:55 pm (UTC)# Limit: 12000000
# Load 2399 words from alu.oct
# (4430141) Unknown microinstruction address: upc=0101100xx
#
# ----- Fatal Error! -----
# Elapsed time: 117 seconds
Он вылазит в тесте АЛУ.
Кусок трассировки:
(4430140) 36262: 06606264 uza 6264(1)
(4430141) 176: 0000200000000000262 imm=178 cond_a_zero
(4430141) Unknown microinstruction address: upc=0101100xx
То есть все нормально, команда uza до этого выполнялась:
(4429942) 36236: 06606240 uza 6240(1)
(4429942) R = 04 (log)
(4429943) 176: 0000200000000000262 imm=178 cond_a_zero
(4429943) Y = 0000 0000 0000 0000
(4429944) 178: 0010000000000000000 pc=UA w_pc
(4429945) 179: 0000001100000000023 imm=19 cond_op_not_cached decode
(4429946) 19: 0000000600000000000 fetch w_opcode (busy)
(4429946) Fetch [36240] = 0010 6777 0013 6777
(4429947) 19: 0000000600000000000 fetch w_opcode
(4429948) 20: 0000001000000000000 decode
(4429948) 36240: 00106777 xta 6777
Почему вдруг испортилось содержимое case загадка. Видимо какие-то особенности работы modelsim на ubuntu 18.04 x64
Сделал дамп для gtkwave где показан момент
Файлы трейсов слишком жирные получаются.
На какой версии линукса и modelsim у вас проходит этот тест АЛУ ?
С другими маленькими тестами всё в порядке.
Test uj - PASS
Test vtm_vzm_v1m - PASS
Test j+m_utm - PASS
Test vlm - PASS
Test utc_wtc - PASS
Test vjm - PASS
Test mtj - PASS
Test xta_uza_u1a - PASS
Test atx - PASS
Test ati_ita - PASS
Test addr0 - PASS
Test aax_aox_aex - PASS
Test arx - PASS
Test its - PASS
Test sti - PASS
Test xts - PASS
Test stx - PASS
Test asn_asx - PASS
Test acx_anx - PASS
Test apx_aux - PASS
Test stack - PASS
Test ntr_rte - PASS
Test yta - PASS
Test e+n_e-n_e+x_e-x - PASS
Test a+x_a-x_x-a - PASS
Test amx - PASS
Test avx - PASS
Test multiply - PASS
Test divide - PASS
Test hello - PASS
---
Tests total: 30, passed: 30, failed: 0