# Проверка работы processor_system на ПЛИС После того, как вы проверили на моделировании дизайн, вам необходимо проверить его работу на прототипе в ПЛИС. Инструкция по реализации прототипа описана [здесь](../../../Vivado%20Basics/07.%20Program%20and%20debug.md). На _рис. 1_ представлена схема прототипа в ПЛИС. ![../../../.pic/Labs/board%20files/nexys_processor_system_structure.drawio.svg](../../../.pic/Labs/board%20files/nexys_processor_system_structure.drawio.svg) _Рисунок 1. Структурная схема модуля `nexys_processor_system`._ Прототип позволяет потактово исполнять программу, прошитую в память инструкций. Также прототип отображает операцию исполняемую в данный момент. > [!NOTE] > Объект модуля `processor_core` в модуле `processor_system` **должен** называться `core`. Т.е. строка создания сущности модуля должна выглядеть следующим образом: `processor_core core(...)`. ## Описание используемой периферии - ### Кнопки - `BTND` — при нажатии создает тактовый импульс, поступающий на порт тактирования `clk_i` модуля дизайна. Стоит помнить то, что инструкции, работающие с внешней памятью, требуют несколько тактов для своего выполнения. - `CPU_RESET` — соединен со входом `rst_i` модуля дизайна. Поскольку в модуле `processor_system` используется синхронный сброс (то есть сигнал сброса учитывается только во время восходящего фронта тактового сигнала), то для сброса модуля `processor_system` и вложенных в него модулей необходимо при зажатой кнопке сброса еще нажать кнопку тактирования. - ### Семисегментные индикаторы Семисегментные индикаторы разбиты на 2 блока (см. _рис. 1_): - `PC` — отображают в виде шестнадцатеричного числа младшие 16 бит программного счетчика, которые вычисляются на основе выхода `instr_addr_o` модуля процессорного ядра. - `operation` — отображают [операцию](#операции-отображаемые-прототипом), исполняемую процессором на текущем такте. ## Операции, отображаемые прототипом Прототип определяет тип операции по младшим 7 битам инструкции. Если тип операции является легальным в рамках процессорного устройства, реализуемого на лабораторных работах, то отображается соответствующий опкод. Опкоды описаны в [decoder_pkg.sv](../../05.%20Main%20decoder/decoder_pkg.sv). Если определенный прототипом тип операции является нелегальным, то на семисегментных индикаторах отображается `ILL` (от **ill**egal). Соответствие операции ее отображению на семисегментных индикаторах представлено на _рис. 2_: !['../../../.pic/Labs/board%20files/nexys_processor_system_operations.drawio.svg'](../../../.pic/Labs/board%20files/nexys_processor_system_operations.drawio.svg) _Рисунок 2. Соответствие операции ее отображению на семисегментных индикаторах._ ## Демонстрационная программа В качестве демонстрационной программы, предлагается использовать [program.mem](../program.mem). Описание ее работы можно прочитать в разделе [#задание](../README.md#задание).