Рекомендуем

Ключевые слова:
VERILOGПЛИС
Язык Verilog в проектировании встраиваемых систем на FPGAСоловьев В.В. Язык Verilog в проектировании встраиваемых систем на FPGA
Язык SystemVerilog для моделированияСоловьев В.В. Язык SystemVerilog для моделирования
Проектирование конечных автоматов. Теория и практикаСоловьев В.В. Проектирование конечных автоматов. Теория и практика

Книга

Основы языка проектирования цифровой аппаратуры Verilog

2-е издание, исправленное и дополненное
Тиражирование книги начато в 2021 году
284 стр.
Формат 60х90/16 (145x215 мм)
Исполнение: в мягкой обложке
ISBN 978-5-9912-0923-6
ББК 32.85
УДК 658.512:519.87:004.434
Аннотация

Рассмотрен популярный язык проектирования цифровой аппаратуры Verilog. В книге достаточно полно описаны основные синтаксические элементы и конструкции языка с точки зрения их практического использования. Каждая конструкция языка сопровождается примером. Изложение материала не привязано к определенной элементной базе или конкретному программному средству проектирования, поэтому материал книги может использоваться при разработке проектов как на заказных СБИС и БМК, так и на ПЛИС. Популярность языку Verilog придает простота синтаксиса, во многом совпадающего с языком программирования C, а также большие возможности при описании цифровых устройств и систем, как для синтеза, так и для моделирования, от уровня транзисторов до сложных иерархических структур. Язык Verilog предоставляет также возможности для своего расширения. Для этого служит механизм определения пользовательских примитивов UDP и язык программирования интерфейса PLI. Второе издание содержит пять новых глав, касающихся практических вопросов проектирования цифровых устройств на языке Verilog.

Для разработчиков цифровых устройств и систем, самостоятельно изучающих язык Verilog, будет полезна преподавателям, аспирантам и студентам соответствующих специальностей вузов.

Оглавление

Предисловие ко второму изданию

Введение

Глава 1. Предварительное знакомство с языком Verilog
1.1. История языка Verilog
1.2. Первый проект на языке Verilog
1.2.1. Описание проекта
1.2.2. Моделирование проекта
1.3. Базовые элементы языка Verilog
1.3.1. Ключевые слова
1.3.2. Идентификаторы
1.3.3. Белые знаки
1.3.4. Комментарии
1.4. Сигналы, сети, драйверы
1.4.1. Логические значения
1.4.2. Логическая мощность (сила) сигналов
1.5. Числа
1.5.1. Представление целых чисел
1.5.2. Представление действительных чисел
1.6. Параллелизм языка Verilog

Глава 2. Модули
2.1. Определение модулей
2.2. Элементы модулей
2.3. Объявления портов
2.4. Экземпляры модулей
2.5. Параметры
2.6. Неявная передача значений параметров
2.7. Массивы экземпляров модулей
2.8. Иерархия модулей и иерархия имен
2.9. Области иерархии и области действия имен

Глава 3. Примитивы и библиотечные модули
3.1. Где можно найти готовое решение
3.2. Примитивы языка Verilog
3.3. Примитивы, определяемые пользователем

Глава 4. Типы данных
4.1. Два класса типов данных
4.2. Сетевые типы данных
4.3. Значение сигнала сети
4.4. Типы данных переменные
4.5. Другие типы данных
4.5.1. Параметры
4.5.2. Локальные параметры
4.5.3. Параметры блока спецификации
4.5.4. Переменные генерации
4.5.5. Тип данных событие
4.5.6. Строки
4.6. Выбор битов и битовых полей
4.7. Выбор элементов массива и битовых полей элементов массива
4.8. Объявление памяти

Глава 5. Операции
5.1. Операции языка Verilog
5.2. Побитовые операции
5.3. Операции редукции
5.4. Логические операции
5.5. Операции отношения
5.6. Операции идентичности
5.7. Арифметические операции
5.8. Разносторонние операции
5.9. Выполнение операций
5.10. Приоритет операций
5.11. Размеры битовых выражений

Глава 6. Оператор непрерывного назначения assign
6.1. Присваивание значений в языке Verilog
6.2. Форматы оператора непрерывного назначения
6.3. Использование оператора непрерывного назначения

Глава 7. Процедурные операторы и блоки
7.1. Процедурные операторы initial и always, процедурные блок
7.2. Операторные скобки begin-end и fork-join
7.3. Именованные процедурные блоки
7.4. Формат процедурных блоков
Глава 8. Управление процедурным временем
8.1. Оператор задержки #
8.2. Оператор чувствительности @
8.3. Оператор ожидания wait
8.4. Список чувствительности
8.5. Список чувствительности в комбинационных схемах
8.6. Список чувствительности в последовательностных схемах

Глава 9. Операторы процедурного назначения
9.1. Общие положения
9.2. Оператор блокирующего назначения «=»
9.2.1. Формат
9.2.2. Управление временем
9.2.3. Внутренние задержки
9.2.4. Особенности синтеза
9.3. Оператор неблокирующего назначения «<=»
9.3.1. Формат
9.3.2. Управление временем
9.3.3. Внутренние задержки
9.3.4. Особенности синтеза
9.4. Управление временем в процедурных операторах назначения во время моделирования
9.5. Процедурные операторы assign и deassign
9.6. Процедурные операторы force и release

