Рекомендуем

Встраиваемые системы автоматики и вычислительной техники. МикроконтроллерыВасильев А.Е. Встраиваемые системы автоматики и вычислительной техники. Микроконтроллеры
Программирование на ассемблереОдиноков В.В., Коцубинский В.П. Программирование на ассемблере
Современные микроконтроллеры и микропроцессоры фирмы MotorolaШагурин И.И. Современные микроконтроллеры и микропроцессоры фирмы Motorola

Книга

Проектирование функциональных блоков встраиваемых систем на FPGA

Тиражирование книги начато в 2020 г.
348 стр.
Формат 70x100/16 (170x240 мм)
Исполнение: в мягкой обложке
ISBN 978-5-9912-0880-2
ББК 32.85
УДК 658.512:519.87:004.3'12
Аннотация

Рассмотрены основы проектирования функциональных блоков, которые наиболее часто встречаются во встраиваемых системах, на программируемых пользователем вентильных матрицах FPGA (field programmable gate array – FPGA). Рассмотрено проектирование на FPGA путем описания на языке Verilog и с помощью IP-ядер блоков памяти различного типа: одно-портовой, двух-портовой RAM, ROM, FIFO, LIFO, а также сдвиговых регистров в блоках встроенной памяти. Представлено несколько методик проектирования устройств управления: в виде микропрограммного автомата (МПА) по граф-схеме алгоритма (ГСА), на основе блок-схем автоматов (ASM), а также на основе блок-схем автоматов с трактом обработки данных (ASMD) и конечных автоматов с трактом обработки данных (FSMD). Приведена методика проектирования на FPGA одно-тактового процессора, а также три методики проектирования много-тактовых процессоров. Особое внимание уделено отладке процессора PIC и оценке его производительности, приводятся рекомендации по увеличению производительности процессоров. Представлена общая методология проектирования цифровых фильтров, рассмотрен пример разработки цифрового фильтра в системе MATLAB, моделирования фильтра в системе ModelSim и реализация фильтра на FPGA в системе Quartus. Рассмотрены вопросы проектирования подсистем синхронизации встраиваемых систем на FPGA. Описаны принципы функционирования блоков фазовой автоподстройки частоты PLL, особенности архитектуры и функционирования блоков PLL в FPGA, а также способы конфигурирования блоков PLL в проектах на FPGA.

Для специалистов в области разработки встраиваемых систем, научных работников, аспирантов.

Оглавление

Предисловие

Часть I. Проектирование памяти

Глава 1. Блоки встроенной памяти
1.1. Память встраиваемых систем
1.2. Встроенная память (память на кристалле FPGA)
1.2.1. Преимущества и недостатки встроенной памяти
1.2.2. Область применения встроенной памяти
1.3. Архитектура встроенной памяти
1.3.1. Типы встроенной памяти
1.3.2. Типы встроенной памяти FPGA семейства Cyclone V
1.3.3. Режимы функционирования встроенной памяти
1.3.4. Биты четности в блоках встроенной памяти
1.3.5. Режимы синхронизации встроенной памяти
1.3.6. Режимы функционирования выходов памяти
1.3.7. Конфигурации портов со смешанной шириной
1.3.8. Разрешение байтов записываемых данных
1.3.9. Поддержка режима упаковки
1.3.10. Разрешение синхронизации адреса
1.4. Рекомендации по проектированию встроенной памяти
1.4.1. Выбор блока памяти
1.4.2. Внешнее разрешение конфликтов
1.4.3. Настройка поведения чтения во время записи
1.4.4. Состояние и инициализация памяти по включению питания
1.4.5. Управление синхронизацией для уменьшения потребляемой мощности
Выводы

