М.: Горячая линия - Телеком, 2014. — 206 с. — ISBN
978-5-9912-0353-1.
Рецензент: профессор, доктор технических наук А. А. Баркалов,
профессор Факультета Электроники, Информатики и Телекоммуникации
Зеленогурского Университета (Зелена Гура, Польша).
Рассмотрен популярный язык проектирования цифровой аппаратуры
Verilog. В книге достаточно полно описаны основные синтаксические
элементы и конструкции языка с точки зрения их практического
использования. Каждая конструкция языка сопровождается примером.
Изложение материала не привязано к определенной элементной базе или
конкретному программному средству проектирования, поэтому материал
книги может использоваться при разработке проектов как на заказных
СБИС и БМК, так и на ПЛИС. Популярность языку Verilog придает
простота синтаксиса, во многом совпадающего с языком
программирования С, а также большие возможности при описании
цифровых устройств и систем, как для синтеза, так и для
моделирования, от уровня транзисторов до сложных иерархических
структур. Язык Verilog предоставляет также возможности для своего
расширения. Для этого служит механизм определения пользовательских
примитивов UDP и язык программирования интерфейса PLI.
Для разработчиков цифровых устройств и систем самостоятельно
изучающих язык Verilog, будет полезна преподавателям, аспирантам и
студентам соответствующих специальностей вузов.
Введение
Предварительное знакомство с языком Verilog
История языка Verilog
Первый проект на языке Verilog
Описание проекта
Моделирование проекта
Базовые элементы языка Verilog
Ключевые слова
Идентификаторы
Белые знаки
Комментарии
Сигналы, сети, драйверы
Логические значения
Логическая мощность (сила) сигналов
Числа
Представление целых чисел
Представление действительных чисел
Параллелизм языка Verilog Модули
Определение модулей
Элементы модулей
Объявления портов
Экземпляры модулей
Параметры
Неявная передача значений параметров
Массивы экземпляров модулей
Иерархия модулей и иерархия имен
Области иерархии и области действия имен Примитивы и библиотечные модули
Где можно найти готовое решение
Примитивы языка Verilog
Примитивы, определяемые пользователем Типы данных
Два класса типов данных
Сетевые типы данных
Значение сигнала сети
Типы данных переменные
Другие типы данных
Параметры
Локальные параметры
Параметры блока спецификации
Переменные генерации
Тип данных событие
Строки
Выбор битов и битовых полей
Выбор элементов массива и битовых полей элементов массива
Объявление памяти Операции
Операции языка Verilog
Побитовые операции
Операции редукции
Логические операции
Операции отношения
Операции идентичности
Арифметические операции
Разносторонние операции
Выполнение операций
Приоритет операций
Размеры битовых выражений Оператор непрерывного назначения assign
Присваивание значений в языке Verilog
Форматы оператора непрерывного назначения
Использование оператора непрерывного назначения Процедурные операторы и блоки
Процедурные операторы initial и always, процедурные блок
Операторные скобки begin-and и fork-join
Именованные процедурные блоки
Формат процедурных блоков Управление процедурным временем
Оператор задержки #
Оператор чувствительности @
Оператор ожидания wait
Список чувствительности
Список чувствительности в комбинационных схемах
Список чувствительности в последовательностных схемах Операторы процедурного назначения
Общие положения
Оператор блокирующего назначения «=»
Формат
Управление временем
Внутренние задержки
Особенности синтеза
Оператор неблокирующего назначения « =»
Формат
Управление временем
Внутренние задержки
Особенности синтеза
Управление временем в процедурных операторах назначения во время моделирования
Процедурные операторы assign и deassign
Процедурные операторы force и release Операторы процедурного программирования
Общие положения
Оператор if-else
Оператор case
Операторы casez и casex
Оператор for
Оператор while
Оператор repeat
Оператор forever
Оператор disable
Пример использования операторов процедурного программирования
Различие между операторами wait и while Атрибуты
Атрибуты языка Verilog
Атрибут fulLcase
Атрибут paralleLcase Блок генерации
Блоки генерации языка Verilog
Формат блока генерации
Операторы генерации
Группа элементов генерации
Оператор if-else
Оператор case
Оператор for Задачи и функции
Задачи и функции языка Verilog
Автоматические и статические задачи и функции
Задачи
Функции
Константные функции
Сравнение функций и задач Системные задачи и функции
Системные задачи и функции языка Verilog
Системные задачи для отображения текста
Системные задачи и функции для работы с файлами
Открытие и закрытие файлов
Вывод информации в файл
Другие функции работы с файлами
Другие системные задачи и функции
Управление процессом симуляции
Управление временем симуляции
Преобразование знаковых и беззнаковых величин
Запись и чтение в переменные и из строки символов
Загрузка содержимого памяти
Преобразование переменных типа real в 64-бито-вый вектор
Функции для работы с командной строкой Директивы компилятора
Директивы компилятора языка Verilog
Возврат к умалчиваемым значениям директив компилятора
Определение значения единицы времени
Макроопределения
Директивы условной компиляции
Включение файлов
Определение умалчиваемого типа цепей
Определение логических значений для неподсоединенных входов
Определение пользовательских библиотек Блоки спецификаций
Блоки спецификаций языка Verilog
Формат блоков спецификаций
Обнаружение путей импульсов (сбоев)
Проверки временных ограничений Конфигурация проекта
Конфигурации
Конфигурационные блоки
Файлы карты библиотеки
Примеры конфигурации проекта
Исходное описание проекта
Использование конфигурации, заданной в файле карты библиотек
Использование оператора default
Использование оператора cell
Использование оператора instance
Использование иерархической конфигурации Синтезируемые конструкции языка Verilog
Общие положения
Конструкции языка Verilog, поддерживаемые пакетом Quartus II фирмы Altera
Заключение
Сgисок литературы
Список сокращений
Предметный указатель
История языка Verilog
Первый проект на языке Verilog
Описание проекта
Моделирование проекта
Базовые элементы языка Verilog
Ключевые слова
Идентификаторы
Белые знаки
Комментарии
Сигналы, сети, драйверы
Логические значения
Логическая мощность (сила) сигналов
Числа
Представление целых чисел
Представление действительных чисел
Параллелизм языка Verilog Модули
Определение модулей
Элементы модулей
Объявления портов
Экземпляры модулей
Параметры
Неявная передача значений параметров
Массивы экземпляров модулей
Иерархия модулей и иерархия имен
Области иерархии и области действия имен Примитивы и библиотечные модули
Где можно найти готовое решение
Примитивы языка Verilog
Примитивы, определяемые пользователем Типы данных
Два класса типов данных
Сетевые типы данных
Значение сигнала сети
Типы данных переменные
Другие типы данных
Параметры
Локальные параметры
Параметры блока спецификации
Переменные генерации
Тип данных событие
Строки
Выбор битов и битовых полей
Выбор элементов массива и битовых полей элементов массива
Объявление памяти Операции
Операции языка Verilog
Побитовые операции
Операции редукции
Логические операции
Операции отношения
Операции идентичности
Арифметические операции
Разносторонние операции
Выполнение операций
Приоритет операций
Размеры битовых выражений Оператор непрерывного назначения assign
Присваивание значений в языке Verilog
Форматы оператора непрерывного назначения
Использование оператора непрерывного назначения Процедурные операторы и блоки
Процедурные операторы initial и always, процедурные блок
Операторные скобки begin-and и fork-join
Именованные процедурные блоки
Формат процедурных блоков Управление процедурным временем
Оператор задержки #
Оператор чувствительности @
Оператор ожидания wait
Список чувствительности
Список чувствительности в комбинационных схемах
Список чувствительности в последовательностных схемах Операторы процедурного назначения
Общие положения
Оператор блокирующего назначения «=»
Формат
Управление временем
Внутренние задержки
Особенности синтеза
Оператор неблокирующего назначения « =»
Формат
Управление временем
Внутренние задержки
Особенности синтеза
Управление временем в процедурных операторах назначения во время моделирования
Процедурные операторы assign и deassign
Процедурные операторы force и release Операторы процедурного программирования
Общие положения
Оператор if-else
Оператор case
Операторы casez и casex
Оператор for
Оператор while
Оператор repeat
Оператор forever
Оператор disable
Пример использования операторов процедурного программирования
Различие между операторами wait и while Атрибуты
Атрибуты языка Verilog
Атрибут fulLcase
Атрибут paralleLcase Блок генерации
Блоки генерации языка Verilog
Формат блока генерации
Операторы генерации
Группа элементов генерации
Оператор if-else
Оператор case
Оператор for Задачи и функции
Задачи и функции языка Verilog
Автоматические и статические задачи и функции
Задачи
Функции
Константные функции
Сравнение функций и задач Системные задачи и функции
Системные задачи и функции языка Verilog
Системные задачи для отображения текста
Системные задачи и функции для работы с файлами
Открытие и закрытие файлов
Вывод информации в файл
Другие функции работы с файлами
Другие системные задачи и функции
Управление процессом симуляции
Управление временем симуляции
Преобразование знаковых и беззнаковых величин
Запись и чтение в переменные и из строки символов
Загрузка содержимого памяти
Преобразование переменных типа real в 64-бито-вый вектор
Функции для работы с командной строкой Директивы компилятора
Директивы компилятора языка Verilog
Возврат к умалчиваемым значениям директив компилятора
Определение значения единицы времени
Макроопределения
Директивы условной компиляции
Включение файлов
Определение умалчиваемого типа цепей
Определение логических значений для неподсоединенных входов
Определение пользовательских библиотек Блоки спецификаций
Блоки спецификаций языка Verilog
Формат блоков спецификаций
Обнаружение путей импульсов (сбоев)
Проверки временных ограничений Конфигурация проекта
Конфигурации
Конфигурационные блоки
Файлы карты библиотеки
Примеры конфигурации проекта
Исходное описание проекта
Использование конфигурации, заданной в файле карты библиотек
Использование оператора default
Использование оператора cell
Использование оператора instance
Использование иерархической конфигурации Синтезируемые конструкции языка Verilog
Общие положения
Конструкции языка Verilog, поддерживаемые пакетом Quartus II фирмы Altera
Заключение
Сgисок литературы
Список сокращений
Предметный указатель