FPGA重點(diǎn)知識13條,助你構建完整“邏輯觀(guān)”之一
1、查找表LUT和編程方式
本文引用地址:http://dyxdggzs.com/article/201802/375718.htm第一部分: 查找表LUT
FPGA是在PAL、GAL、EPLD、CPLD等可編程器件的基礎上進(jìn)一步發(fā)展的產(chǎn)物。它是作為ASIC領(lǐng)域中的一種半定制電路而出現的,即解決了定制電路的不足,又克服了原有可編程器件門(mén)電路有限的缺點(diǎn)。
由于FPGA需要被反復燒寫(xiě),它實(shí)現組合邏輯的基本結構不可能像ASIC那樣通過(guò)固定的與非門(mén)來(lái)完成,而只能采用一種易于反復配置的結構。查找表可以很好 地滿(mǎn)足這一要求,目前主流FPGA都采用了基于SRAM工藝的查找表結構,也有一些軍品和宇航級FPGA采用Flash或者熔絲與反熔絲工藝的查找表結 構。通過(guò)燒寫(xiě)文件改變查找表內容的方法來(lái)實(shí)現對FPGA的重復配置。
根據數字電路的基本知識可以知道,對于一個(gè)n輸入的邏輯運算,不管是與或非運算還是異或運算等等,最多只可能存在2n種結果。所以如果事先將相應的結果存放于一個(gè)存貯單元,就相當于實(shí)現了與非門(mén)電路的功能。FPGA的原理也是如此,它通過(guò)燒寫(xiě)文件去配置查找表的內容,從而在相同的電路情況下實(shí)現了不同的邏輯功能。
查找表(Look-Up-Table)簡(jiǎn)稱(chēng)為L(cháng)UT,LUT本質(zhì)上就是一個(gè)RAM。目前FPGA中多使用4輸入的LUT,所以每一個(gè)LUT可以看成一個(gè)有 4位地址線(xiàn)的 的RAM。 當用戶(hù)通過(guò)原理圖或HDL語(yǔ)言描述了一個(gè)邏輯電路以后,PLD/FPGA開(kāi)發(fā)軟件會(huì )自動(dòng)計算邏輯電路的所有可能結果,并把真值表(即結果)事先寫(xiě)入 RAM,這樣,每輸入一個(gè)信號進(jìn)行邏輯運算就等于輸入一個(gè)地址進(jìn)行查表,找出地址對應的內容,然后輸出即可。
下面給出一個(gè)4與門(mén)電路的例子來(lái)說(shuō)明LUT實(shí)現邏輯功能的原理。
例1-1:給出一個(gè)使用LUT實(shí)現4輸入與門(mén)電路的真值表。
從中可以看到,LUT具有和邏輯電路相同的功能。實(shí)際上,LUT具有更快的執行速度和更大的規模。
第二部分: 編程方式
由于基于LUT的FPGA具有很高的集成度,其器件密度從數萬(wàn)門(mén)到數千萬(wàn)門(mén)不等,可以完成極其復雜的時(shí)序與邏輯組合邏輯電路功能,所以適用于高速、高密度 的高端數字邏輯電路設計領(lǐng)域。其組成部分主要有可編程輸入/輸出單元、基本可編程邏輯單元、內嵌SRAM、豐富的布線(xiàn)資源、底層嵌入功能單元、內嵌專(zhuān)用單 元等,主要設計和生產(chǎn)廠(chǎng)家有Xilinx、Altera、Lattice、Actel、Atmel和QuickLogic等公司,其中最大的是 Xilinx、Altera、Lattice三家。
FPGA是由存放在片內的RAM來(lái)設置其工作狀態(tài)的,因此工作時(shí)需要對片內RAM進(jìn)行編程。用戶(hù)可根據不同的配置模式,采用不同的編程方式。FPGA有如下幾種配置模式:
1、并行模式:并行PROM、Flash配置FPGA;
2、主從模式:一片PROM配置多片FPGA;
3、串行模式:串行PROM配置FPGA;
4、外設模式:將FPGA作為微處理器的外設,由微處理器對其編程。
目前,FPGA市場(chǎng)占有率最高的兩大公司Xilinx和Altera生產(chǎn)的FPGA都是基于SRAM工藝的,需要在使用 時(shí)外接一個(gè)片外存儲器以保存程序。上電時(shí),FPGA將外部存儲器中的數據讀入片內RAM,完成配置后,進(jìn)入工作狀態(tài);掉電后FPGA恢復為白片,內部邏輯 消失。這樣FPGA不僅能反復使用,還無(wú)需專(zhuān)門(mén)的FPGA編程器,只需通用的EPROM、PROM編程器即可。Actel、QuickLogic等公司還 提供反熔絲技術(shù)的FPGA,只能下載一次,具有抗輻射、耐高低溫、低功耗和速度快等優(yōu)點(diǎn),在軍品和航空航天領(lǐng)域中應用較多,但這種FPGA不能重復擦寫(xiě), 開(kāi)發(fā)初期比較麻煩,費用也比較昂貴。Lattice是ISP技術(shù)的發(fā)明者,在小規模PLD應用上有一定的特色。早期的Xilinx產(chǎn)品一般不涉及軍品和宇航級市場(chǎng),但目前已經(jīng)有Q Pro-R等多款產(chǎn)品進(jìn)入該類(lèi)領(lǐng)域。
2、FPGA芯片結構
目前主流的FPGA仍是基于查找表技術(shù)的,已經(jīng)遠遠超出了先前版本的基本性能,并且整合了常用功能(如RAM、時(shí)鐘管理 和DSP)的硬核(ASIC型)模塊。如圖1-1所示(注:圖1-1只是一個(gè)示意圖,實(shí)際上每一個(gè)系列的FPGA都有其相應的內部結構),FPGA芯片主 要由6部分完成,分別為:可編程輸入輸出單元、基本可編程邏輯單元、完整的時(shí)鐘管理、嵌入塊式RAM、豐富的布線(xiàn)資源、內嵌的底層功能單元和內嵌專(zhuān)用硬件 模塊。

