差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 | |||
wire_reg [2018/08/21 08:59] group001 |
wire_reg [2018/09/11 09:16] (当前版本) group001 |
||
---|---|---|---|
行 60: | 行 60: | ||
wire只能被assign连续赋值,reg只能在initial和always中赋值。\\ | wire只能被assign连续赋值,reg只能在initial和always中赋值。\\ | ||
+ | <code verilog> | ||
比如: | 比如: | ||
行 76: | 行 77: | ||
endmodule | endmodule | ||
+ | </code> | ||
其实他们是不同的抽象级别,wire 如同vhdl中的signal类型,是和实际的物理连接对应的,而reg属于算法描述层次用的类型,和实际电路没有直接的对应关系,也就是说它相当于c语言中的变量(int,float等),vhdl中的variable。reg不和实际的电路如寄存器对应,高层次的描述时用。而always其实算是算法级描述的语句,所以其中的变量必须声明为reg。\\ | 其实他们是不同的抽象级别,wire 如同vhdl中的signal类型,是和实际的物理连接对应的,而reg属于算法描述层次用的类型,和实际电路没有直接的对应关系,也就是说它相当于c语言中的变量(int,float等),vhdl中的variable。reg不和实际的电路如寄存器对应,高层次的描述时用。而always其实算是算法级描述的语句,所以其中的变量必须声明为reg。\\ | ||
+ | <code verilog> | ||
+ | |||
比如:一个简单的组合逻辑的例子,用了reg类型 | 比如:一个简单的组合逻辑的例子,用了reg类型 | ||
module mux(a,b,c,sel); | module mux(a,b,c,sel); | ||
行 86: | 行 90: | ||
endmodule; | endmodule; | ||
+ | </code> | ||
这个综合出来就是一个简单的二选一选择器,组合逻辑电路。\\ | 这个综合出来就是一个简单的二选一选择器,组合逻辑电路。\\ | ||