diff --git a/.pic/Labs/board files/Program_Device1.png b/.pic/Labs/board files/Program_Device1.png deleted file mode 100644 index b284684..0000000 Binary files a/.pic/Labs/board files/Program_Device1.png and /dev/null differ diff --git a/.pic/Labs/board files/nexys_adder1.png b/.pic/Labs/board files/nexys_adder1.png deleted file mode 100644 index e2d5867..0000000 Binary files a/.pic/Labs/board files/nexys_adder1.png and /dev/null differ diff --git a/.pic/Labs/board files/nexys_adder2.png b/.pic/Labs/board files/nexys_adder2.png deleted file mode 100644 index 3b54398..0000000 Binary files a/.pic/Labs/board files/nexys_adder2.png and /dev/null differ diff --git a/.pic/Labs/board files/nexys_adder_48_plus_18.drawio.svg b/.pic/Labs/board files/nexys_adder_48_plus_18.drawio.svg new file mode 100644 index 0000000..b5e81cd --- /dev/null +++ b/.pic/Labs/board files/nexys_adder_48_plus_18.drawio.svg @@ -0,0 +1,4 @@ + + + +
0
1
0
0
1
0
0
0
0
0
0
1
1
0
0
0
a = 4816
b = 1816
A
B
Sum
carry_in
\ No newline at end of file diff --git a/.pic/Labs/board files/nexys_adder_structure.drawio.svg b/.pic/Labs/board files/nexys_adder_structure.drawio.svg new file mode 100644 index 0000000..696340b --- /dev/null +++ b/.pic/Labs/board files/nexys_adder_structure.drawio.svg @@ -0,0 +1,4 @@ + + + +
b_i[31:0]
b[7:0]
a_i[31:0]
a[7:0]
carry_i
nexys_adder
carry_in
fulladder32
sum_o
carry_o
semseg
a[7:0]
b[7:0]
A
B
Sum
1
2
3
4
carry_in
\ No newline at end of file diff --git a/.pic/Labs/board files/Program_Device2.png b/.pic/Vivado Basics/How to program an fpga board/fig_3.png similarity index 100% rename from .pic/Labs/board files/Program_Device2.png rename to .pic/Vivado Basics/How to program an fpga board/fig_3.png diff --git a/Labs/01. Adder/board files/README.md b/Labs/01. Adder/board files/README.md index 6eb83fc..cf95de2 100644 --- a/Labs/01. Adder/board files/README.md +++ b/Labs/01. Adder/board files/README.md @@ -1,23 +1,38 @@ -# Проверка работы Полного 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). +После того, как вы создали проверили на моделировании 32-разрядный сумматор, +вам необходимо проверить его работу на прототипе в ПЛИС. -После этого наше устройство будет выглядеть так: +Инструкция по реализации прототипа описана [здесь](../../../Vivado%20Basics/How%20to%20program%20an%20fpga%20board.md). -![../../../.pic/Labs/board%20files/nexys_adder1.png](../../../.pic/Labs/board%20files/nexys_adder1.png) -Подключенное окружение позволяет производить ввод входных значений (А, В и Pin) с помощью переключателей (номер переключателя отображен на самом краю платы), расположенных на плате. Операнд А задается переключателями 15-8, В: 7-0, Pin: тактовая кнопка BTND (нижняя из 5-ти, расположенных вместе в форме крестовины). Семисегментные индикаторы в шестнадцатеричном формате отображают на левом блоке слагаемые А и В, а на правом - результат сложения. На светодиодах, расположенных над переключателями отображается результат в двоичном формате. -Управление сумматором через плату -![../../../.pic/Labs/board%20files/nexys_adder2.png](../../../.pic/Labs/board%20files/nexys_adder2.png) +На _рис. 1_ представлена схема прототипа в ПЛИС. -Для прошивки ПЛИС подключите утройство через USB, включите питание переключателем, выполните синтез и имплементацию вашего дизайна и сгенерируйте битстрим. Если на этом этапе у вас возникают ошибки, постарайтесь исправить из с помощью [`инструкции по работе с ошибками синтеза`](../../../Vivado%20Basics/Elaboration%20failed.md). После этого выберите в левом меню `Open Target` - `Auto Connect`, затем `Program Device` и ваше устройство прошьется. +![../../../.pic/Labs/board%20files/nexys_adder_structure.drawio.svg](../../../.pic/Labs/board%20files/nexys_adder_structure.drawio.svg) -Генерация битстрима -![../../../.pic/Labs/board%20files/Program_Device1.png](../../../.pic/Labs/board%20files/Program_Device1.png) +_Рисунок 1. Структурная схема модуля `nexys_adder`._ -Прошивка ПЛИС -![../../../.pic/Labs/board%20files/Program_Device2.png](../../../.pic/Labs/board%20files/Program_Device2.png) +Модуль `nexys_adder` позволяет подавать данные с переключателей на входы `a_i`, `b_i`, +а так же передавать входной бит переноса с помощью кнопки `BTND` на вход `carry_i`. -Попробуйте выставить на переключателях различные слагаемые, убедитесь, что все работает исправно и сдавайте работу. +Переключатели делятся пополам между операндами `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` +в шестнадцатеричном формате, а на правом — результат сложения. Светодиоды , +расположенные над переключателями, дублируют сумму, представляя ее в двоичном формате. + +На _рис. 2_ показан пример сложения `0x48 + 0x18 = 0x60` при нулевом входном переносе. +(нулевом, т.к. не нажата кнопка `BTND`) + +![../../../.pic/Labs/board%20files/nexys_adder_48_plus_18.drawio.svg](../../../.pic/Labs/board%20files/nexys_adder_48_plus_18.drawio.svg) + +_Рисунок 2. Использование сумматора для вычисления выражения `0x48 + 0x18` в ПЛИС._ diff --git a/Labs/02. Arithmetic-logic unit/board files/README.md b/Labs/02. Arithmetic-logic unit/board files/README.md index 1117c3c..728b1df 100644 --- a/Labs/02. Arithmetic-logic unit/board files/README.md +++ b/Labs/02. Arithmetic-logic unit/board files/README.md @@ -1,5 +1,7 @@ # Проверка работы арифметико-логического устройства в ПЛИС +Инструкция по реализации прототипа описана [здесь](../../../Vivado%20Basics/How%20to%20program%20an%20fpga%20board.md). + После того, как вы создали свое АЛУ и проверили его на прохождение тестирующего модуля, вы можете использовать предложенный модуль окружения [`nexys_alu.v`](nexys_alu.v), который позволяет связать вашу логику с периферией, расположенной на плате `Nexys-A7`. Для его подключения, скачайте и добавьте файл в проект, либо скопируйте содержимое в новый `.v` файл вашего проекта. В окне `Sources` нажмите на него ПКМ и выберите `Set as Top`, после чего в иерархии он станет главным, подключив ваш собственный модуль АЛУ. Для того, чтобы дизайн мог физически подключиться к периферии, нужно в проекте выбрать `Add Sources`, `Add or create constraints` и подключить файл [`nexys_a7_100t.xdc`](nexys_a7_100t.xdc). Если у вас уже подключен этот файл, необходимо заменить данные на те, которые предложены в текущей лабе. После этого наше устройство будет выглядеть так: @@ -12,12 +14,4 @@ ![../../../.pic/Labs/board%20files/nexys_alu.png](../../../.pic/Labs/board%20files/nexys_alu.png) -Для прошивки ПЛИС подключите утройство через USB, включите питание переключателем, выполните синтез и имплементацию вашего дизайна и сгенерируйте битстрим. Если на этом этапе у вас возникают ошибки, постарайтесь исправить из с помощью [`инструкции по работе с ошибками синтеза`](../../../Vivado%20Basics/Synthesis%20failed.md). После этого выберите в левом меню `Open Target` - `Auto Connect`, затем `Program Device` и ваше устройство прошьется. - -Генерация битстрима -![../../../.pic/Labs/board%20files/Program_Device1.png](../../../.pic/Labs/board%20files/Program_Device1.png) - -Прошивка ПЛИС -![../../../.pic/Labs/board%20files/Program_Device2.png](../../../.pic/Labs/board%20files/Program_Device2.png) - Попробуйте выставить на переключателях различные опкоды, такие как сложение, вычитание, сдвиг и сравнения, убедитесь, что все работает исправно и сдавайте работу. diff --git a/Vivado Basics/How to program an fpga board.md b/Vivado Basics/How to program an fpga board.md index e1387db..87aa9a8 100644 --- a/Vivado Basics/How to program an fpga board.md +++ b/Vivado Basics/How to program an fpga board.md @@ -25,7 +25,7 @@ _Рисунок 1. Расположение кнопки `Generate Bitstream`._ 1. Убедитесь, что выбран пункт `Open Hardware Manager` в окне `Bitstream` и нажмите на OK. 2. Кликните `Open target` → `Auto Connect` → `Program device` → `Program`. -![../.pic/Labs/board%20files/Program_Device2.png](../.pic/Labs/board%20files/Program_Device2.png) +![../.pic/Vivado%20Basics/How%20to%20program%20an%20fpga%20board/fig_3.png](../.pic/Vivado%20Basics/How%20to%20program%20an%20fpga%20board/fig_3.png) _Рисунок 2. Последовательность действий для прошивки ПЛИС._