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 + -
显示快捷键?