* WIP: APS cumulative update * Update How FPGA works.md * Перенос раздела "Последовательностная логика" в отдельный док * Исправление картинки * Исправление оформления индексов * Переработка раздела Vivado Basics * Добавление картинки в руководство по созданию проекта * Исправление ссылок в анализе rtl * Обновление изображения в sequential logic * Исправление ссылок в bug hunting * Исправление ссылок * Рефактор руководства по прошивке ПЛИС * Mass update * Update fig_10 * Restore fig_02
Проверка работы арифметико-логического устройства в ПЛИС
После того, как вы проверили на моделировании АЛУ, вам необходимо проверить его работу на прототипе в ПЛИС.
Инструкция по реализации прототипа описана здесь.
На рис. 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) в ПЛИС.
Попробуйте выставить на переключателях различные операции (сложение, вычитание, сдвиг и сравнения), посмотрите различие между знаковыми/беззнаковыми операциями, убедитесь, что все работает исправно, и сдавайте работу.