Глава 2. Описание встроенной памяти на языке Verilog
2.1. Способы описания памяти на примере однопортовой памяти с одним синхросигналом
2.1.1. Объявление матрицы памяти
2.1.2. Режимы функционирования выходов памяти
2.1.3. Описание памяти со «старыми» данными на выходе
2.1.4. Описание памяти с «новыми» данными на выходе
2.1.5. Описание памяти с комбинационными выходами
2.1.6. Установка регистров на адресных входах памяти
2.2. Инициализация памяти
2.3. Однопортовая память с двумя синхросигналами
2.4. Простая двухпортовая память (Simple Dual-Port RAM)
2.5. Действительно двухпортовая память (True Dual-Port RAM)
2.6. Память типа ROM (Read-Only Memory — постоянное запоминающее устройство — ПЗУ)
2.7. Реализация сдвиговых регистров в блоках встроенной памяти FPGA
2.8. Память FIFO
2.9. Память LIFO
2.10. Использование атрибутов синтеза при описании памяти на языке Verilog
Выводы

Глава 3. Проектирование памяти с помощью IP-ядер и редактора параметров системы Quartus
3.1. IP-каталог для создания модулей памяти
3.2. Создание модулей памяти типов RAM и ROM
3.3. Создание модуля памяти типа FIFO
3.4. Создание сдвигового регистра в блоке встроенной памяти FPGA
Выводы

Часть II. Проектирование устройств управления

Глава 4. Проектирование микропрограммных автоматов
4.1. Микропрограммирование и микропрограммные автоматы
4.2. Представление МПА. Граф-схемы алгоритмов
4.3. Проектирование микропрограммного автомата по граф-схеме алгоритма
4.3.1. Методика проектирования МПА по ГСА
4.3.2. Разметка ГСА
4.3.3. Построение таблицы переходов
4.3.4. Дополнительная разметка ГСА и псевдоэквивалентные МПА
4.4. Реализация МПА на FPGA
4.4.1. Реализация МПА Мили
4.4.2. Реализация МПА Мура
4.4.3. Анализ функционирования МПА Мили и МПА Мура
4.4.4. Реализация МПА Мура класса C
4.5. Использование МПА при реализации алгоритмических умножителей
4.5.1. Реализация умножителя с помощью алгоритма a
4.5.2. Проектирование операционного устройства
4.5.3. Проектирование устройства управления
4.5.4. Реализация умножителя на FPGA
4.5.5. Сравнение различных способов реализации алгоритмических умножителей
Выводы

Глава 5. Блок-схемы автоматов (ASM)
5.1. Проблемы ГСА при описании алгоритмов функционирования аппаратуры
5.2. Язык ASM
5.3. Методика построения ASM
5.4. Пример построения ASM для автомата Мура
5.5. Пример построения ASM для автомата Мили
5.6. Реализация конечных автоматов на FPGA по их описанию на ASM
5.6.1. Реализация автомата Мура
5.6.2. Реализация автомата Мили
5.7. Описание с помощью ASM совмещенных моделей автоматов Мили и Мура
5.8. Описание с помощью ASM параллельных процессов
5.9. Описание с помощью ASM комбинационных схем
Выводы

Глава 6. Конечные автоматы с трактом обработки данных
6.1. Блок-схемы ASMD и автоматы FSMD
6.2. Язык ASMD
6.3. Использование FSMD типа Мура для реализации алгоритма умножения a
6.4. Использование FSMD типа Мили для реализации алгоритма умножения a
6.5. Увеличение быстродействия синхронного умножителя
6.6. Сравнение различных способов реализации синхронного умножителя
Выводы

Часть III. Проектирование встроенных процессоров

Глава 7. Основы проектирования встроенных процессоров
7.1. Архитектуры системы команд процессоров
7.2. Архитектура системы команд реализуемого процессора
7.2.1. Архитектура системы команд микроконтроллера PIC16F84A
7.2.2. Проектирование системы команд процессора PIC
7.3. Базовые структуры RISC-процессоров
7.3.1. Однотактовый процессор PIC
7.3.2. Многотактовый процессор PIC
7.3.3. Конвейерный процессор PIC
7.3.4. Использование кэш-памяти
7.3.5. Суперскалярные процессоры
7.3.6. Многопоточные процессоры
7.3.7. Многоядерные процессоры
7.4. Методика проектирования процессоров на FPGA
Выводы

