Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-13 06:58
Это полезное руководство покажет вам, как создать матричный решатель 2 на 2, реализовав модуль последовательного терминала UART, а также модуль матричного решателя. Пользователь сможет ввести матрицу 2 на 2, и тогда реализованный дизайн выдаст решение линейной системы.
Для использования этого кода вам потребуется:
- Плата Digilent Basys 3 FPGA
- Компьютер с программным обеспечением Xilinx Vivado (подойдет Webpack Edition). Для этого модуля мы использовали версию 2017.2.
- Кабель Micro USB (с возможностью передачи данных)
Авторы: Дрю Миллер, EE Major, Cal Poly SLO, Sukhdeep Singh, EE Major, Cal Poly SLO Класс: Цифровой дизайн
- Инструктор EE / CPE 133: Джозеф Калленес
Источники:
- UART_TX, UART_RX от:
- Отказ от:
Функция деления двух беззнаковых чисел:
Шаг 1: Шаг 1: Как это работает
Входы: пользователь вводит линейную систему в компьютерный терминал, а затем модуль UART преобразует их в массив, которым модуль матричного решателя должен манипулировать. Модуль UART взаимодействует с пользователем и позволяет им вводить соответствующую матрицу, а также направляет их для правильного ввода данных. В системе также есть переключатель сброса / включения, связанный с крайним левым переключателем на плате Basys3.
Выходы: результаты решателя матрицы передаются через интерфейс модуля UART и затем отображаются на компьютерном терминале вместе с решениями, перечисленными на экране. Матричный решатель выводит стандартные логические векторы без знака в модуль UART, который преобразует их в более удобные для пользователя выходные данные, чтобы пользователь мог их оценить. Текущий решатель матриц может вводить только числа до 15, а результат вывода должен быть чистым целым числом, иначе программа решателя матриц не сможет вывести правильное решение.
Модуль «последовательного управления» верхнего уровня: пользователь вводит желаемую линейную систему в этот модуль через модули UART_TX и UART_RX, и он преобразует входные данные с компьютерного терминала в массив стандартных логических векторов, которые обрабатываются модулем матричного решателя. Затем модуль решателя матриц возвращает массив стандартных логических векторов, которые затем отображаются на экране последовательным интерфейсом UART. Передача и получение данных через модули UART осуществляется за счет использования в этом модуле очень длинного конечного автомата.
Модуль UART_TX: пользователь вводит 8-битный стандартный логический вектор и сигнал отправки для отправки данных через интерфейс USB. Пока он отправляет данные, уровень сигнала TX_Active высокий. После отправки данных сигнал TX_Done подает импульс.
Модуль UART_RX: пользователь получает 8 бит данных за раз от интерфейса USB. Импульс от RX_DV является индикатором того, что данные были получены и что можно прочитать векторную логику RX_Byte.
Модуль Matrix Solver: Матричный Solver получает вмененный массив от модуля UART, который представляет матрицу. Затем решатель матриц преобразует каждое число в линейной системе в целые числа, чтобы упростить работу с ними. Внутри модуля матричного решателя есть несколько подмодулей. Первый подмодуль - это inverse_matrix_1, который берет матрицу, а затем дает обратную матрицу. Следующий подмодуль - это умножитель, который умножает total_matrix на обратную матрицу с использованием стандартных матричных операций. Наконец, главный модуль сопоставляет их вместе, чтобы вывести один единственный ответ.
Шаг 2: Шаг 2: Программирование платы Basys 3
После того, как вы получили исходный код снизу, загрузите его на плату basys 3, чтобы использовать интерфейс.
reference.digilentinc.com/basys3/refmanual
Шаг 3: Шаг 3: Как его использовать
Используйте последовательный интерфейс на скорости 9600 бод для связи с Basys3 UART. Я использовал screen в Linux со следующей командой:
экран / dev / ttyUSB1 9600
Чтобы сделать это в Linux, мне пришлось добавить своего пользователя в группу «dialout». В Windows шпатлевка должна работать, а в MacOSX процесс должен быть аналогичен процессу в Linux.
Установка крайнего левого переключателя в положение «включено» запускает матричный решатель. Выключение этого параметра сбрасывает решатель матриц.