§ Код адаптера
Используется 64Кб памяти и 1Кб палитры.module vga ( input clock, output reg [3:0] r, output reg [3:0] g, output reg [3:0] b, output hs, output vs, output vb, // =1 VBlank output reg [15:0] a, // Запрос данных input [ 7:0] i, // Цвет точки output reg [ 7:0] c, // Запрос цвета input [15:0] p // Палитра ); // ----------------------------------------------------------------------------- // Тайминги для горизонтальной и вертикальной развертки parameter // Visible Front Sync Back Whole hzv = 640, hzf = 16, hzs = 96, hzb = 48, hzw = 800, vtv = 400, vtf = 12, vts = 2, vtb = 35, vtw = 449; // ----------------------------------------------------------------------------- assign hs = x < (hzb + hzv + hzf); assign vs = y < (vtb + vtv + vtf); assign vb = x == xmax && y == ymax; // ----------------------------------------------------------------------------- reg [ 9:0] x = 0; reg [ 9:0] y = 0; wire [ 8:0] X = x - hzb; wire [ 8:0] Y = y - vtb; // ----------------------------------------------------------------------------- wire xmax = (x == hzw - 1); wire ymax = (y == vtw - 1); wire show = x >= hzb && x < hzb + hzv && y >= vtb && y < vtb + vtv; // ----------------------------------------------------------------------------- always @(posedge clock) begin // Кадровая развертка x <= xmax ? 0 : x + 1; y <= xmax ? (ymax ? 0 : y + 1) : y; // Каждые 2Т присылается новый цвет из палитры if (show) begin if (x[0]) begin a <= Y[8:1]*320 + X[8:1]; {r, g, b} <= p; end else begin c <= i; end end else {r,g,b} <= 12'h000; end endmodule
21 июл 2025, 20:32
© 2011-2025 Тупил психичный блин