FPGA詳細應用介紹

2023-01-31 12:45:05 字數 4705 閱讀 1702

目前以硬體描述語言(verilog 或 vhdl)所完成的電路設計,可以經過簡

單的綜合與布局,快速的燒錄至 fpga 上進行測試,是現代 ic 設計驗證的技術主流。這些可編輯元件可以被用來實現一些基本的邏輯閘電路(比如and、or、xor、not)或者更複雜一些的組合功能比如解碼器或數學方程式。在大多數的fpga裡面,這些可編輯的元件裡也包含記憶元件例如觸發器(flip-flop)或者其他更加完整的記憶塊。

系統設計師可以根據需要通過可編輯的連線把fpga內部的邏輯塊連線起來,就好像乙個電路試驗板被放在了乙個晶元裡。乙個出廠後的成品fpga的邏輯塊和連線可以按照設計者而改變,所以fpga可以完成所需要的邏輯功能。

fpga一般來說比asic(專用整合晶元)的速度要慢,無法完成複雜的設計,而且消耗更多的電能。但是他們也有很多的優點比如可以快速成品,可以被修改來改正程式中的錯誤和更便宜的造價。廠商也可能會提供便宜的但是編輯能力差的fpga。

因為這些晶元有比較差的可編輯能力,所以這些設計的開發是在普通的fpga上完成的,然後將設計轉移到乙個類似於asic的晶元上。另外一種方法是用cpld(複雜可程式設計邏輯器件備)。

cpld與fpga的關係

早在2023年代中期,fpga已經在pld裝置中扎根。cpld和fpga包括了一些相對大數量的可編輯邏輯單元。cpld邏輯門的密度在幾千到幾萬個邏輯單元之間,而fpga通常是在幾萬到幾百萬。

cpld和fpga的主要區別是他們的系統結構。cpld是乙個有點限制性的結構。這個結構由乙個或者多個可編輯的結果之和的邏輯組列和一些相對少量的鎖定的暫存器。

這樣的結果是缺乏編輯靈活性,但是卻有可以預計的延遲時間和邏輯單元對連線單元高比率的優點。而fpga卻是有很多的連線單元,這樣雖然讓它可以更加靈活的編輯,但是結構卻複雜的多。

cpld和fpga另外乙個區別是大多數的fpga含有高層次的內建模組(比如加法器和乘法器)和內建的記憶體。因此乙個有關的重要區別是很多新的fpga支援完全的或者部分的系統內重新配置。允許他們的設計隨著系統公升級或者動態重新配置而改變。

一些fpga可以讓裝置的一部分重新編輯而其他部分繼續正常執行。

fpga工作原理

fpga採用了邏輯單元陣列lca(logic cell array)這樣乙個概念,內部包括可配置邏輯模組clb(configurable logic block)、輸出輸入模組iob(input output block)和內部連線(interconnect)三個部分。 現場可程式設計門陣列(fpga)是可程式設計器件。與傳統邏輯電路和門陣列(如pal,gal及cpld器件)相比,fpga具有不同的結構,fpga利用小型查詢表(16×1ram)來實現組合邏輯,每個查詢表連線到乙個d觸發器的輸入端,觸發器再來驅動其他邏輯電路或驅動i/o,由此構成了即可實現組合邏輯功能又可實現時序邏輯功能的基本邏輯單元模組,這些模組間利用金屬連線互相連線或連線到i/o模組。

fpga的邏輯是通過向內部靜態儲存單元引導程式設計資料來實現的,儲存在儲存器單元中的值決定了邏輯單元的邏輯功能以及個模組之間或模組與i/o間的連線方式,並最終決定了邏輯單元的邏輯功能以及各模組之間或模組與i/o間的聯接方式,並最終決定了fpga所能實現的功能, fpga允許無限次的程式設計.

fpga結構

目前主流的fpga仍是基於查詢表技術的,已經遠遠超出了先前版本的基本效能,並且整合了常用功能(如ram、時鐘管理和dsp)的硬核(asic型)模組。如圖1-1所示(注:圖1-1只是乙個示意圖,實際上每乙個系列的fpga都有其相應的內部結構),fpga晶元主要由7部分完成,分別為:

