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

FIFO 8×8

Кольцевой буфер с указателями записи и чтения

Задача

Собрать очередь FIFO на 8 слов по 8 бит с признаками пустоты и заполненности.

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

Последовательная схема: массив ячеек + два кольцевых указателя с разрядом-переносом.

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

Указатели wp и rp по 4 бита (3 адресных + 1 бит оборота). Пусто — указатели равны; полно — адреса равны, а биты оборота различны.

Код на AHDL

ahdl_23_fifo.tdf↓ скачать .tdf
% Проект 23: FIFO 8 x 8 на кольцевых указателях %
SUBDESIGN ahdl_23_fifo
(
    clk, clrn : INPUT;
    wr, rd    : INPUT;
    din[7..0] : INPUT;
    dout[7..0]: OUTPUT;
    full      : OUTPUT;
    empty     : OUTPUT;
)
VARIABLE
    mem[7..0][7..0] : DFF;
    wp[3..0] : DFF;
    rp[3..0] : DFF;
BEGIN
    mem[][].clk = clk;
    wp[].clk = clk; wp[].clrn = clrn;
    rp[].clk = clk; rp[].clrn = clrn;

    empty = (wp[].q == rp[].q);
    full  = (wp[2..0].q == rp[2..0].q) & (wp[3].q != rp[3].q);

    IF wr & !full THEN
        mem[wp[2..0].q][].d = din[];
        wp[].d = wp[].q + 1;
    ELSE
        wp[].d = wp[].q;
    END IF;

    IF rd & !empty THEN
        rp[].d = rp[].q + 1;
    ELSE
        rp[].d = rp[].q;
    END IF;

    dout[] = mem[rp[2..0].q][].q;
END;

Пояснения

Дополнительный старший бит указателя различает состояния «пусто» и «полно» при равных адресах — стандартный приём для кольцевого FIFO.

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

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

Что дальше

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