* Feat(02_Alu):Перепиcывание board модуля * Fix(02_Alu):Замена .v->.sv в board файле * Feat(pic/labs/board):Доб-ие пикчи alu_structure * Ref(pic/labs_board):Обн-ие nexys_alu_structure * Ref(pic/labs/board):Улуч-ие nexys_alu_struct * Ref(02_Alu/board):Замена назв-ий переменных в nexys_alu * Fix(02_Alu/board):Доб-ие @negedge arstn_i в регистр an * Ref(02_Alu/board):Переписывание форм-ия operand_* на assign * Ref(pic/labs/board):Rename ...svg->...drawio.svg * Ref(labs/02_Alu/nexys_alu):Перевод на bcd * Fix(labs/02_alu/nexys):Испр-ие вывода operand_a * Fix(labs/02_alu/nexys):Изм-ие разряд-ти bcd на 42 * Fix(.pic/labs/board/nexys_alu):Обн-ие разрядности * Ref(labs/02_alu/board):Обн-ие README * Ref(02_Alu/board):Дополнение описания оболочки * Ref(labs/02_alu_board):Различные улучшения md * Ref(labs_02_alu/board):Доб-ие точки в md * Repo(pic/labs/board):Уд-ие лишних картинок * Fix(labs/02_alu/board/md):Испр-ие alt названия * Ref(labs/02_alu/board):Перевод тире на юникод симв * Style(02_alu/board):Доб-ие абзаца после картинки * Fix(02_alu/board):Apply suggestions from code review Co-authored-by: Andrei Solodovnikov <VoultBoy@yandex.ru> * Ref(02_alu/board):Уд-ие переносов внутри абзаца * Style(02_alu):Доб-ие блейма * Fix(pic/02_alu):Поворот SE * Ref(pic/02_alu):Вырав-ие разярдностей и их цвета * Fix(02_alu/nexys):Испр-ие блейма * Ref(labs/02_alu/board):Переписывание bin2bcd * Fix(02_Alu):Apply suggestions from code review Co-authored-by: Andrei Solodovnikov <VoultBoy@yandex.ru> * Ref(pic/02_alu/alu_struct):Испр-ие шрифтов * Ref(pic/02_alu):Экспорт в svg * Ref(pic/02_alu/board):Обн-ие экспозиции nexys_alu * Ref(02_alu):Переделка маппинга свитчей в список * Ref(pic/02_alu/board):Подвижка боксов A,B,Sum * Ref(pic/02_alu/board):Замен цветов * Style(01_adder/board):Склеивание строк в абзацах * Ref(pic/02_alu/board):Испр-ие nexys_alu_struct * Fix(02_alu/board):Apply suggestions from code review Co-authored-by: Andrei Solodovnikov <VoultBoy@yandex.ru> * Repo(02_alu/board):Доб-ие шапки создателя --------- Co-authored-by: Andrei Solodovnikov <VoultBoy@yandex.ru>
Проверка работы арифметико-логического устройства в ПЛИС
После того, как вы проверили на моделировании АЛУ, вам необходимо проверить его работу на прототипе в ПЛИС.
Инструкция по реализации прототипа описана здесь.
На рис. 1 представлена схема прототипа в ПЛИС.
Рисунок 1. Структурная схема модуля nexys_alu
, где блоки SE
— знакорасширители.
Модуль nexys_alu
позволяет подавать данные на входы a_i
, b_i
, alu_op_i
, а также управлять интерпретацией знака операндов/результата с помощью переключателей.
Переключатели sw[15:0]
и сигналы, ими задаваемые, соотносятся следующим образом:
sw[15:11]
— операндa_i
.sw[10:6]
— операндb_i
.sw[5]
—sign_on
(назначение этого сигнала подробнее описано дальше по тексту).sw[4:0]
—alu_op_i
.
Сигнал sign_on
— определяет интерпретацию (знаковый/беззнаковый) операндов a_i
, b_i
и результата result_o
:
- Если сигнал принимает значение
1
("верхнее" положение переключателя), то операнды и результат интерпретируются и отображаются как знаковые числа. - Если сигнал принимает значение
0
("нижнее" положение переключателя), то операнды и результат интерпретируются и отображаются как беззнаковые числа.
Таким образом, область допустимых значений операндов:
- При знаковой интерпретации:
[-16:15]
- При беззнаковой интерпретации:
[0:31]
Числа на семисегментных индикаторах отображаются в десятичной системе счисления.
Блок результата отображает знак и 3 наименее значимые цифры (разряды сотен, десятков, единиц) результата с учетом его интерпретации как знаковое/беззнаковое число. Например, результат операции вычитания 0 - 1
при знаковой интерпретации отобразится как -1
на семисегментых индикаторах, а при беззнаковой интерпретации как 295
(3 наименее значимые цифры числа 4 294 967 295
).
Светодиоды, расположенные над переключателями, отображают 15 бит результата и флаг. То есть led[15]
соединен с flag_o
сигналом alu
, а led[14:0]
— с result_o[14:0]
.
На рис. 2 показан пример сложения 12 + (-16) = -4
.
Рисунок 2. Использование АЛУ для вычисления выражения 12 + (-16)
в ПЛИС.
Попробуйте выставить на переключателях различные операции (сложение, вычитание, сдвиг и сравнения), посмотрите различие между знаковыми/беззнаковыми операциями, убедитесь, что все работает исправно, и сдавайте работу.