Verilog学习笔记(01)

Posted 高山流水123a s d

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Verilog学习笔记(01)相关的知识,希望对你有一定的参考价值。

文章目录


参考: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一共有三种建模方式:
(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.端口位置对应方式

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

2.端口名称对应方式

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

一般在工程中采用端口名称对应方式的较多,以确保程序的可靠性
3.端口位宽未匹配
(1)未连接端口

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

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

1.3门级建模


1.多输入门元件调用

元件名<实例名>(<输出端口>,<输入端口1>,......,<输入端口n>);

2.多输出门元件调用

元件名<实例名>(<输出端口1>,......,<输出端口n>,<输入端口>);

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);

以上是关于Verilog学习笔记(01)的主要内容,如果未能解决你的问题,请参考以下文章

Verilog学习笔记(02)

LetMeFlyVerilog学习笔记 - 极简极入门级

LetMeFlyVerilog学习笔记 - 极简极入门级

FPGA/verilog 学习笔记—— verilog程序框架

FPGA/verilog 学习笔记—— Verilog基础语法

Verilog HDL 学习笔记一