加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

[EDA] verilog中的wire与reg

(2008-01-09 22:37:12)
标签:

杂谈

分类: EDA
 
1、reg用在过程赋值语句中,而wire用在连续赋值语句中。(或者说reg在过程块内赋值,而wire在过程块外赋值)
举个简单的例子
module test(a, b, c);
  input a;
  input b;
  output c;
  reg c;
 always @(posedge a)
 begin
  c = b;
 end
endmodule
这个时候,c只能声明为reg,因为c的赋值是在过程(procedure)中进行的,而下面的例子中,就只能用wire了。
module test(a, b, c);
  input a;
  input b;
  output c;
  wire c;
  assign c = a&b;
 endmodule
 
note:在模块中,所有的端口都有一个声明为wire与端口同名的信号,所以其实这里的wire c;不写也是可以的。
note:wire用在连续赋值语句中,也就是说,当wire作为左值时,只能是在连续赋值语句中,作右值的时候当然就没有些限制了。reg也是如此。
 
2、reg相当于寄存器(但并不是说声明一个reg,编译器就会创建一个寄存器),可以保留上一次的值,在过程中相当于一个变量,而wire只是电气连接,不能保留上一次的赋值。
 
3、输入不能声明为reg。
 
4、reg只传输logic value,而wire可以传输logic value & logic strength

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有