6.1 KiB
Проверка работы полного 32-битного сумматора в ПЛИС
После того, как вы создали свой сумматор и проверили его в симуляции, вы можете использовать предложенный модуль окружения nexys_adder.sv
, который позволяет связать вашу логику с периферией, расположенной на плате Nexys-A7
. Для его подключения, скачайте и добавьте файл в проект, либо скопируйте содержимое в новый .sv
файл вашего проекта. В окне Sources
нажмите на него ПКМ и выберите Set as Top
, после чего в иерархии он станет главным (название главного модуля выделено жирным шрифтом). Для того, чтобы дизайн мог физически подключиться к периферии, нужно в проекте выбрать Add or create constraints
и подключить файл nexys_a7_100t.xdc
. Иерархия проекта, готового к созданию битстрима, показана на рисунке 1.
Рисунок 1. Иерархия проекта полного тридцатидвухбитного сумматора
После этого наше устройство будет выглядеть, как представлено на рисунке 2:
Рисунок 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
)
Рисунок 3. Использование сумматора выражения 0x48 + 0x18
в ПЛИС
Для прошивки ПЛИС подключите утройство через USB, включите питание переключателем, выполните синтез и имплементацию вашего дизайна и сгенерируйте битстрим. Если на этом этапе у вас возникают ошибки, постарайтесь ее исправить с помощью инструкции по работе с ошибками синтеза
. После этого выберите в левом меню Open Target
- Auto Connect
, затем Program Device
и ваше устройство прошьется. Процедура запуска генерации битстрима показана на рисунке 4, а прошивка сгенерированного битстрима в ПЛИС - на рисунке 5.
Рисунок 4. Генерация битстрима
Рисунок 5. Прошивка битстрима в ПЛИС
Попробуйте выставить на переключателях различные слагаемые, убедитесь, что все работает исправно и сдавайте работу.