Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Программирование FPGA для начинающих

Покупка
Артикул: 817286.01.99
Данная книга открывает серию переводов зарубежных изданий по проектированию цифровых систем, которую готовят к выходу в свет компания «ДМК Пресс» и МИЭМ НИУ ВШЭ при поддержке группы компаний YADRO (yadro.com). Она предназначена для тех, кто хочет узнать о том, как устроена технология FPGA, и получить практический опыт работы с реальными проектами. Читатель получит общее представление о программируемых логических интегральных схемах, научится программировать на языке SystemVerilog, разработает, выполнит тестирование и реализует ряд проектов разной степени сложности от простого калькулятора до комплексного проекта, использующего AXI и внешнюю периферию, подключенную через PS/2 и VGA. Демонстрационные примеры реализованы на доступных платах Nexys A7 или Basys 3 (с чипами Xilinx) и сопровождаются исходными кодами. Издание будет полезно студентам, инженерам, а также широкому кругу читателей, интересующихся современной схемотехникой.
Бруно, Ф. Программирование FPGA для начинающих : практическое руководство / Ф. Бруно ; пер. с англ. С. Л. Плехановой ; под науч. ред. А. Ю. Романова, Ю. В. Ревича. - Москва : ДМК Пресс, 2022. - 304 с. - ISBN 978-5-97060-986-6. - Текст : электронный. - URL: https://znanium.ru/catalog/product/2109588 (дата обращения: 01.12.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов
Фрэнк Бруно

Программирование 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 
Оглавление