Предисловие. Языки VHDL и VERILOG 3
Введение. HDL — исторический экскурс и перспективы 6
Глава 1. HDL — взгляд схемотехника и взгляд программиста 15
1.1. HDL — взгляд разработчика аппаратуры 15
1.1.1. Отображаемые аспекты 15
1.1.2. Интерфейс объекта проекта 16
1.1.3. Описание структуры объекта проекта 17
1.1.4. Связь имен компонентов и объекта проекта 19
1.1.5. Поведение объекта проекта 20
1.1.6. Paзнообразие стилей описаний архитектур 21
1.2. HDL — взгляд программиста 24
1.2.1. Лексические элементы HDL 25
1.2.2. Данные (объекты): типы и виды 28
1.2.3. Операции и выражения 31
1.2.4. Операторы 34
1.2.5. Механизм расширения языка 39
1.2.6. Область видимости данных 40
1.2.7. Модули и библиотеки проекта 42
Глава 2. Базовые понятия HDL — процессы, задержки, алфавит 44
2.1. Параллельные процессы 44
2.1.1. Параллельные операторы HDL 44
2.1.2. Оператор процесса 45
2.1.3. Краткие формы записи процессов 49
2.1.4. Присваивание с дельта-задержкой 50
2.1.5. Механизм воспроизведения модельного времени 51
Вопросы и упражнения 53
2.2. Задержки сигналов 53
2.2.1. Инерционная и транспортная задержка 53
2.2.2. Резекция и неопределенность коротких сигналов 56
2.3. Векторные операции и компактность описаний систем 57
2.3.1. Векторы 57
2.3.2. Оператор генерации 58
2.4. Алфавит моделирования 59
2.4.1. Четырехзначный алфавит 60
2.4.2. Девятизначный алфавит VHDL 61
2.4.3. X-пессимизм и оптимизм 63
2.5. Описание монтажных И (ИЛИ) и общей шины 64
2.5.1. Общая шина 64
2.5.2. Монтажное И, ИЛИ 65
2.6. Атрибуты объектов и контроль запрещенных ситуаций 66
2.6.1. Контроль запрещенных ситуаций 66
2.6.2. Атрибуты VHDL-сигналов 66
Глава 3. Способы HDL-описаний простых узлов 69
3.1. Комбинационная схема F 69
3.1.1. Описание интерфейса 69
3.1.2. Процессная форма описания поведения 70
3.1.3. Потоковое описание поведения 71
3.1.4. Структурное описание 74
3.1.5. Объявление конфигурации 75
3.1.6. Контроль временных соотношений 76
3.1.7. VERILOG-описание, использующее примитивы 77
3.2. Схемы с памятью 78
3.2.1. D-триггер 78
3.2.2. D-триггер со сбросом 79
3.3.3. Схема D-триггера на вентилях ИНЕ 79
3.2.4. D-триггер как примитив VERILOG 80
3.2.5. Модель RS-триггера-защелки 80
3.2.6. Модель Т-триггера 81
3.2.7. VHDL — оператор блока в модели триггера типа «защелка» 84
3.3. Модель блока cинхронной памяти 84
3.3.1. VHDL-модель 84
3.3.2. VERILOG-модель 85
3.3.3. VERILOG — модель памяти c учетом задержек и контролем временых параметров сигналов в блоке specify 86
3.3.4. VHDL — модель памяти с общим регистром входных-выходных даных 87
Глава 4. Функциональная верификация HDL-описаний 88
4.1. Пример верификации описания простого объекта проекта F 89
4.2. Стратегия функциональной верификации 93
4.2.1. Типы тестов 93
4.2.2. Полнота теста 93
4.3. Оценка полноты функциональных тестов 93
4.3.1. Эвристические метрики 93
4.3.2. Программные метрики 94
4.3.3. Автоматно-метрический подход 95
4.3.4. Моделирование неисправностей 95
4.3.5. Мониторинг событий и проверка контрольных соотношений в модели 96
4.4. Компоненты тестирующей программы 97
4.4.1. Тактовый генератор 98
4.4.2. Генератор сигнала сброса 98
4.4.3. Входные векторы 98
4.4.4. Cравнение выходов модели с эталоном (VERILOG) 99
4.5. Быстродействие и расход памяти инструментальной ЭВМ 100
4.5.1. Расход памяти 100
4.5.2. Быстродействие тестирующей программы 100
4.6. Отладка тестирующей программы 102
4.6.1. Порядок отладки 102
4.6.2. Общие рекомендации 104
4.7. Автоматизация построения тестирующих программ 104
4.8. Cтруктурированный тест объекта проекта F 106
4.8.1. Генератор сигналов GEN 106
4.8.2. Регистратор сигналов WRITER 107
4.8.3. Архитектура теста — структурное описание 108
4.9. Модельный эксперимент c самопроверкой 110
4.9.1. VHDL-вариант 110
4.9.2. VERILOG-вариант 111
4.9.3. Модельный эксперимент со сравнением двух моделей F 112
4.10. VHDL-модель и простой тест микросхемы памяти 113
4.10.1. Микросхема К134РУ6 113
4.10.2. Описание интерфейса микросхемы 114
4.10.3. Архитектура объекта SK134RU6 115
4.10.4. Модельный эксперимент с микросхемой ОЗУ 116
Глава 5. Cинтезабельность HDL-описаний 119
5.1. Общие принципы построения синтезабельных описаний 123
5.1.1. Повторнопригодность проектов 123
5.1.2. Твердые и мягкие макросы 124
5.1.3. Что такое «хороший проект макроса» 124
5.2. Рекомендации по стилю кодирования HDL-описаний 125
5.2.1. Рекомендации общего плана 125
5.2.2. Рекомендуемая структура и примеры имен сигналов 126
5.2.3. Организация базы данных проекта 127
5.3. Что такое «хорошие» модули-макросы 128
5.3.1. Oбщие рекомендации 128
5.3.2. Дополнительные замечания 130
5.4. RTL-описание 131
5.5. Синтезабельное подмножество HDL 132
5.5.1. Основные синтезабельные конструкции 133
5.5.2. Синтезабельные библиотеки типовых узлов 135
5.5.3. Синтезабельные образы узлов 136
5.6. Синтезабельные описания комбинационных узлов 137
5.6.1. Мультиплексоры 137
5.6.2. Дешифраторы (демультиплексоры) 140
5.6.3. Тристабильный буфер-ключ 142
5.6.4. n-разрядный компаратор 142
5.6.5. Типичные ошибки в описании комбинационных узлов 143
5.6.6. Результаты синтеза одноразрядного сумматора 146
5.7. Триггеры и регистры 151
Общая структура описаний 151
5.7.1. D-триггер-асинхронный сброс-установка 153
5.7.2. Триггер-синхронный сброс и установка 153
5.7.3. Регистры с разрешающим входом 154
5.7.4. Защелки 155
5.7.5. Сдвигатели 155
5.7.6. Cчетчики 155
5.7.7. Регистровые файлы и блоки памяти 156
5.7.8. Типичные ошибки в описаниях триггеров и регистров 157
5.7.9. Пример синтеза cчетчика 158
5.8. HDL-описания автоматов 162
5.8.1. Автоматы Мили и Мура 162
5.8.2. VERILOG — описание и тест автомата управления светофором 162
5.8.3. VHDL-описание и тест автомата управления светофором 164
5.8.4. Синтез VERILOG-описания автомата управления светофором 166
Глава 6. Реализация шифроалгоритма RC4 на ПЛИС 174
6.1. Шифроалгоритм RC4 174
6.2. HDL-спецификация алгоритма RC4 176
6.2.1. Verilog 176
6.2.2. VHDL 178
6.3. ПЛИС семейства Virtex 181
6.3.1. Возможности 181
6.3.2. Архитектура семейства Virtex 182
6.4. VHDL-вариант реализации автомата RC4 186
6.4.1. Блок памяти 186
6.4.2. Распределение микроопераций алгоритма по тактам 187
6.4.3. VHDL-oписание автомата RC4 188
6.4.4. VHDL-тест автомата RC4 193
6.4.5. Результаты синтеза c памятью на триггерах 195
6.4.6. Результаты синтеза c использованием блочной памяти 198
6.5. VERILOG-описание автомата RC4 200
6.5.1. Описание автомата 200
6.5.2. Тест 203
6.5.3. Peзультаты синтеза 204
Глава 7. Функциональная модель микросхемы двухпортовой синхронной памяти 206
7.1. Cостояние вопроса 206
7.2. Некоторые свойства моделей RAM 208
7.3. Двухпортовая синхронная память 211
7.4. VHDL-модель блока памяти 215
7.4.1. Интерфейс 215
7.4.2. Архитектура 216
7.4.3. Пакет со значениями временных параметров 223
7.4.4. Модуль контроля временных параметров 224
7.4.5. Пакет функций преобразования типов данных 228
7.5. VERILOG-модель блока памяти 232
7.5.1. Интерфейс микросхемы 232
7.5.2. Тело модуля 233
7.5.3. Задание и контроль временных параметров 234
7.5.4. Функциональная часть 235
7.6. Тестирующая программа 239
7.6.1. Переменные и константы 239
7.6.2. Процедуры записи-чтения 241
7.6.3. Подача тестовых векторов 245
7.6.4. Временные параметры сигналов теста 251
Приложение 1. Краткий справочник по языку VHDL 253
1. Основы VHDL 253
2. Основные различия версий VHDL-93 и VHDL-87 264
3. Cинтезабельное подмножество языка VHDL 267
4.Предопределенное окружение языка VHDL 268
4.1. Пакет STANDARD 268
4.2. Пакет TEXTIO 270
4.3. Предопределенные атрибуты 271
5. Многозначная логика — IEEE пакеты и функции преобразования типов 272
1. Пакет IEEE STD_LOGIC_1164 272
2. Пакет IEEE NUMERIC_STD 273
3. Пакет IEEE NUMERIC_BIT 274
4. Пакет Synopsys STD_LOGIC_ARITH 275
5. Пакет STD_LOGIC_UNSIGNED 275
Приложение 2. VERILOG — краткий справочник 276
1. Лексические элементы 276
1.1. Символы 276
1.2. Комментарии и аттрибуты 276
1.3. Символы операций и скобок 276
1.4. Имена 277
1.5. Логические значения 279
2. Литералы 279
2.1. Целые 279
2.2. Вещественные (реальные — real) литералы 280
3. Типы и виды данных 280
3.1. Вид переменная 280
3.2. Вид соединение (цепь, связь) 281
3.3. Другие виды и типы данных 281
4. Объявление данных и область видимости 282
4.1. Обьявление данных 282
4.2. Область видимости обьявлений данных 283
5. Операции 283
6. Выражения 286
6.1. Обычные выражения 286
6.2. Выражения с полями векторов и массивов 286
6.3. Задержанные выражения 286
6.4. Условные выражения 286
6.5. Выделение разрядов и полей 286
6.6. Выделение элементов массивов 286
7. Последовательные операторы (процедурные) 287
7.1. Оператор ожидания (задержки) 287
7.2. Оператор присваивания переменной 287
7.3. Условный оператор 287
7.4. Оператор выбора 287
7.5. Оператор цикла 288
7.6. Оператор выхода из группы 288
7.7. Примеры последовательных операторов 288
8. Процедурные блоки 289
9. Группы операторов 290
10. Процедуры и функции 290
10.1. Процедуры task 290
10.2. Функции function 291
11. Параллельные операторы и блоки 291
12. Модуль проекта 292
12.1. Стиль описания VERILOG-95 292
12.2. Cтиль VERILOG-2000 (ANSI-C) 292
13. Конкретизация — вызов экземпляров модулей 293
13.1. VERILOG-95 293
13.2. VERILOG-2000 293
14. Системные операторы и функции 294
14.1. Форматируемый ввод-вывод 294
14.2. Работа с файлами 295
15. Блок спецификаций временных соотношений-specify (несинтезабельная конструкция) 296
15.1. Обьявление спецпараметров 296
15.2. Средства проверки временных соотношений 296
15.3. Задержки путей распространения сигналов 297
16. Синтезабельные конструкции 298
17. Директивы компиляции (перечислены только основные) 299
Используемые сокращения 302
Интернет-ресурсы 304
Список литературы 305