AFON//Радиотехник
AHDL · проект 17/50

Приёмник UART

Приём кадра 8N1 по стробу скорости

Задача

Принять байт из последовательной линии в формате 8N1 и выставить признак готовности.

Тип схемы и среда

Последовательная схема: детект старт-бита, сдвиговый приём 8 бит, флаг готовности.

Алгоритм работы

При обнаружении старт-бита (rx=0) активируется приём. По стробам скорости в сдвиговый регистр заходят 8 бит; по завершении данные выставляются и поднимается ready.

Код на AHDL

ahdl_17_uart_priemnik.tdf↓ скачать .tdf
% Проект 17: приёмник UART 8N1 (упрощённый, по baud_en) %
SUBDESIGN ahdl_17_uart_priemnik
(
    clk, clrn : INPUT;
    baud_en   : INPUT;
    rx        : INPUT;
    data[7..0]: OUTPUT;
    ready     : OUTPUT;
)
VARIABLE
    shifter[7..0] : DFF;
    bitcnt[3..0]  : DFF;
    active        : DFF;
    rdy           : DFF;
BEGIN
    shifter[].clk = clk; shifter[].clrn = clrn;
    bitcnt[].clk  = clk; bitcnt[].clrn  = clrn;
    active.clk    = clk; active.clrn    = clrn;
    rdy.clk       = clk; rdy.clrn       = clrn;

    IF !active.q THEN
        rdy.d = GND;
        IF !rx THEN
            active.d  = VCC;
            bitcnt[].d = 8;
        ELSE
            active.d = GND;
            bitcnt[].d = bitcnt[].q;
        END IF;
        shifter[].d = shifter[].q;
    ELSIF baud_en THEN
        IF bitcnt[].q == 0 THEN
            active.d = GND;
            rdy.d    = VCC;
            shifter[].d = shifter[].q;
            bitcnt[].d  = 0;
        ELSE
            shifter[].d = (rx, shifter[7..1].q);
            bitcnt[].d  = bitcnt[].q - 1;
            active.d = VCC;
            rdy.d = GND;
        END IF;
    ELSE
        shifter[].d = shifter[].q;
        bitcnt[].d  = bitcnt[].q;
        active.d    = active.q;
        rdy.d       = rdy.q;
    END IF;

    data[] = shifter[].q;
    ready  = rdy.q;
END;

Пояснения

В полной реализации строб выборки смещают на середину бита. Здесь темп задаёт внешний baud_en для наглядности логики.

Инструменты и справочники по теме

📦 help-user.ru — скупка и ремонт компьютерной техники. Продать ноутбук, ПК, комплектующие — help-user.ru.

Что дальше

Скачайте ahdl_17_uart_priemnik.tdf, создайте проект в MAX+PLUS II или Quartus, назначьте выводы под свою плату и скомпилируйте. Остальные 49 разработок — в разделе проектов на AHDL.