From 4713aa18e2e3e87b851c081a800ba285f37f740a Mon Sep 17 00:00:00 2001 From: alexkharl Date: Mon, 12 Feb 2024 23:19:32 +0300 Subject: [PATCH] =?UTF-8?q?Style(01=5Fadder=5Fboard):=D0=A0=D0=B0=D0=B7?= =?UTF-8?q?=D0=B1=D0=B8=D0=B2=D0=BA=D0=B0=20=D0=B4=D0=BB=D0=B8=D0=BD=D0=BD?= =?UTF-8?q?=D1=8B=D1=85=20=D1=81=D1=82=D1=80=D0=BE=D0=BA=20=D0=B2=20md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Labs/01. Adder/board files/README.md | 40 +++++++++++++++++++++------- 1 file changed, 30 insertions(+), 10 deletions(-) diff --git a/Labs/01. Adder/board files/README.md b/Labs/01. Adder/board files/README.md index 1946f9a..a360a6e 100644 --- a/Labs/01. Adder/board files/README.md +++ b/Labs/01. Adder/board files/README.md @@ -1,10 +1,21 @@ # Проверка работы полного 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) @@ -16,19 +27,28 @@ _Рисунок 1. Пример иерархии проекта с модуле _Рисунок 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) _Рисунок 3. Использование сумматора для вычисления выражения `0x48 + 0x18` в ПЛИС._ -Дальше нужно создать битстрим и прошить его в ПЛИС по [инструкции](../../../Vivado%20Basics/How%20to%20program%20an%20fpga%20board.md). +Дальше нужно создать битстрим и прошить его в ПЛИС по +[инструкции](../../../Vivado%20Basics/How%20to%20program%20an%20fpga%20board.md).