MAX+PLUSⅡ符號(hào)庫(kù)特殊圖元如何使用
MAX+PLUSⅡ符號(hào)庫(kù)提供了很多基本圖元(Primitive, 又稱(chēng)原語(yǔ))供圖形設(shè)計(jì)文件調(diào)用, 這些圖元大體上可分為緩沖器、 寄存器、 輸入輸出端口、 邏輯門(mén)圖元等幾類(lèi)。其中寄存器和組合邏輯門(mén)的使用比較簡(jiǎn)單, 這里對(duì)另幾類(lèi)特殊圖元的使用作一簡(jiǎn)單介紹。
1) 緩沖器類(lèi)圖元
在.gdf文件中所提供的緩沖器圖元包括CARRY(進(jìn)位緩沖器)、 CASCADE(級(jí)聯(lián)緩沖器)、 EXP(邏輯擴(kuò)展緩沖器)、 LCELL(邏輯單元緩沖器)、 MECLL(宏單元緩沖器)、 GLOBAL(全局緩沖器)、 SCLK(同步時(shí)鐘緩沖器)、 SOFT(軟緩沖器)、 TRI(三態(tài)緩沖器)、 OPNDRN和WIRE。 所有圖元均可在Prim庫(kù)中找到。除了TRI、 OPNDRN、 WIRE以外, 其它緩沖器圖元都能對(duì)邏輯綜合過(guò)程進(jìn)行控制。多數(shù)情況下, 不必使用這些圖元, 但是, 如果編譯器提示所作的設(shè)計(jì)太復(fù)雜而無(wú)法處理, 用戶(hù)就需要在設(shè)計(jì)中插入上述某些圖元, 從而引導(dǎo)邏輯綜合器產(chǎn)生所期望的結(jié)果。
(1) CARRY
CARRY可為一個(gè)邏輯塊設(shè)定進(jìn)位輸出邏輯, 并作為另一個(gè)邏輯塊的進(jìn)位輸入。 此圖元在加法器和計(jì)數(shù)器中可用以實(shí)現(xiàn)快速進(jìn)位鏈邏輯。一個(gè)CARRY可以饋送到一個(gè)或兩個(gè)邏輯體(Cones of Logic)。
如果一個(gè)CARRY同時(shí)饋送到兩個(gè)邏輯體, 那么其中一個(gè)且只能有一個(gè)邏輯體要由另一個(gè)CARRY作輸出緩沖。 在這種情況下, 兩個(gè)邏輯體會(huì)在同一個(gè)邏輯單元(LC)中實(shí)現(xiàn)。 對(duì)于加法器和計(jì)數(shù)器的第一級(jí), 必須遵守這個(gè)規(guī)則來(lái)把相加和進(jìn)位輸出邏輯連在一起。
輸出接到CARRY的邏輯體最多也只能有兩個(gè)輸入端, 第三個(gè)輸入端只能來(lái)自CARRY的輸入。
CARRY的輸出不能送到OUTPUT或OUTPUTC引腳。 兩個(gè)CARRY不能輸出至同一個(gè)門(mén)。CARRY不能以INPUT或INPUTC引腳作為輸入, 也不能以寄存器作為輸入。
(2) CASCADE
CASCADE可以作為一個(gè)與門(mén)邏輯或者一個(gè)或邏輯的級(jí)聯(lián)輸出, 也可作為另一個(gè)與邏輯或者或邏輯的級(jí)聯(lián)輸入。 利用級(jí)聯(lián)輸入功能, 可以把一個(gè)組合邏輯的快速級(jí)聯(lián)輸出與該器件中另一個(gè)相鄰的組合邏輯的輸出相或或者相與。
一個(gè)CASCADE只能輸出至一個(gè)門(mén), 也只能從一個(gè)門(mén)得到級(jí)聯(lián)輸入, 并且這些門(mén)只能是“與門(mén)”或者“或門(mén)”, 如AND、 NAND、 BAND、 BNAND、 OR、 NOR、 BOR和BNOR等。
CASCADE不能輸出至“異或門(mén)”(XOR), 也不能輸出至寄存器, 更不能輸出至OUTPUT或OUTPUTC引腳。 狄?摩根反演定理要求在一個(gè)級(jí)聯(lián)鏈中相互級(jí)聯(lián)的“與門(mén)”或“或門(mén)”的類(lèi)型必須相同。 級(jí)聯(lián)的“與門(mén)”不能輸出至級(jí)聯(lián)的“或門(mén)”, 反之亦然。 兩個(gè)CASCADE不能輸出至同一個(gè)門(mén)。
在邏輯綜合過(guò)程中, 可以讓編譯器自動(dòng)插入或刪除CASCADE。 具體方法是通過(guò)對(duì)Cascade Chain邏輯選項(xiàng)作不同的設(shè)置來(lái)控制邏輯綜合, 或在邏輯綜合選項(xiàng)中對(duì)Cascade Chain做出選擇。
(3) EXP
EXP表示在設(shè)計(jì)中需要一個(gè)擴(kuò)展乘積項(xiàng)。 在器件中擴(kuò)展乘積項(xiàng)是反相的。 是否要使用擴(kuò)展乘積項(xiàng)要由目標(biāo)邏輯極性決定。 例如, 如果一個(gè)EXP要輸出至兩個(gè)“與門(mén)”, 并且其中第二個(gè)“與門(mén)”有一個(gè)反相輸入端, 那么在邏輯綜合時(shí), 輸出至反相輸入端的EXP就被刪除, 而產(chǎn)生一個(gè)正邏輯。 輸出至不帶反相的輸入端的EXP不會(huì)被刪除, 而是被用來(lái)實(shí)現(xiàn)目標(biāo)邏輯。(一般情況下,應(yīng)由邏輯綜合器來(lái)決定在哪里插入或刪除EXP。)
在包含多個(gè)LAB的器件中, 一個(gè)EXP只能輸出到在同一個(gè)LAB中的邏輯。 如果一個(gè)EXP要向不同LAB中的邏輯進(jìn)行輸出, 就必須為每個(gè)LAB復(fù)制一個(gè)EXP。 如果在一個(gè)設(shè)計(jì)中包含大量的EXP, 邏輯綜合器就有可能把它們轉(zhuǎn)換為L(zhǎng)CELL, 目的是對(duì)乘積項(xiàng)和邏輯單元的使用進(jìn)行平衡。
(4) GLOBAL
GLOBAL表示某信號(hào)一定要使用一個(gè)全局(同步)時(shí)鐘(Clock)、 清除(Clear)、 置位(Preset)或輸出使能(Output Enable)信號(hào), 而不是由內(nèi)部邏輯產(chǎn)生或由一般的I/O引腳來(lái)驅(qū)動(dòng)。 根據(jù)各種系列器件所具備的全局信號(hào)的不同, 全局信號(hào)的使用也不同 。
如果一個(gè)輸入引腳直接與GLOBAL的輸入端相連, 那么GLOBAL的輸出可作為另一個(gè)圖元的時(shí)鐘、 清除、 置位或輸出使能等輸入信號(hào)。這時(shí)GLOBAL的輸出一定要與寄存器或TRI的輸入端直接相連。 如果GLOBAL的輸出端與TRI的輸出使能端相連, 有可能需要在輸入引腳與GLOBAL之間加一個(gè)非門(mén)。
全局信號(hào)的傳輸要比局部信號(hào)(Array Signals)快得多, 并且還會(huì)省出器件資源供其它邏輯使用。 GLOBAL常用來(lái)為整個(gè)設(shè)計(jì)或部分設(shè)計(jì)提供全局時(shí)鐘。 為了檢查寄存器所用的時(shí)鐘是否是全局時(shí)鐘, 可以查看報(bào)告文件(Report File)。
使用GLOBAL的另一種方法是用Logic Synthesis命令指示編譯器自動(dòng)選定設(shè)計(jì)中的一個(gè)已經(jīng)存在的信號(hào)作為全局的時(shí)鐘、 清除、 預(yù)置或輸出使能信號(hào)。 操作方法是, 選擇菜單命令A(yù)ssign / Global Project Logic Synthesis, 在出現(xiàn)的對(duì)話(huà)框中選擇Automatic Global欄中相應(yīng)的選項(xiàng)即可。
(5) SOFT
SOFT用來(lái)表示在設(shè)計(jì)中可能需要一個(gè)邏輯單元。 在對(duì)設(shè)計(jì)的處理過(guò)程中, 邏輯綜合器對(duì)SOFT的輸入邏輯進(jìn)行檢查, 以確定是否需要一個(gè)邏輯單元。 如果需要, SOFT就轉(zhuǎn)換為L(zhǎng)CELL, 如果不需要, 這個(gè)SOFT就被刪除。說(shuō)明了SOFT對(duì)邏輯綜合的作用。在編譯這個(gè)設(shè)計(jì)項(xiàng)目時(shí), 邏輯綜合器將刪除SOFT, 綜合后這個(gè)設(shè)計(jì)只占用一個(gè)邏輯單元。
如果編譯器提示某個(gè)設(shè)計(jì)太復(fù)雜, 那么可以在設(shè)計(jì)中插入SOFT來(lái)禁止作邏輯展開(kāi)。 例如, 可以在一個(gè)功能模塊后面加一個(gè)SOFT來(lái)隔離開(kāi)兩個(gè)組合邏輯電路。 如果選擇菜單命令A(yù)ssign / Global Project Logic Synthesis , 然后在出現(xiàn)的對(duì)話(huà)框中點(diǎn)擊Define Synthesis Style...>>鈕, 再在打開(kāi)的對(duì)話(huà)框中點(diǎn)擊Advanced Options..., 在書(shū)中圖 5.70 所示的對(duì)話(huà)框中選擇SOFT Buffer Insertion項(xiàng), 那么在編譯時(shí), 編譯器會(huì)自動(dòng)在設(shè)計(jì)中插入SOFT。
(6) LCELL
LCELL為所作的邏輯設(shè)計(jì)分配一個(gè)邏輯單元(LC)。 LCELL產(chǎn)生一個(gè)在整個(gè)器件內(nèi)的所有邏輯中均有效的正邏輯和一個(gè)負(fù)邏輯。MCELL與LCELL具有相同的功能, 適用于MAX+PLUSⅡ早期版本。 使用MAX+PLUSⅡ新版本設(shè)計(jì)時(shí), 應(yīng)該使用LCELL。 一個(gè)LCELL一般要占用一個(gè)邏輯單元, 且不會(huì)在邏輯綜合過(guò)程中被刪除。 但是, 不要使用LCELL來(lái)產(chǎn)生所需的延時(shí)或異步脈沖。 因?yàn)橛眠@種方式產(chǎn)生的延時(shí)隨溫度、 電源電壓以及所用器件制造過(guò)程的不同而不同, 因此會(huì)產(chǎn)生競(jìng)爭(zhēng)條件, 從而產(chǎn)生一個(gè)不可靠的電路。
如果在編譯器窗口下, 選擇菜單命令Processing / Design Doctor Setting..., 然后在出現(xiàn)的設(shè)置對(duì)話(huà)框中點(diǎn)擊Advanced Options>>鈕, 再打開(kāi)書(shū)中圖5.71所示Design Doctor中的Delay Chain選項(xiàng), 那么在編譯時(shí), 編譯器就會(huì)對(duì)用來(lái)產(chǎn)生延時(shí)或異步脈沖的串聯(lián)的LCELL或EXP提出警告信息。
(7) TRI
TRI是一個(gè)帶有輸入端、 輸出端和高電平有效的輸出使能信號(hào)端的三態(tài)緩沖器。 如果TRI的輸出使能端與VCC或一個(gè)最終結(jié)果始終為真的邏輯功能塊相連, 那么TRI在邏輯綜合過(guò)程中可能被轉(zhuǎn)化為SOFT。
一個(gè)TRI只能驅(qū)動(dòng)一個(gè)BIDIR或BIDIRC引腳。 如果在TRI輸出有反饋, 就一定要用一個(gè)BIDIR或BIDIRC引腳。 如果一個(gè)TRI輸出到一個(gè)邏輯塊, 它也一定要輸出至一個(gè)BIDIR或BIDIRC引腳。 但是,如果已輸出到BIDIR或BIDIRC引腳, 則可以不輸出至其它輸出端上。 在輸出使能信號(hào)沒(méi)有接到VCC上時(shí), TRI的輸出一定要連到OUTPUT、 OUTPUTC、 BIDIR或BIDIRC引腳上, 因?yàn)閮?nèi)部信號(hào)不可以為三態(tài)。
(8) OPNDRN
OPNDRN與TRI相似, 具有一個(gè)輸入端口和一個(gè)輸出端口。 當(dāng)OPNDRN由一個(gè)稱(chēng)為“in”的信號(hào)輸入時(shí), 等價(jià)于TRI的輸入端接地(GND), 而輸出使能端接“in”的反相。
如果OPNDRN的輸入為低電平(Low), 則輸出為低電平(Low); 如果輸入為高電平(High), 則輸出是高阻態(tài)。 OPNDRN由特定的器件系列支持(如FLEX 10K、 MAX7000S等), 在其它系列器件中, 它將被轉(zhuǎn)換為T(mén)RI。 如果選擇菜單命令A(yù)ssign/ Global Project Logic Synthesis...,并在出現(xiàn)的對(duì)話(huà)框中打開(kāi)了Automatic Open[CD*2]Drain Pins項(xiàng), 那么在編譯時(shí), 編譯器會(huì)自動(dòng)將下面的兩種結(jié)構(gòu)轉(zhuǎn)換為OPNDRN。
結(jié)構(gòu)一: TRI的輸出使能端接任意信號(hào), 但輸入端接地(GND);
結(jié)構(gòu)二: TRI的輸出使能端所接的信號(hào)是其輸入信號(hào)的反相。
一個(gè)OPNDRN只能驅(qū)動(dòng)一個(gè)BIDIR或BIDIRC引腳。 如果在OPNDRN后面有反饋回路, 那么必須用BIDIR或BIDIRC引腳。 如果一個(gè)OPNDRN有邏輯輸入, 則它也必須輸出到BIDIR或BIDIRC引腳。 如果OPNDRN輸出到一個(gè)BIDIR或BIDIRC引腳, 它不能再驅(qū)動(dòng)任何其它輸出。
(9) WIRE
WIRE用來(lái)對(duì)結(jié)點(diǎn)或總線(xiàn)重命名 , 它不實(shí)現(xiàn)任何邏輯功能。 WIRE具有方向性。 例如, 可以利用一個(gè)WIRE對(duì)一個(gè)雙向的總線(xiàn)的輸入或輸出部分重新命名。
評(píng)論