# Проверка работы арифметико-логического устройства в ПЛИС После того, как вы проверили на моделировании АЛУ, вам необходимо проверить его работу на прототипе в ПЛИС. Инструкция по реализации прототипа описана [здесь](../../../Vivado%20Basics/07.%20Program%20and%20debug.md). На _рис. 1_ представлена схема прототипа в ПЛИС. ![../../../.pic/Labs/board%20files/nexys_alu_structure.drawio.svg](../../../.pic/Labs/board%20files/nexys_alu_structure.drawio.svg) _Рисунок 1. Структурная схема модуля `nexys_alu`, где блоки `SE` — [знакорасширители](https://ru.wikipedia.org/wiki/Дополнительный_код#Расширение_знака)._ Модуль `nexys_alu` позволяет подавать данные на входы `a_i`, `b_i`, `alu_op_i`, а также управлять интерпретацией знака операндов/результата с помощью переключателей. Переключатели `sw[15:0]` и сигналы, ими задаваемые, соотносятся следующим образом: - `sw[15:11]` — операнд `a_i`. - `sw[10:6]` — операнд `b_i`. - `sw[5]` — `sign_on` (назначение этого сигнала подробнее описано дальше по тексту). - `sw[4:0]` — `alu_op_i`. Сигнал `sign_on` — определяет интерпретацию (знаковый/беззнаковый) операндов `a_i`, `b_i` и результата `result_o`: - Если сигнал принимает значение `1` ("верхнее" положение переключателя), то операнды и результат интерпретируются и отображаются как **знаковые** числа. - Если сигнал принимает значение `0` ("нижнее" положение переключателя), то операнды и результат интерпретируются и отображаются как **беззнаковые** числа. Таким образом, область допустимых значений операндов: - При знаковой интерпретации: `[-16:15]` - При беззнаковой интерпретации: `[0:31]` Числа на семисегментных индикаторах отображаются в **десятичной** системе счисления. Блок результата отображает знак и 3 наименее значимые **цифры** (разряды сотен, десятков, единиц) результата с учетом его интерпретации как знаковое/беззнаковое число. Например, результат операции вычитания `0 - 1` при знаковой интерпретации отобразится как `-1` на семисегментых индикаторах, а при беззнаковой интерпретации как `295` (3 наименее значимые цифры числа `4 294 967 295`). Светодиоды, расположенные над переключателями, отображают 15 бит результата и флаг. То есть `led[15]` соединен с `flag_o` сигналом `alu`, а `led[14:0]` — с `result_o[14:0]`. На _рис. 2_ показан пример сложения `12 + (-16) = -4`. ![../../../.pic/Labs/board%20files/nexys_alu_12_plus_minus_16.drawio.svg](../../../.pic/Labs/board%20files/nexys_alu_12_plus_minus_16.drawio.svg) _Рисунок 2. Использование АЛУ для вычисления выражения `12 + (-16)` в ПЛИС._ Попробуйте выставить на переключателях различные операции (сложение, вычитание, сдвиг и сравнения), посмотрите различие между знаковыми/беззнаковыми операциями, убедитесь, что все работает исправно, и сдавайте работу.