Архитектуры процессорных систем. Практический курс

Переверзев А.Л., Попов М.Г.

Обложка:


Предисловие . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
I. Введение
Что такое язык описания аппаратуры (HDL) . . . . . . . . . . . . . . . . . . . . . . . 15
Что такое ПЛИС и как она работает. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Последовательностная логика . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Этапы реализации проекта в ПЛИС . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
II. Лабораторный практикум
Лабораторная работа № 1 «Сумматор» . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Лабораторная работа № 2 «Арифметико-логическое устройство» . . . . . . . . . 73
Лабораторная работа № 3 «Регистровый файл и память инструкций» . . . . . 87
Лабораторная работа № 4 «Простейшее программируемое устройство» . . . 101
Написание программы под процессор CYBERcobra . . . . . . . . . . . . . . . . . . 114
Лабораторная работа № 5 «Декодер инструкций» . . . . . . . . . . . . . . . . . . . 123
Лабораторная работа № 6 «Основная память» . . . . . . . . . . . . . . . . . . . . . . 141
Лабораторная работа № 7 «Тракт данных» . . . . . . . . . . . . . . . . . . . . . . . . 147
Лабораторная работа № 8 «Блок загрузки и сохранения» . . . . . . . . . . . . . . 155
Лабораторная работа № 9 «Интеграция блока загрузки и сохранения» . . . . 165
Лабораторная работа № 10 «Подсистема прерывания» . . . . . . . . . . . . . . . . 167
Лабораторная работа № 11 «Интеграция подсистемы прерывания» . . . . . . 185
Лабораторная работа № 12 «Блок приоритетных прерываний». . . . . . . . . . 187
Лабораторная работа № 13 «Периферийные устройства» . . . . . . . . . . . . . . 193
Лабораторная работа № 14 «Высокоуровневое программирование» . . . . . . 223
Лабораторная работа № 15 «Программатор» . . . . . . . . . . . . . . . . . . . . . . . 247
Лабораторная работа № 16 «Оценка производительности» . . . . . . . . . . . . . 267
III. Базовые конструкции SystemVerilog
Описание модулей в SystemVerilog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
Описание мультиплексоров в SystemVerilog . . . . . . . . . . . . . . . . . . . . . . . . 291
Описание регистров в SystemVerilog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
Конкатенация (объединение сигналов) . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
D-защёлка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
О различиях между блокирующими и неблокирующими присваиваниями 313
Пример разработки модуля-контроллера периферийного устройства . . . . . 329
IV. Основы Vivado
Создание нового проекта в Vivado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
Навигатор по маршруту проектирования (Flow Navigator) . . . . . . . . . . . . . 341
Менеджер проекта (Project Manager) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
Как запустить симуляцию в Vivado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
Руководство по поиску функциональных ошибок . . . . . . . . . . . . . . . . . . . 359
Анализ RTL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379
Как прошить ПЛИС. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381
V. Выдержки из спецификации RISC V
RV32I — стандартный набор целочисленных инструкций RISC-V . . . . . . . 385
О регистрах контроля и статуса. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395