Files
APS/Labs/01. Adder/board files/README.md

35 lines
4.5 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.

# Проверка работы полного 32-битного сумматора в ПЛИС
После того, как вы создали проверили на моделировании 32-разрядный сумматор, вам необходимо проверить его работу на прототипе в ПЛИС.
Для этого вам потребуется модуль верхнего уровня [`nexys_adder.sv`](nexys_adder.sv), который позволяет связать вашу логику с периферией, расположенной на плате `Nexys-A7`. Для его подключения, скачайте и добавьте файл в проект, либо скопируйте содержимое в новый `.sv` файл вашего проекта. В окне `Sources` нажмите на него ПКМ и выберите `Set as Top`, после чего в иерархии он станет главным (название главного модуля выделено **жирным** шрифтом).
Для того, чтобы входы и выходы этого модуля были соединены с нужными входами и выходами ПЛИС, нужно в проекте выбрать `Add or create constraints` и подключить файл [`nexys_a7_100t.xdc`](nexys_a7_100t.xdc). На _рис. 1_ представлен пример иерархии проекта, готовой к созданию битстрима (двоичного файла, предназначенного для конфигурации ПЛИС таким образом, чтобы она воспроизводила логику описанного вами модуля).
![../../../.pic/Labs/board%20files/nexys_adder0.png](../../../.pic/Labs/board%20files/nexys_adder0.png)
_Рисунок 1. Пример иерархии проекта с модулем верхнего уровня `nexys_adder`._
После этого наше устройство будет выглядеть, как представлено на _рис. 2_:
![../../../.pic/Labs/board%20files/nexys_adder1.drawio.svg](../../../.pic/Labs/board%20files/nexys_adder1.drawio.svg)
_Рисунок 2. Структурная схема модуля `nexys_adder`._
Модуль `nexys_adder` позволяет подавать данные с переключателей на входы `a_i`, `b_i`, а так же передавать входной бит переноса с помощью кнопки `BTND`.
Переключатели делятся пополам между операндами `a_i`, `b_i` (переключатели `sw[7:0]` относятся к операнду `b_i`, переключатели `sw[15:8]` относятся к операнду `a_i`). Так как переключателей всего 16, каждому операнду достается только по 8. Таким образом, с переключателей можно ввести 8 младших бит каждого из операнда.
Старшие биты дополняются нулями, это значит что на нашем прототипе можно складывать числа в диапазоне [0:255] (плюс можно прибавлять входной бит переноса), а значит диапазон результатов будет [0:511].
Семисегментные индикаторы отображают на левом блоке значение операндов `a_i` и `b_i` в шестнадцатеричном формате, а на правом — результат сложения. Светодиоды, расположенные над переключателями, дублируют сумму, представляя ее в двоичном формате.
На _рис. 3_ показано сложение `(A=0x48) + (B=0x18) == 0x60` при нулевом входном преносе (нулевом, тк не нажата кнопка `BTND` aka сигнал `Pin`)
![../../../.pic/Labs/board%20files/nexys_adder2.png](../../../.pic/Labs/board%20files/nexys_adder2.png)
_Рисунок 3. Использование сумматора для вычисления выражения `0x48 + 0x18` в ПЛИС._
Дальше нужно создать битстрим и прошить его в ПЛИС по [инструкции](../../../Vivado%20Basics/How%20to%20program%20an%20fpga%20board.md).