【verilog教程】verilog模块与端口

1. verilog 模块与端口

结构建模方式有 3 类描述语句:gate(门级)例化语句UDP(用户定义原语)例化语句module(模块)例化语句

使用最多的时 module(模块)及例化语句。

2. 模块

模块是 verilog 中基本单元的定义形式,是与外界交互的接口。

格式如下

module module_name #(
	#(parameter_list)
)(
	port_list
);

	declaration_and_statements ;

endmodule
  • 模块定义必须以关键字 module 开始,以关键字 endmodule 结束。
  • 变量具体声明的位置不要求,但是必须保证在使用前的位置。

3. 端口

端口是模块与外界交互的接口。

对于外部环境来说,模块内部是不可见的,对模块的调用只能通过端口连接进行。

3.1 端口列表

模块的定义中包含一个可选的端口列表:

示例如下

module test(

	input  a ,
	input  b ,

	output c 
);

endmodule

一个模块如果和外部环境没有交互,则可以不用声明端口列表。例如写测试文件(testbench)时。

示例如下

module test;
	...
	...
	...
module

3.2 端口声明

  1. 端口信号在端口列表罗列出来后,就可以在模块实体中进行声明了。

根据端口的方向。端口类型分为 3 种:输入(input),输出(output)和双向端口(inout)。

input,inout 类型不能声明为 reg 数据类型,因为 reg 类型是用于保存数值的,而输入端口只能反映与其相连的外部信号的变化,不能保存这些信号的值。

output 可以声明为 wire 或 reg 数据类型。

  1. 在 verilog 中,端口隐式的声明为 wire 型变量,当端口是 wire 型变量时, 不用再次声明为 wire 型,但端口是 reg 型时,那么 reg 不可省略。

笔记

input wire a ,/// a 是wire类型变量时,wire可以不写
input a ,

output reg [7:0] b , /// b是reg类型变量时,reg必须写

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值