Style(01_adder_board):Разбивка длинных строк в md

This commit is contained in:
alexkharl
2024-02-12 23:19:32 +03:00
parent fb300f116c
commit 4713aa18e2

View File

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