标签:
杂谈 |
分类: 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
endmodule
这个时候,c只能声明为reg,因为c的赋值是在过程(procedure)中进行的,而下面的例子中,就只能用wire了。
module test(a, b, c);
input a;
input b;
output c;
wire c;
note:在模块中,所有的端口都有一个声明为wire与端口同名的信号,所以其实这里的wire
c;不写也是可以的。
note:wire用在连续赋值语句中,也就是说,当wire作为左值时,只能是在连续赋值语句中,作右值的时候当然就没有些限制了。reg也是如此。
2、reg相当于寄存器(但并不是说声明一个reg,编译器就会创建一个寄存器),可以保留上一次的值,在过程中相当于一个变量,而wire只是电气连接,不能保留上一次的赋值。
3、输入不能声明为reg。
4、reg只传输logic value,而wire可以传输logic value & logic
strength
前一篇:[VC] 关于动态创建数组