Задача
Передавать байт по последовательному интерфейсу в формате 8N1: старт-бит, 8 бит данных, стоп-бит.
Тип схемы и среда
Последовательная схема: сдвиговый регистр кадра + счётчик битов, темп задаёт внешний строб baud_en.
Алгоритм работы
По start кадр (стоп, данные, старт) загружается в сдвигатель. Каждый строб скорости выдвигает младший бит на линию tx и уменьшает счётчик. Линия покоя — единица.
Код на AHDL
% Проект 16: передатчик UART 8N1 % SUBDESIGN ahdl_16_uart_peredatchik ( clk, clrn : INPUT; baud_en : INPUT; % импульс на скорости передачи % start : INPUT; data[7..0]: INPUT; tx : OUTPUT; busy : OUTPUT; ) VARIABLE shifter[9..0] : DFF; % стоп, данные[7..0], старт % bitcnt[3..0] : DFF; active : DFF; BEGIN shifter[].clk = clk; shifter[].clrn = clrn; bitcnt[].clk = clk; bitcnt[].clrn = clrn; active.clk = clk; active.clrn = clrn; IF !active.q THEN active.d = start; shifter[].d = (VCC, data[], GND); bitcnt[].d = 10; IF start THEN active.d = VCC; END IF; ELSIF baud_en THEN shifter[].d = (VCC, shifter[9..1].q); bitcnt[].d = bitcnt[].q - 1; IF bitcnt[].q == 1 THEN active.d = GND; END IF; ELSE shifter[].d = shifter[].q; bitcnt[].d = bitcnt[].q; active.d = active.q; END IF; tx = !active.q # shifter[0].q; busy = active.q; END;
Пояснения
Внешний генератор baud_en задаёт скорость (например, из делителя). Порядок бит UART — младшим вперёд, поэтому сдвиг вправо.
Инструменты и справочники по теме
📦 help-user.ru — скупка и ремонт компьютерной техники. Продать ноутбук, ПК, комплектующие — help-user.ru.
Что дальше
Скачайте ahdl_16_uart_peredatchik.tdf, создайте проект в MAX+PLUS II или Quartus,
назначьте выводы под свою плату и скомпилируйте. Остальные 49 разработок — в
разделе проектов на AHDL.