本帖最后由 bitshiyan 于 2013-1-22 18:52 编辑
VGA程序
module sync_gen_50m(
rst_n,
clk,
hsync,
vsync,
valid,
x_cnt,
y_cnt
);
input rst_n ;
input clk ;
output hsync ;
output vsync ;
output valid ;
output [9:0] x_cnt ;
output [9:0] y_cnt ;
reg hsync ;
reg vsync ;
reg valid ;
reg [9:0] x_cnt ;
reg [9:0] y_cnt ;
always @ ( posedge clk or negedge rst_n )
if ( !rst_n )
x_cnt <= 10'd0;
else if ( x_cnt == 10'd1000 )
x_cnt <= 10'd0;
else
x_cnt <= x_cnt + 1'b1;
always @ ( posedge clk or negedge rst_n )
if ( !rst_n )
y_cnt <= 10'd0;
else if ( y_cnt == 10'd665 )
y_cnt <= 10'd0;
else if ( x_cnt == 10'd1000 )
y_cnt <= y_cnt + 1'b1;
always @ ( posedge clk or negedge rst_n )
if ( !rst_n )
begin
hsync <= 1'b0;
vsync <= 1'b0;
end
else
begin
hsync <= x_cnt <= 10'd50;
vsync <= y_cnt <= 10'd6;
end
always @ ( posedge clk or negedge rst_n )
if ( !rst_n )
valid <= 1'b0;
else
valid<= ( ( x_cnt > 10'd180 ) && ( x_cnt < 10'd980) &&
( y_cnt > 10'd35) && ( y_cnt < 10'd635) );
endmodule
在这个程序中,,如果test文件中 initial设定 rst_n=1;
是不是negedge rst_n就可以删掉了??
if(!rst_n)...是不是保留else语句就可以了?为什么在y_cnt=7,x_cnt=0的时候,vsync仍然为1?不应该在1000以后就反转吗???是由于test文件中#10000clk=~clk的缘故??
求解
初学fpga,,,如果表达不对,,请指导
另外,仿真效果如图,
|