天天看点

Verilog学习笔记(01)

文章目录

    • 1.1 什么是Verilog HDL?
    • 1.2模块
    • 1.3门级建模
    • 1.4开关级建模

参考:Verilog数字VLSI设计教程

硬件描述语言Verilog

Verilog HDL数字设计与综合

Verilog HDL 数字集成电路高级程序设计

1.1 什么是Verilog HDL?

Verilog是一种硬件描述语言,可通过对数字电路和系统的语言描述,对数字电路进行设计和验证。其主要作用是:数字集成电路设计者可以通过HDL,根据电路结构化特点,采用层次化的设计结构,将逻辑功能用电路的方式实现。

目前,Verilog HDL和VHDL是主要的两种HDL。

Verilog的限制是只能描述数字系统,而无法描述模拟系统

Verilog HDL相比于C语言具有以下特点:

并发性

结构化

过程化语句

时序

1.2模块

模块是Verilog HDL设计的基本单元结构

下图是Verilog模块的基本组成:

Verilog学习笔记(01)

Verilog一共有三种建模方式:

(1)数据流建模

(2)行为级建模

(3)结构化建模

根据所调用子模块的不同抽象级别,可以将模块的结构描述方式分成三类:

(1)模块级建模

(2)门级建模

(3)开关级建模

模块调用方式:

举个例子:

功能模块

module and_2(a,b,c);
	input a,b;
	output c;
	assign c=a&b;
endmodule
           

模块调用:

module logic(in1,in2,q);
	input in1,in2;
	output 1;
	and_2 U1(in1,in2,q);
endmodule
           

如果在同一个模块在当前模块被调用多次时,可以用如下方式表达:

模块重复调用

模块名<参数值列表>实例名(端口名列表),
	 <参数值列表>实例名(端口名列表),
	 ......
	 <参数值列表>实例名(端口名列表);
           

注意:只用最后的末尾为;其余皆为,

模块阵列调用

举个例子:

module AND(ina,inb,andout);
	input ina,inb;
	output andout;
	assign andout=ina&inb;
endmodule
           
module array1(out,a,b);
	input [3:0] a,b;
	output [3:0] out;
	wire [3:0] out;
	AND U1(out[3],a[3],b[3]),
		U2(out[2],a[2],b[2]),
		U3(out[1],a[1],b[1]),
		U4(out[0],a[0],b[0]);
endmodule
           
module array2(out,a,b);
	input [3:0] a,b;
	output [3:0] out;
	wire [3:0] out;
	AND AND_ARREY [3:0] (out,a,b);
endmodule
           

模块端口对应方式

1.端口位置对应方式

2.端口名称对应方式

模块名 <参数值列表>实例名(.端口名1(<信号1>),
						.端口名2(<信号2>),
						.端口名3(<信号3>),
						......
						.端口名n(<信号n>)
						);
           

一般在工程中采用端口名称对应方式的较多,以确保程序的可靠性

3.端口位宽未匹配

(1)未连接端口

模块名<参数值列表>实例名(端口名列表),
	 <参数值列表>实例名( ),
	 ......
	 <参数值列表>实例名(端口名列表);
           

(2)不同的端口位宽(低端位置对齐,右对齐)

1.3门级建模

Verilog学习笔记(01)

1.多输入门元件调用

2.多输出门元件调用

3.三态门元件调用

1.4开关级建模

1.MOS开关(nmos,pmos,cmos)

nmos/pmos 实例名 (out,data,control);
cmos 实例名 (out,data,ncontrol,pcontrol);
           

2.双向开关

tran 实例名 (inout1,inout2);
tranif0/tranif1 实例名 (inout1,inout2,control);