端口
端口是模块与外界交互的接口,对外部环境而言,模块内部是不可见的,对模块的调用只能通过端口连接进行
端口基本语法约定
- 端口必须被声明
- 端口声明不可重复
- 端口声明既可在端口列表内也可在列表外
模块间的数据只能通过端口进行
端口声明
根据端口的方向,端口类型有3种:输入(input)、输出(output)和双向端口(inout)
- input 和 inout 只能是
wire型 - output 既可以是
wire也可以是reg- 需要保存数值时,用
reg - 不需要保存数值时,用
wire
- 需要保存数值时,用
reg类型是用于保存数值的,而输入端只能反映与其相连的外部信号的变化,并不能保存这些信号的值
端口连接规则
| 方向 | 内部 | 外部 |
|---|---|---|
| input | wire | wire 或 reg |
| output | wire 或 reg | wire |
| inout | wire | wire |
对于input和output我是这样理解的,内部是reg外部就应该是wire
就比如input这一端,外部是reg,内部是wire,在这个一端,已经有一个reg类型可以用来保存数据,不需要用到两个reg来保存数值
端口连接方式
端口连接的方式有两种:按位置连接 和 按名称连接
-
按位置连接
调用模块的端口名必须与被调用模块端口列表中的位置保持一致
//调用模块 module name(……); //端口定义 //端口描述 /*a, b, c, d分别对用调用模块 中的in1, in2, sel, dout*/ mux u1(a, b, c, d); endmodule //调用模块 module mux (in1, in2, sel, dout); //端口定义 //端口描述 //逻辑描述 endmodule -
按名称连接
格式为:
模块名 模块实例化名 (.被调用模块端口名(调用模块端口名));其中,
模块实例化名是自己随意定的一个名字,方便记忆就好//调用模块 module name(……); //端口定义 //端口描述 //模块调用,也叫实例化 //对应方式和上一个相同 mux u1(.in1(a), .in2(b), .sel(c), .dout(d)); endmodule //被调用模块 module mux(in1, in2, sel, dout); //端口定义 //端口描述 //逻辑描述 endmodule
本文详细介绍了Verilog中模块端口的声明、类型和连接规则。端口是模块间通信的桥梁,分为输入、输出和双向端口。reg类型用于保存数据,而input端口仅反映外部信号变化。端口连接有按位置和按名称两种方式,确保模块间数据的正确传递。理解这些概念对于Verilog设计至关重要。
1527

被折叠的 条评论
为什么被折叠?



