vga_out.v
来自「filter,很不错,大家可以看以下」· Verilog 代码 · 共 139 行
V
139 行
/*******************************************************************/
/* Title : virtual image source */
/* Project : virtual source */
/*******************************************************************/
/*******************************************************************/
// File name : image0109.v
// Purpose : 在芯片内部产生352×288的象素数据和时序信号
// Author<email> : zhaoling_zl@126.com
// Created On : 2003/01/09
// Last update : 2003/01/09
// Platform : : Windows2000
// Simulators : MaxplussII 10.1
// Synthesizers : MaxplussII 10.1
// Targets Device : (MAX7000AE)EPM7128AETC100-10
// Comments : -
/*******************************************************************/
/*******************************************************************/
/*测控研究所图像处理组 */
/*******************************************************************/
/*******************************************************************/
/* Revision History : */
/*******************************************************************/
//==================================================================/
// Revision Number :
// Version :
// Date :
// Modifier :
// Desccription :
//==================================================================/
//==================================================================/
// Revision Number :
// Version :
// Date :
// Modifier :
// Desccription :
//==================================================================/
module vga_out(
rst,
clk40m,
blank,
hsync,
vsync,
odd_even_out,
blank_NTSC,
blank_PAL
);
/***input and output ***/
input rst,clk40m;
output blank;
output hsync,vsync,odd_even_out;
output blank_NTSC;
output blank_PAL;
/***reg***/
reg blank;
reg hsync,vsync,odd_even_out;
reg [10:0] bit_cnt;
reg [9:0] h_cnt;
always @ (posedge clk40m or negedge rst)
if(!rst)
bit_cnt <= 0;
else if(bit_cnt == 'd1060)
bit_cnt <= 0;
else
bit_cnt <= bit_cnt + 1;
always @ (posedge clk40m or negedge rst)
if(!rst)
hsync <= 0;
else if(bit_cnt < 'd170 && bit_cnt >= 'd40)
hsync <= 1;
else
hsync <= 0;
reg hsync_reg;
always @ (posedge clk40m) begin
hsync_reg <= hsync;
end
always @ (posedge clk40m or negedge rst)
if(!rst)
h_cnt <= 0;
else if(bit_cnt=='d1060) begin
if(h_cnt == 'd628)//'d20)
h_cnt <= 1'b0;
else
h_cnt <= h_cnt + 1'b1;
end
always @ (posedge clk40m or negedge rst)
if(!rst)
vsync <= 1'b0;
else if(h_cnt < 3'd5 & h_cnt >1'd0)
vsync <= 1'b1;
else
vsync <= 1'b0;
always @ (posedge clk40m or negedge rst)
if(!rst)
odd_even_out <= 0;
else if(h_cnt == 'd2 && bit_cnt == 'd2)
odd_even_out <= ~odd_even_out;
always @ (posedge clk40m or negedge rst)
if(!rst)
blank <= 0;
else if((bit_cnt >='d260)&&(bit_cnt <'d1060)&&(h_cnt>'d27)&&(h_cnt<='d627))//&&(bit_cnt <'d892)
blank <= 1;
else
blank <= 0;
reg blank_NTSC;
always @ (posedge clk40m or negedge rst)
if(!rst)
blank_NTSC <= 0;
else if((bit_cnt >='d300)&&(bit_cnt <'d1020)&&(h_cnt>'d87)&&(h_cnt<='d567))//&&(bit_cnt <'d892)
blank_NTSC <= 1;
else
blank_NTSC <= 0;
reg blank_PAL;
always @ (posedge clk40m or negedge rst)
if(!rst)
blank_PAL <= 0;
else if((bit_cnt >='d300)&&(bit_cnt <'d1020)&&(h_cnt>'d37)&&(h_cnt<='d613))//&&(bit_cnt <'d892)
blank_PAL <= 1;
else
blank_PAL <= 0;
endmodule
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?