Глава 10. Операторы процедурного программирования
10.1. Общие положения
10.2. Оператор if-else
10.3. Оператор case
10.4. Операторы casez и casex
10.5. Оператор for
10.6. Оператор while
10.7. Оператор repeat
10.8. Оператор forever
10.9. Оператор disable
10.10. Пример использования операторов процедурного программирования
10.11. Различие между операторами wait и while

Глава 11. Атрибуты
11.1. Атрибуты языка Verilog
11.2. Атрибут full case
11.3. Атрибут parallel case

Глава 12. Блок генерации
12.1. Блоки генерации языка Verilog
12.2. Формат блока генерации
12.3. Операторы генерации
12.3.1. Группа элементов генерации
12.3.2. Оператор if-else
12.3.3. Оператор case
12.3.4. Оператор for

Глава 13. Задачи и функции
13.1. Задачи и функции языка Verilog
13.2. Автоматические и статические задачи и функции
13.3. Задачи
13.4. Функции
13.5. Константные функции
13.6. Сравнение функций и задач

Глава 14. Системные задачи и функции
14.1. Системные задачи и функции языка Verilog
14.2. Системные задачи для отображения текста
14.3. Системные задачи и функции для работы с файлами
14.3.1. Открытие и закрытие файлов
14.3.2. Вывод информации в файл
14.3.3. Другие функции работы с файлами
14.4. Другие системные задачи и функции
14.4.1. Управление процессом симуляции
14.4.2. Управление временем симуляции
14.4.3. Преобразование знаковых и беззнаковых величин
14.4.4. Запись и чтение в переменные и из строки символов
14.4.5. Загрузка содержимого памяти
14.4.6. Преобразование переменных типа real в 64-битовый вектор
14.4.7. Функции для работы с командной строкой

Глава 15. Директивы компилятора
15.1. Директивы компилятора языка Verilog
15.2. Возврат к умалчиваемым значениям директив компилятора
15.3. Определение значения единицы времени
15.4. Макроопределения
15.5. Директивы условной компиляции
15.6. Включение файлов
15.7. Определение умалчиваемого типа цепей
15.8. Определение логических значений для неподсоединенных входов
15.9. Определение пользовательских библиотек

Глава 16. Блоки спецификаций
16.1. Блоки спецификаций языка Verilog
16.2. Формат блоков спецификаций
16.3. Обнаружение путей импульсов (сбоев)
16.4. Проверки временных ограничений

Глава 17. Конфигурация проекта
17.1. Конфигурации
17.2. Конфигурационные блоки
17.3. Файлы карты библиотеки
17.4. Примеры конфигурации проекта
17.4.1. Исходное описание проекта
17.4.2. Использование конфигурации, заданной в файле карты библиотек
17.4.3. Использование оператора default
17.4.4. Использование оператора cell
17.4.5. Использование оператора instance
17.4.6. Использование иерархической конфигурации

Глава 18. Синтезируемые конструкции языка Verilog
18.1. Общие положения
18.2. Конструкции языка Verilog, поддерживаемые пакетом Quartus II фирмы Altera

Глава 19. Комбинационные схемы
19.1. Методика проектирования комбинационных схем
19.1.1. Описание функционирования комбинационной схемы
19.1.2. Минимизация булевых функций
19.1.3. Представление комбинационной схемы в виде совокупности логических уравнений или в виде алгоритма
19.1.4. Создание кода комбинационной схемы на языке Verilog
19.2. Стандартные функциональные узлы комбинационного типа

Глава 20. Конечные автоматы
20.1. Структурные модели конечных автоматов
20.2. Представление конечных автоматов
20.3. Описание конечных автоматов на языке Verilog
20.3.1. Описание автомата Мили
20.3.2. Описание автомата Мура
20.4. Кодирование внутренних состояний конечных автоматов
20.5. Стандартные функциональные узлы последовательностного типа

Глава 21. Блоки памяти
21.1. Способы описания памяти
21.2. Инициализация памяти
21.3. Однопортовая память с двумя синхросигналами
21.4. Простая двухпортовая память
21.5. Действительно двухпортовая память
21.6. Память типа ROM
21.7. Реализация сдвиговых регистров в блоках встроенной памяти FPGA
21.8. Память FIFO
21.9. Память LIFO

Глава 22. Традиционная методика проектирования цифровых устройств
22.1. Умножение двоичных чисел
22.2. Традиционный подход при реализации синхронного умножителя
22.3. Описание на языке Verilog синхронного умножителя

Глава 23. Методика ASMD-FSMD проектирования цифровых устройств
23.1. Блок-схемы автоматов ASM
23.2. Блок-схемы ASMD и конечные автоматы с трактом обработки данных FSMD
23.3. Описание методики ASMD-FSMD
23.4. Реализации синхронного умножителя с помощью методики ASMD-FSMD
23.5. Экспериментальные исследования

Заключение

Литература

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

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

Список листингов