模块内容:I/O说明,内部信号声明,功能定义
I/O说明的格式
输入口:input [信号位宽-1:0]端口名1;
input[信号位宽-1:0]端口名I; // 共有i个输入口
输出口:对应output
output[信号位宽-1:0]端口名j
输入/输出口:inout[信号位宽-1:0]端口名k
- 注:I/O说明也可以写在端口说明里
module module_name(input port1,input port2,……output port1,output port2……)
内部信号说明
用到wire,reg类型变量
reg[width-1:0] R变量1,R变量2
wire[width-1:0]W变量1,W变量2
功能定义
3种方法在模块中产生逻辑
(1):assign语句,只需assign后跟上方程式
e.g: assign a = b&c //两输入的与门
(2)用实例元件
e.g: and #2 u1(q,a,b)//和与门一样的名为u1的输出端为q输入端为a,b;输出延迟为2个单位时间
采用实例元件如同在电路图中调用库元件,键入元件名字和相连的引脚即可。
(3):always块
e.g:
always@(posedge clk or posedge clr);
begin
if(clr)q <=0;
else if(en)q <=d;
end
always既可以描述组合逻辑也可以描述时序逻辑,assign语句常用来描述组合逻辑。
我发现在这上面写太丑了而且浪费时间,所以我准备直接放onenote上面的图片,受不了这个。。。
好了,反正是一个备份的作用。。。