FPGA(二)Verilog语法入门(二)

本文详细介绍了Verilog语言的基础概念,包括模块的声明、端口定义、信号类型声明以及逻辑功能描述。模块作为Verilog的基本构建单元,相当于面向对象语言中的类。文章通过实例展示了如何定义一个逻辑门模块,解释了assign持续赋值、always过程块以及内置门元件的使用。此外,还简要提到了initial语句、块语句、赋值语句、条件语句和循环语句,为深入学习Verilog语法打下基础。
摘要由CSDN通过智能技术生成

学习板:ZYNQ7020

一、模块

1、简述

Verilog的模块相当与面向对象语言中的类,它定义了具有公有和私有属性的逻辑集合,在设计中可以多次实例化。

Verilog中可以将模块将模块看作项目的子组件,并且该组件定义了与其它模块或IC的连接关系。

先举例说明:
在这里插入图片描述

上图中A为与门、B为与非门、C为或非门,输入a、b、c、d,输出f,则这个逻辑电路可以当做一个模块,模块代码:

module aoi(a,b,c,d,f); 		//模块名aoi、端口列表 a、b、c、d、f
input a,b,c,d;  			//输入端口为a、b、c、d
output f;      			 	//输出端口为f
wire a,b,c,d,f;     		//定义信号的数据类型
assign f=~((a&b)|(~(c&d))); //逻辑功能描述

endmodule

从上面代码中可以看到,模块由两部分组成,一部分是接口描述,描述输入输出端口、信号的数据类型等;另一部分就是描述逻辑功能。

从书写形式上来看,具有以下特点:

① Verilog程序由模块组成,每个模块有关键字module开始、endmodule结束。

②每个模块首先要进行端口定义,并说明输入、输出口(input、output、inout),之后再进行逻辑功能描述。

③endmodule 后面没有分号“;”

每个verilog程序包括:模块声明、端口定义、信号类型声明、逻辑功能描述

整体框架:

moudle 端口名(端口列表);
input 输入端口列表;
output 输出端口列表;
inout 双向端口列表;
wire 线型数据类型列表;
reg 寄存器型数据类型列表;
parameter 参数型数据类型列表;
assign …(逻辑功能描述)…;
always …(逻辑功能描述)…;
function…(逻辑功能描述)…;
task…(逻辑功能描述)…;
… …(逻辑功能描述)…;
endmoudle

上面代码通过vivado软件综合后的电路:
在这里插入图片描述

可以看到与我们之前画的原理图是一致的。

当然我们可以把端口列表、定义合在一起:

module aoi(
input wire a,
input wire b,
input wire c,
input wire d,
output wire f
);
assign f=~((a&b)|(~(c&d)));
endmodule

2、模块声明

模式声明格式:

module 模块名(端口1、端口2…端口n);

模块结束时用关键字:endmodule

结合起来,一个模块:

 module 模块名(端口1、端口2...端口n);
 ...
 ...
 endmodule

3、端口定义

端口定义格式:

input 端口1,端口2…端口n;
output 端口1,端口2…端口n;
inout 端口1、端口2…端口n;

定义端口的注意事项:

①输入、双向端口不能定义为寄存器型

②测试模块中不需要定义端口

4、信号类型声明

对模块中所用的的所有信号,如端口信号(输入、输出)、节点信号的数据类型进行定义。

如:

reg aout;			//定义信号aout为reg型
reg[7:0] bout;		//信号bout为8位reg型
wire a,b,c,d;		//信号a、b、c、d为wire型

如果信号的类型没有被定义,综合时,综合器默认该信号为wire型。

可以将端口声明和信号类型声明放在同一条语句中

output wire  a;			//定义a为输出端口、数据类型为wire型
output reg[7:0] out;	 //定义out为输出端口、数据类型为reg型
input wire  b; 			//定义b为输入信号,数据类型为wire型

可以将端口声明和信号类型声明放在模块端口列表中

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

独独白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值