每個(gè)模塊的功能如下:
1.可編程輸入輸出單元(IOB)
可編程輸入/輸出單元簡(jiǎn)稱(chēng)I/O單元,是芯片與外界電路的接口部分,完成不同電氣特性下對輸入/輸出信號的驅動(dòng)與匹配要求,其示意結構如圖1-2所示。 FPGA內的I/O按組分類(lèi),每組都能夠獨立地支持不同的I/O標準。通過(guò)軟件的靈活配置,可適配不同的電氣標準與I/O物理特性,可以調整驅動(dòng)電流的大 小,可以改變上、下拉電阻。目前,I/O口的頻率也越來(lái)越高,一些高端的FPGA通過(guò)DDR寄存器技術(shù)可以支持高達2Gbps的數據速率。

外部輸入信號可以通過(guò)IOB模塊的存儲單元輸入到FPGA的內部,也可以直接輸入FPGA 內部。當外部輸入信號經(jīng)過(guò)IOB模塊的存儲單元輸入到FPGA內部時(shí),其保持時(shí)間(Hold Time)的要求可以降低,通常默認為0。
為了便于管理和適應多種電器標準,FPGA的IOB被劃分為若干個(gè)組(bank),每個(gè)bank的接口標準由其接口電壓VCCO決定,一個(gè)bank只能有 一種VCCO,但不同bank的VCCO可以不同。只有相同電氣標準的端口才能連接在一起,VCCO電壓相同是接口標準的基本條件。
2. 可配置邏輯塊(CLB)
CLB是FPGA內的基本邏輯單元。CLB的實(shí)際數量和特性會(huì )依器件的不同而不同,但是每個(gè)CLB都包含一個(gè)可配置開(kāi)關(guān)矩陣,此矩陣由4或6個(gè)輸入、一些 選型電路(多路復用器等)和觸發(fā)器組成。 開(kāi)關(guān)矩陣是高度靈活的,可以對其進(jìn)行配置以便處理組合邏輯、移位寄存器或RAM。在Xilinx公司的FPGA器件中,CLB由多個(gè)(一般為4個(gè)或2個(gè)) 相同的Slice和附加邏輯構成,如圖1-3所示。每個(gè)CLB模塊不僅可以用于實(shí)現組合邏輯、時(shí)序邏輯,還可以配置為分布式RAM和分布式ROM。

