Files
APS/Labs/01. Adder/board files/README.md

34 lines
6.1 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Проверка работы полного 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). Иерархия проекта, готового к созданию битстрима, показана на *рисунке 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)
*Рисунок 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)
*Рисунок 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. Прошивка битстрима в ПЛИС*
Попробуйте выставить на переключателях различные слагаемые, убедитесь, что все работает исправно и сдавайте работу.