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

VGA-развёртка 640×480

Генератор синхроимпульсов и координат пикселя

Задача

Сформировать сигналы HSYNC/VSYNC и координаты активного пикселя для видеорежима 640×480@60 Гц.

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

Последовательная схема: счётчик пикселей (0…799) и счётчик строк (0…524) при тактовой 25 МГц.

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

Горизонтальный счётчик считает 800 тактов на строку, вертикальный — 525 строк на кадр. Синхроимпульсы активны в интервалах гашения, de — в зоне 640×480.

Код на AHDL

ahdl_33_vga_razvertka.tdf↓ скачать .tdf
% Проект 33: генератор VGA-развёртки 640x480 %
SUBDESIGN ahdl_33_vga_razvertka
(
    clk, clrn : INPUT;    % 25 МГц %
    hsync, vsync : OUTPUT;
    hactive[9..0]: OUTPUT;
    vactive[9..0]: OUTPUT;
    de        : OUTPUT;
)
VARIABLE
    hc[9..0] : DFF;
    vc[9..0] : DFF;
BEGIN
    hc[].clk = clk; hc[].clrn = clrn;
    vc[].clk = clk; vc[].clrn = clrn;

    IF hc[].q == 799 THEN
        hc[].d = 0;
        IF vc[].q == 524 THEN vc[].d = 0; ELSE vc[].d = vc[].q + 1; END IF;
    ELSE
        hc[].d = hc[].q + 1;
        vc[].d = vc[].q;
    END IF;

    hsync = !((hc[].q >= 656) & (hc[].q < 752));
    vsync = !((vc[].q >= 490) & (vc[].q < 492));
    de    = (hc[].q < 640) & (vc[].q < 480);
    hactive[] = hc[].q;
    vactive[] = vc[].q;
END;

Пояснения

Стандартные тайминги: видимая зона 640×480, синхроимпульсы отрицательной полярности. Координаты hactive/vactive адресуют генератор изображения.

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

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

Что дальше

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