做一些关于Verilog的简要笔记,方便日后快速复习,如有错漏希望您能够不吝赐教
首先说下module,module是层次化设计的基本构件,逻辑描述放在module内部。
下面是其框架:
module 模块名 (a,b,c,d); //括号内为端口名
//确定端口输入输出
//端口信号类型说明
//功能定义
endmodule
以上仅为大致解读,之后随着学习深入会加深对于模块的理解。下面我们继续前进。
- 参数
参数是一个常量,是一个局部量,仅在当前模块中有效,所以应当注意parameter与’define之间的异同。
如何定义参数?
parameter <list_of_assignment>;
下面举例:
module mod1(out, in1, in2);
...
//参数定义
parameter WORD_WIDTH = 8,ADDR_WIDTH = 8;
...
wire [WORD_WIDTH-1 : 0] in1,in2;
...
endmodule
- 位选择
下面举例说明吧
reg [31:0] A;
wire [31:0] B;
A[31:16] = B[15:0 ];
A[15:0 ] = B[31:16];
需要注意:
1.整数不能作为位向量访问,例如integer B。解决办法可为将该整数变量赋值给reg类型的变量,然后读出相应位。