Программирование FPGA для начинающих
Покупка
Тематика:
Программирование и алгоритмизация
Издательство:
ДМК Пресс
Год издания: 2022
Кол-во страниц: 304
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-97060-986-6
Артикул: 817286.01.99
Данная книга открывает серию переводов зарубежных изданий по проектированию цифровых систем, которую готовят к выходу в свет компания «ДМК Пресс» и МИЭМ НИУ ВШЭ при поддержке группы компаний YADRO (yadro.com). Она предназначена для тех, кто хочет узнать о том, как устроена технология FPGA, и получить практический опыт работы с реальными проектами. Читатель получит общее представление о программируемых логических интегральных схемах, научится программировать на языке SystemVerilog, разработает, выполнит тестирование и реализует ряд проектов разной степени сложности от простого калькулятора до комплексного проекта, использующего AXI и внешнюю периферию, подключенную через PS/2 и VGA.
Демонстрационные примеры реализованы на доступных платах Nexys A7 или Basys 3 (с чипами Xilinx) и сопровождаются исходными кодами.
Издание будет полезно студентам, инженерам, а также широкому кругу читателей, интересующихся современной схемотехникой.
- Полная коллекция по информатике и вычислительной технике
- ДМК Пресс. Информационные системы и технологии
- ДМК Пресс. ИТ-технологии для обучающихся
- Интермедиатор. Информационные системы и технологии (сводная)
- Интермедиатор. ИТ-технологии для обучающихся (сводная)
- Программирование
- Программирование и алгоритмизация
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Фрэнк Бруно Программирование FPGA для начинающих
FPGA Programming for Beginners Bring your ideas to life by creating hardware designs and electronic circuits with SystemVerilog Frank Bruno BIRMINGHAM—MUMBAI
Программирование FPGA для начинающих Воплощайте свои идеи в жизнь и создавайте цифровые устройства и электронные схемы с помощью SystemVerilog Фрэнк Бруно Москва, 2022
УДК004.41 ББК32.372 Б89 Главный научный редактор: Романов А. Ю. – к.т.н., доцент Московского института электроники и математики им. А. Н. Тихонова Национального исследовательского университета «Высшая школа экономики». ФрэнкБруно Б89 Программирование FPGA для начинающих / пер. с англ. С. Л. Плехановой; под науч. ред. А. Ю. Романова, Ю. В. Ревича. – М.: ДМК Пресс, 2022. – 304 с.: ил. ISBN978-5-97060-986-6 Данная книга открывает серию переводов зарубежных изданий по проектированию цифровых систем, которую готовят к выходу в свет компания «ДМК Пресс» и МИЭМ НИУ ВШЭ при поддержке группы компаний YADRO (yadro.com). Она предназначена для тех, кто хочет узнать о том, как устроена технология FPGA, и получить практический опыт работы с реальными проектами. Читатель получит общее представление о программируемых логических интегральных схемах, научится программировать на языке SystemVerilog, разработает, выполнит тестирование и реализует ряд проектов разной степени сложности от простого калькулятора до комплексного проекта, использующего AXI и внешнюю периферию, подключенную через PS/2 и VGA. Демонстрационные примеры реализованы на доступных платах Nexys A7 или Basys 3 (с чипами Xilinx) и сопровождаются исходными кодами. Издание будет полезно студентам, инженерам, а также широкому кругу читателей, интересующихся современной схемотехникой. УДК 004.41 ББК 32.372 Copyright © Packt Publishing 2021. First published in the English language under the title "FPGA Programming for Beginners" – (9781789805413). Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Copyright © 2021 Packt Publishing © Оформление, издание, перевод, ДМК Пресс, 2022 © Научное редактирование, НИУ ВШЭ, 2022 ISBN (анг.) 978-1-78980-541-3 ISBN (рус.) 978-5-97060-986-6
Оглавление Об авторах ......................................................................................... 11 Предисловие от главного редактора русского перевода .......... 13 Предисловие ...................................................................................... 16 РАЗДЕЛ 1. ВВЕДЕНИЕ В FPGA ............................................... 21 Глава 1. Введение в FPGA и Xilinx Vivado ..................................... 23 Технические требования ..................................................................................23 Аппаратура....................................................................................................24 Программное обеспечение ..........................................................................24 Что такое ASIC? .................................................................................................24 Почему ASIC или FPGA? ...............................................................................25 Как компания создает программируемое устройство, используя ASIC ...27 Базовые логические элементы ....................................................................27 Более сложные операции .............................................................................30 Знакомство с FPGA .......................................................................................31 Изучение Xilinx Artix-7 и устройств 7-й серии ...........................................33 Знакомство с набором инструментов Vivado и отладочными платами ...37 Знакомство с Vivado .....................................................................................40 Выполнение примера ...................................................................................46 Программирование платы ...........................................................................55 Выводы ..............................................................................................................56 Вопросы .............................................................................................................56 Задание повышенной сложности ....................................................................57 Дополнительное чтение ...................................................................................57 РАЗДЕЛ 2. ВВЕДЕНИЕ В ПРОЕКТИРОВАНИЕ, МОДЕЛИРОВАНИЕ И СИНТЕЗ НА VERILOG RTL .......... 59 Глава 2. Комбинационная логика ................................................... 61 Технические требования ..................................................................................61 Создание модулей SystemVerilog .....................................................................61 Создание многократно используемого кода с помощью параметров ................................................................................62 Знакомство с типами данных ......................................................................63 Представление встроенных типов данных .................................................63 Создание массивов .......................................................................................64 Обращение к элементам массива................................................................65 Присвоение значений элементам массива ................................................66 Работа с цепями с тремя состояниями .......................................................66
Работа со знаковыми и беззнаковыми числами ........................................67 Добавление битов к сигналу с помощью операции конкатенации ..........68 Преобразование знаковых и беззнаковых чисел .......................................68 Создание типов, определяемых пользователем ........................................69 Доступ к сигналам при использовании значений перечисляемых типов ...69 Упаковка кода с помощью функций ...........................................................70 Создание комбинационной логики ................................................................70 Операторы присваивания ............................................................................71 Принятие решений: if-then-else ..................................................................73 Сравнение значений ....................................................................................73 Операторы if с уникальностью или приоритетностью ..............................74 Оператор выбора case ......................................................................................75 Использование пользовательских типов данных ..........................................76 Создание структур ........................................................................................76 Создание объединений ................................................................................77 Проект 1. Создание комбинационной схемы .................................................77 Testbench .......................................................................................................78 Моделирование с помощью целевого тестирования .................................80 Моделирование с использованием рандомизированного тестирования ...80 Моделирование с использованием ограниченной рандомизации ..........80 Реализация детектора ведущей единицы с использованием оператора case ..............................................................................................80 Управление реализацией с помощью generate ..........................................81 Проектирование многоразового детектора ведущей единицы с помощью цикла for ....................................................................................83 Реализация сумматора/вычитателя (adder/subtractor) ..................................85 Сложение .......................................................................................................85 Вычитание .....................................................................................................86 Умножение ....................................................................................................86 Объединяем все вместе ....................................................................................87 Добавление защелки ....................................................................................89 Выводы ..............................................................................................................89 Вопросы .............................................................................................................89 Задание повышенной сложности ....................................................................90 Дополнительное чтение ...................................................................................90 Глава 3. Подсчет нажатий на кнопку ............................................. 91 Технические требования ..................................................................................91 Что такое последовательностный элемент? ...................................................91 Синхронизация проекта ..............................................................................91 Базовый регистр ...........................................................................................93 Создание триггеров ......................................................................................93 Когда использовать always@() для генерации триггера ............................95 Использование неблокирующих присваиваний ........................................96 Регистры в Artix 7 .........................................................................................97 Как удерживать состояние схемы с помощью входа разрешения тактового сигнала .........................................................................................98 Сброс триггера ..............................................................................................99 6 Оглавление
Проект 2. Подсчет нажатий на кнопку ..........................................................100 Семисегментный индикатор .....................................................................100 Обнаружение нажатия на кнопку..............................................................103 Проблемы, возникающие из-за асинхронных сигналов .........................104 Использование асинхронного сигнала напрямую ...................................105 Проблема с нажатием кнопок ...................................................................106 Разработка безопасной реализации .........................................................107 Переход на десятичное представление.....................................................109 Знакомство с ILA .........................................................................................110 Что насчет симуляции? ..............................................................................114 Подробное изучение синхронизации ...........................................................115 Зачем использовать несколько тактовых сигналов? ...............................115 Двухступенчатый синхронизатор .............................................................115 Синхронизация управляющих сигналов ..................................................116 Передача данных ........................................................................................117 Выводы ............................................................................................................118 Вопросы ...........................................................................................................118 Задание повышенной сложности ..............................................................119 Дополнительное чтение .................................................................................119 Глава 4. Разработка калькулятора................................................120 Технические требования ................................................................................121 Реализация первого конечного автомата .....................................................121 Разработка последовательного конечного автомата ...............................121 Разделение комбинационной и последовательностной логики в конечном автомате ..................................................................................122 Разработка интерфейса калькулятора .....................................................123 Проектирование конечного автомата Мура ............................................124 Реализация конечного автомата Мили ....................................................126 Практическое проектирование конечных автоматов .............................126 Проект 3. Создание простого калькулятора ..................................................127 Инкапсуляция для повторного использования ........................................127 Проектирование модуля верхнего уровня иерархии ...............................129 Изменение тактовой частоты с помощью PLL или MMCM .....................130 Разработка блока деления ..............................................................................134 Построение конечного автомата невосстанавливающего делителя .....................................................................................................134 Моделирование делителя ..........................................................................138 Определение размера промежуточного остатка ......................................138 Проект 4. Управление перекрестком с помощью светофоров ....................139 Определение графа состояний ..................................................................140 Отображение состояний светофоров ........................................................140 Выводы ............................................................................................................142 Вопросы ...........................................................................................................142 Задание повышенной сложности ..................................................................143 Задание еще более высокой сложности ........................................................143 Дополнительное чтение .................................................................................143 Оглавление 7
Глава 5. Ресурсы FPGA, и как их использовать...........................144 Технические требования ................................................................................144 Проект 5. Слушать и учиться ..........................................................................145 Что такое цифровой PDM-микрофон? ......................................................145 Моделирование работы микрофона .........................................................148 Встроенная память .....................................................................................150 Захват аудиоданных ...................................................................................154 Проект 6. Использование датчика температуры ..........................................157 Обработка данных ......................................................................................158 Сглаживание данных .................................................................................159 Более глубокое погружение в FIFO ............................................................160 Ограничения ...............................................................................................163 Генерация FIFO ...........................................................................................163 Выводы ............................................................................................................165 Вопросы ...........................................................................................................165 Дополнительное чтение .................................................................................166 Глава 6. Математика, параллелизм и конвейеризация ............167 Технические требования ................................................................................168 Числа с фиксированной точкой .....................................................................168 Проект 7. Использование чисел с фиксированной точкой для обработки данных с датчика температуры ............................................169 Использование арифметики чисел с фиксированной точкой для очистки времени запуска ....................................................................170 Преобразование температуры с помощью арифметики с фиксированной точкой............................................................................172 А как насчет чисел с плавающей точкой? .....................................................174 Сложение и вычитание с плавающей точкой ...........................................176 Умножение с плавающей точкой ...............................................................176 Обратное значение для числа с плавающей точкой ................................176 Более практичная библиотека операций с плавающей точкой ..............176 Краткий обзор потокового интерфейса AXI .................................................177 Проект 8. Обновление проекта датчика температуры до конвейерной реализации с плавающей точкой ......................................179 Преобразование чисел из представления с фиксированной точкой в формат с плавающей точкой ......................................................179 Математические операции с плавающей точкой ....................................181 Преобразование формата с плавающей точкой в формат с фиксированной точкой............................................................................182 Моделирование ...........................................................................................183 Параллельные конструкции...........................................................................185 ML, AI и массовый параллелизм ................................................................185 Параллельное проектирование – небольшой пример .............................186 Выводы ............................................................................................................187 Вопросы ...........................................................................................................187 Задание повышенной сложности ..................................................................188 Дополнительное чтение .................................................................................188 8 Оглавление
РАЗДЕЛ 3. ВЗАИМОДЕЙСТВИЕ С ВНЕШНИМИ КОМПОНЕНТАМИ ......................................189 Глава 7. Введение в AXI ..................................................................191 Технические требования ................................................................................191 Потоковая передача AXI .................................................................................192 Проект 9. Создание IP-блоков для Vivado с использованием потоковых интерфейсов AXI..........................................................................192 Потоковый интерфейс для семисегментного индикатора ......................193 Разработка IP ADT7420 ...............................................................................198 Ядро t_temp .................................................................................................198 IP-интегратор .............................................................................................198 Отладка проекта с помощью IP-интегратора ...........................................206 Интерфейсы AXI4 (AXI full и AXI-Lite) ..........................................................207 Разработка IP-блоков – AXI-Lite, AXI full и AXI Stream ............................209 Добавление неупакованного IP-блока в IP-интегратор ..........................212 Выводы ............................................................................................................214 Вопросы ...........................................................................................................214 Дополнительное чтение .................................................................................215 Глава 8. Много данных? MIG и DDR2 ...........................................216 Технические требования ................................................................................216 Проект 10. Подключение внешней памяти ...................................................217 Память DDR2 ...............................................................................................218 Генерация контроллера DDR2 с помощью Xilinx MIG .............................219 Установка параметров интерфейса AXI ....................................................223 Настройка параметров памяти .................................................................223 Настройка параметров FPGA .....................................................................224 Модификация проекта для использования на плате ...............................232 Другие типы внешней памяти .......................................................................236 Память SRAM с четырехкратной скоростью передачи данных (Quad Data Rate, QDR) .................................................................................236 HyperRAM ....................................................................................................236 SPI RAM .......................................................................................................236 Выводы ............................................................................................................237 Вопросы ...........................................................................................................237 Задача повышенной сложности ....................................................................238 Дополнительное чтение .................................................................................238 Глава 9. Лучший способ отображения – VGA ..............................239 Технические требования ................................................................................239 Проект 11. Основы работы с VGA...................................................................240 Определение регистров .............................................................................243 Разработка простого интерфейса AXI-Lite ...............................................244 Генерация сигналов синхронизации для VGA ..........................................245 Отображение текста ...................................................................................251 Запрос памяти ............................................................................................253 Оглавление 9
Тестирование контроллера VGA ................................................................257 Проверка ограничений ..............................................................................257 Выводы ............................................................................................................259 Вопросы ...........................................................................................................259 Задание повышенной сложности ..................................................................260 Дополнительное чтение .................................................................................260 Глава 10. Свести все воедино ........................................................261 Технические требования ................................................................................261 Изучение интерфейса клавиатуры ................................................................262 Проект 12. Работа с клавиатурой ...................................................................267 Моделирование работы интерфейса PS/2 .................................................270 Проект 13. Сводим все воедино .....................................................................272 Отображение кодов клавиш PS/2 на экране VGA .....................................272 Отображение показаний датчика температуры ......................................275 Отображение аудиоданных .......................................................................277 Выводы ............................................................................................................280 Вопросы ...........................................................................................................281 Задание повышенной сложности ..................................................................281 Дополнительное чтение .................................................................................281 Глава 11. Темы повышенной сложности .....................................282 Технические требования ................................................................................282 Изучение более продвинутых конструкций SystemVerilog .........................282 Взаимодействие компонентов с использованием конструкции под названием «интерфейс» ......................................................................282 Использование структур ............................................................................285 Метки блоков ..............................................................................................286 Цикл for .......................................................................................................287 Цикл do...while ............................................................................................287 Выход из цикла с помощью оператора disable .........................................288 Пропуск фрагментов кода с помощью оператора continue ....................288 Использование констант ............................................................................289 Некоторые продвинутые конструкции языка SystemVerilog для верификации ............................................................................................289 Знакомство с очередями SystemVerilog ....................................................289 Продвинутое использование системной функции $display ....................291 Утверждения ...............................................................................................292 Использование $error или $fatal при синтезе проекта ............................292 Другие проблемы, и как их избежать ............................................................293 Выведение однобитных проводов ............................................................293 Несоответствие ширины шин ....................................................................294 Повышение или понижение приоритетности сообщений Vivado ..........294 Обработка timing closure ............................................................................295 Конвейеризация .........................................................................................297 Выводы ............................................................................................................301 Вопросы ...........................................................................................................302 Дополнительное чтение .................................................................................303 10 Оглавление