Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

VHDL: справочное пособие по основам языка

Покупка
Артикул: 794785.01.99
Доступ онлайн
122 ₽
В корзину
Представляет собой вводный курс в язык VHDL и предназначена для быстрого ознакомления с базовыми концептуальными положениями этого языка. В данной книге приводятся базовые принципы параллельного программирования, положенные в основу языка VHDL, а также принципы организации VHDLпроекта и взаимосвязь компонен тов проекта с физическими процессами, протекающими в реальных цифровых устройствах. Содержит многочисленные практические примеры проектирования цифровых устройств, в частности цифровых устройств специального назначения (криптопроцессоров). Рассчитана на студентов, изучающих язык VHDL, в том числе и в рамках учебных курсов, посвященных проектированию устройств защиты информации.
VHDL: справочное пособие по основам языка / В. П. Бабак, А. Г. Корченко, Н. П. Тимошенко, С. Ф. Филоненко. - Москва : ДМК Пресс, 2020. - 224 с. - (Программируемые системы). - ISBN 978-5-97060-826-5. - Текст : электронный. - URL: https://znanium.ru/catalog/product/1907779 (дата обращения: 28.11.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов
С Е Р И Я

ПРОГРАММИРУЕМЫЕ СИСТЕМЫ

 В. П. Бабак, А. Г. Корченко,

Н. П. Тимошенко, С. Ф. Филоненко

VHDL: СПРАВОЧНОЕ

ПОСОБИЕ

ПО ОСНОВАМ ЯЗЫКА

ДМК Пресс, Додэка, 2020
          

Москва

УДК 621.369.218
ББК 32.884.1

Бабак В. П., Корченко А. Г., Тимошенко Н. П., Филоненко С. Ф.

Б12
VHDL: Справочное пособие по основам языка. — М.: ДМК 

Пресс. — 224 с.: ил. (Серия Программируемые системы).

ISBN 9785970608265

Представляет собой вводный курс в язык VHDL и предназначена для быстрого ознакомления с базовыми концептуальными положениями этого языка. В данной книге
приводятся базовые принципы параллельного программирования, положенные в основу
языка VHDL, а также принципы организации VHDLпроекта и взаимосвязь компонентов проекта с физическими процессами, протекающими в реальных цифровых
устройствах. Содержит многочисленные практические примеры проектирования цифровых устройств, в частности цифровых устройств специального назначения (криптопроцессоров). 

Рассчитана на студентов, изучающих язык VHDL, в том числе и в рамках учебных

курсов, посвященных проектированию устройств защиты информации.

УДК 621.369.218
ББК 32.884.1

Все права защищены. Никакая часть этого издания не может быть воспроизведена

в любой форме или любыми средствами, электронными или механическими, включая
фотографирование, ксерокопирование или иные средства копирования или сохранения
информации, без письменного разрешения издательства.

© Издание, «ДМК Пресс», 2020
ISBN 9785970608265

© Макет, «ДодэкаXXI»

 
 
 
 
 
® Серия «Программируемые системы»

Оглавление 3

Принятые сокращения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

Глава 1. Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

1.1. Современные языки проектирования цифровых устройств  . . . . . . . . . . . .9
1.2. Краткая характеристика языка VHDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10
1.3. Этапы проектирования с использованием VHDL . . . . . . . . . . . . . . . . . . . .13

Глава 2. Уровни представления и формы абстракции цифровых систем 14

Глава 3. Базовая структура VHDLфайла . . . . . . . . . . . . . . . . . . . . . . . . . 18

3.1. Общие сведения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18
3.2. Объявление интерфейса . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22
3.3. Архитектура проекта . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .26
3.3.1. Архитектура проекта в поведенческой форме. . . . . . . . . . . . . . . . . . . . . . . 26
3.3.2. Архитектура проекта в структурной форме. . . . . . . . . . . . . . . . . . . . . . . . . 29
3.4. Библиотеки и пакеты  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .33

Глава 4. Лексические элементы языка VHDL . . . . . . . . . . . . . . . . . . . . . . 37

4.1. Идентификаторы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .37
4.2. Ключевые слова . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .38
4.3. Зарезервированные слова  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .39
4.4. Числа . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .40
4.5. Символы, cтроки и битовые строки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .41

Оглавление

Оглавление

Глава 5. Программные элементы данных: константы, переменные
и сигналы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .42

