module vga(clk,hsync,vsync,rgb_r,rgb_g,rgb_b,CLK,VGA_SYNC,VGA_BLANK,TD_DATA,TD_VS,TD_HS,TD_CLK,TD_RESET_N);
input TD_VS;
input [7:0] TD_DATA;
input TD_HS;
input TD_CLK;
input clk;
output TD_RESET_N;
output reg hsync;
output reg vsync;
output wire [7:0] rgb_r ;
output wire [7:0] rgb_g ;
output wire [7:0] rgb_b ;
output reg CLK;
output VGA_SYNC;
output VGA_BLANK;
reg [10:0] x_cnt;
reg [10:0] y_cnt;
reg valid;
wire [9:0] xpos;
wire [9:0] ypos;
wire a_dis;
wire b_dis;
wire c_dis;
wire d_dis;
wire e_rdy;
// reg clk_n;
assign TD_RESET_N = 1'B1;
assign VGA_SYNC = 1'b1;
assign vga_BLANK = ~((x_cnt<H_BLANK)||(y_cnt<V_BLANK));
assign ypos= y_cnt-11'd35;
assign xpos= x_cnt-11'd144;
parameter H_FRONT = 16;
parameter H_SYNC = 96;
parameter H_BACK = 48;
parameter H_ACT = 640;
parameter H_BLANK = H_FRONT+H_SYNC+H_BACK;
parameter H_TOTAL = H_FRONT+H_SYNC+H_BACK+H_ACT;
parameter V_FRONT = 11;
parameter V_SYNC = 2;
parameter V_BACK = 31;
parameter V_ACT = 480;
parameter V_BLANK = V_FRONT+V_SYNC+V_BACK;
parameter V_TOTAL = V_FRONT+V_SYNC+V_BACK+V_ACT;
ini
tial
begin
// rgb_r = 0;
// rgb_g = 0;
// rgb_b = 0;
hsync = 1'b1;
vsync = 1'b1;
x_cnt = 0;
y_cnt = 0;
end
always @(posedge clk)
begin
CLK = ~CLK ;
end
always @(posedge CLK)
begin
if(x_cnt < H_TOTAL) x_cnt = x_cnt + 1'b1;
else if(x_cnt == H_TOTAL )x_cnt = 11'd0;
if(x_cnt == H_FRONT-1) hsync <= 1'b0;
else if (x_cnt == H_FRONT+H_SYNC-1)hsync <= 1'b1;
end
always @(posedge hsync)
begin
if(y_cnt < V_TOTAL) y_cnt = y_cnt + 1'd1;
else if(y_cnt == V_TOTAL) y_cnt = 11'd0;
if(y_cnt == V_FRONT-1) vsync <= 1'b0;
else if(y_cnt == V_FRONT+V_SYNC-1) vsync <=1'b1;
end
always @ ( posedge CLK )
begin
valid <= ( ( x_cnt >= 11'd50 ) && ( x_cnt <= 11'd640) && ( y_cnt >= 11'd35) && ( y_cnt <= 11'd480) );
end
assign rgb_r=valid?8'hff:0;
assign rgb_g=valid?8'hff:0;
assign rgb_b=valid?0:8'hff;
endmodule
一周热门 更多>