modelsim 仿真时钟周期问题

2013年09月05日 11:56    发布者:mygod22
请教:testbench的时钟周期跟modelsim仿真的时钟周期不一致问题。
我的tesbench是这样写的,

`timescale 10 ns/ 1 ns
module digital_led_test();
reg Rsetn;
reg clk;                                             
wire   CODE;
wire   L_EN;

digital_led i1 (
        .CODE(CODE),
        .L_EN(L_EN),
        .Rsetn(Rsetn),
        .clk(clk)
);
initial                                                
begin
clk=0;
Rsetn=0;                                                                                                                 
end
initial
begin
$display("\tclk,\tRsetn,\tCODE,");
$monitor("\t%b,\t%b,\t%d",clk,Rsetn,CODE);
end

always                                                                  
begin
#5 clk=!clk;
#10 Rsetn=1;                                             
end                                                   
endmodule

我的原意是是输出每5个周期(5*10ns=50ns)翻转一次,那么一个时钟周期应该是100ns。
但是modelsim仿真出的clk的波形周期却和我原意不一样。
下面是用modelsim仿真的波形。

modelsim仿真理论上不太可能出错,那么就是我前面的计算方法有问题,可能是我理解的问题。
请各位大神指教我前面的计算方法哪里出错了,新手,要是问的太低级还请见谅,不吝赐教!先谢过!

网友评论

mygod22 2013年09月05日
自己顶下,期望高手回答!:)
mygod22 2013年09月05日
已解决,是我自己对verilog的语法理解不透侧。
always                                                                  
begin
#5 clk=!clk;
#10 Rsetn=1;                                             
end
begin-end是串行块,顺序执行了5+10=15个周期以后clk的值才会更新,所以才会有300ns的clk周期出现。用fork-jion并行块就没问题了。
mygod22 2013年09月05日
一个帖子都是我在自问自答:'(
tony02778 2013年09月10日
謝謝~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`
sardon131 2013年11月15日
最近刚开始搞这个。。。。
连点头绪都没啊。。。