5.1. Константы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .42
5.2. Переменные  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .43
5.3. Сигналы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .44

Глава 6. Типы данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .47

6.1. Встроенные типы данных пакета STANDARD. . . . . . . . . . . . . . . . . . . . . . .47
6.2. Пользовательские типы и подтипы  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .49
6.2.1.Физические типы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
6.2.2. Перечислимые типы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
6.2.3. Композитные пользовательские типы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
6.3. Преобразование типов  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .61
6.4. Атрибуты . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .64
6.4.1.Атрибуты сигналов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
6.4.2.Скалярные атрибуты  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
6.4.3. Атрибуты массивов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

Глава 7. Операции и символы операций   . . . . . . . . . . . . . . . . . . . . . . . . . .69

7.1. Логические операции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .70
7.2. Операции отношений . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .70
7.3. Операции сдвига. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .71
7.4. Операции сложения  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .72
7.5. Унарные операции  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .73
7.6. Операции умножения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .73
7.7. Вспомогательные операции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .74
7.8. Символы комментария . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .75
7.9. Математические выражения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .77

Глава 8. Поведенческая форма проекта: явно заданный
оператор Process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .79

8.1. Явно заданный оператор PROCESS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .79
8.2. Оператор условной передачи управления If  . . . . . . . . . . . . . . . . . . . . . . . . .84
8.3. Оператор выбора CASE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .86
8.4.  Оператор цикла LOOP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .89
8.4.1. Базовая форма цикла. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
8.4.2. Итерационная форма цикла WHILE … LOOP . . . . . . . . . . . . . . . . . . . . . . 91
8.4.3. Итерационная форма цикла FOR … LOOP  . . . . . . . . . . . . . . . . . . . . . . . . 92
8.4.4. Операторы NEXT и EXIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92

Оглавление 5

8.5. Оператор ожидания WAIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .93
8.6. Оператор NULL  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .94
8.7. Пример VHDLпроекта  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .95

Глава 9. Поведенческая форма проекта: неявно заданный
оператор PROCESS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

9.1. Простая параллельная установка значений сигналов . . . . . . . . . . . . . . . . .98
9.2. Условная установка значения сигнала. . . . . . . . . . . . . . . . . . . . . . . . . . . . .100
9.3. Селективная установка значений сигналов. . . . . . . . . . . . . . . . . . . . . . . . .102

Глава 10. Структурная форма проекта . . . . . . . . . . . . . . . . . . . . . . . . . . . 105

10.1. Оператор COMPONENT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .106
10.2. Оператор PORT MAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .107

Глава 11. Примеры VHDLпроектов ЦУ различного назначения . . . . . 115

11.1. Проекты ЦУ общего назначения  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .115
11.1.1. Логический элемент AND на 4 входа . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
11.1.2. Логический элемент OR на 2 входа. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
11.1.3. Логический элемент OR на 4 инверсных входа  . . . . . . . . . . . . . . . . . . . 117
11.1.4. Логический элемент NOR на 3 входа . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
11.1.5. Логический элемент XOR на 2 входа  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
11.1.6. 4битный буфер — логический усилитель . . . . . . . . . . . . . . . . . . . . . . . . 121
11.1.7. 8битный буфер с тремя состояниями без обратной связи. . . . . . . . . . 122
11.1.8. 4канальный мультиплексор 41
с сигналом разрешения выбора номера канала . . . . . . . . . . . . . . . . . . 122
11.1.9. Демультиплексор 14  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
11.1.10. 4битный последовательный сумматор с фиксированной точкой  . . 124
11.1.11. 8битный сумматор с ускоренным переносом . . . . . . . . . . . . . . . . . . . 125
11.1.12. 4битный каскадный вычитатель с фиксированной точкой  . . . . . . . 126
11.1.13. 8битный сумматор со сквозным переносом с учетом знаков битов  127
11.1.14. Универсальный параллельный арифметический процессор . . . . . . . 129
11.1.15.4битный компаратор с анализом знаков сравниваемых чисел 
и выбором режимов сравнения. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
11.1.16. 8битный контроллер четности . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
11.1.17. Простой Dтриггер, переключаемый передним фронтом тактового 
импульса . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
11.1.18. Dтриггер с асинхронным сбросом  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
11.1.19. Dтриггер с асинхронной предустановкой . . . . . . . . . . . . . . . . . . . . . . 133
11.1.20. Dтриггер с асинхронным сбросом и асинхронной предустановкой 134
11.1.21. Dтриггер с синхронным сбросом  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
11.1.22. Dтриггер с синхронной предустановкой . . . . . . . . . . . . . . . . . . . . . . . 135

