門電平模型化
本章講述Verilog HDL為門級(jí)電路建模的能力,包括可以使用的內(nèi)置基本門和如何使用它們來進(jìn)行硬件描述。
5.1 內(nèi)置基本門
Verilog HDL中提供下列內(nèi)置基本門:
1) 多輸入門:
and, nand,or, nor, x o r, x n o r
2) 多輸出門:
buf, not
3) 三態(tài)門:
bufif0, bufif1, notif0,notif1
4) 上拉、下拉電阻:
pullup, pulldown
5) MOS開關(guān):
cmos, nmos, pmos, rcmos, rnmos, rpmos
6) 雙向開關(guān):
tran,tranif0, tranif1, rtran, rtranif0, rt r a n i f 1
門級(jí)邏輯設(shè)計(jì)描述中可使用具體的門實(shí)例語句。下面是簡(jiǎn)單的門實(shí)例語句的格式。
g a t e _ t y p e[i n s t a n c e _ n a m e] (term1, term2, . . . ,termN ) ;
注意,i n s t a n c e _ n a m e是可選的;g a t e _ t y p e為前面列出的某種門類型。各 term用于表示與門的輸入/輸出端口相連的線網(wǎng)或寄存器。
同一門類型的多個(gè)實(shí)例能夠在一個(gè)結(jié)構(gòu)形式中定義。語法如下 :
g a t e _ t y p e
[i n s t a n c e _ n a m e 1] (term11, term12, . . .,term1N ) ,
[i n s t a n c e _ n a m e 2] (term21, term22, . . .,term2N ) ,
. . .
[i n s t a n c e _ n a m e M] (termM1, termM2, . . .,termMN ) ;
5.2 多輸入門
內(nèi)置的多輸入門如下:
and nand nor or xor xnor
這些邏輯門只有單個(gè)輸出, 1個(gè)或多個(gè)輸入。多輸入門實(shí)例語句的語法如下:
m u l t i p l e _ i n p u t _ g a t e _ t y p e
[i n s t a n c e _ n a m e] (OutputA, Input1, Input2, . . .,InputN ) ;
第一個(gè)端口是輸出,其它端口是輸入。如圖5 - 1所示。
下面是幾個(gè)具體實(shí)例。圖5 - 2為對(duì)應(yīng)的邏輯圖。
and A 1(Out1, In1, In2 ) ;
a n d R B X (Sty, Rib, Bro, Qit, Fix ) ;
x o r (Bar, Bud[ 0 ] ,B u d[1], B u d[ 2 ] ) ,
(Car, Cut[0], C u t[ 1 ] ) ,
(Sar, Sut[2], S u t[1], S u t[0], S u t[ 3 ] ) ;
第一個(gè)門實(shí)例語句是單元名為 A 1、輸出為O u t 1、并帶有兩個(gè)輸入I n 1和I n 2的兩輸入與門。第二個(gè)門實(shí)例語句是四輸入與門,單元名為 R B X,輸出為S t y,4個(gè)輸入為R i b、B ro、Q i t和F i x。第三個(gè)門實(shí)例語句是異或門的具體實(shí)例,沒有單元名。它的輸出是 B a r,三個(gè)輸入分別為B u d[ 0 ]、B u d[ 1 ]和B u d[ 2 ]。同時(shí),這一個(gè)實(shí)例語句中還有兩個(gè)相同類型的單元。下面是這些門的真值表。注意在輸入端的 z與對(duì)x的處理方式相同;多輸入門的輸出決不能是z。
5.3 多輸出門
多輸出門有:
buf not
這些門都只有單個(gè)輸入,一個(gè)或多個(gè)輸出。如圖 5 - 3所示。這些門的實(shí)例語句的基本語法如下:
m u l t i p l e _ o u t p u t _ g a t e _ t y p e
[i n s t a n c e _ n a m e] (Out1, Out2, . . . OutN ,InputA ) ;
最后的端口是輸入端口,其余的所有端口為輸出端口。
例如:
b u f B 1 (Fan [ 0 ],F(xiàn)an [ 1 ],F(xiàn)an [ 2 ],F(xiàn)an [ 3 ],C l k);
n o t N 1 (P h A,P h B,R e a d y);
在第一個(gè)門實(shí)例語句中,C l k是緩沖門的輸入。門B 1有4個(gè)輸出:F a n[ 0 ]到F a n[ 3 ]。在第二個(gè)門實(shí)例語句中,R e a d y是非門的唯一輸入端口。門N 1有兩個(gè)輸出:P h A和P h B。這些門的真值表如下:
5.4 三態(tài)門
三態(tài)門有:
bufif0 bufif1 notif0 notif1
這些門用于對(duì)三態(tài)驅(qū)動(dòng)器建模。這些門有一個(gè)輸出、一個(gè)數(shù)據(jù)輸入和一個(gè)控制輸入。三態(tài)門實(shí)例語句的基本語法如下:
t r i s t a t e _ g a t e[i n s t a n c e _ n a m e] (OutputA, InputB,ControlC ) ;
第一個(gè)端口O u t p u t A是輸出端口,第二個(gè)端口 I n p u t B是數(shù)據(jù)輸入, C o n t ro l C是控制輸入。參見圖5 - 4。根據(jù)控制輸入,輸出可被驅(qū)動(dòng)到高阻狀態(tài),即值 z。對(duì)于b u f i f 0,若通過控制輸入為1,則輸出為z;否則數(shù)據(jù)被傳輸至輸出端。對(duì)于 b u f i f 1,若控制輸入為0,則輸出為z。對(duì)于n o t i f 0,如果控制輸出為 1,那么輸出為 z;否則輸入數(shù)據(jù)值的非傳輸?shù)捷敵龆?。?duì)于 n o t i f 1,若控制輸入為0;則輸出為z。
例如:
bufif1BF1 (D b u s,M e m D a t a,S t r o b e);
n o t i f 0 N T 2 (Addr, Abus, Probe ) ;
當(dāng)Strobe為0時(shí),bufif1門B F 1驅(qū)動(dòng)輸出D b u s為高阻;否則Mem Data被傳輸至D b us。在第2個(gè)實(shí)例語句中,當(dāng)P ro b e為1時(shí),A d d r為高阻;否則Abus的非傳輸?shù)紸ddr。
下面是這些門的真值表。表中的某些項(xiàng)是可選項(xiàng)。例如, 0 /z表明輸出根據(jù)數(shù)據(jù)的信號(hào)強(qiáng)度和控制值既可以為0也可以為z。
5.5 上拉、下拉電阻
上拉、下拉電阻有:
pullup pulldown
這類門設(shè)備沒有輸入只有輸出。上拉電阻將輸出置為 1。下拉電阻將輸出置為 0。門實(shí)例語句形式如下:
pull _ gate[i n s t a n c e _ n a m e] (out putA) ;
門實(shí)例的端口表只包含1個(gè)輸出。例如:
pullupPUP (P w r) ;
此上拉電阻實(shí)例名為P U P,輸出P w r置為高電平1。
5.6 MOS開關(guān)
M O S開關(guān)有:
cmos pmos nmos rcmos rpmos rnmos
這類門用來為單向開關(guān)建模。即數(shù)據(jù)從輸入流向輸出,并且可以通過設(shè)置合適的控制輸入關(guān)閉數(shù)據(jù)流。
pmos ( p類型M O S管)、nmos( n類型M O S管),rnmos( r代表電阻)和r p m o s開關(guān)有一個(gè)輸出、一個(gè)輸入和一個(gè)控制輸入。實(shí)例的基本語法如下:
g a t e _ t y p e[i n s t a n c e _ n a m e] (OutputA, InputB, ControlC ) ;
第一個(gè)端口為輸出,第二個(gè)端口是輸入,第三個(gè)端口是控制輸入端。如果 n m o s和r n m o s開關(guān)的控制輸入為0,p m o s和r p m o s開關(guān)的控制為1,那么開關(guān)關(guān)閉,即輸出為 z;如果控制是1,輸入數(shù)據(jù)傳輸至輸出;如圖 5 - 5所示。與n m o s和p m o s相比,r n m o s和r p m o s在輸入引線和輸出引線之間存在高阻抗(電阻)。因此當(dāng)數(shù)據(jù)從輸入傳輸至輸出時(shí),對(duì)于 r p m o s和r m o s,存在數(shù)據(jù)信號(hào)強(qiáng)度衰減。
例如:
pmos P 1 (BigBus, SmallBus, GateControl ) ;
rnmos R N 1 (ControlBit, ReadyBit, Hold ) ;
第一個(gè)實(shí)例為一個(gè)實(shí)例名為 P 1 的p m o s開關(guān)。開關(guān)的輸入為smallbus輸出為bigbus,控制信號(hào)為Gate Control。
這些開關(guān)的真值表如下所示。表中的某些項(xiàng)是可選項(xiàng)。例如, 1 /z表明,根據(jù)輸入和控制信號(hào)的強(qiáng)度,輸出既可以為1,也可以為z。
c m o s ( m o s求補(bǔ))和r c m o s ( c m o s的高阻態(tài)版本)開關(guān)有一個(gè)數(shù)據(jù)輸出,一個(gè)數(shù)據(jù)輸入和兩個(gè)控制輸入。這兩個(gè)開關(guān)實(shí)例語句的語法形式如下:
(r)cmos [i n s t a n c e _ n a m e]
(OutputA, InputB, NControl, PControl);
第一個(gè)端口為輸出端口,第二個(gè)端口為輸入端口,第三個(gè)端口為n通道控制輸入,第四個(gè)端口為是 P通道控制輸入。c m o s ( r c m o s )開關(guān)行為與帶有公共輸入、輸出的 p m o s
(r p m o s)和n m o s ( r n m o s )開關(guān)組合十分相似。參見圖5 - 6。
5.7 雙向開關(guān)
雙向開關(guān)有:
tran rtran tranif0 rtranif0 tranif1 rtranif1
這些開關(guān)是雙向的,即數(shù)據(jù)可以雙向流動(dòng),并且當(dāng)數(shù)據(jù)在開關(guān)中傳播時(shí)沒有延時(shí)。后 4個(gè)開關(guān)能夠通過設(shè)置合適的控制信號(hào)來關(guān)閉。t r a n和r t r a n開關(guān)不能被關(guān)閉。
t r a n或r t r a n ( t r a n 的高阻態(tài)版本)開關(guān)實(shí)例語句的語法如下:
( r ) t r a n [i n s t a n c e _ n a m e] (SignalA, SignalB) ;
端口表只有兩個(gè)端口,并且無條件地雙向流動(dòng),即從 S i g n a l A向S i g n a l B,反之亦然。其它雙向開關(guān)的實(shí)例語句的語法如下:
g a t e _ t y p e[i n s t a n c e _ n a m e] (SignalA, SignalB, ControlC ) ;
前兩個(gè)端口是雙向端口,即數(shù)據(jù)從 S i g n a l A流向S i g n a l B,反之亦然。第三個(gè)端口是控制信號(hào)。如果對(duì) t r a n i f 0和t r a n i f 0,controlC是1;對(duì)t r a n i f 1和r t r a n i f 1,contorlC是0;那么禁止雙向數(shù)據(jù)流動(dòng)。對(duì)于 r t r a n、r t r a n i f 0和r t r a n i f 1,當(dāng)信號(hào)通過開關(guān)傳輸時(shí),信號(hào)強(qiáng)度減弱。
5.8 門時(shí)延
可以使用門時(shí)延定義門從任何輸入到其輸出的信號(hào)傳輸時(shí)延。門時(shí)延可以在門自身實(shí)例語句中定義。帶有時(shí)延定義的門實(shí)例語句的語法如下:
gate_type [d e l a y] [i n s t a n c e _ n a m e] (t e r m i n a l _ l i s t) ;
時(shí)延規(guī)定了門時(shí)延,即從門的任意輸入到輸出的傳輸時(shí)延。當(dāng)沒有強(qiáng)調(diào)門時(shí)延時(shí),缺省的時(shí)延值為0。
門時(shí)延由三類時(shí)延值組成:
1) 上升時(shí)延
2) 下降時(shí)延
3) 截止時(shí)延
門時(shí)延定義可以包含 0個(gè)、1個(gè)、2個(gè)或3個(gè)時(shí)延值。下表為不同個(gè)數(shù)時(shí)延值說明條件下,各種具體的時(shí)延取值情形。
注意轉(zhuǎn)換到x的時(shí)延( t o _ x )不但被顯式地定義,還可以通過其它定義的值決定。下面是一些具體實(shí)例。注意 Verilog HDL模型中的所有時(shí)延都以單位時(shí)間表示。單位時(shí)間與實(shí)際時(shí)間的關(guān)聯(lián)可以通過` t i m e s c a l e編譯器指令實(shí)現(xiàn)。在下面的實(shí)例中 ,
n o t N 1 (Qbar, Q) ;
因?yàn)闆]有定義時(shí)延,門時(shí)延為0。下面的門實(shí)例中,
n a n d #6 (Out, In1, In2) ;
所有時(shí)延均為6,即上升時(shí)延和下降時(shí)延都是 6。因?yàn)檩敵鰶Q不會(huì)是高阻態(tài),截止時(shí)延不適用于與非門。轉(zhuǎn)換到x的時(shí)延也是6。
a n d #(3,5) (Out, In1, In2, In3 ) ;
在這個(gè)實(shí)例中,上升時(shí)延被定義為 3,下降時(shí)延為5,轉(zhuǎn)換到x的時(shí)延是3和5中間的最小值,即3。在下面的實(shí)例中,
n o t i f 1 #(2,8,6) (Dout, Din1, Din2 ) ;
上升時(shí)延為2,下降時(shí)延為8,截止時(shí)延為6,轉(zhuǎn)換到x的時(shí)延是2、8和6中的最小值,即2。對(duì)多輸入門(例如與門和非門)和多輸出門 (緩沖門和非門 )總共只能夠定義 2個(gè)時(shí)延(因?yàn)檩敵鰶Q不會(huì)是 z)。三態(tài)門共有 3個(gè)時(shí)延,并且上拉、下拉電阻實(shí)例門不能有任何時(shí)延。
minmax時(shí)延形式
門延遲也可采用m i n : t y p : m a x形式定義。形式如下:
最小值、典型值和最大值必須是常數(shù)表達(dá)式。下面是在實(shí)例中使用這種形式的實(shí)例。
n a n d #(24, 57) ( Pout, Pin1, Pin2 ) ;
選擇使用哪種時(shí)延通常作為模擬運(yùn)行中的一個(gè)選項(xiàng)。例如,如果執(zhí)行最大時(shí)延模擬,與
非門單元使用上升時(shí)延4和下降時(shí)延7。程序塊也能夠定義門時(shí)延。
5.9 實(shí)例數(shù)組
當(dāng)需要重復(fù)性的實(shí)例時(shí),在實(shí)例描述語句中能夠有選擇地定義范圍說明 (范圍說明也能夠在模塊實(shí)例語句中使用)。這種情況的門描述語句的語法如下:
g a t e _ t y p e [d e l a y]instance_name [l e f t b o u n d : r i g h t b o u n d]
(l i s t _ o f _ t e r m i n a l _ n a m e s) ;
l e f t b o u n d和r i g h t b o u n d值是任意的兩個(gè)常量表達(dá)式。左界不必大于右界,并且左、右界兩者都不必限定為0。示例如下。
w i r e [3:0] Out, InA, InB ;
. . .
n a n d G a n g [3:0] (Out, InA, InB ) ;
帶有范圍說明的實(shí)例語句與下述語句等價(jià):
n a n d
Gang3 (O u t[3], I n A[3], I n B[ 3 ] ) ,
G a n g 2 (O u t[2], I n A[2], I n B[ 2 ] ) ,
G a n g 1 (O u t[ 1 ] , I n A[1], I n B[ 1 ] ) ,
Gang0 (O u t[0], I n A[ 0 ] , I n B[ 0 ] ) ;
注意定義實(shí)例數(shù)組時(shí),實(shí)例名稱是不可選的。
5.10 隱式線網(wǎng)
如果在Verilog HDL模型中一個(gè)線網(wǎng)沒有被特別說明,那么它被缺省聲明為 1位線網(wǎng)。但是` d e f a u l t _ n e t t y p e編譯指令能夠用于取代缺省線網(wǎng)類型。編譯指令格式如下:
` d e f a u l t _ n e t t y p e n e t _ t y p e
例如:
`default_nettype wand
根據(jù)此編譯指令,所有后續(xù)未說明的線網(wǎng)都是 w a n d類型。
` d e f a u l t _ n e t t y p e編譯指令在模塊定義外出現(xiàn),并且在下一個(gè)相同編譯指令或 ` re s e t a l l編譯指令出現(xiàn)前一直有效。
5.11 簡(jiǎn)單示例
下面是圖5 - 7中4 - 1多路選擇電路的門級(jí)描述。注意因?yàn)閷?shí)例名是可選的 (除用于實(shí)例數(shù)組
情況外),在門實(shí)例語句中沒有指定實(shí)例名。
如果或門實(shí)例由下列的實(shí)例代替呢 ?
o r Z (Z , T 0 , T 1 , T 2 , T 3); //非法的Verilog HDL表達(dá)式。注意實(shí)例名還是Z,并且連接到實(shí)例輸出的線網(wǎng)也是 Z。這種情況在Verilog HDL中是不允許的。在同一模塊中,實(shí)例名不能與線網(wǎng)名相同。
5.12 2-4解碼器舉例
圖5 - 8中顯示的2 - 4解碼器電路的門級(jí)描述如下:
5.13 主從觸發(fā)器舉例
圖5 - 9所示的主從D觸發(fā)器的門級(jí)描述如下:
5.14 奇偶電路
圖5 - 1 0所示的9位奇偶發(fā)生器門級(jí)模型描述如下:
原文標(biāo)題:verilog入門- 門電平模型化
文章出處:【微信公眾號(hào):FPGA設(shè)計(jì)論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
責(zé)任編輯:haq
-
電路
+關(guān)注
關(guān)注
172文章
5950瀏覽量
172606 -
Verilog
+關(guān)注
關(guān)注
28文章
1351瀏覽量
110193 -
HDL
+關(guān)注
關(guān)注
8文章
327瀏覽量
47417
原文標(biāo)題:verilog入門- 門電平模型化
文章出處:【微信號(hào):gh_9d70b445f494,微信公眾號(hào):FPGA設(shè)計(jì)論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論