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