verilog中0延迟 (#0) 是什么意思?
好像在哪里看过是说比如 begin a=b+c; #0 e=d+f; end
然后e=d+f会在 a=b+c后执行,是不是这样,求解
verilog中的 0延迟 #0
答案:2 悬赏:20 手机版
解决时间 2021-02-20 14:53
- 提问者网友:缘字诀
- 2021-02-20 04:32
最佳答案
- 五星知识达人网友:举杯邀酒敬孤独
- 2021-02-20 04:42
是这样的,只是表示执行顺序的先后
全部回答
- 1楼网友:十年萤火照君眠
- 2021-02-20 06:09
module delay2ms(clk, rst, ms, ms2out);
input clk, rst, ms;
output ms2out;//output类型不能声明为reg类型
reg ms2out; //修改为reg ms2outr
assign ms2out= ms2outr; //加入连续赋值语句
reg count, lastcount;
always@(posedge clk)
begin
if(rst)
begin
count <= 0;
end
else if(ms) //每个上升沿,无清零信号则检测ms为真时对count翻转
begin
count <= ~count;
end
lastcount <= count; //每个上升沿给lastcount 赋值,实现延迟1拍lastcount翻转
end
always@(posedge clk)
begin
if(rst)
begin
ms2out <= 1'b0;
end
else if((lastcount == 1'b1) && (count != 1'b1)) //每当翻转一次lastcount后变高电平时
begin
ms2out <= 1'b1; // 修改ms2outr<=1'b1;输出高电平
end
else
begin
ms2out <= 1'b0; //其实就是每次延迟1个clk周期再打开输出开关。
end
end
endmodule
这段代码最后输出的ms2out高电平就是另外一个主代码的输出开关。
至于1ms。那可能是仿真时间单位是1个clk周期是2ms。否则实际的clk晶振是50mhz
要实现2ms延迟需要的就是百万个clk周期了。lastcount要翻转就需要20'd999999个计数后才能执行
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
正方形一边上任一点到这个正方形两条对角线的 |
阴历怎么看 ? |