简要复习Verilog HDL门级建模的基本内容:

要使用门级建模,那就必须要先了解在Verilog HDL中提供了那些内建基元门:

(1)多输入门:

与门(and)、与非门(nand)、或门(or)、或非门(nor)、异或门(xor)、同或门(xnor)

(2)多输出门:

缓冲器(buf)、非门(not)

(3)三态门:

bufif0、bufif1、notif、notif1

(4)上拉门、下拉门

pullup、pulldown

(5)MOS开关:

cmos、nmos、pmos、rcmos、rnmos、rpmos

(6)双向开关:

tran、tranif0、tranif1、rtan、rtanif0、rtanif1

那么这些我们如何实例引用这些基元门呢?很简单!见如下格式:

gate_type [instance_name](term1,term2,…,termN);

其中的gate_type就是上面所说的某种类型门,要注意的是,实例名instance_name是可选的,term1~termN是与该实例的输入输出端口相连的线网或变量。

在举例说明门级建模前,先说说一个重要的知识点——门延迟。

所谓门延迟,就是指信号从任何门的输入到其输出的传输延迟。在门实例引用语句中可以指定门延迟,其格式如下:

gate_type [delay][instance_name](term1,term2,…,termN);

就是delay规定了门的延迟,若没有指定门延迟值,则默认的门延迟值为0。

而门延迟最多由3种组成:

(1)上升延迟

(2)下降延迟

(3)截止延迟

门延迟可以包含0、1、2或3个延迟值。例如:

not u11not(out,q);//门延迟为0

and #2(aout,a,b);//上升延迟与下降延迟都为6

nand #(2,3)(yout,a,b);//上升延迟为2,下降延迟为3,转换到x的延迟为2和3的最小值2

notif1 #(3,4,5)(dout,da,db);//上升延迟为2,下降延迟为4,截止延迟为5,转换到x的延迟为3和4的最小值3

接下来,就用一个2——4编码器的例子来说明门级建模:

2——4编码器的电路:

dec2x4

Verilog HDL代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
module dec2x4(a,b,enable,y);
 
input a,b,enble; output [0:3]y;
wire abar,bbar;
not #(1,2);
u0not(abar,a);
u1not(bbar,b);
nand #(4,3);
 
u0nand(y[0],enable,abar,bbar);
u1nand(y[1],enable,abar,b);
u2nand(y[2],enable,a,bbar);
u3nand(y[3],enable,a,b);
 
endmodule