📄 qvgatiming.v
字号:
`timescale 1ns/10psmodule qvga_timing ( clk1_3, rstn, sync_de, hsync, vsync, desync, rout, gout, bout, clkout, //bug //pixcnt, //linecnt POLIN, POLOUT, );parameter HTOTAL = 9'd408; parameter HSYNC = 9'd1;parameter HSIZE = 9'd320;parameter HSTART = 9'd70;parameter HEND = 9'd390;parameter VTOTAL = 9'd263;parameter VSYNC = 9'd1;parameter VSIZE = 9'd240;parameter VSTART = 9'd13;parameter VEND = 9'd253;input clk1_3;input rstn;input sync_de;input POLIN;output POLOUT;output hsync;output vsync;output desync;//output [8:0] pixcnt;//output [8:0] linecnt;output [7:0] rout;output [7:0] gout;output [7:0] bout;output clkout;reg [8:0] pixcnt;reg [8:0] linecnt;reg [7:0] rout;reg [7:0] gout;reg [7:0] bout;reg [3:0] count;reg clkout;wire ihsync;wire ivsync;wire ihde;wire ivde;wire idesync;wire POLOUT=~POLIN;always @(posedge clk1_3 or negedge rstn) begin if(~rstn)begin count <= 2'd0; clkout <= 2'd0;end else if (count == 2'd1)begin count <= 2'd0; clkout <= ~clkout; end else count <= count+2'd1;endalways @(posedge clkout or negedge rstn) begin if(~rstn) pixcnt <=#1 9'd1; else if (pixcnt == HTOTAL) pixcnt <=#1 9'd1; else pixcnt <=#1 (pixcnt + 1'b1);endassign ihsync = (pixcnt <= HSYNC) ? 1'b0 : 1'b1; assign ihde = ((pixcnt > HSTART) && (pixcnt <= HEND)) ? 1'b1 : 1'b0; always @(posedge clkout or negedge rstn) begin if(~rstn) linecnt <= 9'd1; else if (linecnt == VTOTAL) linecnt <= 9'd1; else if (pixcnt == HTOTAL) linecnt <= linecnt + 1'b1; else linecnt <= linecnt;endassign ivsync = (linecnt <= VSYNC) ? 1'b0 : 1'b1; assign ivde = ((linecnt > VSTART) && (linecnt <= VEND)) ? 1'b1 : 1'b0;assign idesync = ivde & ihde; assign desync = (sync_de == 1'b0) ? idesync : 1'b0;assign hsync = (sync_de == 1'b1) ? ihsync : 1'b1;assign vsync = (sync_de == 1'b1) ? ivsync : 1'b1;//// Horizontal Gray Level: 256//assign grayprewindow = ((pixcnt >= 9'd71) && (pixcnt < 9'd76)) && idesync;assign graytopwindow = ((linecnt >= 9'd13) && (linecnt < 9'd18)) && idesync;//assign grayprewindow = ((pixcnt >= 9'd76) && (pixcnt <= 9'd102)) && idesync;assign graycenwindow = ((pixcnt > 9'd76) && (pixcnt < 9'd385)) && idesync;//assign grayposwindow = ((pixcnt >= 9'd357) && (pixcnt < 9'd385)) && idesync;assign grayposwindow = ((pixcnt >= 9'd385) && (pixcnt <= 9'd390)) && idesync;assign graybotwindow = ((linecnt >= 9'd248) && (linecnt < 9'd253)) && idesync;always @(*) begin if(grayprewindow) begin rout = 8'hff; gout = 8'hff; bout = 8'hff; end else if(graytopwindow) begin rout = 8'hff; gout = 8'hff; bout = 8'hff; end else if(graybotwindow) begin rout = 8'hff; gout = 8'hff; bout = 8'hff; end else if (graycenwindow) begin rout = 8'h00; gout = 8'h00; bout = 8'h00; end else if (grayposwindow) begin rout = 8'hff; gout = 8'hff; bout = 8'hff; end else begin rout = 8'h00; gout = 8'h00; bout = 8'h00; endend endmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -