Карточка 8. Переход к Verilog

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

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

  • Уровни: 30 «Первая схема на Verilog» (10 мин), 31 «Параллельность» (15 мин), 32 «MUX на Verilog» (15 мин), 33 «Полусумматор» (15 мин), 34 «Иерархия модулей» (20 мин). Часть 3.
  • Суммарно: ~75 минут игры, два занятия.
  • Результаты обучения: ученик объясняет, что Verilog описывает схему, а не алгоритм, и инстанцирует вентили; объясняет параллельность операторов; переносит схемные задачи (MUX, полусумматор) в структурный Verilog; переиспользует собственный модуль через иерархию.
  • Гайды: ур. 30, ур. 31, ур. 32, ур. 33, ур. 34. Компоненты — в хабе компонентов.

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

Главная задача занятия — сломать привычку «код исполняется сверху вниз». Уровни 30–31 проходят в классе, 32–34 дома.

  • 0–10 мин. Вопрос классу: чем текстовое описание схемы лучше рисования? Соберите три-четыре ответа (копирование, правка, ревью, генерация).
  • 10–25 мин. Уровень 30 у всех на экранах. Каждый вентиль — это спаянные контакты. После успеха откройте RTL Viewer и покажите, что текст превратился в схему из первых уровней курса.
  • 25–35 мин. Разбор концепт-чека уровня 30 (как «выполняется» and). Ключевая фраза занятия: «код не исполняется, код описывает провода».
  • 35–45 мин. Демонстрация параллельности: поменяйте местами две строки описания вентилей — схема не изменилась. Домой: уровни 32–34.

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

  1. Что физически происходит в кремнии, когда выполняется строка and a1(out, in1, in2)? Найдите эту схему среди первых уровней игры.
  2. Почему порядок строк в Verilog не важен? Что было бы, если бы был важен?
  3. Вы уже собрали MUX мышками на уровне 9. Что изменилось в вашем понимании MUX после описания его текстом?
  4. Строка wire [7:0] bus; — что она означает в кремнии? Сколько это проводов?
  5. Что значит «инстанцировать модуль»? Где физически окажется схема HalfAdder после инстанцирования в другом модуле?

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

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

  • Ученик говорит: «and вызывается как функция при каждом изменении входов». Реакция: у функций есть момент вызова и возврата; у спаянного контакта его нет. Связь живёт постоянно.
  • Ученик говорит: «компилятор один раз вычислит результат и подставит константу». Реакция: попросите поменять вход после «компиляции» и показать на RTL Viewer, что сигнал всё равно бежит по схеме.
  • Ученик говорит: «wire [7:0] — один провод, байты идут по очереди». Реакция: последовательная передача — это отдельная схема (и отдельная головная боль); здесь восемь параллельных проводников.
  • Ученик говорит: «процессор вызывает модули по очереди, как функции». Реакция: внутри кристалла нет вызывающего; все инстанцированные схемы вытравлены и работают одновременно.
  • Ученик пишет присваивание в сигналу в двух местах и ждёт «последнюю строку». Реакция: два драйвера на одном проводе — знакомый конфликт шины из уровня 22, теперь в текстовой форме.

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

  1. Собрал. Уровни 30–34 закрыты, тесты зелёные.
  2. Собрал и объяснил. Формулирует «код описывает провода», объясняет параллельность и иерархию, отвечает на вопросы 1, 2, 5.
  3. Перенёс на новую задачу. Выполнил задачу для сильных или сам объясняет, что покажет RTL Viewer для их кода до открытия инструмента.

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

Опишите текстом полный сумматор из уровня 7 (XOR + AND + OR), не заглядывая в гайд. Затем соберите его из двух инстансов вашего HalfAdder из уровня 34 и одного OR. Сравните оба описания: число строк, число вентилей, картинку в RTL Viewer.

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

Проектировщик пишет код; проверяющий до каждой компиляции рисует на бумаге схему, которую описывает этот код, и проговаривает: «этот провод соединяет то-то с тем-то». Расхождение рисунка с RTL Viewer разбирается вместе до исправления. Смена ролей — на каждом уровне (с 32 на 33).