Глава 8. Проектирование однотактового процессора PIC
8.1. Проектирование операционного устройства
8.1.1. Элементы памяти процессора
8.1.2. Определение адреса следующей команды
8.1.3. Реализация команд пересылки данных (movlw, movwf и movf)
8.1.4. Реализация операций с байтами (команды формата a)
8.1.5. Реализация операций циклического сдвига (команды rlf и rrf)
8.1.6. Реализация операций инкремента и декремента с пропуском следующей команды, если результат нулевой (команды incfsz и decfsz)
8.1.7. Реализация операций над битами (команды формата b)
8.1.8. Реализация операций с константами (команды формата c)
8.1.9. Реализация команд перехода по адресу (goto), вызова подпрограммы (call) и возврата из подпрограммы (return, retlw)
8.1.10. Реализация загрузки значения аккумулятора из памяти данных (команда lw) и сохранение значения аккумулятора в памяти данных (команда sw)
8.1.11. Реализация переходов по адресу в зависимости от результата предыдущей операции (команды gotoz и gotonz)
8.2. Проектирование арифметико-логического устройства
8.3. Проектирование устройства управления
8.4. Реализация однотактового процессора PIC
8.4.1. Структура реализуемого процессора
8.4.2. Описание на языке Verilog компонентов операционного устройства
8.4.3. Описание операционного устройства (datapath)
8.4.4. Описание процессора PIC
8.4.5. Описание памяти данных
8.4.6. Описание памяти команд
8.4.7. Описание модуля верхнего уровня
8.5. Отладка однотактового процессора PIC
8.5.1. Отладка компонентов операционного устройства
8.5.2. Отладка устройства управления
8.5.3. Отладка памяти данных и памяти команд
8.5.4. Отладка всего проекта процессора PIC
8.6. Оценка производительности однотактового процессора
8.7. Модификация процессора PIC
Выводы

Глава 9. Проектирование многотактовых процессоров PIC
9.1. Традиционное проектирование многотактового процессора PIC
9.1.1. Проектирование операционного устройства
9.1.2. Проектирование устройства управления
9.1.3. Описание на языке Verilog компонентов многотактового процессора
9.1.4. Отладка многотактового процессора
9.1.5. Анализ проекта многотактового процессора
9.2. Проектирование двухтактового процессора PIC
9.2.1. Проектирование схемы двухтактового процессора
9.2.2. Описание на языке Verilog компонентов двухтактового процессора
9.2.3. Отладка двухтактового процессора
9.3. Проектирование четырехтактового процессора PIC
9.3.1. Проектирование операционного устройства
9.3.2. Проектирование устройства управления
9.3.3. Описание на языке Verilog компонентов четырехтактового процессора
9.3.4. Отладка четырехтактового процессора
9.4. Оценка стоимости реализации и производительности процессоров PIC
Выводы

Часть IV. Проектирование блоков цифровой обработки сигналов

Глава 10. Проектирование цифровых фильтров
10.1. Системы цифровой обработки сигналов на FPGA
10.1.1. Введение в цифровую обработку сигналов
10.1.2. Использование FPGA для реализации систем DSP
10.2. Цифровые фильтры
10.2.1. Классификация цифровых фильтров по частоте пропускания
10.2.2. БИХ- и КИХ-фильтры
10.2.3. Выбор между БИХ- и КИХ-фильтрами
10.2.4. Типы КИХ-фильтров
10.3. Описание цифровых фильтров на языке Verilog
10.4. Методология проектирования цифровых фильтров на FPGA
10.4.1. Определение спецификаций фильтра
10.4.2. Вычисление коэффициентов фильтра
10.4.3. Определение структуры фильтра
10.4.4. Анализ влияния конечной разрядности слова
10.4.5. Реализация фильтра
10.5. Разработка цифровых фильтров в системе MATLAB
10.6. Моделирование цифровых фильтров в системе ModelSim
10.7. Реализация цифровых фильтров в системе Quartus
10.7.1. Реализация в системе Quartus цифровых фильтров, разработанных в системе MATLAB
10.7.2. Исследование реализации на FPGA различных типов цифровых фильтров
Выводы

