Рекомендуем
Книга
Бумажное издание
Купить в РоссииКупить в Библио-ГлобусеКупить BOOKS.RUКупить в ГлавкнигеКупить в OZONКупить в Казахстане Язык Verilog в проектировании встраиваемых систем на FPGA
Тиражирование книги начато в 2020 г.
440 стр.
Формат 70x100/16 (170x240 мм)
Исполнение: в мягкой обложке
ISBN 978-5-9912-0844-4
ББК 32.85
УДК 658.512:519.87:004.3'12
Аннотация
Книга является введением в практическое проектирование на языке Verilog встраиваемых систем на программируемых логических интегральных схемах (ПЛИС – FPGA). Дано понятие встраиваемой системы, рассмотрены область использования и функции встраиваемых систем. Представлены подмножество языка описания аппаратуры Verilog для синтеза проектов и введение в систему проектирования Quartus. Рассмотрены вопросы проектирования на FPGA комбинационных схем, а также различных стандартных функциональных узлов комбинационного и последовательностного типа, используемых во встраиваемых системах. Описаны методы проектирования сумматоров и умножителей. Рассмотрены вопросы проектирования на FPGA конечных автоматов, структурные модели, стили описания на языке Verilog, способы кодирования внутренних состояний, методы синтеза. Для каждого функционального узла приведены рекомендации по наиболее эффективному использованию рассматриваемых методов проектирования.
Для специалистов в области разработки встраиваемых систем, научных работников, аспирантов, преподавателей, будет полезна студентам соответствующих специальностей.
Книга является введением в практическое проектирование на языке Verilog встраиваемых систем на программируемых логических интегральных схемах (ПЛИС – FPGA). Дано понятие встраиваемой системы, рассмотрены область использования и функции встраиваемых систем. Представлены подмножество языка описания аппаратуры Verilog для синтеза проектов и введение в систему проектирования Quartus. Рассмотрены вопросы проектирования на FPGA комбинационных схем, а также различных стандартных функциональных узлов комбинационного и последовательностного типа, используемых во встраиваемых системах. Описаны методы проектирования сумматоров и умножителей. Рассмотрены вопросы проектирования на FPGA конечных автоматов, структурные модели, стили описания на языке Verilog, способы кодирования внутренних состояний, методы синтеза. Для каждого функционального узла приведены рекомендации по наиболее эффективному использованию рассматриваемых методов проектирования.
Для специалистов в области разработки встраиваемых систем, научных работников, аспирантов, преподавателей, будет полезна студентам соответствующих специальностей.
Оглавление
Предисловие
Глава 1. Встраиваемые системы и программируемые логические интегральные схемы
1.1. Встраиваемые системы
1.1.1. Понятие встраиваемой системы. Примеры. История. Область использования
1.1.2. Функции встраиваемых систем
1.1.3. Элементная база встраиваемых систем
1.1.4. Периферийные устройства
1.1.5. Надежность функционирования встраиваемых систем
1.1.6. Методология проектирования встраиваемых систем на ПЛИС
1.2. Программируемые логические интегральные схемы
1.2.1. Классификация ПЛИС
1.2.2. Программируемые логические устройства (PLD)
1.2.3. Сложные программируемые логические устройства (CPLD)
1.2.4. Программируемые пользователем вентильные матрицы (FPGA)
1.2.5. Системы на кристалле (SoC)
1.2.6. Использование PLD, CPLD, FPGA и SoC для построения встраиваемых систем
Выводы
Глава 2. Элементы языка описания аппаратуры Verilog
2.1. Модули
2.1.1. Объявление модулей
2.1.2. Элементы модулей
2.1.3. Поведенческий и структурный стили описания проектов
2.1.4. Пример одноразрядного сумматора
2.1.5. Объявления портов
2.1.6. Экземпляры модулей
2.1.7. Передача сигналов экземплярам модулей
2.1.8. Параметры модулей
2.1.9. Неявная передача значений параметров, оператор defparam
2.1.10. Массивы экземпляров модулей
2.1.11. Параллелизм языка Verilog
2.2. Базовые элементы языка Verilog
2.2.1. Ключевые слова
2.2.2. Идентификаторы
2.2.3. Белые знаки
2.2.4. Комментарии
2.2.5. Сигналы, сети, драйверы
2.2.6. Логические значения
2.2.7. Целые числа
2.2.8. Действительные числа
2.2.9. Примитивы языка Verilog
2.3. Типы данных
2.3.1. Два класса типов данных
2.3.2. Сети
2.3.3. Значение сигнала сети
2.3.4. Переменные
2.3.5. Параметры
2.3.6. Локальные параметры
2.3.7. Переменные генерации
2.3.8. Строки
2.3.9. Скаляры и векторы, векторы и массивы
2.3.10. Выбор битов и битовых полей
2.3.11. Выбор элементов массива и битовых полей элементов массива
2.3.12. Объявление памяти
2.4. Выражения
2.5. Операции языка Verilog
2.5.1. Побитовые операции
2.5.2. Операции редукции
2.5.3. Логические операции
2.5.4. Операции отношения
2.5.5. Операции идентичности
2.5.6. Арифметические операции
2.5.7. Разносторонние операции
2.5.8. Выполнение операций
2.5.9. Размеры битовых выражений
2.5.10. Приоритет операций
2.6. Оператор непрерывного назначения assign
2.6.1. Присваивание значений в языке Verilog
2.6.2. Форматы оператора непрерывного назначения
2.6.3. Использование оператора непрерывного назначения
2.7. Процедурные операторы и блоки
2.7.1. Процедурные операторы initial и always, процедурные блоки
2.7.2. Операторные скобки begin-and и fork-join
2.7.3. Именованные процедурные блоки
2.7.4. Формат процедурных блоков
2.8. Управление процедурным временем
2.8.1. Оператор чувствительности @
2.8.2. Список чувствительности
2.8.3. Список чувствительности в комбинационных схемах
2.8.4. Список чувствительности в последовательностных схемах
2.9. Операторы процедурного назначения
2.9.1. Оператор блокирующего назначения «=»
2.9.2. Оператор неблокирующего назначения «<=»
2.9.3. Особенности синтеза операторов блокирующего и неблокирующего назначения
2.9.4. Использование блокирующих и неблокирующих назначений в одном процедурном блоке
2.10. Операторы процедурного программирования
2.10.1. Оператор if–else
2.10.2. Оператор case
2.10.3. Операторы casez и casex
2.10.4. Атрибуты full case и parallel case
2.10.5. Оператор for
2.10.6. Оператор while
2.10.7. Оператор repeat
2.10.8. Оператор forever
2.10.9. Оператор disable
2.11. Блок генерации
2.12. Задачи и функции
2.12.1. Автоматические и статические задачи и функции
2.12.2. Задачи
2.12.3. Функции
2.12.4. Константные функции
2.13. Системные задачи и функции
2.14. Директивы компилятора
Выводы
Глава 3. Введение в систему автоматизированного проектирования Quartus Prime
3.1. Основные этапы разработки проектов на FPGA
3.2. Создание нового проекта в CAD Quartus
3.3. Ввод кода проекта на языке Verilog
3.4. Использование шаблонов языка Verilog
3.4.1. Готовые проекты
3.4.2. Конструкции языка Verilog
3.4.3. Логические элементы
3.4.4. Атрибуты синтеза
3.4.5. Примитивы Altera
3.5. Добавление файлов к проекту
3.6. Компиляция проекта
3.7. Просмотр и анализ результатов синтеза
3.8. Ошибки компиляции
3.9. Назначение контактов
3.9.1. Назначение контактов с помощью редактора назначений
3.9.2. Назначение контактов с помощью файла установок
3.9.3. Импорт и экспорт файла установок
3.9.4. Использование файла установок для платы DE1-SoC
3.9.5. Использование имен сигналов, предопределенных в файле установок, в качестве внешних сигналов
3.10. Моделирование спроектированной схемы
3.10.1. Формирование тестовых векторов
3.10.2. Группирование и разгруппирование сигналов
3.10.3. Изменение порядка битов в шине
3.10.4. Выполнение функционального моделирования
3.10.5. Выполнение временного моделирования
3.11. Программирование и конфигурация микросхемы FPGA
3.11.1. Установка драйвера USB-Blaster
3.11.2. Программирование платы DE1-SoC
3.12. Тестирование спроектированной схемы
Выводы
Глава 4. Проектирование комбинационных схем
4.1. Возможности языка Verilog для проектирования комбинационных схем
4.1.1. Примитивы
4.1.2. Примитивы пользователя
4.1.3. Оператор непрерывного назначения assign
4.1.4. Процедурные операторы
4.1.5. Функции и задачи
4.2. Методика проектирования комбинационных схем
4.2.1. Описание функционирования комбинационной схемы
4.2.2. Минимизация булевых функций
4.2.3. Представление комбинационной схемы в виде совокупности логических уравнений
4.2.4. Представление комбинационной схемы в виде алгоритма
4.2.5. Написание кода комбинационной схемы на языке Verilog
4.3. Опасность автоматического введения защелок при синтезе комбинационных схем
Выводы
Глава 5. Проектирование стандартных функциональных узлов комбинационного типа
5.1. Буферы с тремя состояниями
5.2. Мультиплексоры
5.2.1. Способы описания мультиплексоров
5.2.2. Шинные мультиплексоры
5.2.3. Увеличение числа входов мультиплексора
5.3. Демультиплексоры
5.4. Шифраторы и приоритетные шифраторы
5.4.1. Шифраторы
5.4.2. Приоритетные шифраторы
5.5. Дешифраторы
5.5.1. Способы описания дешифраторов
5.5.2. Дешифратор с входом разрешения
5.5.3. Неполные дешифраторы
5.5.4. Дешифраторы 7-сегментных дисплеев
5.5.5. Дешифраторы для отображения текста на 7-сегментных дисплеях
5.5.6. Дешифраторы адреса
Выводы
Глава 6. Проектирование элементов последовательностных схем
6.1. Защелки
6.1.1. Защелки типа SR
6.1.2. Прозрачный D-триггер (защелка типа D)
6.1.3. Ошибочное описание D-защелки
6.1.4. Защелка master-slave
6.1.5. Ошибочная установка защелок на выходах комбинационных схем
6.2. Триггеры
6.2.1. Триггер типа D
6.2.2. Другие типы триггеров (SR, JK и T)
6.2.3. Определение начальных значений состояний триггеров
6.3. Регистры
6.4. Сдвиговые регистры
6.5. Циклические сдвиговые регистры
6.6. Сдвиговые регистры с линейной обратной связью (LFSR)
6.7. Регистровые файлы
Выводы
Глава 7. Счетчики, схемы задержки, делители частоты, таймеры, часы реального времени
7.1. Счетчики
7.1.1. Структурное описание счетчика
7.1.2. Поведенческое описание счетчика
7.1.3. Счетчики по модулю
7.1.4. Загрузка данных в счетчики
7.1.5. Реверсивные счетчики
7.1.6. Описание счетчика в виде конечного автомата
7.1.7. Исследование результатов реализации счетчиков на различных семействах FPGA
7.2. Счетчики Грея и Джонсона
7.2.1. Счетчик Грея
7.2.2. Счетчик Джонсона
7.3. Схемы задержек
7.4. Делители частоты
7.5. Генераторы медленных импульсов
7.6. Медленные счетчики
7.7. Таймеры
7.8. Часы реального времени
Выводы
Глава 8. Проектирование арифметических устройств
8.1. Сумматоры
8.1.1. Одноразрядные сумматоры: полный сумматор (full adder) и полусумматор (half adder)
8.1.2. Сумматор с последовательным переносом
8.1.3. Сумматор с параллельным (ускоренным) переносом
8.1.4. Сумматор с выбором переноса
8.1.5. Сумматор с пропуском переноса
8.1.6. Сумматор с условным сложением
8.1.7. Экспериментальные исследования реализации сумматоров на различных семействах FPGA
8.2. Сумматор с сохранением (запоминанием) переноса
8.3. Вычитатели
8.4. Последовательный сумматор на основе одного полного сумматора
8.5. Накапливающий сумматор (аккумулятор)
8.6. Сумматор чисел в двоично-десятичном коде
8.7. Инкременторы и декременторы
8.7.1. Инкрементор
8.7.2. Декрементор
8.8. Реализация счетчика по возрастанию с помощью инкрементора
Выводы
Глава 9. Проектирование умножителей
9.1. Матричный умножитель с сохранением переносов
9.2. Умножитель с использованием сумматоров с последовательным переносом
9.3. Древовидный умножитель Уоллеса
9.4. Умножитель Дадда
9.5. Алгоритмические методы реализации умножителей
9.6. Умножитель Бута
9.7. Модифицированный умножитель Бута
9.8. Экспериментальные исследования реализации умножителей на различных семействах FPGA
Выводы
Глава 10. Проектирование конечных автоматов
10.1. Структурные модели конечных автоматов
10.2. Представление конечных автоматов
10.3. Проектирование автомата Мили
10.3.1. Описание автомата Мили
10.3.2. Синтез автомата Мили
10.3.3. Анализ функционирования автомата Мили
10.4. Проектирование автомата Мура
10.4.1. Описание автомата Мура
10.4.2. Синтез автомата Мура
10.4.3. Анализ функционирования автомата Мура
10.5. Стили описания конечных автоматов
10.5.1. Описание конечных автоматов с двумя процессами
10.5.2. Описание конечных автоматов с одним процессом
10.5.3. Описание конечных автоматов с регистрами на выходах
10.5.4. Описание конечных автоматов с помощью операторов case
10.5.5. Описание надежных конечных автоматов
10.5.6. Сравнение стилей описания конечных автоматов
10.6. Кодирование внутренних состояний конечных автоматов
10.6.1. Кодирование внутренних состояний при реализации конечных автоматов на FPGA
10.6.2. Способы кодирования внутренних состояний конечных автоматов в системе Quartus
10.6.3. Кодирование внутренних состояний конечных автоматов для минимизации стоимости реализации
10.6.4. Сравнение способов кодирования внутренних состояний
10.7. Проектирование безопасных конечных автоматов
10.8. Использование значений входных и выходных переменных для кодирования внутренних состояний конечных автоматов
10.8.1. Синтез автоматов класса C
10.8.2. Синтез автоматов класса D
10.8.3. Синтез автоматов класса D 1 без расщепления внутренних состояний
10.8.4. Синтез автоматов класса E
10.8.5. Синтез автоматов класса E 1 без расщепления внутренних состояний
10.8.6. Синтез автоматов класса F
10.8.7. Сравнение структурных моделей конечных автоматов
10.9. Оценка эффективности методов проектирования конечных автоматов
10.9.1. Оптимизация конечных автоматов с помощью стилей описания на языке Verilog
10.9.2. Оптимизация конечных автоматов средствами системы Quartus
10.9.3. Определение наиболее эффективного подхода для оптимизации конечных автоматов
Выводы
Заключение
Список сокращений
Литература
Предметный указатель