可程式設計輸入輸出單元、基本可程式設計邏輯單元、完整的時鐘管理、嵌入塊式ram、豐富的佈線資源、內嵌的底層功能單元和內嵌專用硬體模組。fpga晶元的內部結構

每個模組的功能如下:

1. 可程式設計輸入輸出單元(iob)

可程式設計輸入/輸出單元簡稱i/o單元,是晶元與外界電路的介面部分,完成不同電氣特性下對輸入/輸出訊號的驅動與匹配要求,其示意結構如圖1-2所示。 fpga內的i/o按組分類,每組都能夠獨立地支援不同的i/o標準。通過軟體的靈活配置,可適配不同的電氣標準與i/o物理特性,可以調整驅動電流的大小,可以改變上、下拉電阻。

目前,i/o口的頻率也越來越高,一些高階的fpga通過ddr暫存器技術可以支援高達2gbps的資料速率。

典型的iob內部結構示意圖

外部輸入訊號可以通過iob模組的儲存單元輸入到fpga的內部,也可以直接輸入fpga 內部。當外部輸入訊號經過iob模組的儲存單元輸入到fpga內部時,其保持時間(hold time)的要求可以降低,通常預設為0。

為了便於管理和適應多種電器標準,fpga的iob被劃分為若干個組(bank),每個bank的介面標準由其介面電壓vcco決定,乙個bank只能有一種vcco,但不同bank的vcco可以不同。只有相同電氣標準的埠才能連線在一起,vcco電壓相同是介面標準的基本條件。

2. 可配置邏輯塊(clb)

clb是fpga內的基本邏輯單元。clb的實際數量和特性會依器件的不同而不同,但是每個clb都包含乙個可配置開關矩陣,此矩陣由4或6個輸入、一些選型電路(多路復用器等)和觸發器組成。 開關矩陣是高度靈活的,可以對其進行配置以便處理組合邏輯、移位暫存器或ram。

在xilinx公司的fpga器件中,clb由多個(一般為4個或2個)相同的slice和附加邏輯構成,如圖1-3所示。每個clb模組不僅可以用於實現組合邏輯、時序邏輯,還可以配置為分布式ram和分布式rom。

典型的clb結構示意圖

slice是xilinx公司定義的基本邏輯單位,其內部結構如圖1-4所示,乙個slice由兩個4輸入的函式、進製邏輯、算術邏輯、儲存邏輯和函式復用器組成。算術邏輯包括乙個異或門(xorg)和乙個專用與門(multand),乙個異或門可以使乙個slice實現 2bit全加操作,專用與門用於提高乘法器的效率;進製邏輯由專用進製訊號和函式復用器(muxc)組成,用於實現快速的算術加減法操作;4輸入函式發生器用於實現4輸入lut、分布式ram或16位元移位暫存器(virtex-5系列晶元的slice中的兩個輸入函式為6輸入,可以實現6輸入lut或 64位元移位暫存器);進製邏輯包括兩條快速進製鏈,用於提高clb模組的處理速度。

圖1-4 典型的4輸入slice結構示意圖

fpga晶元結構2

3. 數字時鐘管理模組(dcm)

業內大多數fpga均提供數字時鐘管理(xilinx的全部fpga均具有這種特性)。xilinx推出最先進的fpga提供數字時鐘管理和相位環路鎖定。相位環路鎖定能夠提供精確的時鐘綜合,且能夠降低抖動,並實現過濾功能。

4. 嵌入式塊ram(bram)

大多數fpga都具有內嵌的塊ram,這大大拓展了fpga的應用範圍和靈活性。塊ram可被配置為單埠ram、雙埠ram、內容位址儲存器 (cam)以及fifo等常用儲存結構。ram、fifo是比較普及的概念,在此就不冗述。

cam儲存器在其內部的每個儲存單元中都有乙個比較邏輯,寫入 cam中的資料會和內部的每乙個資料進行比較,並返回與埠資料相同的所有資料的位址,因而在路由的位址交換器中有廣泛的應用。除了塊ram,還可以將 fpga中的lut靈活地配置成ram、rom和fifo等結構。在實際應用中,晶元內部塊ram的數量也是選擇晶元的乙個重要因素。

