* WIP: APS cumulative update * Update How FPGA works.md * Перенос раздела "Последовательностная логика" в отдельный док * Исправление картинки * Исправление оформления индексов * Переработка раздела Vivado Basics * Добавление картинки в руководство по созданию проекта * Исправление ссылок в анализе rtl * Обновление изображения в sequential logic * Исправление ссылок в bug hunting * Исправление ссылок * Рефактор руководства по прошивке ПЛИС * Mass update * Update fig_10 * Restore fig_02
Проверка работы CYBERcobra на ПЛИС
После того, как вы проверили на моделировании дизайн, вам необходимо проверить его работу на прототипе в ПЛИС.
Инструкция по реализации прототипа описана здесь.
На рис. 1 представлена схема прототипа в ПЛИС.
Рисунок 1. Структурная схема модуля nexys_CYBERcobra.
Прототип позволяет потактово исполнять программу, прошитую в память инструкций. Также прототип отображает операцию исполняемую в данный момент.
Note
Объект модуля
instr_memв модулеCYBERcobraдолжен называтьсяimem. Т.е. строка создания сущности модуля должна выглядеть следующим образом:instr_mem imem(...).
Описание используемой периферии
-
Переключатели.
Значение с переключателей
SW[15:0]подаются напрямую на портsw_iмодуля дизайна. -
Кнопки
BTND— при нажатии создает тактовый импульс, поступающий на порт тактированияclk_iмодуля дизайна.CPU_RESET— соединен со входомrst_iмодуля дизайна. Поскольку в модулеCYBERcobraиспользуется синхронный сброс (то есть сигнал сброса учитывается только во время восходящего фронта тактового сигнала), то для сброса модуляCYBERcobraи вложенных в него модулей необходимо при зажатой кнопке сброса еще нажать кнопку тактирования.
-
Светодиоды
Светодиоды
LED[15:0]отображают младшие 16 бит значения, выставленного в данный момент на портеout_oмодуля дизайна. -
Семисегментные индикаторы
Семисегментные индикаторы разбиты на 3 блока (см. рис. 1):
out— отображают младшие 8 бит значения, выставленного в данный момент на портеout_oмодуля дизайна, в виде шестнадцатеричного числа.PC— отображают в виде шестнадцатеричного числа младшие 8 бит программного счетчика, который подается на входaddr_iмодуля памяти инструкций.operation— отображают операцию, исполняемую процессором на текущем такте.
Операции, отображаемые прототипом
Соответствие типа инструкции отображаемой операции:
- Вычислительные — соответствует опкодам вычислительных операций АЛУ.
- Инструкция загрузки константы —
LI(от load immediate). - Инструкция загрузки из внешних устройств —
IN(от input). - Безусловный переход —
JUMP. - Инструкций условного перехода — соответствует опкодам операций сравнения АЛУ.
Во время исполнения вычислительных инструкций и инструкций условного перехода могут встретиться нелегальные операции (отображается как ILL, от illegal). Операция считается нелегальной в следующих случаях:
- Если в поле инструкции, отвечающем за операция АЛУ, указана битовая последовательность, не входящая в диапазон допустимых значений.
- Если инструкция является вычислительной, но в поле инструкции, отвечающем за операция АЛУ, указана битовая последовательность, соответствующая операции, вычисляющей флаг. И обратный случай.
Инструкция 0 0 11 xxxxxxxxxxxxxxxxxxxxxxxxxxxx отображается как NOP (от no operation).
Соответствие операции ее отображению на семисегментных индикаторах представлено на рис. 2:
Рисунок 2. Соответствие операции ее отображению на семисегментных индикаторах.
Демонстрационная программа
В качестве демонстрационной программы, предлагается использовать program.mem. Описание ее работы можно прочитать в разделе #финальный обзор.