embedded

Учебник FPGA и Verilog для начинающих

26 уроков · 8 разделов · бесплатно, без регистрации

FPGA — это «железо, которое перепрошивается»: микросхема, внутри которой вы сами выкладываете цифровую схему из тысяч элементарных кирпичиков. В этом курсе вы научитесь описывать такую схему на языке Verilog — и поймёте главный сдвиг мышления: вы не пишете последовательную программу, а описываете параллельную электрическую схему, где всё работает одновременно. Мы пройдём весь путь: от того, как устроена FPGA внутри (LUT, триггеры, матрица соединений), через комбинационную и последовательностную логику, триггеры, счётчики, конечные автоматы (FSM), делители частоты и память, до тайминга, метастабильности, тестбенчей и реальных проектов вроде светофора, ШИМ и UART. Курс опирается на знания из «Логики и булевой алгебры», «Компьютерной архитектуры» и «Основ электроники». Verilog-код мы читаем как описание схемы, а сопутствующие расчёты (делители, таблицы истинности, симуляции автоматов) иллюстрируем исполнимым Python.

Курс «FPGA и Verilog: цифровая схемотехника» состоит из 8 разделов и 26 уроков: Что такое FPGA и зачем она нужна, Основы Verilog: модули, типы и комбинационная логика, Последовательностная логика: триггеры, такты и присваивания, Конечные автоматы и параметризация, Делители частоты, память и конвейеризация, Тайминг, критический путь и тактовые домены, Симуляция, тестбенчи и инструменты и Проекты, SystemVerilog, HLS и смена парадигмы. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.

Программа курса

  1. 1 Что такое FPGA и зачем она нужна

    1. Программируемая логика: железо, которое перепрошивается

      Что такое FPGA: программируемая логическая микросхема, параллелизм на уровне схемы, где применяется — DSP, ускорители, прототипы чипов, телеком, ИИ.

    2. FPGA против ASIC и процессора: компромиссы

      Сравнение FPGA, ASIC и процессора: гибкость, стоимость, энергопотребление, скорость разработки. Когда выбирать каждое из трёх решений.

    3. Как устроена FPGA внутри: LUT, триггеры, матрица соединений

      Внутреннее устройство FPGA: таблицы поиска LUT, триггеры, логические блоки CLB, программируемая матрица соединений, блоки DSP и память.

    4. HDL и поток проектирования: от Verilog до битстрима

      Что такое HDL и Verilog как язык описания аппаратуры, и весь поток проектирования FPGA: синтез, размещение и трассировка, генерация битстрима, прошивка.

  2. 2 Основы Verilog: модули, типы и комбинационная логика

    1. Модули и порты: первый блок схемы

      Модуль Verilog как строительный блок схемы: объявление module, порты input и output, иерархия и подключение подмодулей по имени.

    2. wire и reg, шины и разрядность

      Типы данных Verilog: wire против reg, зачем нужны оба, объявление шин [7:0], разрядность сигналов и почему reg — не обязательно регистр.

    3. Комбинационная логика: assign и оператор «всё сразу»

      Комбинационная логика в Verilog: непрерывное присваивание assign, логические и битовые операторы, и почему результат вычисляется мгновенно и постоянно.

    4. Мультиплексоры, таблицы истинности и базовые вентили

      Реализация базовых вентилей и мультиплексора в Verilog, чтение таблиц истинности и три способа описать одну и ту же комбинационную схему.

  3. 3 Последовательностная логика: триггеры, такты и присваивания

    1. always-блоки, тактовый сигнал и posedge

      Последовательностная логика в Verilog: процедурный always-блок, тактовый сигнал clock, чувствительность к фронту posedge и рождение триггера.

    2. Блокирующее = и неблокирующее <= присваивание

      Главная грабли новичков в Verilog: разница между блокирующим = и неблокирующим <= присваиванием, когда какое использовать и почему это критично.

    3. Регистры и счётчики

      Регистры и счётчики в Verilog: многоразрядный регистр на триггерах, инкрементирующий счётчик, переполнение и применение счётчиков в схемах.

    4. Сброс: синхронный и асинхронный

      Сброс (reset) в Verilog: разница между синхронным и асинхронным сбросом, как описать каждый, плюсы и минусы, и почему начальное состояние критично.

  4. 4 Конечные автоматы и параметризация

    1. Конечные автоматы (FSM): состояния и переходы

      Конечный автомат как модель управляющей логики: состояния, переходы по входам и тактам, диаграмма состояний, типы Мили и Мура.

    2. Реализация FSM на Verilog

      Канонический шаблон конечного автомата на Verilog: разделение на три блока — регистр состояния, логика переходов, логика выходов; кодирование состояний.

    3. Параметры и обобщённые модули: parameter и generate

      Обобщение модулей в Verilog: параметры parameter для настройки разрядности, блоки generate и genvar для повторения аппаратуры по шаблону.

  5. 5 Делители частоты, память и конвейеризация

    1. Делитель частоты: классика на счётчике

      Делитель частоты в Verilog: как из быстрого такта получить медленный сигнал на счётчике, расчёт делителя и формирование секундного импульса.

    2. Память в FPGA: block RAM

      Встроенная память FPGA: block RAM против регистров, описание синхронной памяти на Verilog, инференс BRAM, однопортовая и двухпортовая память.

    3. Конвейеризация в железе

      Конвейеризация (pipelining) в FPGA: разбиение длинной комбинационной цепочки регистрами для повышения тактовой частоты и пропускной способности.

  6. 6 Тайминг, критический путь и тактовые домены

    1. Setup и hold: почему у схемы есть предел частоты

      Временные ограничения триггера: setup и hold, что такое критический путь, как длина логики между триггерами определяет максимальную тактовую частоту.

    2. Метастабильность и переход между тактовыми доменами

      Метастабильность триггера и переход между тактовыми доменами (CDC): почему асинхронные сигналы опасны и как синхронизатор из двух триггеров спасает схему.

  7. 7 Симуляция, тестбенчи и инструменты

    1. Тестбенчи и симуляция: проверка до железа

      Тестбенч в Verilog: модуль без портов, генерация тактов и стимулов, задачи $display и $monitor, временная задержка #, проверка схемы в симуляторе.

    2. Инструменты и отладочные платы

      Экосистема инструментов FPGA: Vivado и Quartus от вендоров, open-source поток Yosys/nextpnr, симуляторы iverilog/Verilator, отладочные платы для старта.

  8. 8 Проекты, SystemVerilog, HLS и смена парадигмы

    1. Практические проекты: ШИМ, бегущий огонёк, UART

      Обзор учебных проектов FPGA: бегущий огонёк, ШИМ для яркости и моторов, светофор на FSM, UART-передатчик — что в них устроено и чему учат.

    2. SystemVerilog и HLS: что дальше

      Обзор SystemVerilog (что добавляет к Verilog) и HLS — синтеза аппаратуры из C/C++: возможности, плюсы и ограничения высокоуровневого проектирования.

    3. Смена парадигмы: параллельное железо против последовательной программы

      Ключевой сдвиг мышления при работе с FPGA: Verilog описывает параллельную схему, а не последовательный код. Чем мышление аппаратчика отличается от программиста.

    4. Применения и карьера в FPGA, ASIC и верификации

      Где работают FPGA-инженеры и куда расти: цифровой дизайн на RTL, ASIC, верификация чипов. Отрасли применения, нужные навыки и траектории развития.