Verilog模块概念和实例化模块概念和实例化
模块(module)是verilog最基本的概念,是v设计中的基本单元,每个v设计的系统中都由若干module组成。在
做模块划分时,通常会出现这种情形:某个大的模块中包含了一个或多个功能子模块。verilog是通过模块调用
或称为模块实例化的方式来实现这些子模块与高层模块的连接的。
模块的概念
模块(module)是verilog最基本的概念,是v设计中的基本单元,每个v设计的系统中都由若干module组成。
1、模块在语言形式上是以关键词module开始,以关键词endmodule结束的一段程序。
2、模块的实际意义是代表硬件电路上的逻辑实体。
3、每个模块都实现特定的功能。
4、模块的描述方式有行为建模和结构建模之分。
5、模块之间是并行运行的。
6、模块是分层的,高层模块通过调用、连接低层模块的实例来实现复杂的功能。
7、各模块连接完成整个系统需要一个顶层模块(top-module)。
无论多么复杂的系统,总能划分成多个小的功能模块。系统的设计可以按照下面三个步骤进行:
(1)把系统划分成模块;
(2)规划各模块的接口;
(3)对模块编程并连接各模块完成系统设计。
模块的结构
module <模块名>(<端口列表>);
<定义>
<模块条目>
endmodule
其中:
<模块名>是模块唯一的标识符;
<端口列表>是输入、输出和双向端口的列表,这些端口用来与其他模块进行连接。
<定义>是一段程序,用来指定数据对象为寄存器型、存储器型、线型以及过程块,诸如函数块和任务块;
<模块条目>也是一段程序,将上面<定义>和<端口>组合起来,是说明这个模块要做什么的语句;
endmodule之后没有分号。
模块的调用
在做模块划分时,通常会出现这种情形:某个大的模块中包含了一个或多个功能子模块。verilog是通过模块调用或称为模块实
例化的方式来实现这些子模块与高层模块的连接的。
调用模块实例的一般形式为:
<模块名><参数列表><实例名>(<端口列表>);
module_nameinstance_name(port_associations);
其中参数列表是传递到子模块的参数值,参数传递的典型应用是定义门级时延。
信号端口可以通过位置或名称关联;但是关联方式不能够混合使用。
port_expr //位置关联
.PortName (port_expr)//名称关联
评论5