VHDL: справочное пособие по основам языка
Покупка
Издательство:
ДМК Пресс
Год издания: 2020
Кол-во страниц: 224
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-97060-826-5
Артикул: 794785.01.99
Представляет собой вводный курс в язык VHDL и предназначена для быстрого ознакомления с базовыми концептуальными положениями этого языка. В данной книге приводятся базовые принципы параллельного программирования, положенные в основу языка VHDL, а также принципы организации VHDLпроекта и взаимосвязь компонен тов проекта с физическими процессами, протекающими в реальных цифровых устройствах. Содержит многочисленные практические примеры проектирования цифровых устройств, в частности цифровых устройств специального назначения (криптопроцессоров).
Рассчитана на студентов, изучающих язык VHDL, в том числе и в рамках учебных курсов, посвященных проектированию устройств защиты информации.
- Полная коллекция по информатике и вычислительной технике
- Защита информации. Компьютерная безопасность
- Интермедиатор. Информационная безопасность (сводная)
- Интермедиатор. Информационные системы и технологии (сводная)
- Интермедиатор. ИТ-технологии для профессионалов (сводная)
- Интермедиатор. Обеспечение безопасности (сводная)
- Информационная безопасность
- Программирование
- Программирование и алгоритмизация
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.03: Прикладная информатика
- 10.03.01: Информационная безопасность
- ВО - Специалитет
- 10.05.01: Компьютерная безопасность
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
С Е Р И Я ПРОГРАММИРУЕМЫЕ СИСТЕМЫ В. П. Бабак, А. Г. Корченко, Н. П. Тимошенко, С. Ф. Филоненко 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 внешне выглядит так же, как и другие традиционные языки программирования (поскольку имеет литералы, разделители, операторы и т. д.), он обладает некоторыми важными отличительными характеристиками.