用非阻塞型赋值,占空比不对。
看到一例子,抄来用modulesim仿真时,发现占空比不对,是怎么回事呢?按道理应该是周期为100个单位,占空比1:1才对啊?仿真波形图:
http://cache.amobbs.com/bbs_upload782111/files_29/ourdev_558947.jpg
(原文件名:12.jpg) module df(wav);
output wav;
reg wav;
event end_wave;
initial
begin
wav<=0;
#50 wav<=1;
#100 wav<=0;
#150 wav<=1;
#200 wav<=0;
#250 ->end_wave;
end
endmodule initial
begin
wav <= 1'b0;
forever
#50 wav <= ~wav;
end
试试这样。 多谢tear086大哥!我照你的试了一下,没问题!
不过我的好象也应该没问题才对啊!
为什么我的没有1:1的占空比呢? 回复【3楼】yealien
-----------------------------------------------------------------------
你吧程序改为
module df(wav);
output wav;
reg wav;
event end_wave;
initial
begin
wav<=0;
#50 wav<=1;
#10 wav<=0;
#50 wav<=1;
#50 wav<=0;
#50 ->end_wave;
end
endmodule
就可以了。因为时间常数不是你想的会累加的,而是每条命令都要执行一个新的时间常数。 回复【1楼】yealien
-----------------------------------------------------------------------
4楼的方法可用。如要想用绝对延时,需把延时放在非阻塞赋值符号右边。如:
module df(wav);
output wav;
reg wav;
event end_wave;
initial
begin
wav<=0;
wav<=#50 1;
wav<=#100 0;
wav<=#150 1;
wav<=#200 0;
#250 ->end_wave;
end
endmodule
页:
[1]