單片塊ram的容量為18k位元,即位寬為18位元、深度為1024,可以根據需要改變其位寬和深度,但要滿足兩個原則:首先,修改後的容量(位寬深度)不能大於18k位元;其次,位寬最大不能超過36位元。當然,可以將多片塊ram級聯起來形成更大的ram,此時只受限於晶元內塊ram的數量,而不再受上面兩條原則約束。

5. 豐富的佈線資源

佈線資源連通fpga內部的所有單元,而連線的長度和工藝決定著訊號在連線上的驅動能力和傳輸速度。fpga晶元內部有著豐富的佈線資源,根據工藝、長度、寬度和分布位置的不同而劃分為4類不同的類別。第一類是全域性佈線資源,用於晶元內部全域性時鐘和全域性復位/置位的佈線;第二類是長線資源,用以完成晶元 bank間的高速訊號和第二全域性時鐘訊號的佈線;第三類是**資源,用於完成基本邏輯單元之間的邏輯互連和佈線;第四類是分布式的佈線資源,用於專有時鐘、復位等控制訊號線。

在實際中設計者不需要直接選擇佈線資源,布局佈線器可自動地根據輸入邏輯網表的拓撲結構和約束條件選擇佈線資源來連通各個模組單元。從本質上講,佈線資源的使用方法和設計的結果有密切、直接的關係。

6. 底層內嵌功能單元

內嵌功能模組主要指dll(delay locked loop)、pll(phase locked loop)、dsp和cpu等軟處理核(softcore)。現在越來越豐富的內嵌功能單元,使得單片fpga成為了系統級的設計工具,使其具備了軟硬體聯合設計的能力,逐步向soc平台過渡。

dll和pll具有類似的功能,可以完成時鐘高精度、低抖動的倍頻和分頻,以及占空比調整和移相等功能。xilinx公司生產的晶元上整合了 dll,altera公司的晶元整合了pll,lattice公司的新型晶元上同時整合了pll和dll。pll 和dll可以通過ip核生成的工具方便地進行管理和配置。

dll的結構如圖1-5所示。

7. 內嵌專用硬核

內嵌專用硬核是相對底層嵌入的軟核而言的,指fpga處理能力強大的硬核(hard core),等效於asic電路。為了提高fpga效能,晶元生產商在晶元內部整合了一些專用的硬核。例如:

為了提高fpga的乘法速度,主流的fpga 中都整合了專用乘法器;為了適用通訊匯流排與介面標準,很多高階的fpga內部都整合了串並收發器(serdes),可以達到數十gbps的收發速度。

1)採用fpga設計asic電路(專用積體電路),使用者不需要投片生產,就能得到合用的晶元。

2)fpga可做其它全定製或半定製asic電路的中試樣片。

3)fpga內部有豐富的觸發器和i/o引腳。

4)fpga是asic電路中設計週期最短、開發費用最低、風險最小的器件之一。

5) fpga採用高速cmos工藝,功耗低,可以與cmos、ttl電平相容。

FPGA個人整理簡單介紹

微控制器和fpga的區別,本質是軟體和硬體的區別。微控制器設計屬軟體範疇 它的硬體 微控制器晶元 是固定的,通過軟體程式語言描述軟體指令在硬體晶元上的執行 fpga設計屬硬體範疇,它的硬體 fpga 是可程式設計的,是乙個通過硬體描述語言在fpga晶元上自定義積體電路的過程 fpga是系統硬體設計器...

基於FPGA的FIFO設計和應用

技術分類 可程式設計器件 2009 11 20 張奇山劉安芝劉希順 引言在利用dsp實現 實時跟蹤時,需要進行大量高速的影象採集。而dsp本身自帶的fifo並不足以支援系統中大量資料的暫時儲存,這就要求大的中間快取,而專用的高速fifo晶元 昂貴且容量受限,大大增加了商業成本,因此在實際應用中尋找f...

CPU詳細介紹

cpu是central processing unit 微處理器 的縮寫,它是計算機中最重要的乙個部分,由運算器和控制器組成。如果把計算機比作人,那麼cpu就是人的大腦。cpu的發展非常迅速,個人電腦從8088 xt 發展到現在的pentium 4時代,只經過了不到二十年的時間。從生產技術來說,最初...