Files
APS/Labs/02. Arithmetic-logic unit/board files/README.md
BROsandr a01446eb43 brosandr.lab_02_alu (#62)
* Feat(02_Alu):Перепиcывание board модуля

* Fix(02_Alu):Замена .v->.sv в board файле

* Feat(pic/labs/board):Доб-ие пикчи alu_structure

* Ref(pic/labs_board):Обн-ие nexys_alu_structure

* Ref(pic/labs/board):Улуч-ие nexys_alu_struct

* Ref(02_Alu/board):Замена назв-ий переменных в nexys_alu

* Fix(02_Alu/board):Доб-ие @negedge arstn_i в регистр an

* Ref(02_Alu/board):Переписывание форм-ия operand_* на assign

* Ref(pic/labs/board):Rename ...svg->...drawio.svg

* Ref(labs/02_Alu/nexys_alu):Перевод на bcd

* Fix(labs/02_alu/nexys):Испр-ие вывода operand_a

* Fix(labs/02_alu/nexys):Изм-ие разряд-ти bcd на 42

* Fix(.pic/labs/board/nexys_alu):Обн-ие разрядности

* Ref(labs/02_alu/board):Обн-ие README

* Ref(02_Alu/board):Дополнение описания оболочки

* Ref(labs/02_alu_board):Различные улучшения md

* Ref(labs_02_alu/board):Доб-ие точки в md

* Repo(pic/labs/board):Уд-ие лишних картинок

* Fix(labs/02_alu/board/md):Испр-ие alt названия

* Ref(labs/02_alu/board):Перевод тире на юникод симв

* Style(02_alu/board):Доб-ие абзаца после картинки

* Fix(02_alu/board):Apply suggestions from code review

Co-authored-by: Andrei Solodovnikov <VoultBoy@yandex.ru>

* Ref(02_alu/board):Уд-ие переносов внутри абзаца

* Style(02_alu):Доб-ие блейма

* Fix(pic/02_alu):Поворот SE

* Ref(pic/02_alu):Вырав-ие разярдностей и их цвета

* Fix(02_alu/nexys):Испр-ие блейма

* Ref(labs/02_alu/board):Переписывание bin2bcd

* Fix(02_Alu):Apply suggestions from code review

Co-authored-by: Andrei Solodovnikov <VoultBoy@yandex.ru>

* Ref(pic/02_alu/alu_struct):Испр-ие шрифтов

* Ref(pic/02_alu):Экспорт в svg

* Ref(pic/02_alu/board):Обн-ие экспозиции nexys_alu

* Ref(02_alu):Переделка маппинга свитчей в список

* Ref(pic/02_alu/board):Подвижка боксов A,B,Sum

* Ref(pic/02_alu/board):Замен цветов

* Style(01_adder/board):Склеивание строк в абзацах

* Ref(pic/02_alu/board):Испр-ие nexys_alu_struct

* Fix(02_alu/board):Apply suggestions from code review

Co-authored-by: Andrei Solodovnikov <VoultBoy@yandex.ru>

* Repo(02_alu/board):Доб-ие шапки создателя

---------

Co-authored-by: Andrei Solodovnikov <VoultBoy@yandex.ru>
2024-02-20 17:09:37 +03:00

42 lines
4.4 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Проверка работы арифметико-логического устройства в ПЛИС
После того, как вы проверили на моделировании АЛУ, вам необходимо проверить его работу на прототипе в ПЛИС.
Инструкция по реализации прототипа описана [здесь](../../../Vivado%20Basics/How%20to%20program%20an%20fpga%20board.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 наименее значимые цифры числа `4294967295`).
Светодиоды, расположенные над переключателями, отображают 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)` в ПЛИС._
Попробуйте выставить на переключателях различные операции (сложение, вычитание, сдвиг и сравнения), посмотрите различие между знаковыми/беззнаковыми операциями, убедитесь, что все работает исправно, и сдавайте работу.