diff --git a/.pic/Labs/board files/nexys_adder0.png b/.pic/Labs/board files/nexys_adder0.png new file mode 100644 index 0000000..4c9d2d6 Binary files /dev/null and b/.pic/Labs/board files/nexys_adder0.png differ diff --git a/Labs/01. Adder/board files/README.md b/Labs/01. Adder/board files/README.md index 6eb83fc..74c3245 100644 --- a/Labs/01. Adder/board files/README.md +++ b/Labs/01. Adder/board files/README.md @@ -1,23 +1,33 @@ -# Проверка работы Полного 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). +После того, как вы создали свой сумматор и проверили его в симуляции, вы можете использовать предложенный модуль окружения [`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. Иерархия проекта полного тридцатидвухбитного сумматора* + +После этого наше устройство будет выглядеть, как представлено на *рисунке 2*: ![../../../.pic/Labs/board%20files/nexys_adder1.png](../../../.pic/Labs/board%20files/nexys_adder1.png) -Подключенное окружение позволяет производить ввод входных значений (А, В и Pin) с помощью переключателей (номер переключателя отображен на самом краю платы), расположенных на плате. Операнд А задается переключателями 15-8, В: 7-0, Pin: тактовая кнопка BTND (нижняя из 5-ти, расположенных вместе в форме крестовины). Семисегментные индикаторы в шестнадцатеричном формате отображают на левом блоке слагаемые А и В, а на правом - результат сложения. На светодиодах, расположенных над переключателями отображается результат в двоичном формате. +*Рисунок 2. Структурная схема модуля `nexys_adder`*, где `A`, `B` - операнды, `Pin` - входной перенос (`carry`), `S` - сумма, `Pout` - выходной перенос для тридцати двух битов (не подключен), `Semseg` - сигнал подаваемый на семисегментные индикаторы -Управление сумматором через плату +Подключенное окружение позволяет производить ввод входных значений для сумматора (`A`, `B` и `carry` aka `Pin`) с помощью переключателей (номер переключателя написан под ним же) и кнопки `BTND`. Так как переключателей всего 16, то ими можно задать только нижние восемь бит тридцатидвухбитных операндов `A` и `B` (на остальные двадцать четыре бита подается константный `0`). Таким образом нижние восемь бит операнд `A` задается переключателями `15-8`, а нижние восемь бит операнда `B` - переключателями `7-0`, входной бит переноса `carry` - кнопкой `BTND` (нижняя кнопка в группе из пяти кнопок). Максимальное беззнаковое число, которое можно подать на операнд - `2⁸ = 256`. Максимальная сумма будет `255 + 255 = 510 = 0x1FE`. В таком случае сумма двух восьмибитных чисел занимает восемь бит (`0xFE`) плюс бит переноса (`1`). Семисегментные индикаторы в шестнадцатеричном формате отображают на левом блоке слагаемые `A` и `B` (их нижние восемь бит, разделенные точкой), а на правом - результат сложения (двенадцать бит для отображения еще и переноса). Светодиоды, расположенные над переключателями, дублируют сумму, представляя ее в двоичном формате. + +На *рисунке 3* представлено показано сложение `A=0x48 + B=0x18 = 0x60` при нулевом входном преносе (нулевом, тк не нажата кнопка `BTND` aka сигнал `Pin`) ![../../../.pic/Labs/board%20files/nexys_adder2.png](../../../.pic/Labs/board%20files/nexys_adder2.png) -Для прошивки ПЛИС подключите утройство через USB, включите питание переключателем, выполните синтез и имплементацию вашего дизайна и сгенерируйте битстрим. Если на этом этапе у вас возникают ошибки, постарайтесь исправить из с помощью [`инструкции по работе с ошибками синтеза`](../../../Vivado%20Basics/Elaboration%20failed.md). После этого выберите в левом меню `Open Target` - `Auto Connect`, затем `Program Device` и ваше устройство прошьется. +Рисунок 3. Использование сумматора выражения `0x48 + 0x18` в ПЛИС + +Для прошивки ПЛИС подключите утройство через USB, включите питание переключателем, выполните синтез и имплементацию вашего дизайна и сгенерируйте битстрим. Если на этом этапе у вас возникают ошибки, постарайтесь ее исправить с помощью [`инструкции по работе с ошибками синтеза`](../../../Vivado%20Basics/Elaboration%20failed.md). После этого выберите в левом меню `Open Target` - `Auto Connect`, затем `Program Device` и ваше устройство прошьется. Процедура запуска генерации битстрима показана на *рисунке 4*, а прошивка сгенерированного битстрима в ПЛИС - на *рисунке 5*. -Генерация битстрима ![../../../.pic/Labs/board%20files/Program_Device1.png](../../../.pic/Labs/board%20files/Program_Device1.png) -Прошивка ПЛИС +*Рисунок 4. Генерация битстрима* + ![../../../.pic/Labs/board%20files/Program_Device2.png](../../../.pic/Labs/board%20files/Program_Device2.png) +*Рисунок 5. Прошивка битстрима в ПЛИС* + Попробуйте выставить на переключателях различные слагаемые, убедитесь, что все работает исправно и сдавайте работу.