Оглавление

11.1.23. Dтриггер с синхронным сбросом и сигналом, разрешающим 
приход очередного тактового импульса  . . . . . . . . . . . . . . . . . . . . . . . . 136
11.1.24. Dтриггерзащелка  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
11.1.25. Dтриггерзащелка со стробирующим сигналом  . . . . . . . . . . . . . . . . 137
11.1.26. 8битный накапливающий счетчик со счетным входом
и асинхронным сбросом  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
11.1.27. 8битный накапливающий счетчик с синхронной загрузкой 
и асинхронным сбросом. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
11.1.28. 8битный накапливающий/вычитающий счетчик с выбором 
направления счета . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
11.1.29.Nбитный накапливающий счетчик со счетным входом, 
синхронной загрузкой  и асинхронным сбросом. . . . . . . . . . . . . . . . . 141
11.1.30.Синхронный 4битный циклический сдвиговый регистр вправо
с параллельным входом и выходом. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
11.1.31. Универсальный синхронный 4битный сдвиговый регистр вправо
с параллельным входом и выходом. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
11.1.32. Расширитель разрядности шины знаковыми разрядами  . . . . . . . . . . 145
11.1.33. VHDLпроект расширителя разрядности шины нулями  . . . . . . . . . . 147
11.1.34. 8битная двунаправленная шина с тремя состояниями  . . . . . . . . . . . 148
11.1.35. Процессор возведения в степень N. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
11.1.36. Процессор нахождения факториала . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
11.1.37. Процессор нахождения натурального логарифма . . . . . . . . . . . . . . . . 150
11.1.38. Процессор нахождения квадратного корня. . . . . . . . . . . . . . . . . . . . . . 152
11.1.39. Процессор, конвертирующий 16ричные значения в данные типа 
std_logic_vector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
11.2. Проекты ЦУ специального назначения  . . . . . . . . . . . . . . . . . . . . . . . . . . .154
11.2.1. Генератор тактовых импульсов с периодом следования 100 нс 
и скважностью 50% . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
11.2.2. Комбинированный генератор псевдослучайных чисел с выходными 
значениями разных типов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
11.2.3. Многофункциональный конвертер типов данных. . . . . . . . . . . . . . . . . 156
11.2.4.Целочисленный мультипликативный криптопроцессор  . . . . . . . . . . . 157
11.2.5. Символьный аддитивный криптопроцессор  . . . . . . . . . . . . . . . . . . . . . 158
11.2.6. Подстановочный символьный криптопроцессор  . . . . . . . . . . . . . . . . . 161
11.2.7.Перестановочный битовый криптопроцессор. . . . . . . . . . . . . . . . . . . . . 163
11.2.8.Криптопроцессор на базе сдвиговых операций. . . . . . . . . . . . . . . . . . . . 166
11.2.9. Криптопроцессор с многоуровневой системой шифрования, 
формульный метод  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
11.2.10. Криптопроцессор, реализующий метод эллиптических кривых  . . . 170
11.3. Проекты ЦУ специального назначения повышенного уровня
сложности . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .177
11.3.1.Файловый криптопроцессор циклического сдвига  . . . . . . . . . . . . . . . . 177
11.3.2. Файловый RSAкриптопроцессор . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184

Оглавление 7

11.3.3. Файловый криптопроцессор Вижинера. . . . . . . . . . . . . . . . . . . . . . . . . . 192

Приложение. Основы языка VHDL в реферативном изложении  . . . . . 199

П.1. Язык VHDL как универсальный язык проектирования ЦУ  . . . . . . . . . .199
П.2.  Концептуальные положения языка VHDL. . . . . . . . . . . . . . . . . . . . . . . . .201
П.3. Объявление интерфейса проекта  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .204
П.4. Программные элементы данных языка VHDL  . . . . . . . . . . . . . . . . . . . . .206
П.5. Поведенческая форма проекта на основе явно заданного
оператора PROCESS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .210
П.6. Поведенческая форма проекта на основе неявно заданного оператора 
PROCESS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .212
П.7. Структурная форма проекта. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .214

