1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
module vga( clk, hsync, vsync, video_on, pixel_tick, pixel_x, pixel_y, reset ); input wire clk, reset; output wire [9:0] pixel_x, pixel_y; output wire hsync, vsync, video_on; output reg pixel_tick; localparam HD=640, //horizontal display area HF=48, //horizontal front porch HB=16, //horizontal back porch HFB=96, //horizontal flyback VD=480, //vertical display area VT=10, //vertical top porch VB=33, //vertical bottom porch VFB=2; //vertical flyback always @(posedge clk) pixel_tick <= ~pixel_tick //25 MHZ signal is generated. assign line_end = h_count == HD+HF+HB+HFB-1; assign page_end = v_count == VD+VF+VB+VFB-1; always @(posedge pixel_tick) if (line end) h_count <= 0; else h_count <= h_count+1; always @(posedge(line_end) if (page_end) v_count <= 0; else v_count <= v_count+1; |