УДК 621.3.049.77
ББК 32.844-02
C79
C79
Стешенко, Владимир Борисович.
ПЛИС фирмы Altera: элементная база, система проектирования и языки
описания аппаратуры / В. Б. Стешенко. — 4-е изд., эл. — 1 файл pdf : 575 с. —
Москва : ДМК Пресс, Додэка-XXI, 2023. — (Мировая электроника). — Систем.
требования: Adobe Reader XI либо Adobe Digital Editions 4.5 ;
экран 10". — Текст : электронный.
ISBN 978-5-89818-615-9
В книге рассмотрены вопросы практического применения ПЛИС фирмы «Altera»
при разработке цифровых устройств. Приведены краткие сведения об особенностях
архитектуры и временных параметрах устройств. Рассмотрены САПР MAX+PLUS
II и Quartus, языки описания аппаратуры AHDL, VHDL, VERILOG HDL. Приводятся
примеры описания цифровых устройств на языках высокого уровня, а также
примеры реализации некоторых алгоритмов. Приведены сведения о современных
интерфейсах передачи данных, даны рекомендации по разработке печатных плат.
Цель книги — помочь начинающему разработчику в выборе элементной базы и
дать представление о технологии проектирования устройств на ПЛИС.
УДК 621.3.049.77
ББК 32.844-02
Электронное издание на основе печатного издания: ПЛИС фирмы Altera: элементная база,
система проектирования и языки описания аппаратуры / В. Б. Стешенко. — 3-е изд. — Москва
: ДМК Пресс, Додэка-XXI, 2015. — 574 с. — (Мировая электроника). — ISBN 978-597060-342-0.
— Текст : непосредственный.
Все права защищены. Никакая часть этого издания не может быть воспроизведена в любой форме или
любыми средствами, электронными или механическими, включая фотографирование, ксерокопирование
или иные средства копирования или сохранения информации, без письменного разрешения издательства.
В соответствии со ст. 1299 и 1301 ГК РФ при устранении ограничений, установленных техническими средствами
защиты авторских прав, правообладатель вправе требовать от нарушителя возмещения убытков или выплаты компенсации.
ISBN
978-5-89818-615-9
© Стешенко В.Б.
© Макет, Издательский дом «Додэка-XXI»
© Издание, ДМК Пресс, 2016
Стр.3
СОДЕРЖАНИЕ
ВВЕДЕНИЕ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
ГЛАВА 1. ЭЛЕМЕНТНАЯ БАЗА . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.1. Семейство MAX3000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.2. Семейство FLEX6000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
1.3. Семейство MAX7000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
1.4. Семейство FLEX8000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
1.5. Семейство MAX9000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
1.6. Семейство FLEX10K . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
1.7. Семейство APEX20K . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
1.8. Семейство Mercury . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
1.9. Семейство ACEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
1.10. Kонфигурационные ПЗУ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
1.11. Программирование и реконфигурирование в системе . . . . . . . . . 110
ГЛАВА 2. СИСТЕМА ПРОЕКТИРОВАНИЯ MAX+PLUS II . . . . . . 115
2.1. Общие сведения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
2.2. Процедура разработки проекта . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
2.3. Редакторы MAX PLUS II . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
2.4. Процесс компиляции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
2.5. Верификация проекта . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
ГЛАВА 3. ЯЗЫК ОПИСАНИЯ АППАРАТУРЫ AHDL . . . . . . . . . . 167
3.1. Общие сведения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
3.2. Использование чисел и констант в языке AHDL . . . . . . . . . . . . . 171
3.2.1. Использование чисел . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
3.2.2. Использование констант . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
3.3. Kомбинационная логика . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
5
Стр.6
Содержание
3.3.1. Реализация булевых выражений и уравнений . . . . . . . . . . 172
3.3.2. Объявление NODE (óçåë) . . . . . . . . . . . . . . . . . . . . . . . . . . 173
3.3.3. Определение групп . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
3.3.4. Реализация условной логики . . . . . . . . . . . . . . . . . . . . . . . 174
3.3.5. Описание дешифраторов . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
3.3.6. Использование для переменных значений по умолчанию . . . 180
3.3.7. Реализация логики с активным низким уровнем . . . . . . . . 182
3.3.8. Реализация двунаправленных выводов . . . . . . . . . . . . . . . . 183
3.4. Последовательностная логика . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
3.4.1. Объявление регистров . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
3.4.2. Объявление регистровых выходов . . . . . . . . . . . . . . . . . . . 186
3.4.3. Создание счетчиков . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
3.5. Цифровые автоматы с памятью (state mashine) . . . . . . . . . . . . . . . 187
3.5.1. Реализация цифровых автоматов (state machine) . . . . . . . . 188
3.5.2. Установка сигналов Clock, Reset и Enable . . . . . . . . . . . . . 189
3.5.3. Задание выходных значений для состояний . . . . . . . . . . . . 189
3.5.4. Задание переходов между состояниями . . . . . . . . . . . . . . . 190
3.5.5. Присвоение битов и значений в цифровом автомате . . . . . 190
3.5.6. Цифровые автоматы с синхронными выходами . . . . . . . . . 191
3.5.7. Цифровые автоматы с асинхронными выходами . . . . . . . . 193
3.5.8. Восстановление после неправильных состояний . . . . . . . . 194
3.6. Реализация иерархического проекта . . . . . . . . . . . . . . . . . . . . . . . 196
3.6.1. Использование макрофункций системы MAX+PLUS II
фирмы «Altera» . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
3.6.2. Создание и применение пользовательских макрофункций . . 199
3.6.3. Определение пользовательской макрофункции . . . . . . . . . 199
3.6.4. Импорт и экспорт цифровых автоматов (state machine) . . . 201
3.7. Управление синтезом . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
3.7.1. Реализация примитивов LCELL и SOFT . . . . . . . . . . . . . . 203
3.7.2. Значения констант по умолчанию . . . . . . . . . . . . . . . . . . . . 205
3.7.3. Присвоение битов и значений в цифровом формате . . . . . 205
3.8. Элементы языка AHDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
3.8.1. Зарезервированные ключевые слова . . . . . . . . . . . . . . . . . . 205
3.8.2. Символы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
3.8.3. Имена в кавычках и без кавычек . . . . . . . . . . . . . . . . . . . . 208
3.8.4. Группы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
3.8.5. Числа в языке AHDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
3.8.6. Булевы выражения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
3.8.7. Логические операторы . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
3.8.8. Выражения с оператором NOT . . . . . . . . . . . . . . . . . . . . . . 213
6
Стр.7
Содержание
3.8.9. Выражения с операторами
AND, NAND, OR, XOR, & XNOR . . . . . . . . . . . . . . . . . . . 213
3.8.10.Àðèôìåòè÷åñêèå операторы . . . . . . . . . . . . . . . . . . . . . . . . 214
3.8.11.Kîìïàðàòîðû (операторы сравнения) . . . . . . . . . . . . . . . . . 215
3.8.12.Ïðèîðèòåòû в булевых уравнениях . . . . . . . . . . . . . . . . . . 216
3.8.13.Ïðèìèòèâû . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
3.8.14.Ïîðòû . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
3.9. Синтаксис языка AHDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
3.9.1. Лексические элементы . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
3.9.2. Основные конструкции языка AHDL . . . . . . . . . . . . . . . . . 230
3.9.3. Синтаксис объявления названия . . . . . . . . . . . . . . . . . . . . . 233
3.9.4. Синтаксис оператора включения . . . . . . . . . . . . . . . . . . . . 233
3.9.5. Синтаксис задания константы . . . . . . . . . . . . . . . . . . . . . . . 233
3.9.6. Синтаксис прототипа функции . . . . . . . . . . . . . . . . . . . . . . 233
3.9.7. Синтаксис оператора вариантов . . . . . . . . . . . . . . . . . . . . . 234
3.9.8. Синтаксис секции подпроекта Subdesign . . . . . . . . . . . . . . 236
3.9.9. Синтаксис секции переменных . . . . . . . . . . . . . . . . . . . . . . 236
3.9.10.Ñèíòàêñèñ объявления цифрового автомата . . . . . . . . . . . . 237
3.9.11.Ñèíòàêñèñ объявления псевдонима цифрового автомата . . . 237
3.9.12.Ñèíòàêñèñ логической секции . . . . . . . . . . . . . . . . . . . . . . 238
3.9.13.Ñèíòàêñèñ булевых уравнений . . . . . . . . . . . . . . . . . . . . . . 238
3.9.14.Ñèíòàêñèñ булевых уравнений управления . . . . . . . . . . . . 238
3.9.15.Ñèíòàêñèñ оператора CASE . . . . . . . . . . . . . . . . . . . . . . . . 238
3.9.16.Îáúÿâëåíèå по умолчанию . . . . . . . . . . . . . . . . . . . . . . . . . .238
3.9.17.Ñèíòàêñèñ условного оператора IF . . . . . . . . . . . . . . . . . . . 239
3.9.18.Ñèíòàêñèñ встроенных (in-line) ссылок на макрофункцию
или примитив . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
3.9.19.Ñèíòàêñèñ объявления таблицы истинности . . . . . . . . . . . 239
3.9.20.Ñèíòàêñèñ порта . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
3.9.21.Ñèíòàêñèñ группы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
3.9.22.Ñèíòàêñè÷åñêèå группы и списки . . . . . . . . . . . . . . . . . . . . 241
ГЛАВА 4. ЯЗЫК ОПИСАНИЯ АППАРАТУРЫ VHDL . . . . . . . . . . 243
4.1. Общие сведения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
4.2. Алфавит языка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
4.2.1. Kомментарии . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
4.2.2. Числа . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
4.2.3. Символы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
4.2.4. Строки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
4.3. Типы данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
7
Стр.8
Содержание
4.3.1. Простые типы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
4.3.2. Сложные типы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
4.3.3. Описание простых типов . . . . . . . . . . . . . . . . . . . . . . . . . . 250
4.4. Операторы VHDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
4.4.1. Основы синтаксиса . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
4.4.2. Объекты . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
4.4.3. Атрибуты . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
4.4.4. Kомпоненты . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
4.4.5. Выражения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
4.4.6. Операторы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
4.5. Интерфейс и тело объекта . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
4.5.1. Описание простого объекта . . . . . . . . . . . . . . . . . . . . . . . . 270
4.5.2. Объявление объекта проекта F . . . . . . . . . . . . . . . . . . . . . . 270
4.5.3. Поведенческое описание архитектуры . . . . . . . . . . . . . . . . 270
4.5.4. Потоковая форма . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
4.5.5. Структурное описание архитектуры . . . . . . . . . . . . . . . . . . 273
4.6. Описание конфигурации . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
4.7. Векторные сигналы и регулярные структуры . . . . . . . . . . . . . . . . 275
4.8. Задержки сигналов и параметры настройки . . . . . . . . . . . . . . . . . 277
4.9. Атрибуты сигналов и контроль запрещенных ситуаций . . . . . . . . 279
4.10. Алфавит моделирования и пакеты . . . . . . . . . . . . . . . . . . . . . . . . . 280
4.11. Описание монтажного «ÈËÈ» и общей шины . . . . . . . . . . . . . . . 283
4.12. Синтезируемое подмножество VHDL . . . . . . . . . . . . . . . . . . . . . . 285
4.12.1.Îáùèå сведения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
4.12.2.Ïåðåîïðåäåëåííûå типы (Redefined types) . . . . . . . . . . . . 286
4.12.3.Методика верификации синтезируемого описания
(Verification methodology) . . . . . . . . . . . . . . . . . . . . . . . . . . 286
4.12.4.Моделирование элементов аппаратуры
(Modeling hardware elements) . . . . . . . . . . . . . . . . . . . . . . . 288
4.12.5.Äèðåêòèâû компилятора (ïñåâäîêîììåíòàðèè, Pragmas) . . . 295
4.12.6.Ñèíòàêñèñ синтезируемого подмножества VHDL . . . . . . . 297
4.13. Kраткое описание синтакиса синтезируемого
подмножества VHDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
ГЛАВА 5. ЯЗЫК ОПИСАНИЯ АППАРАТУРЫ VERILOG HDL . . . 363
5.1. Общие сведения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
5.2. Операторы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365
5.3. Числа в Verilog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365
5.3.1. Целые числа (Integers) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365
5.3.2. Неопределенное и высокоимпедансное состояния
(x and z values) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366
8
Стр.9
Содержание
5.3.3. Отрицательные числа (Negative numbers) . . . . . . . . . . . . . 366
5.3.4. Подчеркивание (Underscore) . . . . . . . . . . . . . . . . . . . . . . . . 366
5.3.5. Действительные числа (Real) . . . . . . . . . . . . . . . . . . . . . . . 366
5.3.6. Строки (Strings) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
5.4. Цепи в Verilog (Nets) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
5.5. Регистры (Registers) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
5.6. Векторы (Vectors) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
5.7. Массивы (Arrays) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370
5.8. Регистровые файлы (Memories) . . . . . . . . . . . . . . . . . . . . . . . . . . . 370
5.9. Элементы с третьим состоянием (Tri-state) . . . . . . . . . . . . . . . . . . 370
5.10. Арифметические операторы (Arithmetic operators) . . . . . . . . . . . . 372
5.11. Логические операторы (Logical operators) . . . . . . . . . . . . . . . . . . . 373
5.12. Операторы отношения (Relational operators) . . . . . . . . . . . . . . . . . 374
5.13. Операторы эквивалентности (Equality) . . . . . . . . . . . . . . . . . . . . . 374
5.14. Поразрядные операторы (Bitwise operators) . . . . . . . . . . . . . . . . . 375
5.15. Операторы приведения (Reduction operator) . . . . . . . . . . . . . . . . . 376
5.16. Операторы сдвига (Shift operator) . . . . . . . . . . . . . . . . . . . . . . . . . 377
5.17. Kонкатенация (îáúåäèíåíèå, Concatenation) . . . . . . . . . . . . . . . . . 377
5.18. Повторение (Replication) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378
5.19. Системные директивы (System tasks) . . . . . . . . . . . . . . . . . . . . . . 378
5.19.1.Директивы вывода результатов моделирования
(Writing to standard output) . . . . . . . . . . . . . . . . . . . . . . . . . . 379
5.19.2. Kонтроль процесса моделирования
(Monitoring a simulation) . . . . . . . . . . . . . . . . . . . . . . . . . . . 380
5.19.3. Окончание моделирования (Ending a simulation) . . . . . . . 382
5.20. Проектирование комбинационных схем, пример проектирования
мультиплексора 4 в 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382
5.20.1.Реализация на уровне логических вентилей
(Gate level implementation) . . . . . . . . . . . . . . . . . . . . . . . . . 382
5.20.2.Реализация мультиплексора с помощью логических
операторов (Logic statement Implementation) . . . . . . . . . . . 384
5.20.3.Реализация с помощью оператора выбора
(CASE statement implementation ) . . . . . . . . . . . . . . . . . . . . 385
5.20.4.Реализация с использованием условного оператора
(Conditional operator Implementation) . . . . . . . . . . . . . . . . . 387
5.20.5.Òåñòîâûé модуль (The stimulus module) . . . . . . . . . . . . . . . 387
5.21. Модули проекта (Design blocks modules) . . . . . . . . . . . . . . . . . . . 390
5.21.1.Òåñòèðîâàíèå . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392
5.22. Порты (Ports) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393
5.23. Правила соединения (Connection rules) . . . . . . . . . . . . . . . . . . . . . 394
9
Стр.10
Содержание
5.23.1.Âõîäû (inputs) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394
5.23.2.Âûõîäû (outputs) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394
5.23.3.Äâóíàïðàâëåííûå выводы (inouts) . . . . . . . . . . . . . . . . . . . 394
5.23.4.Ñîîòâåòñòâèå портов (Port matching) . . . . . . . . . . . . . . . . . 394
5.23.5.Ïðèñîåäèíåíèå портов (Connecting ports) . . . . . . . . . . . . . 394
5.24. Базовые блоки (Basic blocks) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395
5.24.1.Èíèöèàëèçàöèÿ (Initial block) . . . . . . . . . . . . . . . . . . . . . . . 395
5.24.2.Kîíñòðóêöèÿ Always (Always block) . . . . . . . . . . . . . . . . . . 395
5.25. Пример проектирования последовательностного устройства:
двоичный счетчик . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
5.25.1.Ïîâåäåí÷åñêàÿ модель счетчика (Behavioural model) . . . . . 400
5.26. Временной контроль (Timing Control) . . . . . . . . . . . . . . . . . . . . . . 402
5.26.1.Çàäåðæêè (delay) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
5.26.2.Ñîáûòèéíûé контроль (event-based control) . . . . . . . . . . . . 403
5.27. Защелкивание (triggers) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403
5.28. Список сигналов возбуждения (sensitivity list) . . . . . . . . . . . . . . . 404
5.29. Задержка распространения в вентиле (Gate delays) . . . . . . . . . . . 404
5.30. Операторы ветвления (Branch statements) . . . . . . . . . . . . . . . . . . . 404
5.30.1.Îïåðàòîð IF ( IF statement) . . . . . . . . . . . . . . . . . . . . . . . . . 404
5.30.2.Îïåðàòîð выбора (CASE statement) . . . . . . . . . . . . . . . . . . 406
5.30.3.Îïåðàòîð ветвления (Conditional operator) . . . . . . . . . . . . . 406
5.31. Циклы (Looping constructs) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407
5.31.1.Öèêë WHILE (WHILE LOOP) . . . . . . . . . . . . . . . . . . . . . . . 407
5.31.2.Öèêë FOR (FOR LOOP) . . . . . . . . . . . . . . . . . . . . . . . . . . . 408
5.31.3.Öèêë REPEAT (REPEAT LOOP) . . . . . . . . . . . . . . . . . . . . . .408
5.31.4.Âå÷íûé цикл (FOREVER LOOP) . . . . . . . . . . . . . . . . . . . . 409
5.32. Файлы в Verilog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409
5.32.1.Îòêðûòèå файла (Opening a file) . . . . . . . . . . . . . . . . . . . . . 409
5.32.2.Çàïèñü в файл (Writing to a file) . . . . . . . . . . . . . . . . . . . . . 410
5.32.3.Çàêðûòèå файла (Closing a file) . . . . . . . . . . . . . . . . . . . . . . 410
5.32.4.Инициализация регистровых файлов (памяти)
(Initialising memories) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410
5.33. Задание векторов входных сигналов для моделирования
(Verilog input vectors) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412
5.34. Список операторов Verilog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414
5.35. Приоритет операторов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415
5.36. Këþ÷åâûå слова (keywords) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415
5.37. Директивы компилятора . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416
5.38. Типы цепей (Net types) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416
10
Стр.11
Содержание
ГЛАВА 6. ПРИМЕРЫ ПРОЕКТИРОВАНИЯ ЦИФРОВЫХ
УСТРОЙСТВ С ИСПОЛЬЗОВАНИЕМ ЯЗЫКОВ
ОПИСАНИЯ АППАРАТУРЫ VHDL И VERILOG . . . . 4 1 7
6.1. Общие сведения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417
6.2. Триггеры и регистры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418
6.2.1. Триггеры, тактируемые передним фронтом
(Rising Edge Flipflop) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419
6.2.2. Триггеры, тактируемые передним фронтом, с асинхронным
сбросом (Rising Edge Flipflop with Asynchronous Reset) . . . 420
6.2.3. Триггеры, тактируемые передним фронтом, с асинхронной
предустановкой (Rising Edge Flipflop
with Asynchronous Preset) . . . . . . . . . . . . . . . . . . . . . . . . . . . 421
6.2.4. Триггеры, тактируемые передним фронтом, с асинхронным
сбросом и предустановкой (Rising Edge Flepflop
with Asynchronous Reset and Preset) . . . . . . . . . . . . . . . . . . . 422
6.2.5. Триггеры, тактируемые передним фронтом, с синхронным
сбросом (Rising Edge Flipflop with Synchronous Reset) . . . . 424
6.2.6. Триггеры, тактируемые передним фронтом, с синхронной
предустановкой (Rising Edge Flipflop
with Synchronous Preset) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425
6.2.7. Триггеры, тактируемые передним фронтом, с асинхронным
сбросом и разрешением тактового сигнала (Rising Edge
Flipflop with Asynchronous Reset and Clock Enable) . . . . . . . 426
6.2.8. Защелка с разрешением выхода
(D-Latch with Data and Enable) . . . . . . . . . . . . . . . . . . . . . . 427
6.2.9. Защелка с входом данных с разрешением
(D-Latch with Gated Asynchronous Data) . . . . . . . . . . . . . . . 428
6.2.10. Защелка с входом разрешения (D-Latch with Gated enable) . . 429
6.2.11.Защелка с асинхронным сбросом
(D-Latch with Asynchronous Reset) . . . . . . . . . . . . . . . . . . . 430
6.3. Построение устройств потоковой обработки данных
(Datapath logic) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431
6.4. Счетчики . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439
6.5. Арифметические устройства . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443
6.6. Kîíå÷íûå автоматы (Finite state machine) . . . . . . . . . . . . . . . . . . . 449
6.7. Элементы ввода-вывода . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459
6.8. Параметризация . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464
6.9. Специфика проектирования устройств с учетом архитектурных
особенностей ПЛИС . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466
6.10. Совместное использование ресурсов . . . . . . . . . . . . . . . . . . . . . . 468
11
Стр.12
Содержание
6.11. Дублирование регистра . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473
6.12. Создание описаний с учетом особенностей архитектуры ПЛИС
(Technology Specific Coding Techniques) . . . . . . . . . . . . . . . . . . . . 476
ГЛАВА 7. ПРИМЕРЫ РЕАЛИЗАЦИИ АЛГОРИТМОВ ЦОС
НА ПЛИС . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485
7.1. Реализация цифровых фильтров на ПЛИС
семейства FLEX фирмы «Altera» . . . . . . . . . . . . . . . . . . . . . . . . . . 485
7.2. Реализация цифровых полиномиальных фильтров . . . . . . . . . . . . 491
7.3. Алгоритмы функционирования и структурные схемы
демодуляторов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495
7.4. Реализация генератора ПСП на ПЛИС . . . . . . . . . . . . . . . . . . . . . 500
7.5. Примеры описания цифровых схем на VHDL . . . . . . . . . . . . . . . 506
7.6. Реализация нейрона на AHDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . 516
7.7. Построение быстродействующих перемножителей . . . . . . . . . . . 529
Приложение 1.Ñèñòåìà проектирования Quartus . . . . . . . . . . . . . . . . . 535
Приложение 2.Интерфейсы передачи данных
и сопряжение устройств . . . . . . . . . . . . . . . . . . . . . . . . 537
Приложение 3.Практические рекомендации по разработке
печатных плат . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568
Литература . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572
12
Стр.13