Slice是Xilinx公司定義的基本邏輯單位,其內部結構如圖1-4所示,一個(gè)Slice由兩個(gè)4輸入的函數、進(jìn)位 邏輯、算術(shù)邏輯、存儲邏輯和函數復用器組成。算術(shù)邏輯包括一個(gè)異或門(mén)(XORG)和一個(gè)專(zhuān)用與門(mén)(MULTAND),一個(gè)異或門(mén)可以使一個(gè)Slice實(shí)現 2bit全加操作,專(zhuān)用與門(mén)用于提高乘法器的效率;進(jìn)位邏輯由專(zhuān)用進(jìn)位信號和函數復用器(MUXC)組成,用于實(shí)現快速的算術(shù)加減法操作;4輸入函數發(fā)生 器用于實(shí)現4輸入LUT、分布式RAM或16比特移位寄存器(Virtex-5系列芯片的Slice中的兩個(gè)輸入函數為6輸入,可以實(shí)現6輸入LUT或 64比特移位寄存器);進(jìn)位邏輯包括兩條快速進(jìn)位鏈,用于提高CLB模塊的處理速度

3. 數字時(shí)鐘管理模塊(DCM)
業(yè)內大多數FPGA均提供數字時(shí)鐘管理(Xilinx的全部FPGA均具有這種特性)。Xilinx推出最先進(jìn)的FPGA提供數字時(shí)鐘管理和相位環(huán)路鎖定。相位環(huán)路鎖定能夠提供精確的時(shí)鐘綜合,且能夠降低抖動(dòng),并實(shí)現過(guò)濾功能。
4. 嵌入式塊RAM(BRAM)
大多數FPGA都具有內嵌的塊RAM,這大大拓展了FPGA的應用范圍和靈活性。塊RAM可被配置為單端口RAM、雙端口RAM、內容地址存儲器 (CAM)以及FIFO等常用存儲結構。RAM、FIFO是比較普及的概念,在此就不冗述。CAM存儲器在其內部的每個(gè)存儲單元中都有一個(gè)比較邏輯,寫(xiě)入 CAM中的數據會(huì )和內部的每一個(gè)數據進(jìn)行比較,并返回與端口數據相同的所有數據的地址,因而在路由的地址交換器中有廣泛的應用。除了塊RAM,還可以將 FPGA中的LUT靈活地配置成RAM、ROM和FIFO等結構。在實(shí)際應用中,芯片內部塊RAM的數量也是選擇芯片的一個(gè)重要因素。
例如:?jiǎn)纹瑝KRAM的容量為18k比特,即位寬為18比特、深度為1024,可以根據需要改變其位寬和深度,但要滿(mǎn)足兩個(gè)原則:首先,修改后的容量(位寬 深度)不能大于18k比特;其次,位寬最大不能超過(guò)36比特。當然,可以將多片塊RAM級聯(lián)起來(lái)形成更大的RAM,此時(shí)只受限于芯片內塊RAM的數量,而 不再受上面兩條原則約束
5. 豐富的布線(xiàn)資源
布線(xiàn)資源連通FPGA內部的所有單元,而連線(xiàn)的長(cháng)度和工藝決定著(zhù)信號在連線(xiàn)上的驅動(dòng)能力和傳輸速度。
FPGA芯片內部有著(zhù)豐富的布線(xiàn)資源,根據工藝、長(cháng) 度、寬度和分布位置的不同而劃分為4類(lèi)不同的類(lèi)別。第一類(lèi)是全局布線(xiàn)資源,用于芯片內部全局時(shí)鐘和全局復位/置位的布線(xiàn);第二類(lèi)是長(cháng)線(xiàn)資源,用以完成芯片 Bank間的高速信號和第二全局時(shí)鐘信號的布線(xiàn);第三類(lèi)是短線(xiàn)資源,用于完成基本邏輯單元之間的邏輯互連和布線(xiàn);第四類(lèi)是分布式的布線(xiàn)資源,用于專(zhuān)有時(shí) 鐘、復位等控制信號線(xiàn)。
在實(shí)際中設計者不需要直接選擇布線(xiàn)資源,布局布線(xiàn)器可自動(dòng)地根據輸入邏輯網(wǎng)表的拓撲結構和約束條件選擇布線(xiàn)資源來(lái)連通各個(gè)模塊單元。從本質(zhì)上講,布線(xiàn)資源的使用方法和設計的結果有密切、直接的關(guān)系。
6. 底層內嵌功能單元
內嵌功能模塊主要指DLL(Delay Locked Loop)、PLL(Phase Locked Loop)、DSP和CPU等軟處理核(Soft Core)?,F在越來(lái)越豐富的內嵌功能單元,使得單片FPGA成為了系統級的設計工具,使其具備了軟硬件聯(lián)合設計的能力,逐步向SOC平臺過(guò)渡。
DLL和PLL具有類(lèi)似的功能,可以完成時(shí)鐘高精度、低抖動(dòng)的倍頻和分頻,以及占空比調整和移相等功能。Xilinx公司生產(chǎn)的芯片上集成了 DLL,Altera公司的芯片集成了PLL,Lattice公司的新型芯片上同時(shí)集成了PLL和DLL。PLL 和DLL可以通過(guò)IP核生成的工具方便地進(jìn)行管理和配置。DLL的結構如圖1-5所示。

