§ Видеоразрешение
Базовое разрешение 1440x900, 106 MhzОтображаемые данные 640 x 400 x 16 цвета
Это лишь часть модуля проекта. Необходимо скопировать и вставить в нужные файлы, чтобы было хорошо.
§ TOP модуль
Подключение видеоадаптера на 256K слов на 4 бита каждое.1wire [17:0] vga_a; 2wire [ 3:0] vga_i; 3 4// Видеоадаптер HI-RES 5vga G1 6( 7 .clock (clock_106), 8 // Вывод на экране 9 .R (VGA_R), 10 .G (VGA_G), 11 .B (VGA_B), 12 .HS (VGA_HS), 13 .VS (VGA_VS), 14 // Связь с памятью 15 .A (vga_a), 16 .I (vga_i) 17);
§ Код видеоадаптера
Ниже приведен код видеоадптераvga.v
. На вход clock принимается 106 Мгц.1module vga 2( 3 input clock, 4 output reg [3:0] R, 5 output reg [3:0] G, 6 output reg [3:0] B, 7 output HS, 8 output VS, 9 output reg [17:0] A, 10 input [ 3:0] I 11); 12 13// --------------------------------------------------------------------- 14// Тайминги для горизонтальной и вертикальной развертки 15// Visible Front Sync Back Whole 16parameter hzv = 1440, hzf = 80, hzs = 152, hzb = 232, hzw = 1904, 17 vtv = 900, vtf = 1, vts = 3, vtb = 28, vtw = 932; 18// --------------------------------------------------------------------- 19assign HS = X < (hzb + hzv + hzf); // NEG. 20assign VS = Y >= (vtb + vtv + vtf); // POS. 21// --------------------------------------------------------------------- 22// Позиция луча в кадре и максимальные позиции (x,y) 23reg [10:0] X = 0; 24reg [ 9:0] Y = 0; 25wire xmax = (X == hzw - 1); 26wire ymax = (Y == vtw - 1); 27wire [10:0] x = (X - hzb); // x=[0..1439] 28wire [ 9:0] y = (Y - vtb); // y=[0..899] 29wire [10:0] xm = x - 80 + 2; 30wire [ 9:0] ym = y - 50; 31// --------------------------------------------------------------------- 32wire [15:0] color = 33 I == 4'h0 ? 12'h000 : I == 4'h8 ? 12'h888 : 34 I == 4'h1 ? 12'h008 : I == 4'h9 ? 12'h00F : 35 I == 4'h2 ? 12'h080 : I == 4'hA ? 12'h0F0 : 36 I == 4'h3 ? 12'h088 : I == 4'hB ? 12'h0FF : 37 I == 4'h4 ? 12'h800 : I == 4'hC ? 12'hF00 : 38 I == 4'h5 ? 12'h808 : I == 4'hD ? 12'hF0F : 39 I == 4'h6 ? 12'h880 : I == 4'hE ? 12'hFF0 : 40 I == 4'h7 ? 12'hCCC : 12'hFFF; 41 42always @(posedge clock) begin 43 44 // Черный цвет за пределами 45 {R, G, B} <= 12'h000; 46 47 // Кадровая развертка 48 X <= xmax ? 0 : X + 1; 49 Y <= xmax ? (ymax ? 0 : Y + 1) : Y; 50 51 // Генерация изображения 52 A <= 640*ym[9:1] + xm[10:1]; 53 54 // Вывод окна видеоадаптера 55 if (X >= hzb && X < hzb + hzv && Y >= vtb && Y < vtb + vtv) 56 {R, G, B} <= (x >= 80 && x < 1360 && y >= 50 && y < 850) ? color : 12'h111; 57end 58 59endmodule