longtime 发表于 2010-6-27 23:08:29

求教::@()的问题

GO <= 1;
@(posedge CLK_I);
GO <= 0;

GO是一个reg,这三句是在一个task中,从opencores下的一个例程,编译通过了。请问有什么功能吗?谢谢大家帮助以及任何建议!!!

UFP 发表于 2010-6-28 00:36:08

http://bbs.vibesic.com/images/smilies/default/sad.gif
一个回复也没有,自己顶

usb 发表于 2010-6-28 01:41:18

@(posedge CLK_I);<br>
表示CLK_I来1次上升沿

interi 发表于 2010-6-28 02:03:08

看到了 谢谢你

VVC 发表于 2010-6-28 03:53:42

我觉得与书上的always @()差别就是 :always @() 是死循环,&nbsp;&nbsp;而这里的@( )只循环一次而已

interi 发表于 2010-6-28 05:49:11

楼上的意见非常正确

longtim 发表于 2010-6-28 06:16:46

这种写法在一般的综合器中是可综合的,我在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>
&nbsp;&nbsp;@(posedge clock)<br>
&nbsp;&nbsp;tmp=a+b;<br>
end<br>
assign c=tmp;<br>
<br>
endmodule<br>
出现的警告为<br>
&nbsp;&nbsp;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)&nbsp;&nbsp;<br>
begin<br>
&nbsp;&nbsp;@(posedge a or posedge b)<br>
&nbsp;&nbsp;tmp=a+b;<br>
end<br>
assign c=tmp;<br>
<br>
endmodule<br>
而且必须写在块语句中,否则综合通不过的!!
        http://bbs.vibesic.com/images/smilies/default/lol.gif

ups 发表于 2010-6-28 07:40:31

以前没见过 今天见识了 学习学习&nbsp;&nbsp;这样能用吧

longt 发表于 2010-6-28 08:38:29

学习,好东西
页: [1]
查看完整版本: 求教::@()的问题