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日
已解决,是我自己对verilog的语法理解不透侧。
always
begin
#5 clk=!clk;
#10 Rsetn=1;
end
begin-end是串行块,顺序执行了5+10=15个周期以后clk的值才会更新,所以才会有300ns的clk周期出现。用fork-jion并行块就没问题了。
已解决,是我自己对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日
最近刚开始搞这个。。。。
连点头绪都没啊。。。
最近刚开始搞这个。。。。
连点头绪都没啊。。。
自己顶下,期望高手回答!:)