有人可以告诉小弟是什么一回事吗?感激不尽~
时间:10-02
整理:3721RD
点击:
module siqu (clk,siquin,siquout);
input clk,siquin;
output siquout;
reg siquout;
reg siqucount;
always @( siquin )
begin
if(siquin)
begin
repeat(10) @(posedge clk) ;
siqucount=1'b0;
siquout=1'b1;
end
else
siquout=1'b0;
end
endmodule
请大家帮小弟看看这段程序,编译是通过了,但仿真出不了预想的结果,本来是让
repeat(10) @(posedge clk) ;
siqucount=1'b0;
来产生10个clk周期的延迟的,每一个clk上升沿到来时,siqucount被赋值0,
但现在这个产生10个clk周期的延迟好像被忽略掉了那样,仿真出来的结果没有任何延迟就直接执行siquout=1'b1;
有人可以告诉小弟是什么一回事吗?感激不尽~
input clk,siquin;
output siquout;
reg siquout;
reg siqucount;
always @( siquin )
begin
if(siquin)
begin
repeat(10) @(posedge clk) ;
siqucount=1'b0;
siquout=1'b1;
end
else
siquout=1'b0;
end
endmodule
请大家帮小弟看看这段程序,编译是通过了,但仿真出不了预想的结果,本来是让
repeat(10) @(posedge clk) ;
siqucount=1'b0;
来产生10个clk周期的延迟的,每一个clk上升沿到来时,siqucount被赋值0,
但现在这个产生10个clk周期的延迟好像被忽略掉了那样,仿真出来的结果没有任何延迟就直接执行siquout=1'b1;
有人可以告诉小弟是什么一回事吗?感激不尽~
先学好verilog规范,以及数字电路基础再写代码吧
这样是得不到你想要的结果的。always @( siquin )
begin
if(siquin)
begin
repeat(10) @(posedge clk) ;
如果在siquin在repeat(10) @(posedge clk)期间发生变化,根本就采不到数据的。
repeat(10) @(posedge clk) ;
将最后的;去掉
楼上正解
改成这个样子:
always @( siquin )
begin
if(siquin)
begin
repeat(10)
@(posedge clk) siqucount=1'b0;
..............................
写的代码不规范,不理解芯片内的电路结构。
