集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 2407|回复: 8

求教::@()的问题

[复制链接]
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 | 显示全部楼层

一个回复也没有,自己顶
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>
而且必须写在块语句中,否则综合通不过的!!
       
ups 发表于 2010-6-28 07:40:31 | 显示全部楼层
以前没见过 今天见识了 学习学习&nbsp;&nbsp;这样能用吧
longt 发表于 2010-6-28 08:38:29 | 显示全部楼层
学习,好东西
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|集成电路技术分享 ( 京ICP备20003123号-1 )

GMT+8, 2024-4-30 22:21 , Processed in 0.068149 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表