Карточка 10. Своя система команд и FPGA

← Все карточки

Паспорт концепта

  • Уровни: 44 «Мозг процессора» (25 мин), 45 «Своя инструкция» (35 мин), 46 «Окно в реальный мир» (30 мин), 47 «Материализация» (45 мин). Часть 4.
  • Суммарно: ~135 минут игры, обычно три занятия. Финальный блок: ученик достраивает процессор и выводит его на настоящую плату Tang Nano 9K.
  • Результаты обучения: ученик объясняет устройство управления как большой дешифратор опкода; добавляет свою инструкцию в систему команд; настраивает memory-mapped I/O — доступ к светодиодам и переключателям через адресное пространство; понимает, что Verilog синтезируется в ресурсы ПЛИС, и получает работающий компьютер на плате.
  • Гайды: ур. 44, ур. 45, ур. 46, ур. 47.

План занятия на 45 минут

Первое занятие: уровень 44. Второе: 45–46. Третье: 47 и демонстрация платы.

  • 0–10 мин. Разминка: кто в процессоре «читает» опкод? Пусть ученики вспомнят дешифратор из части 2 (ур. 17) и предположат, что устройство управления — тот же принцип, но больше входов.
  • 10–25 мин. Уровень 44 самостоятельно. После проверки обсудите краш-тест: там перекоммутируют декодер так, что OR становится ADD. Вывод: смысл команды задаёт декодер, а не вентили.
  • 25–35 мин. Разбор memory-mapped I/O (ур. 46): адрес 0xFF перехватывается дешифратором, и запись уходит в светодиоды. Для процессора это обычная запись по адресу — «обман» происходит в шине.
  • 35–45 мин. Уровень 45 в парах. Домашний кусок: уровень 46; на третьем занятии — уровень 47 с экспортом ZIP и прошивкой платы (или демонстрацией готовой, если плата одна на класс).

Вопросы для обсуждения

  1. Устройство управления — это «мини-процессор внутри процессора» или что-то проще? Обоснуйте устройством схемы: есть ли в нём память?
  2. Что меняется в системе команд при добавлении новой инструкции: АЛУ, ROM, декодер — или всё сразу?
  3. Как процессор отличит запись в RAM от записи в светодиоды, если «тип устройства» по шине не передаётся?
  4. Почему нельзя «прошить ZIP как есть» во флеш платы? Что должно произойти с Verilog-кодом, чтобы он стал конфигурацией ПЛИС?
  5. Ваша инструкция занимает один опкод из 16 возможных. Сколько инструкций влезет в систему команд с 4-битным опкодом — и что ограничивает это число в реальном железе?
  6. Если два устройства ответят на один адрес, что произойдёт на шине? Как это проверить в схеме уровня 46?

Ожидаемые ошибки

Список собран из неверных вариантов концепт-чеков всех четырёх уровней блока; по мере накопления телеметрии он будет уточняться по реальной доле верных ответов с первой попытки.

  • Ученик говорит: «устройство управления — мини-процессор со своей памятью и микроинструкциями». Реакция: в этой архитектуре CU — комбинационная схема, большого дешифратора. Никакой памяти и программы внутри нет: биты опкода напрямую включают нужные управляющие сигналы.
  • Ученик говорит: «инструкции хранит устройство управления». Реакция: инструкции лежат в ROM; CU их только расшифровывает. Проверьте: при смене программы в ROM схема CU не меняется.
  • Ученик говорит: «LED и RAM различаются по типу данных на шине». Реакция: для процессора адрес — просто число; тип по шине не ходит. Различение происходит по адресу: детектор 0xFF перехватывает запись.
  • Ученик говорит: «ZIP копируется во флеш, и плата исполняет архив». Реакция: Verilog нельзя исполнить напрямую. Синтез превращает код в конфигурацию ячеек ПЛИС — таблицы LUT и соединения триггеров, — и прошивается уже эта конфигурация.
  • Ученик говорит: «Verilog компилируется в машинный код процессора платы». Реакция: ПЛИС — не процессор. Внутри нет системы команд; синтезатор размещает вашу схему по ячейкам и прокладывает маршруты между ними.

Критерии оценки

  1. Собрал. Уровни 44–47 закрыты; на 47 — экспортированный ZIP и (при наличии платы) работающие светодиоды.
  2. Собрал и объяснил. Формулирует CU как дешифратор, объясняет memory-mapped I/O через адрес, а не «тип данных»; описывает путь «Verilog → синтез → конфигурация ПЛИС».
  3. Перенёс на новую задачу. Добавил в проект собственную инструкцию с новым опкодом и проверил её программой из ROM; или придумал, как разделить адреса RAM и портов иначе, чем в уровне 46.

Задача для сильных

Добавьте к процессору инструкцию SUB с собственным опкодом: декодер, путь через АЛУ и проверку программой из ROM. Затем посчитайте, сколько опкодов осталось свободными, и объясните, почему в реальных архитектурах (x86) система команд разрослась далеко за границы «один опкод — одна операция».

Парная работа

Инженер правит Verilog и проговаривает, какой сигнал куда идёт; верификатор проверяет список опкодов против таблицы декодера до синтеза и после теста называет, что увидят светодиоды при записи в 0xFF. Верификатор не трогает мышь, но обязан спросить «какой сигнал включит новая инструкция?» до запуска. Смена ролей — на уровне 46.