. 

Принятые сокращения

АЛУ
— арифметикологическое устройство.

ОПО
— оператор параллельной обработки.

ПО
— программное обеспечение.

САПР
— система автоматизированного проектирования.

СБИС
— сверхбольшая интегральная схема.

ЦУ
— цифровое устройство.

ПУЗС
— простая установка значения сигнала.

УУЗС
— условная установка значения сигнала.

СУЗС
— селективная установка значения сигнала.

1.1. Современные языки проектирования цифровых устройств 9

Гл

1.1. Современные языки проектирования 
цифровых устройств

VHDL является аббревиатурой от Very high speed integrated circuits
Hardware Description Language, что переводится как язык описания устройств на сверхбольших интегральных схемах (СБИС). В середине
1980х гг. Министерство обороны США и IEEE1) спонсировали разработку этого языка описания цифровой аппаратуры с целью получения простого в использовании средства проектирования и моделирования логических схем для всех этапов разработки электронных систем, 
начиная 
от 
модулей 
микросхем 
и 
кончая 
крупными
вычислительными системами. Первая версия стандарта была издана в
1987 г. (IEEE 10761987). Очередные версии выходили в 1991, 1993,
1996, 1997, 1999, 2000 и 2002 гг. В настоящее время действует стандарт
VHDL, изложенный в документе IEEE 10762002 и являющийся промышленным стандартом, который широко используется для описания работы цифровых систем. В июне 2006 г. была опубликована версия 3.0 проекта стандарта VHDL2006, в который вошли все дочерние
стандарты, разработанные в ходе создания стандартов VHDL (IEEE

ГЛАВА 1

ВВЕДЕНИЕ

1)  IEEE (Institute of Electrical and Electronic Engineers — Институт инженеров по
электротехнике и радиоэлектронике, ИИЭР) — международная организация,
созданная в США в 1963 г. Является разработчиком ряда стандартов для локальных
вычислительных систем, в том числе по кабельной системе, физической топологии
и методам доступа к среде передачи данных. — Примеч. ред.

Глава 1. Введение

1064, 1076.2, 1076.3), а также добавлены другие усовершенствования,
такие как интерфейс с языками высокого уровня C/C++ и ряд других.
В РФ язык VHDL закреплен стандартом ГОСТ РФ 5075495 «Язык
описания аппаратуры цифровых систем VНDL. Описание языка».
В данной книге рассмотрены основные положения языка VHDL,
которые определены в стандарте IEEE 10761993, поскольку последующие изменения (за исключением пока еще разрабатываемого стандарта
VHDL2006) были несущественными. Кроме того, все последующие
стандарты VHDL, включая VHDL2006, обеспечивают совместимость с
проектами, разработанными в соответствии со стандартом 10761993.
Еще одним представителем языков описания цифровой аппаратуры
является язык Verilog, или Verilog HDL. Разработчики Verilog сделали его
синтаксис очень похожим на синтаксис языка C. Verilog имеет препроцессор, очень похожий на препроцессор языка C, а основные управляющие конструкции Verilog также подобны одноименным конструкциям
языка C. В настоящее время действует стандарт Verilog, изложенный в
документе IEEE 13642005, который представляет собой несколько доработанный вариант очень популярного среди приверженцев Verilog
стандарта IEEE 13642001. Язык Verilog применяется в промышленности так же широко, как и VHDL, поскольку оба этих языка позволяют
описывать и имитировать работу сложных цифровых систем. 
Третьим представителем языков VHDL является язык ABEL
(Advanced Boolean Equation Language — расширенный язык двоичных
уравнений), который был разработан в 1983 г. для создания проектов
цифровых устройств посредством программируемых логических устройств (PLD — Programmable Logic Devices). Язык ABEL менее мощен,
чем VHDL и Verilog, в частности не позволяет проектировать устройства на перепрограммируемых логических матрицах FPGA (Field
Programmable Gate Arrays), поэтому он менее популярен в промышленности, хотя все еще находит своих сторонников. 

1.2. Краткая характеристика языка VHDL

Хотя язык VHDL внешне выглядит так же, как и другие традиционные языки программирования (поскольку имеет литералы, разделители, операторы и т. д.), он обладает некоторыми важными отличительными характеристиками.

Доступ онлайн
122 ₽
В корзину