ПЛИС III: процессор на ПЛИС + UART-загрузчик
Паспорт модуля
| Параметр | Значение |
|---|---|
| Аудитория | 🔴; пройдены М12–М16 |
| Аутентичная задача | исполнить на ПЛИС те же .hex-файлы из ассемблера М14 без изменений — кросс-совместимость как приёмочный критерий; получить платформу для видео (М18) и Тетриса (М19) |
| Объём | 6 занятий × 90 мин |
| Оборудование | Tang Primer 25K, USB-UART (на доке), тулчейн М15, ассемблер и тест-программы М14 |
| Ограничения | как в М15; тактирование ядра CPU — с запасом (например, деление системного клока), тайминг-отчёт обязателен |
Цели
| № | Обучающиеся … | Блум—Андерсон | Миллер | Проверка |
|---|---|---|---|---|
| 1 | переводят микрокод М12 в управляющий автомат (FSM) на Verilog | создавать | делает | все команды проходят тест-набор М14 в симуляции |
| 2 | реализуют память программы/данных на блочной BRAM | применять | показывает как | чтение/запись в тестбенче |
| 3 | реализуют UART-приёмник и протокол загрузки | создавать | делает | загрузка .hex с ПК, эхо-верификация |
| 4 | проводят системную кросс-проверку с макеткой и измеряют ускорение | анализировать/оценивать | делает | протокол сравнения + расчёт |
Ядро модуля
Скелет машины (управление — прямое продолжение таблицы М12; каждый бит слова управления стал полем структуры):
// Состояния = такты микрокода: FETCH0, FETCH1, затем по опкоду
always @(posedge clk) begin
case (state)
F0: begin mar <= pc; state <= F1; end
F1: begin ir <= ram_q; pc <= pc + 1'b1; state <= DEC; end
DEC: case (ir)
LDA: begin mar <= pc; state <= LDA1; end
ADD: begin mar <= pc; state <= ADD1; end
JC : begin if (cf) pc <= operand; else pc <= pc + 1'b1; state <= F0; end
HLT: state <= HALT;
// ...остальное достраивают обучающиеся по своей таблице М11
endcase
// ...
endcase
endUART RX (8N1): счётчик с выборкой в середине бита; скорость — по константе от системного клока; протокол загрузчика курса нарочно примитивен: 0x7E, длина, байты, XOR-сумма — обучающиеся сами обнаруживают, зачем нужна контрольная сумма, когда «длинная программа иногда бьётся» (запланированный конфликт; обсудить, что дальше по этой дороге — CRC).
Оценивание
Кумулятивная точка линии В: демонстрация кросс-совместимости (5 программ × 3 платформы), измерение времени 10 000 итераций цикла на макетке (сек) и на ПЛИС (мкс), расчёт и объяснение коэффициента (частота + такты на команду); дебаг-кейс: одна команда ISA в FSM намеренно испорчена — найти по расхождению с эмулятором (инструменты М14 становятся эталоном — инверсия ролей, отрефлексировать).