§ Верхний уровень

Ниже представлен код простой генерации видеосигнала для D-Sub 640x480 (показывается белый экран)
Топ-уровень для 4-х битного цвета
adapter AdapterUnit
(
    .clock_25   (clock_25),
    .vga_hs     (VGA_HS),
    .vga_vs     (VGA_VS),
    .vga_r      (VGA_R),
    .vga_g      (VGA_G),
    .vga_b      (VGA_B),
);

§ Разрешение 640x480

module adapter
(
    input  wire       clock_25,
    output wire       vga_hs,
    output wire       vga_vs,
    output wire [3:0] vga_r,
    output wire [3:0] vga_g,
    output wire [3:0] vga_b
);

reg [9:0] X; // 0..799
reg [9:0] Y; // 0..524

wire xmax = X == 10'h31f;
wire ymax = Y == 10'h20c;

assign vga_hs = X < 10'h2C0; // Негативная полярность
assign vga_vs = Y > 10'h20A; // Позитивная полярность

// Видимая область рисования
wire visible = (X > 10'h02F) && (X < 10'h2B0) && (Y > 10'h020) && (Y < 10'h201);

// -----------------------------------------------------------------------------
assign vga_r = {4{visible}};
assign vga_g = {4{visible}};
assign vga_b = {4{visible}};
// -----------------------------------------------------------------------------

always @(posedge clock_25) begin

    X <= xmax ? 0 : (X + 1);
    Y <= xmax ? (ymax ? 0 : Y + 1) : Y;

end

endmodule
4 ноя, 2021
© 2007-2022 Кружка крадет на дому