Часть V. Проектирование подсистемы синхронизации

Глава 11. Реализация синхронных проектов
11.1. Принципы функционирования синхронных проектов
11.2. Рекомендации от Intel по проектированию надежных синхронных проектов
11.2.1. Избегайте комбинационных циклов
11.2.2. Избегайте непреднамеренного ввода в проект защелок (latches)
11.2.3. Избегайте цепочек задержки в путях синхронизации
11.2.4. Используйте синхронные схемы для генерации одиночного импульса
11.2.5. Генерация внутренних синхросигналов
11.2.6. Использование внутренней логики FPGA в качестве источника синхросигналов или сигналов управления регистрами
11.2.7. Домены синхросигналов
11.2.8. Делители частоты синхросигналов
11.2.9. Использование счетчиков пульсации (ripple counters)
11.2.10. Использование сетей синхронизации
11.3. Мультиплексирование синхросигналов
11.4. Стробирование синхросигналов
11.4.1. Стробирование синхросигналов в проектах на FPGA
11.4.2. Способы стробирования синхросигналов
11.4.3. Реализация регистров со стробированием синхросигнала
11.4.4. Исследование способов стробирования синхросигналов
11.4.5. Использование опции Auto Gated Clock Conversion
11.4.6. Стробирование асинхронным сигналом
11.5. Рекомендации при разработке высокоскоростных и логически сложных проектов
11.5.1. Планирование физической реализации
11.5.2. Планирование ресурсов FPGA
11.5.3. Удовлетворение временным ограничениям
11.6. Оптимизация подсистемы синхронизации
11.6.1. Ретайминг
11.6.2. Дублирование регистров
11.6.3. Физический синтез для комбинационной логики
11.6.4. Опции системы Quartus, влияющие на оптимизацию синхронизации
11.6.5. Оптимизация критических путей
11.7. Проектирование сигналов сброса
11.7.1. Синхронный сброс регистров
11.7.2. Асинхронный сброс регистров
11.7.3. Исследование способов сброса регистров
11.8. Атрибуты синтеза, влияющие на синхронизацию проекта
Выводы

Глава 12. Блоки фазовой автоподстройки частоты PLL
12.1. Принципы функционирования блока PLL
12.2. Особенности архитектуры блоков PLL в FPGA семейства Cyclone V
12.3. Особенности функционирования блоков PLL в FPGA семейства Cyclone V
12.4. Режимы синхросигнала обратной связи
12.4.1. Режим синхронизации источником
12.4.2. Режим компенсации LVDS
12.4.3. Прямой режим
12.4.4. Режим нормальной компенсации
12.4.5. Режим буфера нулевой задержки ZDB
12.4.6. Режим внешней обратной связи
12.5. Дробный и целочисленный режимы работы PLL
12.6. Переключение опорных синхросигналов
12.7. Конфигурирование блоков PLL с помощью IP-ядер и редактора параметров системы Quartus
12.8. Реконфигурирование блоков PLL
12.9. Реконфигурирование блоков PLL с помощью интерфейса Avalon-MM
12.10. Реконфигурирование блоков PLL с помощью потоковой передачи MIF из блока встроенной памяти FPGA
12.11. Динамический фазовый сдвиг блока PLL
12.11.1. Выполнение динамического фазового сдвига с помощью IP-ядра переконфигурации PLL (Altera PLL Reconfig)
12.11.2. Выполнение динамического фазового сдвига с помощью IP-ядра создания блока PLL (Altera PLL)
Выводы

Заключение

Список сокращений

Литература

Предметный указатель