【正文】
3。C l e a rS e l e c tG l o b a lC l e a rV CCC l o c k / E n a b l eS e l e c tC L R NE N AP R ND Qt o I / OC o n t r o lB l o c kt o P IA2f r o mI / O p i nF a s t I n p u tS e l e c tP r o g r a m m a b l eR e g i s t e rR e g i s t e rB y p a s sL A B L o c a l A r r a y 并聯(lián)擴 展項( 來自其它 宏單元) G l o b a lC l o c k s圖 529 MAX7000A的宏單元 2) 盡管大多數(shù)邏輯函數(shù)可以用一個宏單元的 5個乘積項來實現(xiàn), 但在某些復雜的函數(shù)中需要用到更多的乘積項,這樣就必須利用另外的宏單元。 雖然多個宏單元也可以通過 PIA連接,但AX7000A允許利用擴展乘積項, 從而保證用盡可能少的邏輯資源實現(xiàn)盡可能快的工作速度。 擴展乘積項有兩種: 共享擴展項和并聯(lián)擴展項。 在每一個宏單元的與陣列所提供的 5個乘積項中,都可以有一個乘積項經(jīng)反相后反饋回與陣列,這個乘積項就被稱為共享擴展項。 這樣每個 LAB最多可以有 16個共享擴展項被本 LAB的任何一個宏單元所使用。圖 530( a)表明了共享擴展項是如何饋送到多個宏單元的。 圖 530 MX7000A的擴展乘積項 (a) 共享擴展項; ( a )……宏單元 乘積項邏 輯宏單元 乘積項邏 輯乘積項 選擇矩陣來自 P I A 的36 個信號16 個可共 享擴展項 并聯(lián)擴展項是指在一些宏單元中沒有被使用的乘積項, 并且可以被直接饋送到相鄰的宏單元的或邏輯以實現(xiàn)復雜的邏輯函數(shù)。 在使用并聯(lián)擴展項時,或門最多允許 20個乘積項直接輸入, 其中 5個乘積項由本宏單元提供, 另外 15個乘積項是由本 LAB中相鄰的宏單元提供的并聯(lián)擴展項。 在 MAX7000A的 LAB中, 16個宏單元被分成兩組, 每組有 8個宏單元(即一組為 1~ 8, 另一組為 9~ 16), 從而在 LAB中形成兩條獨立的并聯(lián)擴展項借出 /借入鏈。一個宏單元可以從與之相鄰的較小編號的宏單元中借入并聯(lián)擴展項,而第 9個宏單元只能借出并聯(lián)擴展項,第 16個宏單元只能借入并聯(lián)擴展項。圖 530( b)表明了并聯(lián)擴展項是如何從相鄰宏單元借用的。 圖 530 MX7000A (b) 并聯(lián)擴展項 P r o d u c t T e r mS e l e c tM a t r i xP r o d u c t T e r mS e l e c tM a t r i x…………來自 P I A 的36 個信號16 個可共 享擴展項P r e s e t來自上 一個宏單元C l o c kC l e a rC l o c kC l e a r到下一 個宏單元宏單元 乘積項邏 輯宏單元 乘積項邏 輯( b )P r e s e t 3) 輸出邏輯宏單元 OLMC MAX7000A所有宏單元的 OLMC都能單獨地被配置成組合邏輯工作方式或時序邏輯工作方式。 在組合邏輯工作方式下,觸發(fā)器被旁路; 在時序邏輯工作方式下, 觸發(fā)器的控制信號(清零、 置位、 時鐘和使能)可以通過編程選擇, 觸發(fā)器的輸入可以來自本單元的組合輸出, 也可以直接來自于 I/O引腳。 另外, 宏單元輸出信號的極性也可通過編程控制。 3. 輸入 /輸出控制塊 輸入 /輸出控制塊( I/O Control Block)的結構如圖 531所示。 I/O控制塊允許每一個 I/O引腳單獨地配置成輸入、 輸出或雙向工作方式。所有的 I/O引腳都有一個三態(tài)輸出緩沖器, 可以從6~ 10個全局輸出使能信號中選擇一個信號作為其控制信號, 也可以選擇集電極開路輸出。輸入信號可以饋入 PIA, 也可以通過快速通道直接送到宏單元的觸發(fā)器。 P I A…UCCt o O t h e r I / O P i n s G N Df r o mM a c r o c e l lO p e n D r a i n O u t p u tS l e w R a t e C o n t r o lF a s t I n p u t t oM a c r o c e l lR e g i s t e rt o P I AO E S e l e c t M u l t i p l e x e r6 o r 1 0 G t o b a lO u t p u t E n a b l e S i g n a l s…圖 531 MAX7000A的I/O控制塊結構 4. 可編程互連陣列 PIA 通過可編程互連陣列可以將多個 LAB和 I/O控制塊連接起來構成所需要的邏輯。 MAX7000A中的 PIA是一組可編程的全局總線, 它可以將饋入它的任何信號源送到整個芯片的各個地方。 圖 5’32表明了饋入到 PIA的信號是如何送到 LAB的。 每個可編程單元控制一個 2輸入的與門, 以從 PIA選擇饋入 LAB的信號。 多數(shù) CPLD中的互連資源都有類似于 MAX7000A的 PIA的這種結構,這種連接線最大的特點是能夠提供具有固定時延的通路, 也就是說信號在芯片中的傳輸時延是固定的、可以預測的, 所以將這種連接線稱為確定型連接線。 圖 532 MAX7000A的 PIA t o L A BP I A S i g n a l s??? 現(xiàn)場可編程門陣列 FPGA 與前面介紹過的幾種 PLD器件不同, 現(xiàn)場可編程門陣列FPGA的主體不再是與 或陣列,而是由多個可編程的基本邏輯單元組成的一個二維矩陣。 圍繞該矩陣設有 I/O單元,邏輯單元之間以及邏輯單元與 I/O單元之間通過可編程連線進行連接。因此, FPGA被稱為單元型 HDPLD。而由于基本邏輯單元的排列方式與掩膜可編程的門陣列 GA類似,所以沿用了門陣列這個名稱。 就編程工藝而言, 多數(shù)的 FPGA采用 SRAM編程工藝, 也有少數(shù)的 FPGA采用反熔絲編程工藝。 下面主要以 Xilinx公司的第三代 FPGA產(chǎn)品 ——XC4000系列為例,介紹 FPGA的電路結構和工作原理。 Xilinx公司 FPGA的基本結構如圖 533所示, 它主要由三部分組成: 可配置邏輯塊CLB( Configurable Logic Block)、 可編程輸入 /輸出塊 IOB( Input/Output Block)和可編程互連 PI( Programmable Interconnect)。 整個芯片的邏輯功能是通過對芯片內(nèi)部的 SRAM編程確定的。 圖 533 FPGA的結構示意圖 開關矩 陣可配置 邏輯塊I / O 塊布線資 源 1. 可配置邏輯塊 CLB CLB是 FPGA實現(xiàn)各種邏輯功能的基本單元。圖 534為XC4000E中 CLB的簡化結構框圖,它主要由快速進位邏輯、 3個邏輯函數(shù)發(fā)生器、 2個 D觸發(fā)器、 多個可編程數(shù)據(jù)選擇器以及其它控制電路組成。 CLB共有 13個輸入和 4個輸出。 在 13個輸入中, G1~ G F1~ F4為 8個組合邏輯輸入, K為時鐘信號, C1~ C4是 4個控制信號,它們通過可編程數(shù)據(jù)選擇器分配給觸發(fā)器時鐘使能信號 EC、觸發(fā)器置位 /復位信號 SR/H0、直接輸入信號 DIN/H2及信號 H1;在 4個輸出中, X、 Y為組合輸出, XQ、 YQ為寄存器 /控制信號輸出。 圖 534 簡化的 CLB結構框圖 L O G I CF U N C T I O NOFG1G4L O G I CF U N C T I O N O FF1F4G ′H ′S / RC O N T R O LL O G I CF U N C T I O NOFF ′ , G ′A N DH1H′G′H ′F ′D I NF ′G ′H ′D I NF ′G ′H ′F ′S / RC O N T R O L11SDDECRDSDDECRDG4G3G2G1F4F3F2F1K( C L O C K )C1…C44H1DIN/H2SR /H0ECB y p a s sYQYB y p a s sXQX可編程多路選擇器 1) 這里所謂的邏輯函數(shù)發(fā)生器, 在物理結構上實際就是一個2n 1位的 SRAM, 它可以實現(xiàn)任何一個 n變量的組合邏輯函數(shù)。因為只要將 n個輸入變量作為 SRAM的地址,把 2n個函數(shù)值存到相應的 SRAM單元中, 那么 SRAM的輸出就是邏輯函數(shù)。 通常將邏輯函數(shù)發(fā)生器的這種結構稱為查找表 LUT( Look Up Table)。 在 XC4000E系列的 CLB中共有 3個函數(shù)發(fā)生器, 它們構成一個二級電路。在第一級中是兩個獨立的 4變量函數(shù)發(fā)生器,它們的輸入分別為 G1~ G4和 F1~ F4,輸出分別為 G′和 F′,在第二級中是一個 3變量的函數(shù)發(fā)生器,它的輸出為 H′,其中一個輸入為 H1,另外兩個輸入可以從 SR/H0和 G′、 DIN/H2和 F′中各選一個信號; 組合邏輯函數(shù) G′或 H′可以從 Y直接輸出, F′或 H′可以從 X直接輸出。 這樣, 一個 CLB可以實現(xiàn)高達 9個變量的邏輯函數(shù)。 2) 在 XC4000E系列的 CLB中有兩個邊沿觸發(fā)的 D觸發(fā)器, 它們與邏輯函數(shù)發(fā)生器配合可以實現(xiàn)各種時序邏輯電路。 觸發(fā)器的激勵信號可以通過可編程數(shù)據(jù)選擇器從 DIN、 G′ 、 F′和 H′中選擇。對于兩個觸發(fā)器共用時鐘 K和時鐘使能信號 EC來說, 任何一個觸發(fā)器都可以選擇在時鐘的上升沿或下降沿觸發(fā),也可以單獨選擇時鐘使能為 EC或 1(即永久時鐘使能)。 兩個觸發(fā)器還有一個共用信號 ——置位 /復位信號 SR, 它可以被編程為對每個觸發(fā)器獨立的復位或置位信號。另外,每個觸發(fā)器還有一個全局的復位 /置位信號(圖 534中未畫出),用來在上電或配置時將所有的觸發(fā)器置位或清除。 3) 為了提高 FPGA的運算速度, 在 CLB的兩個邏輯函數(shù)發(fā)生器G和 F之前還設計了快速進位邏輯電路,如圖 535所示。 例如, 函數(shù)發(fā)生器 G和 F可以被配置成 2位帶進位輸入和進位輸出的二進制數(shù)加法器。如果將多個 CLB通過進位輸入 /輸出級連起來, 還可以擴展到任意長度。為了連接方便,在 XC4000E系列的快速進位邏輯中設計了兩組進位輸入 /輸出,使用時只選擇其中的一組, 這樣在 FPGA的 CLB之間就形成了一個獨立于可編程連接線的進位 /借位鏈。 圖 535 快速進位邏輯電路 GG進位邏 輯F進位邏 輯FCOUTCIN D O W N快速進位邏 輯G′F′CIN U PCOUTG4G3G2G1F4F3F2F1 4) 邏輯函數(shù)發(fā)生器用作片內(nèi) RAM 邏輯函數(shù)發(fā)生器 G和 F除了能夠實現(xiàn)一般的組合邏輯函數(shù)以外, 它們各自的 16個可編程數(shù)據(jù)存儲單元還可以被用作片內(nèi) RAM。 片內(nèi) RAM的速度非??欤x操作時間與邏輯時延一樣, 寫操作時間只比讀操作稍慢一點,整個讀 /寫速度要比片外 RAM快許多,因為片內(nèi) RAM避免了輸入 /輸出端的延時。 如表 54所示, 邏輯函數(shù)發(fā)生器被用作片內(nèi) RAM時有多種配置模式。 表 54 片內(nèi) RAM 16 1 16 2 32 1 邊沿觸發(fā) 電平觸發(fā) 單口 RAM √ √ √ √ √ 雙口 RAM √ √ 就容量而言, CLB中的邏輯函數(shù)發(fā)生器可以被配置成 2個獨立的 16 1位 RAM、 1個 16 2位 RAM或 1個 32 1位 RAM, 也可以只將邏輯函數(shù)發(fā)生器 G或 F配置成 1個 16 1位 RAM