求助:关于 @ 的问题
比如下列的always @ ( a or b )begin
c = a;
@( posedge d ) begin
语句 1; /**********/
语句 n;
end
e = b;
end
当执行到
@( posedge d ) begin
语句 1; /**********/
语句 n; end
时,是一直处于等待有上升沿,直到有了才往下顺序执行
还是一边等待上升沿(有了才执行( begin 和 end之间的语句),一边执行完 end 后面那句
e = b;
小弟才自学verilog 不久,有很多不明白的,望各位哥哥姐姐好心帮忙解答,谢谢 没有看懂,<br>
什么叫“一边等待上升沿(有了才执行( begin 和 end之间的语句),一边执行完 end 后面那句 <br>
e = b;” 应该是一直等待上升沿之后再往下执行 哦,是我表诉不清楚<br>
always @ ( a or b ) begin<br>
c = a; //(1)<br>
@ ( posedge d ) begin //(2)<br>
语句 1; <br>
语句 n; end <br>
e = b; //(3)<br>
end <br>
当执行到(2)时,是一直等待 “posedge d” 才执行<br>
语句 1; <br>
语句 n; end <br>
然后再才会执行 (3);<br>
还是一边等待上升沿(有了才执行( begin 和 end之间的语句),<br>
与此同时执行(3);<br>
也就是说(3)语句是一定要到有 “posedge d”条件发生后执行完<br>
语句 1; <br>
语句 n; end <br>
才执行,还是到(2)时,只检查下有没有 “posedge d”条件,没有的话,也去执行(3),而有的话只是让<br>
语句 1; <br>
语句 n; end <br>
执行? 可参考<br>
计算波形占空比得不同输出(verilog) <br>
里面有另外一种写法<br>
<br>
欢迎对程序提出修改意见 --------------------------------------------------------------------------------<br>
应该是一直等待上升沿之后再往下执行 这段代码有什么实际用途吗?<br>
可以综合否? 应该是这样的吧!<br>
always @ ()<br>
begin<br>
.......<br>
end<br>
<br>
在整个module 内所有的always是并行的,但被begin--end封装的块内是顺序执行的,你的程序中<br>
@(posedge d) 被begin-end 所封装,所以应该是等待后执行<br>
<br>
注:我是新人 @后面就是触发条件<br>
<br>
等到@的事件发生了就执行下面的代码....
页:
[1]