永发信息网

verilog中的 0延迟 #0

答案:2  悬赏:20  手机版
解决时间 2021-02-20 14:53
  • 提问者网友:缘字诀
  • 2021-02-20 04:32
verilog中0延迟 (#0) 是什么意思?
好像在哪里看过是说比如 begin a=b+c; #0 e=d+f; end
然后e=d+f会在 a=b+c后执行,是不是这样,求解
最佳答案
  • 五星知识达人网友:举杯邀酒敬孤独
  • 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个计数后才能执行
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