FPGA的本質(zhì)是設計一顆芯片,,其開發(fā)劉成是通過verilog等硬件描述語言通過EDA工具編譯、綜合,、布局布線成為下載文件,,最終加載到FPGA器件中去,完成所實現(xiàn)的功能,。而硬件描述語言描述的就是組合邏輯和時序邏輯電路,,度和邏輯就是與、非,、或組成的電路,,而時序電路就是觸發(fā)器。在FPGA中,,組合邏輯的變成了查找表的工作,,于是所有的數(shù)字電路轉(zhuǎn)化成為查找表和寄存器,這便是FPGA的基礎,,查找表負責邏輯實現(xiàn),,寄存器存儲電路狀態(tài)。現(xiàn)代FPGA內(nèi)部除了查找表和寄存器之外,,還有RAM塊,,用于存儲大量的數(shù)據(jù)塊,這樣可以節(jié)省芯片實現(xiàn)的面積,。FPGA內(nèi)部的時序電路需要時鐘的輸入,,通常FPGA內(nèi)部需要的時鐘種類較多,因此需要在片內(nèi)產(chǎn)生相關的時鐘,,因此時鐘管理單元DCM/PLL也是必不可少的內(nèi)部部件,。除此之外,F(xiàn)PGA內(nèi)部還包括接口I/O,可分為普通I/O和高速I/O,次外還有各種各樣的硬核,。
FPGA的英文翻譯過來是現(xiàn)場可編程門陣列,,這是相對于ASIC來說的,ASIC硬件也可以可做是門陣列,,但是它是非可編程的器件,,流片完成之后功能就固化了,。但是FPGA 的可編程性在于其能夠重新下載配置文件,來改變其內(nèi)在的功能,。兩者在前端開發(fā)流程上并無二致,。FPGA作為一種器件,技術主要壟斷在ALTERA和XILINX這兩大公司手中,。
?。ㄒ唬〧PGA架構(gòu)
一個完整的嵌入式系統(tǒng)中由單獨一個FPGA組成的情況較少,通常由多個器件組合完成,,例如CPU+FPGA,。通常是由一個FPGA+ARM,ARM負責軟件配置管理,,界面輸入外設操作,,F(xiàn)PGA負責大數(shù)據(jù)量運算,可看做CPU的專用協(xié)處理器來使用,,也常會用于擴展外部接口,。常用的架構(gòu)有ARM+FPGA,DSP+FPG A,或者網(wǎng)絡處理器+FPGA等,這些架構(gòu)形成構(gòu)成整個高速嵌入式設備的處理形態(tài),。實現(xiàn)高速處理方面,,CPU的發(fā)展趨勢是多核。FPGA的熱門應用有:
1)網(wǎng)絡存儲產(chǎn)片
2)高速網(wǎng)絡設備
3)4G通信等設備:對于新一代通信基站的信號處理,,F(xiàn)PGA+DSP陣列的架構(gòu)就是絕配,。
總之,沒有完美的架構(gòu),,只有合適的組合,。
(二)器件互聯(lián)
系統(tǒng)架構(gòu)確定之后,,下一步就是FPGA和各器件的互聯(lián)問題,。通常來說,,CPU和FPGA的互聯(lián)問題主要取決于兩個要素:
1)CPU所支持的接口
2)交互的業(yè)務
通常FPGA一般支持與CPU連接的數(shù)字接口,,其常用的有EMIF,PCI,,網(wǎng)口,,DDR等接口。作為總線類接口,,F(xiàn)PGA通常作為從設備與CPU連接,,CPU作為主設備通過訪問直接映射的地址對FPGA進行訪問。通??偩€訪問分為同步訪問和異步訪問,。CPU手冊中會對信號定義時序控制有著詳細的說明,,F(xiàn)PGA根據(jù)這些詳細的說明來說實現(xiàn)相應的邏輯。同時CPU還會對訪問時序進行設置,,例如設置建立時間,、保持時間、最快時鐘,。對于總線型的訪問來說,,數(shù)據(jù)信號通常為三態(tài),用于輸入輸出,,這種設計目的減少外部連線的總數(shù),。總線訪問優(yōu)勢是直接映射到系統(tǒng)的地址區(qū)間,,訪問較為直觀,,但相對傳輸速率不高,主要原因如下:
1)受制總線訪問間隔,,即兩次訪問中間的空閑狀態(tài)
2)不支持雙向傳輸,,并且FPGA主動對CPU發(fā)起操作是,只有中斷處理一種方式,。
這種總線型操作特點可以使其用作系統(tǒng)的管理操作,,例如FPGA內(nèi)部寄存器的配置,運行過程中所需參數(shù)配置,,以及數(shù)據(jù)量較小的信息交互等操作,。這些操作數(shù)據(jù)量和所需帶寬合適,可應對普通的嵌入式系統(tǒng)的需求處理,。而對于大數(shù)據(jù)流量的數(shù)據(jù)交互,,一般采用專用的總線交互,其特點支持雙向傳輸,,總線傳輸速率較快,。
(三)FPGA特點
FPGA最大的特點在于其靈活性:
1)I/O的靈活性,,可以通過其I/O組成各種接口與各種器件連接,,并且支持不同的電器特性。
2)內(nèi)部存儲器靈活,,可以通過IP生成工具生成各種深度和寬度的RAM和FIFO
3)邏輯的靈活性,,內(nèi)部邏輯可生成各種類型IP
(四)架構(gòu)設計
1)流驅(qū)動式
對于一個FPGA的架構(gòu)設計,,其首先需要考慮的就是性能,,其次就是接口設計。一般架構(gòu)設計是采用數(shù)據(jù)流驅(qū)動方式實現(xiàn)的,通常來說應用于IP領域,、存儲領域,、數(shù)字處理領域等較大型FPGA設計都是數(shù)據(jù)流驅(qū)動式架構(gòu),主要包括輸入接口單元,,主處理單元,,輸出接口單元,還可能包括輔助處理單元,、外部存儲單元,,這些單元之間一般采用流水式處理,即數(shù)據(jù)處理完之后數(shù)據(jù)打包發(fā)下一級處理,。其中數(shù)據(jù)輸入輸出可能有多個,,此時需要架構(gòu)內(nèi)部實現(xiàn)數(shù)據(jù)的交換。
2)穩(wěn)定性:設計一定能夠進行正常工作
3)時鐘域復位:復位一般采用異步復位同步釋放的方式,。
4)并行與復用:并行可以提過處理速度,,復用可以節(jié)省資源。最終的設計取決于對設計處理能力和邏輯數(shù)量的權(quán)衡,。
5)流水線處理:簡化設計,;時序優(yōu)化。但是流水設計對于帶反饋的設計無能為力,,強加流水設計的話有可能會浪費邏輯和設計,。
(五)FPGA中一些常用內(nèi)部資源
1)FIFO設計:作為FPGA中內(nèi)部資源的一個常用器件,,最常見與異步時鐘域劃分和緩沖數(shù)據(jù),,但不僅限于此。簡化設計,、減少耦合,、輸入輸出接口固定,便于仿真和驗證,,都是使用FIFO的好處,。
2)RAM:通常實例化RAM中,一種是BLOCK RAM,,一種是分布式RAM,,前者可以提供較大的存儲空間,后者提供較小的存儲空間,。
?。ㄎ澹ヽoding原則
1)注釋:好的代碼必須有注釋,注釋至少包括文件注釋,、端口注釋和功能語句注釋。好的注釋,,可以提高代碼的可讀性,,可維護性,。
2)語句:所寫語句一定是可綜合的,在FPGA設計中無外乎就是時序邏輯和組合邏輯,。組合邏輯是即可生效的,,時序邏輯是時鐘的下一拍起效。
3)阻塞與非阻塞賦值:一般情況下,,組合邏輯用的是阻塞賦值,,時序邏輯用的是非阻塞賦值。
4)注意避免鎖存器的生成:鎖存器最容易產(chǎn)生在always(*)模塊,,所有的分支條件都要描述并且賦值,,狀態(tài)機中的default狀態(tài)也不要忘記。
?。┙涌谠O計
在進行設計的時候,,需要一個接口模塊,首先需要明確以下問題:
1)同步接口還是異步接口,?
2)有哪些信號,,功能是什么?
3)信號之間的時序關系是什么,?
4)傳遞的效率什么,?
這些問題的答案一般都會在datasheet中給出,一般設計一個接口模塊,,必然與其他硬件電路相連接,。加入外部連接接口是總線接口,至少包括以下卻不限于以下信號:
1)地址:能夠支持的最大地址空間,,數(shù)據(jù)和地址是否復用,?
2)數(shù)據(jù):一般讀數(shù)據(jù)和寫數(shù)據(jù)復用同一接口
3)讀寫命令
4)是否支持突發(fā)傳輸
5)同步還是異步
6)控制信號之間的相位關系以及建立時間和保持時間的要求
(6)學會總線設計
PC時代,,壟斷江湖的是微軟和INTel,,而在移動互聯(lián)網(wǎng)時代,最具有潛質(zhì)的就是谷歌的ANDROID系統(tǒng)和ARM芯片,。因此作為ARM處理做片上互聯(lián)的AMBA總線標準成為業(yè)界應用最廣泛的標準,。
AMBA總線實際是三個標準的集合,分別為AHB,,ASB,,APB。ASB已經(jīng)逐漸被AHB取代,,現(xiàn)在使用最廣泛的是AHB和APB總線,,以及最新擴展的AXI總線。如圖為AHB和APB在一個嵌入式系統(tǒng)中的應用場景。
更多信息可以來這里獲取==>>電子技術應用-AET<<