差别
这里会显示出您选择的修订版和当前版本之间的差别。
| 后一修订版 | 前一修订版 | ||
|
wire_reg [2018/08/20 11:08] group001 创建 |
wire_reg [2018/09/11 09:16] (当前版本) group001 |
||
|---|---|---|---|
| 行 60: | 行 60: | ||
| wire只能被assign连续赋值,reg只能在initial和always中赋值。\\ | wire只能被assign连续赋值,reg只能在initial和always中赋值。\\ | ||
| + | <code verilog> | ||
| 比如: | 比如: | ||
| 行 67: | 行 68: | ||
| input din; | input din; | ||
| output dout,tmpdata; | output dout,tmpdata; | ||
| - | |||
| reg tmpdata; | reg tmpdata; | ||
| always@(posedge clk or negedge rst) | always@(posedge clk or negedge rst) | ||
| 行 77: | 行 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); | ||
| 行 87: | 行 90: | ||
| endmodule; | endmodule; | ||
| + | </code> | ||
| 这个综合出来就是一个简单的二选一选择器,组合逻辑电路。\\ | 这个综合出来就是一个简单的二选一选择器,组合逻辑电路。\\ | ||