Skip to content

Commit

Permalink
brosandr.01_Adder (#59)
Browse files Browse the repository at this point in the history
* Ref(01_Adder):Уд-ие лога о результатых симуляции

* Ref(01_Adder):Улучш-ие логирования

* Ref(01_Adder_32):Доб-ие timeunit

* Fix(01_Adder):Доб-ие #1 для ожидания line_dump

* Ref(01_Adder):Доб-ие инфы в тб для 32 битного сумматора

* Ref(01_Adder):Дополнение информацией board файла

* Ref(01_Adder):Итализация названия рисунка 3

* Ref(01_Adder):Испр-ие грамматических ошибок в board файле

* Revert "Ref(01_Adder):Доб-ие инфы в тб для 32 битного сумматора"

This reverts commit 96380b5.

* Revert "Fix(01_Adder):Доб-ие #1 для ожидания line_dump"

This reverts commit 34670f2.

* Revert "Ref(01_Adder_32):Доб-ие timeunit"

This reverts commit 11c97ac.

* Revert "Ref(01_Adder):Улучш-ие логирования"

This reverts commit 92147fa.

* Revert "Ref(01_Adder):Уд-ие лога о результатых симуляции"

This reverts commit 33c8dda.

* Ref(01_Adder):Испр-ие грамматики в README board files

* Ref(01_Adder): Применение правок по MD bordfiles после ревью

Co-authored-by: Andrei Solodovnikov <[email protected]>

* Ref(01_Adder):Замена рисунка в MD board_files

* Ref(01_Adder):Замена текста на ссылку по прошивке плис в board_files

* Style(01_Adder):Испр-ие названия рисунков

* Ref(01_Adder):Доб-ие ссылки на source window в board files

* Ref(01_Adder):Испр-ие орфографии в md board_files

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

* Ref(01_Adder_board_md):Доб-ие номеров в кругах

* Style(01_Adder_board_md):Доб-ие диапазонов в блок кода

* Ref(01_Adder_board):Переименование файлов рисунков

* Ref(01_Adder_board_md):Замена html color на latex

Тк mardown не поддерживает html цвета

* Revert "Ref(01_Adder_board_md):Замена html color на latex"

This reverts commit 9076259.

* Fix(01_Adder):Применение правок из ревью к md board files

Co-authored-by: Andrei Solodovnikov <[email protected]>

* Ref(01_Adder):Уд-ие лишней ссылки на инструкцию прошивки

* Ref(01_Adder):Изм-ие номера рисунка

* Ref(01_Adder):Переделка рисунка с 48 + 18

* Ref(01_Adder):Улучшение читаемости структурной схемы

* Repo((.pic/labs/board files):Уд-ие неиспользуемых пикч

* Repo(board_files):Возврат program_device

* Repo:Перемещение пикчи how_to_program в соотв папку

---------

Co-authored-by: Andrei Solodovnikov <[email protected]>
  • Loading branch information
BROsandr and HepoH3 authored Feb 13, 2024
1 parent 0692ae3 commit fef390f
Show file tree
Hide file tree
Showing 9 changed files with 39 additions and 22 deletions.
Binary file removed .pic/Labs/board files/Program_Device1.png
Binary file not shown.
Binary file removed .pic/Labs/board files/nexys_adder1.png
Binary file not shown.
Binary file removed .pic/Labs/board files/nexys_adder2.png
Binary file not shown.
4 changes: 4 additions & 0 deletions .pic/Labs/board files/nexys_adder_48_plus_18.drawio.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 4 additions & 0 deletions .pic/Labs/board files/nexys_adder_structure.drawio.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
File renamed without changes
41 changes: 28 additions & 13 deletions Labs/01. Adder/board files/README.md
Original file line number Diff line number Diff line change
@@ -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` позволяет подавать данные с переключателей <span style="color:#FF6666;">❶</span> на входы `a_i`, `b_i`,
а так же передавать входной бит переноса с помощью кнопки <span style="color:#FF6666;">❷</span> `BTND` на вход `carry_i`.

Попробуйте выставить на переключателях различные слагаемые, убедитесь, что все работает исправно и сдавайте работу.
Переключатели делятся пополам между операндами `a_i`, `b_i` (переключатели `sw[7:0]` относятся к
операнду `b_i`, переключатели `sw[15:8]` относятся к операнду `a_i`). Так как переключателей
всего 16, каждому операнду достается только по 8. Таким образом, с переключателей можно ввести
8 младших бит каждого из операнда.

Старшие биты дополняются нулями, это значит что на нашем прототипе можно складывать числа в
диапазоне `[0:255]` (плюс можно прибавлять входной бит переноса),
а значит диапазон результатов будет `[0:511]`.

Семисегментные индикаторы <span style="color:#FF6666;">❸</span> отображают на левом блоке значение операндов `a_i` и `b_i`
в шестнадцатеричном формате, а на правом — результат сложения. Светодиоды <span style="color:#FF6666;">❹</span>,
расположенные над переключателями, дублируют сумму, представляя ее в двоичном формате.

На _рис. 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` в ПЛИС._
10 changes: 2 additions & 8 deletions Labs/02. Arithmetic-logic unit/board files/README.md
Original file line number Diff line number Diff line change
@@ -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). Если у вас уже подключен этот файл, необходимо заменить данные на те, которые предложены в текущей лабе.

После этого наше устройство будет выглядеть так:
Expand All @@ -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)

Попробуйте выставить на переключателях различные опкоды, такие как сложение, вычитание, сдвиг и сравнения, убедитесь, что все работает исправно и сдавайте работу.
2 changes: 1 addition & 1 deletion Vivado Basics/How to program an fpga board.md
Original file line number Diff line number Diff line change
Expand Up @@ -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. Последовательность действий для прошивки ПЛИС._

Expand Down

0 comments on commit fef390f

Please sign in to comment.