求教::@()的问题
GO <= 1;@(posedge CLK_I);
GO <= 0;
GO是一个reg,这三句是在一个task中,从opencores下的一个例程,编译通过了。请问有什么功能吗?谢谢大家帮助以及任何建议!!! http://bbs.vibesic.com/images/smilies/default/sad.gif
一个回复也没有,自己顶 @(posedge CLK_I);<br>
表示CLK_I来1次上升沿 看到了 谢谢你 我觉得与书上的always @()差别就是 :always @() 是死循环, 而这里的@( )只循环一次而已 楼上的意见非常正确 这种写法在一般的综合器中是可综合的,我在quartusII下试过。<br>
不过用不好会出现警告<br>
以下是我写的简单的测试是否综合<br>
module a(clock,a,b,c);<br>
input a,b,clock;<br>
output c;<br>
<br>
reg tmp;<br>
always @(a or b)<br>
begin<br>
@(posedge clock)<br>
tmp=a+b;<br>
end<br>
assign c=tmp;<br>
<br>
endmodule<br>
出现的警告为<br>
Warning (10235): Verilog HDL Always Construct warning at a.v(8): variable "clock" is read inside the Always Construct but isn't in the Always Construct's Event Control<br>
而这种情况没有警告<br>
module a(clock,a,b,c);<br>
input a,b,clock;<br>
output c;<br>
<br>
reg tmp;<br>
always @(posedge clock) <br>
begin<br>
@(posedge a or posedge b)<br>
tmp=a+b;<br>
end<br>
assign c=tmp;<br>
<br>
endmodule<br>
而且必须写在块语句中,否则综合通不过的!!
http://bbs.vibesic.com/images/smilies/default/lol.gif 以前没见过 今天见识了 学习学习 这样能用吧 学习,好东西
页:
[1]