Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

лабы / лаба 4 / 00_лаба_4_4_мпу_отчёт

.pdf
Скачиваний:
0
Добавлен:
13.05.2026
Размер:
562.65 Кб
Скачать

Министерство цифрового развития, связи и массовых коммуникаций Российской Федерации

Ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования

Московский технический университет связи и информатики

___________________________________________________________________

Факультет

«Радио и телевидение»

Кафедра

«Радиотехнических систем»

Лабораторная работа №4 по дисциплине «Микропроцессорные устройства»

«Изучение принципов работы универсального асинхронного приёмопередатчика (UART)»

Выполнили

 

 

Студент группы БРВ2201

_________________________

Велит А.И.

Студент группы БРВ2201

_________________________

Мусаев Д.Ш.

Студент группы БРВ2201

_________________________

Зейналов Р.А.

Проверил

 

 

Ассистент кафедры РТС

_________________________

Шубин Д.Н.

Москва 2025

1. ЦЕЛЬ РАБОТЫ

Целями выполняемой лабораторной работы являются: изучение принципов создания проектов полностью на языке VHDL; изучение принципов работы интерфейса UART.

2. ТЕОРИТИЧЕСКАЯ ЧАСТЬ

Основной алгоритм работы находится в файле GPIO_demo.

Первое, что есть – это определение интерфейса взаимодействия с модулем:

где представлены следующие порты:

SW (вход) – переключатели, задающие значение для передачи;

BTN (вход) – кнопки управления;

CLK (вход) – тактовый сигнал системы;

LED (выход) – светодиоды для индикации состояния;

UART_TXD (выход) – последовательный выход UART.

Основной модуль использует два компонента: UART_TX_CTRL (осуществляет передачу байтов данных по линии UART_TX); btn_debounce (осуществляет формирования стабильных сигналов кнопок BTN, исключая механический дребезг кнопок).

Также в файле объявлен особый тип данный для состояния UART: UART_STATE_TYPE.

где:

RST_REG – сброс автомата;

LD_INIT_STR – формирование начальной строки;

SEND_CHAR – передача символа через UART;

RDY_LOW – ожидание начала передачи;

WAIT_RDY– ожидание окончания передачи;

WAIT_BTN – ожидание нажатия кнопки;

LD_BTN_STR – загрузка строки при нажатии кнопки.

Для строк определён отдельный тип данных CHAR_ARRAY, а также фиксированы длины определённых строк:

И служебные сигналы передачи: sendStr (содержит текущую передаваемую строку), strEnd (содержит длину передаваемой строки), strIndex (содержит индекс следующего символа передаваемой строки).

Отдельно задаются сигналы для определения нажатия кнопок:

и служебные сигналы контроля UART.

Управление светодиодами осуществляется нажатием пятой (BNT(4)) кнопки: если кнопка нажата, то все светодиоды гаснут, без нажатия светодиоды отображают состояние переключателей.

Обработка устранения дребезга кнопок осуществляется по фронту импульса опорной частоты вызовом компонента btn_debounce.

Итоговое значение кнопки получается логическим умножением текущего состояния кнопки и состояния из модуля btn_debounce:

При этом сигнал btnDetect активен ровно один такт.

Следующим основным блоком кода является описание логики работы состояния UART: процесс определяет, в каком состоянии находиться UARTконтроллер и какие действия выполнять: если нажата кнопка BTN(4), то начнётся передача. При старте формируется строка LD_INIT_STR, далее идёт посимвольная передача по UART, а после окончания передачи модуль переходит в режим ожидания нажатия кнопки BTN(4).

Формирование строки для передачи осуществляется процессом по импульсам тактовой частоты. Изначально создаются две строки: STR0 и STR1, заполненные пробелами. Так как UART интерпретирует каждый символ как 8-ми битный ASCII код, то и значения представлены в нём же (символ пробела X''20"). На каждом фронте тактового импульса проверяется состояние LD_INIT_STR: если оно активно, то последовательно в STR0 записывается текущее состояние переключателей SW. В результате получается строка, отражающая состояние переключателей SW в текстовом виде, которая и отправляется на передачу. Если кнопки не нажаты, то на выход передаётся строка пробелов STR1.

Отдельно описан контроль состояния текущего индекса символа и переход к следующему байту при передаче:

Также в модуле присутствует описание работы сигналов UART: при появлении состояния SEND_CHAR на вход uartData подаётся текущий символ из массива sendStr, а сигнал uartSend на один такт становится единицей, запуская передачу.

3. ЭКСПЕРИМЕНТАЛЬНАЯ ЧАСТЬ

В качестве исходных данных для выполнения экспериментальной части лабораторной работы выступают описанные выше файлы.

3.1. Симуляция с исходными файлами

Необходимо произвести симуляцию работы платы с исходными файлами: то есть кнопка BTN гасит все светодиоды при нажатии.

Результаты симуляции представлены ниже. на рисунке 2.1.1.

Рисунок 2.1.1 – Результаты симуляции исходных файлов

На рисунке 2.1.1 происходит следующее:

Опорный сигнал CLK установлен на частоту 100 МГц;

Сигнал BTN изначально установлен на 00000, однако в момент времени 0.2 мс значение BTN(4) устанавливается на 1 на 50 нс, а потом снова устанавливается на 0, что инициирует отправку данных.

Сигнал переключателей SW изначально установлен в позицию 10101010 и остаётся неизменным на протяжении всей симуляции.

Выходной сигнал LED изменяется в зависимости от нажатия BTN (4): изначально он повторяет значения SW, а в момент нажатия кнопки BTN(4) становится 00000000.

Пин uart_txd отражает передачу данных: всего передаётся 10 бит: старт-бит (0), 8 бит данных (по биту на символ) и стоп-бит (1).

Отдельно стоит заметить, что различная ширина импульсов при симуляции возникает из-за того, отправка битов по uart_txd осуществляется по фронту импульса синхронизации: смена бита txBit осуществляется по LOAD_BIT, а счётчик времени по bitTmr в состоянии SEND_BIT. То есть, если между этими двумя состояниями возникает тактовый переход или несовпадение момента установки txBit с обнулением bitTmr, один бит длится несколько периодов, а не один.

4.ВЫВОДЫ

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

Соседние файлы в папке лаба 4