可配置邏輯塊由4個(gè)相互連接的Slice和附加邏輯構(gòu)成,用于實(shí)現(xiàn)組合邏輯和時(shí)序邏輯。其拓?fù)浣Y(jié)構(gòu)如圖1所示,每一對(duì)Slice分布在同一列并共有一條獨(dú)立的進(jìn)位鏈。
圖1 CLB拓?fù)浣Y(jié)構(gòu)
用于組成同一個(gè)CLB的4個(gè)Slice共用以下兩個(gè)函數(shù)發(fā)生器、兩個(gè)存儲(chǔ)單元、多層函數(shù)復(fù)用器、進(jìn)位邏輯和算術(shù)邏輯,如圖2所示。左側(cè)的Slice通常用SliceM表示;右側(cè)的Slice對(duì)通常用SliceL表示,它們通過(guò)這些單元實(shí)現(xiàn)邏輯、算術(shù)和ROM的功能。除此之外,SliceM還可以用做兩種特殊的功能,即分布式RAM和16bit移位寄存器,分別用于數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)移位操作。同時(shí)通過(guò)這個(gè)簡(jiǎn)圖可以清楚了解除了SliceM所特有的功能外,在其他Slice中也同樣存在的各個(gè)單元和相互之間的連接關(guān)系。
基于RAM的函數(shù)發(fā)生器,也就是通常所說(shuō)的查找表是用于實(shí)現(xiàn)邏輯功能的主要部件,而且SliceM中的分布式RAM和移位寄存器就是用它來(lái)實(shí)現(xiàn)的,分別用字母“G”和“F”來(lái)表示上一部分和下一部分的查找表。
圖2 SliceM簡(jiǎn)圖
存儲(chǔ)單元可以通過(guò)編程用做D觸發(fā)器或鎖存器,可以提供數(shù)據(jù)與時(shí)鐘同步的功能。上一部分的存儲(chǔ)單元稱為“FFY”,下一部分的存儲(chǔ)單元稱為“FFX”。
多層函數(shù)復(fù)用器結(jié)構(gòu)(Wide-function multiplexers)通過(guò)高效地組合相關(guān)查找表來(lái)實(shí)現(xiàn)復(fù)雜的邏輯功能,每個(gè)Slice擁有兩個(gè)組這類的復(fù)用器,中間的F5MUX和FiMUX分別位于Slice的上下兩個(gè)部分。
進(jìn)位邏輯由進(jìn)位鏈和專用的算術(shù)邏輯門(mén)組成,用于完成快速高效的數(shù)學(xué)運(yùn)算。進(jìn)位鏈由5個(gè)復(fù)用器控制,分別為CYINIT、CY0F、CYMUXF、CY0G和CYMUXG。
算術(shù)邏輯包括1個(gè)異或門(mén)(XORG)、1個(gè)專用的乘累加(MULT-AND),異或門(mén)可以使1個(gè)Slice實(shí)現(xiàn)兩位全加操作,專用的乘累加用于提高乘法器邏輯的速度和效率。
Spartan-3的CLB具有大量的專用多路復(fù)用器,這些專用復(fù)用器可以提高多層復(fù)用結(jié)構(gòu)和多輸入函數(shù)的性能。比如,用一個(gè)32:1的復(fù)用器可以在同一級(jí)邏輯層實(shí)現(xiàn)一個(gè)79輸入的布爾邏輯函數(shù)。這些復(fù)用邏輯包括4個(gè)F5MUX、兩個(gè)FGMUX、1個(gè)FTMUX和1個(gè)FSMUX四種類型的復(fù)用結(jié)構(gòu)(器)。F5MUX表示可以用來(lái)建立任何5輸入的函數(shù),以此類推,F(xiàn)SMUX可以用來(lái)創(chuàng)建任何8輸入的函數(shù)。多路復(fù)用結(jié)構(gòu)如圖3所示,圖中MUXF5復(fù)用了兩個(gè)基本的LUT,最大可以實(shí)現(xiàn)一個(gè)9輸入函數(shù):MUXF6復(fù)用兩個(gè)MUXF5,相當(dāng)于4個(gè)LUT被復(fù)用,最大可以實(shí)現(xiàn)一個(gè)19輸入函數(shù);MUXF7復(fù)用兩個(gè)MUXF6,相當(dāng)于8個(gè)LUT被復(fù)用,最大可以實(shí)現(xiàn)一個(gè)39輸入函數(shù);而MUXF8復(fù)用兩個(gè)MUXF7,相當(dāng)于兩個(gè)基本的CLB單元(相鄰的)被復(fù)用,最大可以實(shí)現(xiàn)一個(gè)79輸入函數(shù)。
圖3 Spartan-3的多路復(fù)用結(jié)構(gòu)
從圖中還可以看出專用復(fù)用器有個(gè)很明顯的優(yōu)勢(shì),就是有專用的布線資源來(lái)連接不同級(jí)別的復(fù)用器。雖然在同一個(gè)CLB中每個(gè)復(fù)用器都被設(shè)計(jì)成只有一個(gè)輸出端口,并且輸出都只被回連到CLB的輸入端。但是這些互連所用的布線資源都是0延時(shí)的,因此可以把同一個(gè)CLB中的所有復(fù)用器看做是一個(gè)串聯(lián)關(guān)系。
F5MUX復(fù)用器的輸出連到一個(gè)FiMUX的輸入端,F(xiàn)iMUX的輸出被連到同一個(gè)CLB中上一層的其他FiMUX;而FTMUX的輸出在需要的情況下還可以連接另一個(gè)CLB中。
概括起來(lái),在Spartan-3、Spartan-3E、Spartan-3A和Spartan-3AN系列的每個(gè)基本的CLB單元是由4個(gè)Slice、兩個(gè)三態(tài)緩沖器TBUF構(gòu)成,其中包含8個(gè)查找表LUT、8個(gè)可編程觸發(fā)器、8個(gè)“乘累加”邏輯門(mén)和兩個(gè)算術(shù)進(jìn)位鏈??梢栽谝粋€(gè)CLB中實(shí)現(xiàn)64位的分布式RAM或64位的基于查找表的移位寰存器(SRL16),并且提供豐富的多路復(fù)用結(jié)構(gòu)和數(shù)據(jù)通道,從而保證內(nèi)部互連的特性。
來(lái)源:ks990次