常用verilog语法之 --- 模块的结构
(2008-06-24 10:46:03)
标签:
i/o端口always变量位宽it |
分类: FPGA/CPLD |
模块的结构
verilog的基本设计单元是“模块”(block)。包括(接口描述、逻辑功能描述)
例子:
module block(a, b, c, d);
endmodule
由例子可以看出,verilog结构位于在module和endmodule声明语句之间,每个verilog程序包括4个主要部分:端口定义、I/O说明、内部信号声明和功能定义。
1、
模块端口声明了模块的输入输出。格式:
module 模块名(口1,口2,口3,口4,…..);
模块的端口表示模块的输入还是输出名。
引用模块时其端口可以用两种方法连接:
(1)
(2)
2、
模块的内容包括I/O说明、内部信号声明和功能定义。
(1)
输入口:input [信号位宽-1 : 0] 端口名1;
输出口:output [信号位宽-1 : 0] 端口名1;
输入输出口:inout [信号位宽-1 : 0] 断口名1;
(2)
在模块内用到的与端口有关的wire和reg类型变量的声明。
Reg [width-1 : 0] R变量1,R变量2…;
Wire [width-1 : 0]W变量1,W变量2…;
(3)
模块中最重要的部分时逻辑功能定义。由3种方法可以在模块中产生逻辑。
1)
如assign a = b&c;
2)
and #2 u1(q, a, b);
3)
always @(posedge clk or posedge clr)
begin
if(clr) q <= 0;
else if(en) q <= d;
end
采用assign是描述组合逻辑最常用的方法之一。而always既可用来描述组合逻辑电路也可以用来描述时序逻辑。
(4)
1)
2)
3)