В предыдущих постах мы подробно разбирали каждый слой: CPU, арифметику, скриптовый интерпретатор, оборудование. Вот, что окончательный отчёт о синтезе Quartus сообщает обо всех них: в готовой архитектуре используется 1593 логические ячейки из доступных в EP2C5 4608 (35% чипа) с 594 выделенными логическими регистрами и 17 блоками памяти M4K. Сам модуль CPU занимает 1173 из этих логических ячеек и 400 регистров. Остальная логика отдана периферии: драйверу ЖК‑дисплея (154 логические ячейки), сканеру клавиатуры (97), интерфейсу термопринтера (64), таймеру CTC (49) и аппаратному PRNG (20). 12 блоков памяти M4K занимает ROM микрокода (49152 бит: это полная программа калькулятора), 2 блока — ROM скриптинга (8192 бита), 1 — ROM BCD‑констант, 1 — таблица поиска для BCD‑умножения внутри CPU и 1 блок — ОЗУ. Меня это очень радует: полнофункциональный научный калькулятор уместился в 35% небольшой дешёвой FPGA.
Технологический стек
В проекте использовался непривычно широкий спектр технологий: SystemVerilog для CPU и периферии, ModelSim и Verilator для симуляции, Quartus для синтеза FPGA, Qt для десктопного симулятора и браузерного WebAssembly‑демо, Python для ассемблера и компилятора скриптинга, C++ для эталонной реализации Proto и Autodesk Fusion для проектирования корпуса. Каждый инструмент нашёл своё место. Удивило меня то, насколько естественно они сочетались: одни и те же исходники Verilog работали во всех окружениях, одни и те же тестовые векторы верифицировали и эталон на C++, и…
Чему…