Files
APS/Labs/01. Adder/board files

Проверка работы полного 32-битного сумматора в ПЛИС

После того, как вы создали свой сумматор и проверили его в симуляции, вы можете использовать предложенный модуль окружения nexys_adder.sv, который позволяет связать вашу логику с периферией, расположенной на плате Nexys-A7. Для его подключения, скачайте и добавьте файл в проект, либо скопируйте содержимое в новый .sv файл вашего проекта. В окне Sources нажмите на него ПКМ и выберите Set as Top, после чего в иерархии он станет главным (название главного модуля выделено жирным шрифтом). Для того, чтобы дизайн мог физически подключиться к периферии, нужно в проекте выбрать Add or create constraints и подключить файл nexys_a7_100t.xdc. Иерархия проекта, готового к созданию битстрима, показана на рисунке 1.

../../../.pic/Labs/board%20files/nexys_adder0.png

Рисунок 1. Иерархия проекта полного тридцатидвухбитного сумматора

После этого наше устройство будет выглядеть, как представлено на рисунке 2:

../../../.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

Рисунок 3. Использование сумматора выражения 0x48 + 0x18 в ПЛИС

Для прошивки ПЛИС подключите утройство через USB, включите питание переключателем, выполните синтез и имплементацию вашего дизайна и сгенерируйте битстрим. Если на этом этапе у вас возникают ошибки, постарайтесь ее исправить с помощью инструкции по работе с ошибками синтеза. После этого выберите в левом меню Open Target - Auto Connect, затем Program Device и ваше устройство прошьется. Процедура запуска генерации битстрима показана на рисунке 4, а прошивка сгенерированного битстрима в ПЛИС - на рисунке 5.

../../../.pic/Labs/board%20files/Program_Device1.png

Рисунок 4. Генерация битстрима

../../../.pic/Labs/board%20files/Program_Device2.png

Рисунок 5. Прошивка битстрима в ПЛИС

Попробуйте выставить на переключателях различные слагаемые, убедитесь, что все работает исправно и сдавайте работу.