




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第5章結(jié)構(gòu)級(jí)建模方法5.1VerilogHDL內(nèi)置基元5.2用戶定義原語(yǔ)(UDP)5.3模塊的調(diào)用5.4行為描述和結(jié)構(gòu)描述的混合使用
5.1VerilogHDL內(nèi)置基元
VerilogHDL提供了26個(gè)內(nèi)置基元,用于對(duì)數(shù)字系統(tǒng)實(shí)際的邏輯結(jié)構(gòu)進(jìn)行建模。這些基元包括基本門(mén)電路、上拉電阻、下拉電阻、MOS開(kāi)關(guān)和雙向開(kāi)關(guān)。這26個(gè)基元可以再分類(lèi)如下:
(1)多輸入門(mén):and、nand、or、nor、xor、xnor。
(2)多輸出門(mén):buf、not。
(3)三態(tài)門(mén):bufif0、bufif1、notif0、notif1。
(4)上拉、下拉電阻:pullup、pulldown。
(5)?MOS開(kāi)關(guān):cmos、nmos、pmos、rcmos、rnmos、rpmos。
(6)雙向開(kāi)關(guān):tran、tranif0、tranif1、rtran、rtranif0、rtranif1。這些基元調(diào)用語(yǔ)句的語(yǔ)法格式如下:
<門(mén)的類(lèi)型>[<驅(qū)動(dòng)能力><延時(shí)>]<例化的門(mén)名字>(<端口列表>);
其中,“門(mén)的類(lèi)型”是門(mén)聲明語(yǔ)句所必需的,它可以是26個(gè)基元中的任意一種。“驅(qū)動(dòng)能力”和“延時(shí)”是可選項(xiàng),可根據(jù)不同的情況選不同的值或不選。“例化的門(mén)名字”是在本模塊中引用的這種類(lèi)型的門(mén)的實(shí)例名。<端口列表>按(輸出,輸入1,輸入2,…)順序列出。下面是門(mén)類(lèi)型的引用:
nand#10nd1(a,data,clock,clear);
該語(yǔ)句中引用了一個(gè)名為nd1的與非門(mén)(nand),其輸入為data、clock和clear,輸出為a,輸出與輸入的延時(shí)為10個(gè)單位時(shí)間。5.1.1基本門(mén)
1.多輸入門(mén)
多輸入門(mén)具有1個(gè)或多個(gè)輸入,但只有一個(gè)輸出。內(nèi)置的多輸入門(mén)有6種:and(與門(mén))、nand(與非門(mén))、or(或門(mén))、nor(或非門(mén))、xor(異或門(mén))、xnor(異或非門(mén))。
多輸入門(mén)實(shí)例化語(yǔ)句的語(yǔ)法格式如下:
gate_typeinstance_name(output,input1,…,inputN);圖5.1多輸入門(mén)的輸入/輸出關(guān)系
1)與門(mén)(and)
圖5.2和表5.1所示為與門(mén)的邏輯符號(hào)和邏輯表。
例如:
andU1(out1,a,b,c,d);
/*與門(mén)U1,輸出為out1,有4個(gè)輸入a、b、c、d*/圖5.2與門(mén)的邏輯符號(hào)
2)與非門(mén)(nand)
圖5.3和表5.2所示為與非門(mén)的邏輯符號(hào)和邏輯表。
例如:
nandU2(sum,a,b,c);
/*與非門(mén)U2,輸出為sum,帶有3個(gè)輸入a、b、c*/圖5.3與非門(mén)的邏輯符號(hào)
3)或門(mén)(or)
圖5.4和表5.3所示為或門(mén)的邏輯符號(hào)和邏輯表。
例如:
orU3(out,in1,in2),U4(out1,a,b,c);
/*或門(mén)U3、U4(同類(lèi)門(mén)實(shí)例引用簡(jiǎn)化方式)*/圖5.4或門(mén)的邏輯符號(hào)
4)或非門(mén)(nor)
圖5.5和表5.4所示為或非門(mén)的邏輯符號(hào)和邏輯表。
例如:
norU5(out,in1,in2);
norU6(out1,out,b,c);
//U5輸出out信號(hào)連接到U6的輸入端口圖5.5或非門(mén)的邏輯符號(hào)表5.4或非門(mén)的邏輯表
5)異或門(mén)(xor)
圖5.6和表5.5所示為異或門(mén)的邏輯符號(hào)和邏輯表。
例如:
xorU7(out,in1,in2);
xorU8(out1,out,in1,c);
//in1信號(hào)連接到U7、U8的輸入端口圖5.6異或門(mén)的邏輯符號(hào)表5.5異或門(mén)的邏輯表
6)異或非門(mén)(xnor)
圖5.7和表5.6所示為異或非門(mén)的邏輯符號(hào)和邏輯表。
例如:
xnorU11(out,in1,in2);
xnor(out1,out,b,c);//沒(méi)有實(shí)例名圖5.7異或非門(mén)的邏輯符號(hào)表5.6異或非門(mén)的邏輯表
2.多輸出門(mén)
多輸出門(mén)具有一個(gè)輸入、一個(gè)或多個(gè)輸出。內(nèi)置的多輸出門(mén)有兩種:buf(緩沖門(mén))和not(非門(mén))。
多輸出門(mén)實(shí)例語(yǔ)句的語(yǔ)法格式如下:
gate_typeinstance_name(output1,…,outputN,input);
其中,gate_type為門(mén)類(lèi)型,是上述的兩種多輸出門(mén)之一;instance_name是這個(gè)實(shí)例門(mén)的名稱(chēng);端口output1,…,outputN是輸出端,最后一個(gè)端口input是輸入端。多輸出門(mén)的形式如圖5.8所示。圖5.8多輸出門(mén)圖5.9和表5.7為多輸出門(mén)的邏輯符號(hào)和邏輯表。圖5.9多輸出門(mén)的邏輯符號(hào)
3.三態(tài)門(mén)
三態(tài)門(mén)用于對(duì)三態(tài)驅(qū)動(dòng)器建模,共有3個(gè)端口:一個(gè)數(shù)據(jù)輸入端、一個(gè)控制信號(hào)輸入端和一個(gè)數(shù)據(jù)輸出端。內(nèi)置的三態(tài)門(mén)有4種:bufif1(高有效三態(tài)門(mén))、bufif0(低有效三態(tài)門(mén))、notif1(高有效三態(tài)非門(mén))、notif0(低有效三態(tài)非門(mén))。
三態(tài)門(mén)實(shí)例語(yǔ)句的語(yǔ)法格式如下:
gate_typeinstance_name(output,input,control);
其中,gate_type為門(mén)類(lèi)型,是上述的4種三態(tài)門(mén)之一;instance_name是這個(gè)實(shí)例門(mén)的名稱(chēng);第一個(gè)端口output是輸出端,第二個(gè)端口input是輸入端,第三個(gè)端口control是控制信號(hào)輸入端。
圖5.10所示為三態(tài)門(mén)的邏輯符號(hào)。圖5.10三態(tài)門(mén)的邏輯符號(hào)表5.8~表5.11所示分別為四種三態(tài)門(mén)的邏輯表。表中的某些項(xiàng)是可選的。例如,0/z表明根據(jù)輸入數(shù)據(jù)的信號(hào)強(qiáng)度和控制信號(hào)的值,輸出既可以為0也可以為z。例如:5.1.2上拉、下拉電阻
上拉電阻和下拉電阻是一類(lèi)只有一個(gè)端口(輸出端)的器件模型,其作用是改變其輸出端的值。上拉電阻將輸出置為1,下拉電阻將輸出置為0。
聲明上拉電阻和下拉電阻的關(guān)鍵字是:pullup(上拉電阻)、pulldown(下拉電阻)。
上拉、下拉電阻的語(yǔ)法形式如下:
pull_type[instance_name](output);
其中,pull_type是pullup或pulldown;可選項(xiàng)instance_name是實(shí)例名;output是唯一的輸出端口。5.1.3MOS開(kāi)關(guān)
VerilogHDL具有對(duì)MOS晶體管級(jí)進(jìn)行設(shè)計(jì)的能力。隨著電路復(fù)雜性的增加(上百萬(wàn)的晶體管)及先進(jìn)CAD工具的出現(xiàn),以開(kāi)關(guān)級(jí)為基礎(chǔ)進(jìn)行的設(shè)計(jì)正在逐漸萎縮。VerilogHDL目前僅提供用邏輯值0、1、x、z和與它們相關(guān)的驅(qū)動(dòng)強(qiáng)度進(jìn)行數(shù)字設(shè)計(jì)的能力,沒(méi)有模擬設(shè)計(jì)能力。因此在VerilogHDL中,晶體管也僅被當(dāng)作導(dǎo)通或者截止的開(kāi)關(guān)。MOS模型在仿真時(shí)表現(xiàn)為兩種狀態(tài):開(kāi)或關(guān),即導(dǎo)通或不導(dǎo)通。對(duì)于MOS來(lái)說(shuō),數(shù)據(jù)只能從輸入端流向輸出端,并且可以通過(guò)設(shè)置控制信號(hào)來(lái)關(guān)閉數(shù)據(jù)流,所以MOS是單向的。
Verilog提供了6種MOS晶體管開(kāi)關(guān):cmos、pmos、rcmos、rpmos、nmos、rnmos。
MOS晶體管開(kāi)關(guān)的語(yǔ)法格式如下:
mos_type[instance_name](outputA,inputB,controlC);
其中,mos_type是nmos、rnmos、pmos和rpmos四種三端口MOS開(kāi)關(guān)之一;可選項(xiàng)instance_name是這個(gè)MOS開(kāi)關(guān)實(shí)例的名稱(chēng);第一個(gè)端口outputA為輸出端,第二個(gè)端口inputB是輸入端,第三個(gè)端口controlC是控制信號(hào)輸入端。pmos、nmos、rnmos和rpmos均為三端口MOS開(kāi)關(guān),包括一個(gè)數(shù)據(jù)輸出端、一個(gè)數(shù)據(jù)輸入端和一個(gè)控制信號(hào)輸入端。nmos用于NMOS晶體管建模;pmos用于PMOS晶體管建模。NMOS和PMOS開(kāi)關(guān)符號(hào)如圖5.11所示。圖5.11NMOS和PMOS開(kāi)關(guān)符號(hào)
pmos、nmos、rnmos和rpmos這四種MOS開(kāi)關(guān)的工作過(guò)程如下:
(1)對(duì)于nmos和rnmos開(kāi)關(guān),如果其控制信號(hào)為0,那么關(guān)閉這個(gè)開(kāi)關(guān),使輸出為z;如果控制信號(hào)是1,則打開(kāi)這個(gè)開(kāi)關(guān),把輸入端的數(shù)據(jù)傳輸至輸出端。
(2)對(duì)于pmos和rpmos開(kāi)關(guān),如果其控制信號(hào)為1,那么關(guān)閉這個(gè)開(kāi)關(guān),使輸出為z;如果控制信號(hào)是0,則打開(kāi)這個(gè)開(kāi)關(guān),把輸入端的數(shù)據(jù)傳輸至輸出端。
rnmos和rpmos與nmos和pmos相比,它們的輸入端和輸出端之間存在阻抗(電阻)。因此,對(duì)于rnmos和rpmos,當(dāng)數(shù)據(jù)從輸入端傳輸至輸出端時(shí),由于電阻帶來(lái)的損耗,使得數(shù)據(jù)的信號(hào)強(qiáng)度減弱。例如:
nmosn1(out,data,control); //實(shí)例名為n1的nmos開(kāi)關(guān)
pmosp1(out,data,control); //實(shí)例名為p1的pmos開(kāi)關(guān)
輸出out的值由輸入data和control的值確定。nmos和pmos的邏輯表如表5.12所示。信號(hào)data和control不同的組合導(dǎo)致這兩個(gè)開(kāi)關(guān)輸出1、0或者z、x邏輯值(如果不能確定輸出為1或0,就有可能輸出z、x值)。
cmos和rcmos(cmos的高阻態(tài))有4個(gè)端口:一個(gè)數(shù)據(jù)輸出端,一個(gè)數(shù)據(jù)輸入端和兩個(gè)控制信號(hào)輸入端。其語(yǔ)法格式如下:
(r)cmos[instance_name](outputA,inputB,Ncontrol,Pcontrol);
其中,可選項(xiàng)instance_name是這個(gè)MOS開(kāi)關(guān)實(shí)例的名稱(chēng);第一個(gè)端口outputA為輸出端,第二個(gè)端口inputB是輸入端,第三個(gè)端口Ncontrol是N通道控制信號(hào)輸入端,第四個(gè)端口Pcontrol是P通道控制信號(hào)輸入端。cmos(rcmos)的開(kāi)關(guān)行為與pmos(rpmos)和nmos(rnmos)的類(lèi)似。可以這樣認(rèn)為,cmos(outputA,inputB,Ncontrol,Pcontrol)是一個(gè)nmos(output,input,Ncontrol)和一個(gè)pmos(output,input,Pcontrol)的組合。也就是可以用如圖5.12所示nmos和pmos器件來(lái)建立一個(gè)cmos器件的模型。圖5.12cmos開(kāi)關(guān)在cmos開(kāi)關(guān)中,存在著pmos和nmos兩條數(shù)據(jù)通路,當(dāng)Pcontrol為0時(shí),上半部分的pmos開(kāi)關(guān)打開(kāi),數(shù)據(jù)可以從輸入端inputB傳輸?shù)捷敵龆薿utputA;當(dāng)Ncontrol為1時(shí),下半部分的nmos開(kāi)關(guān)打開(kāi),數(shù)據(jù)可以從輸入端inputB傳輸?shù)捷敵龆薿utputA;因此,cmos的真值表可以參考pmos和nmos的。例如:
cmosc1(out,data,ncontrol,pcontrol);//實(shí)例名c1的cmos開(kāi)關(guān)
rcmos是cmos的高阻態(tài),其開(kāi)關(guān)行為與cmos完全相同,只是在其輸入端和輸出端之間存在著阻抗,所以數(shù)據(jù)從輸入傳送到輸出的過(guò)程中存在著損耗,使得其信號(hào)強(qiáng)度被減弱。5.1.4雙向開(kāi)關(guān)
NMOS、PMOS和CMOS管都是從漏極向源極導(dǎo)通的,是單向的。在數(shù)字電路中,雙向?qū)ǖ钠骷埠艹S谩?duì)雙向?qū)ǖ钠骷裕鋬蛇叺男盘?hào)都可以是驅(qū)動(dòng)信號(hào)。通過(guò)設(shè)計(jì)雙向開(kāi)關(guān)就可以實(shí)現(xiàn)雙向?qū)ǖ钠骷erilogHDL內(nèi)置了6種雙向開(kāi)關(guān),即數(shù)據(jù)可以在兩個(gè)端口之間雙向流動(dòng)。這6種雙向開(kāi)關(guān)是tran、rtran、tranif0、rtranif0、tranif1、rtranif1。
其中,前兩種開(kāi)關(guān)tran和rtran(tran的高阻態(tài))是不能關(guān)斷的,始終處于打開(kāi)狀態(tài),數(shù)據(jù)可以在兩個(gè)端口之間自由流動(dòng)。tran和rtran的語(yǔ)法形式如下:
(r)tran[instance_name](signalA,signalB);這兩種開(kāi)關(guān)只有兩個(gè)端口signalA和signalB,數(shù)據(jù)可以在這兩個(gè)端口之間流動(dòng),因?yàn)闆](méi)有控制信號(hào),這兩個(gè)開(kāi)關(guān)都不能被關(guān)斷,所以這種雙向的數(shù)據(jù)流動(dòng)是無(wú)條件進(jìn)行的。
后4種開(kāi)關(guān)(tranif0、rtranif0、tranif1和rtranif1)可以通過(guò)控制信號(hào)關(guān)閉。其語(yǔ)法形式如下:
bidirection_type[instance_name](signalA,signalB,controlC);
其中,bidirection_type是上述4種雙向開(kāi)關(guān)之一,實(shí)例名instance_name是可選項(xiàng),前兩個(gè)端口(signalA、signalB)是雙向端口,第三個(gè)端口controlC是控制信號(hào)輸入端。對(duì)于tranif0和rtranif0,controlC為0時(shí)打開(kāi)開(kāi)關(guān),允許數(shù)據(jù)雙向流動(dòng),當(dāng)controlC為1時(shí)關(guān)閉開(kāi)關(guān),禁止數(shù)據(jù)流動(dòng);對(duì)于tranif1和rtranif1,controlC為1時(shí)打開(kāi)開(kāi)關(guān),允許數(shù)據(jù)雙向流動(dòng),當(dāng)controlC為0時(shí)關(guān)閉開(kāi)關(guān),禁止數(shù)據(jù)流動(dòng)。在這6種雙向開(kāi)關(guān)中,tran、tranif0和tranif1內(nèi)的數(shù)據(jù)流動(dòng)時(shí)沒(méi)有損耗,但rtran、rtranif0和rtranif1的輸入端和輸出端之間存在阻抗,當(dāng)信號(hào)通過(guò)開(kāi)關(guān)傳輸時(shí),信號(hào)強(qiáng)度會(huì)減弱。
tran、tranif0和tranif1的邏輯符號(hào)如圖5.13所示。圖5.13雙向開(kāi)關(guān)的邏輯符號(hào)
tran開(kāi)關(guān)作為兩個(gè)信號(hào)inout1和inout2之間的緩存,inout1或inout2都可以是驅(qū)動(dòng)信號(hào)。僅當(dāng)control信號(hào)是邏輯0時(shí),tranif0開(kāi)關(guān)連接inout1和inout2兩個(gè)信號(hào);如果control信號(hào)是邏輯1,則沒(méi)有驅(qū)動(dòng)源的信號(hào)取高阻態(tài)值z(mì),有驅(qū)動(dòng)源的信號(hào)仍然從驅(qū)動(dòng)源取值。如果control信號(hào)是邏輯1,則tranif1開(kāi)關(guān)連接的inout1和inout2兩個(gè)信號(hào)導(dǎo)通。5.1.5門(mén)級(jí)建模舉例
下面通過(guò)幾個(gè)例子學(xué)習(xí)門(mén)級(jí)結(jié)構(gòu)建模的基本方法。
4選1多路選擇器有4個(gè)數(shù)據(jù)輸入端D0、D1、D2、D3,一個(gè)數(shù)據(jù)輸出端Z和兩個(gè)控制信號(hào)輸入端S0、S1。選擇器會(huì)根據(jù)S0和S1的值從4個(gè)數(shù)據(jù)輸入端中選擇其中的一個(gè)送到輸出端。圖5.14和表5.13所示分別為4選1多路選擇器的電路結(jié)構(gòu)和真值表。圖5.144選1多路選擇器的電路結(jié)構(gòu)
5.2用戶定義原語(yǔ)(UDP)
5.2.1UDP的定義
UDP的定義與模塊無(wú)關(guān),與模塊屬同一層次,所以UDP定義不能出現(xiàn)在模塊之內(nèi)。UDP定義可以單獨(dú)出現(xiàn)在一個(gè)VerilogHDL文件中或與模塊定義同時(shí)處于某個(gè)文件中。它的語(yǔ)法形式如下:注意:
(1)
UDP只能有一個(gè)輸出端,而且必定是端口說(shuō)明列表的第一項(xiàng)。
(2)?UDP可以有多個(gè)輸入端,最多允許有10個(gè)輸入端。
(3)?UDP所有的端口變量必須是標(biāo)量,也就是必須是1位的。
(4)在UDP的真值表項(xiàng)中,只允許出現(xiàn)0、1、x三種邏輯值,高阻值狀態(tài)z是不允許出現(xiàn)的。
(5)只有輸出端才可以被定義為寄存器型變量。
(6)?initial語(yǔ)句用于為時(shí)序電路內(nèi)部的寄存器賦初值,只允許賦0、1、x三種邏輯值,缺省值為x。
在UDP中可以描述兩類(lèi)電路行為:組合電路和時(shí)序電路(邊沿觸發(fā)和電平觸發(fā))。5.2.2組合電路UDP
在組合電路UDP中,填寫(xiě)的功能列表類(lèi)似真值表,即規(guī)定了不同的輸入值組合相對(duì)應(yīng)的輸出值。沒(méi)有指定的任意組合輸出為x。表中output是輸出端的值,input是輸入端的值,它們的排列順序必須和端口列表中的順序相同。表中每一行的語(yǔ)法形式如下:
input1input2…:output
列表中給出多個(gè)這樣的行就能對(duì)不同的輸入值組合定義對(duì)應(yīng)的輸出值,如果某個(gè)輸入值組合沒(méi)有定義其輸出,那么就把這種情況的輸出置為x。
【例5.1】2-1數(shù)據(jù)選擇器的UDP定義方法。
【例5.2】使用2-1數(shù)據(jù)選擇器原語(yǔ)構(gòu)建4-1多路選擇器。在UDP實(shí)例中共可以指定2個(gè)時(shí)延,這是由于UDP的輸出可以取值0、1或x(無(wú)截止時(shí)延)。使用6個(gè)輸入端A、B、C、D、Sel[1]、Sel[2]和1個(gè)輸出端Z以及2個(gè)線網(wǎng)TL、TP來(lái)實(shí)現(xiàn)3個(gè)UDP的連接,其內(nèi)部結(jié)構(gòu)如圖5.15所示。圖5.15使用UDP構(gòu)造的4-1多路選擇器5.2.3時(shí)序電路UDP
1.初始化狀態(tài)寄存器
時(shí)序電路UDP的狀態(tài)初始化可以使用一條過(guò)程賦值語(yǔ)句實(shí)現(xiàn)。其語(yǔ)法形式如下:
initialreg_name=0,1,orx;
其中,reg_name是狀態(tài)寄存器,0、1、x是這個(gè)寄存器可以取的值。初始化語(yǔ)句在UDP定義中出現(xiàn),但初始化狀態(tài)寄存器不是必需的,若在UDP定義中沒(méi)有狀態(tài)寄存器初始化語(yǔ)句,那么狀態(tài)寄存器的值為x。
2.電平觸發(fā)的時(shí)序電路UDP
電平觸發(fā)的時(shí)序電路UDP比組合型多了一個(gè)寄存器,主要用來(lái)保存當(dāng)前的狀態(tài),也可以作為當(dāng)前的輸出。當(dāng)前的狀態(tài)和輸入確定下一個(gè)狀態(tài)和輸出。
【例5.3】電平觸發(fā)的D鎖存器時(shí)序電路UDP,只要時(shí)鐘(clk)為低電平0,數(shù)據(jù)就從輸入傳遞到輸出,否則輸出值保持不變。
3.邊沿觸發(fā)的時(shí)序UDP
【例5.4】用邊沿觸發(fā)時(shí)序電路UDP為邊沿觸發(fā)的D觸發(fā)器建模,初始化語(yǔ)句用于初始化觸發(fā)器的狀態(tài)。
【例5.5】假定d_edge為UDP定義,它現(xiàn)在就能夠像基本門(mén)一樣在模塊中使用,如下面的4位寄存器所示。
4.電平觸發(fā)和邊沿觸發(fā)混合的UDP
時(shí)序UDP包括電平觸發(fā)和邊沿觸發(fā)兩種,VerilogHDL允許這兩種行為混合存在于同一個(gè)UDP中。在這種情況下,邊沿變化在電平觸發(fā)之前處理,即電平觸發(fā)項(xiàng)覆蓋邊沿觸發(fā)項(xiàng)。
【例5.6】帶異步清零的D觸發(fā)器的UDP描述。
5.3模?塊?的?調(diào)?用
為了把所有模塊連接成系統(tǒng)或者高層模塊而調(diào)用低層子模塊,需使用模塊實(shí)例化語(yǔ)句。模塊實(shí)例化語(yǔ)句和調(diào)用基元時(shí)使用的基元實(shí)例化語(yǔ)句形式上完全一致,也是使用結(jié)構(gòu)級(jí)建模方法描述的。
調(diào)用低層模塊的語(yǔ)法形式為:
低層模塊名實(shí)例名(參數(shù)定義);
其中,“低層模塊名”是要引用的模塊名;“實(shí)例名”是模塊的實(shí)例名;“參數(shù)定義”是端口關(guān)聯(lián)聲明。5.3.1端口的關(guān)聯(lián)方式
端口有兩種關(guān)聯(lián)方式,即位置關(guān)聯(lián)方式和名稱(chēng)關(guān)聯(lián)方式,這兩種關(guān)聯(lián)方式不能夠混合使用,其語(yǔ)法形式如下:
port_expr
//位置關(guān)聯(lián)方式
.PortName(port_expr) //名稱(chēng)關(guān)聯(lián)方式
其中,PortName是子模塊在定義時(shí)給出的端口名稱(chēng),port_expr是高層模塊內(nèi)定義的線網(wǎng)或寄存器變量,這個(gè)變量與子模塊端口關(guān)聯(lián)就實(shí)現(xiàn)了子模塊與高層模塊之間的連接。名稱(chēng)關(guān)聯(lián)方式是用一個(gè)小數(shù)點(diǎn)“.”引導(dǎo)的表達(dá)式.PortName(port_expr),模塊端口和端口表達(dá)式的關(guān)聯(lián)被顯式地指定,也就是子模塊PortName端口在高層模塊中與port_expr相關(guān)聯(lián)。因此端口的關(guān)聯(lián)順序并不重要。
位置關(guān)聯(lián)方式不需要給出子模塊定義時(shí)給出的端口名稱(chēng)PortName,只要端口表達(dá)式按模塊定義時(shí)的端口順序與模塊中的端口關(guān)聯(lián)即可。port_expr可以是以下的任何類(lèi)型:標(biāo)識(shí)符(reg或net)、位選擇、部分位選擇、前三種類(lèi)型的合并、表達(dá)式(只適用于輸入端口)。例如:
MicroM1(UdIn[3:0],{WrN,RdN},Status[0],Status[1],
&UdOut[0:7],TxData);
【例5.7】使用兩個(gè)半加器模塊構(gòu)造全加器,子模塊是半加器HA,高層模塊是全加器FA,在FA中引用了兩個(gè)HA。邏輯圖如圖5.16所示,其中h1和h2分別是兩個(gè)半加器。圖5.16使用兩個(gè)半加器模塊構(gòu)造的全加器子模塊半加器的VerilogHDL描述:全加器的VerilogHDL描述:5.3.2端口懸空的處理
在實(shí)例化語(yǔ)句中,懸空端口可通過(guò)將端口表達(dá)式表示為空白來(lái)指定為懸空端口。
【例5.8】子模塊的描述。高層模塊調(diào)用子模塊DFF,模塊實(shí)例化語(yǔ)句是:
(1)DFFd1(.Q(QS),.Qbar(),.Data(D),.Preset(),.Clock(CK));/*名稱(chēng)關(guān)聯(lián)方式。端口Qbar和Preset的括號(hào)里為空,表明這兩個(gè)端口被懸空*/
(2)DFFd2(QS,,D,,CK);/*位置對(duì)應(yīng)方式。輸出端口Qbar和輸入端口Preset的位置都被懸空*/
懸空的端口因?yàn)轭?lèi)型不同而意義不同。若模塊的輸出端口懸空,則表示該輸出端口不用。若模塊的輸入端口懸空,則被置為高阻態(tài)z。5.3.3端口寬度匹配問(wèn)題
在端口關(guān)聯(lián)時(shí),若端口和局部端口表達(dá)式的長(zhǎng)度不同,則端口通過(guò)無(wú)符號(hào)數(shù)的右對(duì)齊或截?cái)喾绞竭M(jìn)行匹配。
【例5.9】模塊調(diào)用時(shí)端口寬度匹配舉例。
子模塊的描述:頂層模塊Top的描述:在子模塊guan_lian的實(shí)例語(yǔ)句中:
(1)?2位的Bdl和6位的Pba相連,Bdl[2]連接到Pba[0],Bdl[1]連接到Pba[1],余下的輸入端口Pba[5]、Pba[4]Pba[3]和Pba[2]被截?cái)啵幱趹铱諣顟B(tài),因此為高阻態(tài)z。
(2)?5位的Mpr和3位的
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 碌曲縣2025年數(shù)學(xué)五年級(jí)第二學(xué)期期末經(jīng)典試題含答案
- 長(zhǎng)春建筑學(xué)院《形體訓(xùn)練1》2023-2024學(xué)年第二學(xué)期期末試卷
- 襄陽(yáng)科技職業(yè)學(xué)院《中西醫(yī)結(jié)合耳鼻咽喉科學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 伊吾縣2025屆數(shù)學(xué)五年級(jí)第二學(xué)期期末學(xué)業(yè)水平測(cè)試試題含答案
- 浙江省杭州市富陽(yáng)區(qū)2025屆初三調(diào)研測(cè)試(二)物理試題文試題含解析
- 骨科機(jī)器人手術(shù)個(gè)案護(hù)理
- 銷(xiāo)售新人培訓(xùn)方案
- 煤礦安全規(guī)程培訓(xùn)課件
- 淘寶售后規(guī)則培訓(xùn)
- 物流訂單管理培訓(xùn)課件
- 多元函數(shù)概述
- 廚師用電安全培訓(xùn)
- 產(chǎn)品經(jīng)理實(shí)習(xí)報(bào)告
- 2025贍養(yǎng)老人個(gè)稅扣除分?jǐn)倕f(xié)議書(shū)模板
- 《陸上風(fēng)電場(chǎng)工程變形測(cè)量技術(shù)規(guī)程》
- 派出所民警進(jìn)校園安全教育
- 骨折病人的情志護(hù)理
- 三農(nóng)投資方向研究報(bào)告及手冊(cè)
- 《瑤族服飾特點(diǎn)》課件
- 【公開(kāi)課】功率++課件+-2024-2025學(xué)年物理人教版八年級(jí)下冊(cè)
- 眼瞼外傷手術(shù)縫合技巧
評(píng)論
0/150
提交評(píng)論