7. 內嵌專(zhuān)用硬核
內嵌專(zhuān)用硬核是相對底層嵌入的軟核而言的,指FPGA處理能力強大的硬核(Hard Core),等效于A(yíng)SIC電路。為了提高FPGA性能,芯片生產(chǎn)商在芯片內部集成了一些專(zhuān)用的硬核。例如:為了提高FPGA的乘法速度,主流的FPGA 中都集成了專(zhuān)用乘法器;為了適用通信總線(xiàn)與接口標準,很多高端的FPGA內部都集成了串并收發(fā)器(SERDES),可以達到數十Gbps的收發(fā)速度。 Xilinx公司的高端產(chǎn)品不僅集成了Power PC系列CPU,還內嵌了DSP Core模塊,其相應的系統級設計工具是EDK和Platform Studio,并依此提出了片上系統(System on Chip)的概念。通過(guò)PowerPC、Miroblaze、Picoblaze等平臺,能夠開(kāi)發(fā)標準的DSP處理器及其相關(guān)應用,達到SOC的開(kāi)發(fā)目 的。
(1) 軟核
軟核在EDA設計領(lǐng)域指的是綜合之前的寄存器傳輸級(RTL)模型;具體在FPGA設計中指的是對電路的硬件語(yǔ)言描述,包括邏輯描述、網(wǎng)表和幫助文檔等。 軟核只經(jīng)過(guò)功能仿真,需要經(jīng)過(guò)綜合以及布局布線(xiàn)才能使用。其優(yōu)點(diǎn)是靈活性高、可移植性強,允許用戶(hù)自配置;缺點(diǎn)是對模塊的預測性較低,在后續設計中存在發(fā) 生錯誤的可能性,有一定的設計風(fēng)險。軟核是IP核應用最廣泛的形式。
(2)固核
固核在EDA設計領(lǐng)域指的是帶有平面規劃信息的網(wǎng)表;具體在FPGA設計中可以看做帶有布局規劃的軟核,通常以RTL代碼和對應具體工藝網(wǎng)表的混合形式提 供。將RTL描述結合具體標準單元庫進(jìn)行綜合優(yōu)化設計,形成門(mén)級網(wǎng)表,再通過(guò)布局布線(xiàn)工具即可使用。和軟核相比,固核的設計靈活性稍差,但在可靠性上有較 大提高。目前,固核也是IP核的主流形式之一。
(3)硬核
硬核在EDA設計領(lǐng)域指經(jīng)過(guò)驗證的設計版圖;具體在FPGA設計中指布局和工藝固定、經(jīng)過(guò)前端和后端驗證的設計,設計人員不能對其修改。不能修改的原因有 兩個(gè):首先是系統設計對各個(gè)模塊的時(shí)序要求很?chē)栏?,不允許打亂已有的物理版圖;其次是保護知識產(chǎn)權的要求,不允許設計人員對其有任何改動(dòng)。IP硬核的不許 修改特點(diǎn)使其復用有一定的困難,因此只能用于某些特定應用,使用范圍較窄。
評論