Национальный цифровой ресурс Руконт - межотраслевая электронная библиотека (ЭБС) на базе технологии Контекстум (всего произведений: 636896)
Контекстум
Электро-2024

Программирование FPGA для начинающих (4000,00 руб.)

0   0
Первый авторБруно
ИздательствоМ.: ДМК Пресс
Страниц306
ID836587
АннотацияДанная книга открывает серию переводов зарубежных изданий по проектированию цифровых систем, которую готовят к выходу в свет компания «ДМК Пресс» и МИЭМ НИУ ВШЭ при поддержке группы компаний YADRO (yadro.com). Она предназначена для тех, кто хочет узнать о том, как устроена технология FPGA, и получить практический опыт работы с реальными проектами. Читатель получит общее представление о программируемых логических интегральных схемах, научится программировать на языке SystemVerilog, разработает, выполнит тестирование и реализует ряд проектов разной степени сложности от простого калькулятора до комплексного проекта, использующего AXI и внешнюю периферию, подключенную через PS/2 и VGA. Демонстрационные примеры реализованы на доступных платах Nexys A7 или Basys 3 (с чипами Xilinx) и сопровождаются исходными кодами. Издание будет полезно студентам, инженерам, а также широкому кругу читателей, интересующихся современной схемотехникой.
ISBN978-5-97060-986-6
Бруно, Ф. Программирование FPGA для начинающих / Ф. Бруно .— Москва : ДМК Пресс, 2022 .— 306 с. — ISBN 978-5-97060-986-6 .— URL: https://rucont.ru/efd/836587 (дата обращения: 26.05.2024)

Предпросмотр (выдержки из произведения)

Программирование_FPGA_для_начинающих_(1).pdf
Стр.5
Стр.6
Стр.7
Стр.8
Стр.9
Стр.10
Стр.11
Программирование_FPGA_для_начинающих_(1).pdf
УДК 004.41 ББК 32.372 Б89 Главный научный редактор: Романов А. Ю. – к.т.н., доцент Московского института электроники и математики им. А. Н. Тихонова Национального исследовательского университета «Высшая школа экономики». Фрэнк Бруно Б89 Программирование FPGA для начинающих / пер. с англ. С. Л. Плехановой; под науч. ред. А. Ю. Романова, Ю. В. Ревича. – М.: ДМК Пресс, 2022. – 304 с.: ил. ISBN 978-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). Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. ISBN (анг.) 978-1-78980-541-3 ISBN (рус.) 978-5-97060-986-6 Copyright © 2021 Packt Publishing © Оформление, издание, перевод, ДМК Пресс, 2022 © Научное редактирование, НИУ ВШЭ, 2022
Стр.5
Оглавление Об авторах ......................................................................................... 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
Стр.6
6  Оглавление Работа со знаковыми и беззнаковыми числами ........................................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
Стр.7
Оглавление  7 Проект 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
Стр.8
8  Оглавление Глава 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
Стр.9
Оглавление  9 РАЗДЕЛ 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
Стр.10
10  Оглавление Тестирование контроллера 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
Стр.11

Облако ключевых слов *


* - вычисляется автоматически
Антиплагиат система на базе ИИ