目前主流的fpga仍是基于查找表技術(shù)的,已經(jīng)遠(yuǎn)遠(yuǎn)超出了先前版本的基本性能,并且整合了常用功能(如ram、時(shí)鐘管理和dsp)的硬核(asic型)模塊。如圖1所示(注:圖1只是一個(gè)示意圖,實(shí)際上每一個(gè)系列的fpga都有其相應(yīng)的內(nèi)部結(jié)構(gòu)),fpga芯片主要由6部分完成,分別為:可編程輸入輸出單元、基本可編程邏輯單元、完整的時(shí)鐘管理、嵌入塊式ram、豐富的布線資源、內(nèi)嵌的底層功能單元和內(nèi)嵌專用硬件模塊。
圖1 fpga芯片的內(nèi)部結(jié)構(gòu)
每個(gè)模塊的功能如下:
1. 可編程輸入輸出單元(iob)
可編程輸入/輸出單元簡(jiǎn)稱i/o單元,是芯片與外界電路的接口部分,完成不同電氣特性下對(duì)輸入/輸出信號(hào)的驅(qū)動(dòng)與匹配要求,其示意結(jié)構(gòu)如圖2所示。fpga內(nèi)的i/o按組分類,每組都能夠獨(dú)立地支持不同的i/o標(biāo)準(zhǔn)。通過軟件的靈活配置,可適配不同的電氣標(biāo)準(zhǔn)與i/o物理特性,可以調(diào)整驅(qū)動(dòng)電流的大小,可以改變上、下拉電阻。目前,i/o口的頻率也越來越高,一些高端的fpga通過ddr寄存器技術(shù)可以支持高達(dá)2gbps的數(shù)據(jù)速率。
圖2 典型的iob內(nèi)部結(jié)構(gòu)示意圖
外部輸入信號(hào)可以通過iob模塊的存儲(chǔ)單元輸入到fpga的內(nèi)部,也可以直接輸入fpga 內(nèi)部。當(dāng)外部輸入信號(hào)經(jīng)過iob模塊的存儲(chǔ)單元輸入到fpga內(nèi)部時(shí),其保持時(shí)間(hold time)的要求可以降低,通常默認(rèn)為0。
為了便于管理和適應(yīng)多種電器標(biāo)準(zhǔn),fpga的iob被劃分為若干個(gè)組(bank),每個(gè)bank的接口標(biāo)準(zhǔn)由其接口電壓vcco決定,一個(gè)bank只能有一種vcco,但不同bank的vcco可以不同。只有相同電氣標(biāo)準(zhǔn)的端口才能連接在一起,vcco電壓相同是接口標(biāo)準(zhǔn)的基本條件。
2. 可配置邏輯塊(clb)
clb是fpga內(nèi)的基本邏輯單元。clb的實(shí)際數(shù)量和特性會(huì)依器件的不同而不同,但是每個(gè)clb都包含一個(gè)可配置開關(guān)矩陣,此矩陣由4或6個(gè)輸入、一些選型電路(多路復(fù)用器等)和觸發(fā)器組成。 開關(guān)矩陣是高度靈活的,可以對(duì)其進(jìn)行配置以便處理組合邏輯、移位寄存器或ram。在xilinx公司的fpga器件中,clb由多個(gè)(一般為4個(gè)或2個(gè))相同的slice和附加邏輯構(gòu)成,如圖1-3所示。每個(gè)clb模塊不僅可以用于實(shí)現(xiàn)組合邏輯、時(shí)序邏輯,還可以配置為分布式ram和分布式rom。
圖3 典型的clb結(jié)構(gòu)示意圖
slice是xilinx公司定義的基本邏輯單位,其內(nèi)部結(jié)構(gòu)如圖4所示,一個(gè)slice由兩個(gè)4輸入的函數(shù)、進(jìn)位邏輯、算術(shù)邏輯、存儲(chǔ)邏輯和函數(shù)復(fù)用器組成。算術(shù)邏輯包括一個(gè)異或門(xorg)和一個(gè)專用與門(multand),一個(gè)異或門可以使一個(gè)slice實(shí)現(xiàn)2bit全加操作,專用與門用于提高乘法器的效率;進(jìn)位邏輯由專用進(jìn)位信號(hào)和函數(shù)復(fù)用器(muxc)組成,用于實(shí)現(xiàn)快速的算術(shù)加減法操作;4輸入函數(shù)發(fā)生器用于實(shí)現(xiàn)4輸入lut、分布式ram或16比特移位寄存器(virtex-5系列芯片的slice中的兩個(gè)輸入函數(shù)為6輸入,可以實(shí)現(xiàn)6輸入lut或64比特移位寄存器);進(jìn)位邏輯包括兩條快速進(jìn)位鏈,用于提高clb模塊的處理速度。
圖4 典型的4輸入slice結(jié)構(gòu)示意圖
3. 數(shù)字時(shí)鐘管理模塊(dcm)
業(yè)內(nèi)大多數(shù)fpga均提供數(shù)字時(shí)鐘管理(xilinx的全部fpga均具有這種特性)。xilinx推出最先進(jìn)的fpga提供數(shù)字時(shí)鐘管理和相位環(huán)路鎖定。相位環(huán)路鎖定能夠提供精確的時(shí)鐘綜合,且能夠降低抖動(dòng),并實(shí)現(xiàn)過濾功能。
4. 嵌入式塊ram(bram)
大多數(shù)fpga都具有內(nèi)嵌的塊ram,這大大拓展了fpga的應(yīng)用范圍和靈活性。塊ram可被配置為單端口ram、雙端口ram、內(nèi)容地址存儲(chǔ)器(cam)以及fifo等常用存儲(chǔ)結(jié)構(gòu)。ram、fifo是比較普及的概念,在此就不冗述。cam存儲(chǔ)器在其內(nèi)部的每個(gè)存儲(chǔ)單元中都有一個(gè)比較邏輯,寫入cam中的數(shù)據(jù)會(huì)和內(nèi)部的每一個(gè)數(shù)據(jù)進(jìn)行比較,并返回與端口數(shù)據(jù)相同的所有數(shù)據(jù)的地址,因而在路由的地址交換器中有廣泛的應(yīng)用。除了塊ram,還可以將fpga中的lut靈活地配置成ram、rom和fifo等結(jié)構(gòu)。在實(shí)際應(yīng)用中,芯片內(nèi)部塊ram的數(shù)量也是選擇芯片的一個(gè)重要因素。
單片塊ram的容量為18k比特,即位寬為18比特、深度為1024,可以根據(jù)需要改變其位寬和深度,但要滿足兩個(gè)原則:首先,修改后的容量(位寬 深度)不能大于18k比特;其次,位寬最大不能超過36比特。當(dāng)然,可以將多片塊ram級(jí)聯(lián)起來形成更大的ram,此時(shí)只受限于芯片內(nèi)塊ram的數(shù)量,而不再受上面兩條原則約束。
5. 豐富的布線資源
布線資源連通fpga內(nèi)部的所有單元,而連線的長(zhǎng)度和工藝決定著信號(hào)在連線上的驅(qū)動(dòng)能力和傳輸速度。fpga芯片內(nèi)部有著豐富的布線資源,根據(jù)工藝、長(zhǎng)度、寬度和分布位置的不同而劃分為4類不同的類別。第一類是全局布線資源,用于芯片內(nèi)部全局時(shí)鐘和全局復(fù)位/置位的布線;第二類是長(zhǎng)線資源,用以完成芯片bank間的高速信號(hào)和第二全局時(shí)鐘信號(hào)的布線;第三類是短線資源,用于完成基本邏輯單元之間的邏輯互連和布線;第四類是分布式的布線資源,用于專有時(shí)鐘、復(fù)位等控制信號(hào)線。
在實(shí)際中設(shè)計(jì)者不需要直接選擇布線資源,布局布線器可自動(dòng)地根據(jù)輸入邏輯網(wǎng)表的拓?fù)浣Y(jié)構(gòu)和約束條件選擇布線資源來連通各個(gè)模塊單元。從本質(zhì)上講,布線資源的使用方法和設(shè)計(jì)的結(jié)果有密切、直接的關(guān)系。
6. 底層內(nèi)嵌功能單元
內(nèi)嵌功能模塊主要指dll(delay locked loop)、pll(phase locked loop)、dsp和cpu等軟處理核(soft core)?,F(xiàn)在越來越豐富的內(nèi)嵌功能單元,使得單片fpga成為了系統(tǒng)級(jí)的設(shè)計(jì)工具,使其具備了軟硬件聯(lián)合設(shè)計(jì)的能力,逐步向soc平臺(tái)過渡。
dll和pll具有類似的功能,可以完成時(shí)鐘高精度、低抖動(dòng)的倍頻和分頻,以及占空比調(diào)整和移相等功能。xilinx公司生產(chǎn)的芯片上集成了dll,altera公司的芯片集成了pll,lattice公司的新型芯片上同時(shí)集成了pll和dll。pll 和dll可以通過ip核生成的工具方便地進(jìn)行管理和配置。dll的結(jié)構(gòu)如圖5所示。
圖5 典型的dll模塊示意圖
7. 內(nèi)嵌專用硬核
內(nèi)嵌專用硬核是相對(duì)底層嵌入的軟核而言的,指fpga處理能力強(qiáng)大的硬核(hard core),等效于asic電路。為了提高fpga性能,芯片生產(chǎn)商在芯片內(nèi)部集成了一些專用的硬核。例如:為了提高fpga的乘法速度,主流的fpga中都集成了專用乘法器;為了適用通信總線與接口標(biāo)準(zhǔn),很多高端的fpga內(nèi)部都集成了串并收發(fā)器(serdes),可以達(dá)到數(shù)十gbps的收發(fā)速度。
xilinx公司的高端產(chǎn)品不僅集成了power pc系列cpu,還內(nèi)嵌了dsp core模塊,其相應(yīng)的系統(tǒng)級(jí)設(shè)計(jì)工具是edk和platform studio,并依此提出了片上系統(tǒng)(system on chip)的概念。通過powerpc、miroblaze、picoblaze等平臺(tái),能夠開發(fā)標(biāo)準(zhǔn)的dsp處理器及其相關(guān)應(yīng)用,達(dá)到soc的開發(fā)目的。