服務(wù)熱線
0755-83044319
發(fā)布時間:2024-02-17作者來源:薩科微瀏覽:2170
第1節(jié) 什么是FPGA
FPGA的全稱為Field-ProgrammableGateArray,即現(xiàn)場可編程門陣列。
在開始學(xué)習(xí)FPGA之前,同學(xué)們首先應(yīng)該清楚地了解FPGA的概念,明白FPGA到底是什么東西,可以用來做什么。FPGA是在PAL、GAL、CPLD等可編程器件的基礎(chǔ)上進一步發(fā)展的產(chǎn)物,是作為專用集成電路(ASIC)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點。簡而言之,F(xiàn)PGA就是一個可以通過編程來改變內(nèi)部結(jié)構(gòu)的芯片。直觀來說,F(xiàn)PGA就是一個可以“改變”內(nèi)部結(jié)構(gòu)的芯片,而讓這個芯片來實現(xiàn)怎樣的功能,就需要通過編程即設(shè)計硬件描述語言,經(jīng)過EDA工具編譯、綜合、布局布線成后轉(zhuǎn)換為可燒錄的文件,最終加載到FPGA器件中去,改變FPGA內(nèi)部的連線,最終完成所實現(xiàn)的功能。此時的FPGA就可以認(rèn)為是用來實現(xiàn)具體功能的一個粗糙的芯片。
稍微接觸過硬件的人大概都聽說過另一種集成電路芯片即單片機,那么FPGA與單片機在結(jié)構(gòu)上有著怎樣的差別呢?對于單片機而言,F(xiàn)PGA是一種微處理器,類似于電腦的CPU,一般是基于哈佛總線結(jié)構(gòu)或者馮·諾依曼結(jié)構(gòu),前者將指令存儲器與數(shù)據(jù)存儲器分開,后者合并共同同一套存儲器。(改進的哈佛結(jié)構(gòu)使用兩個獨立的存儲器模塊(程序存儲器和數(shù)據(jù)存儲器),處理器只有一套總線,分時訪問程序存儲器和數(shù)據(jù)存儲器,但是在處理器中有指令cache和數(shù)據(jù)cache將程序和數(shù)據(jù)分開(馮諾依曼結(jié)構(gòu)中沒有指令cache和數(shù)據(jù)cache),所以處理器仍然可以并步執(zhí)行取指令和取數(shù)據(jù),從這點看處理器仍然屬于哈佛結(jié)構(gòu)。)
單片機用途廣泛,多用于控制流水線上;FPGA的結(jié)構(gòu)是查找表,它的結(jié)構(gòu)比較復(fù)雜,相對應(yīng)的它可以實現(xiàn)的功能也很強大,一般應(yīng)用于通信接口設(shè)計、數(shù)字信號處理等比較高端的場合,而且FPGA還有一個特殊的應(yīng)用場合,即ASIC的原型驗證。
相較于專職專用的ASIC,F(xiàn)PGA工具在開發(fā)難度上降低了許多,并且大大縮短了開發(fā)周期,而且由于FPGA是可重復(fù)編程的,其研發(fā)成本與風(fēng)險也要比ASIC減少許多,更適用于復(fù)雜多變的數(shù)據(jù)中心等應(yīng)用。但是FPGA也不是[敏感詞]的,優(yōu)勢有時候也是劣勢。雖然FPGA相比于單片機、CPU等集成電路芯片擁有效率更高、功耗更低的特點,但是易于開發(fā)程度遠遠不如單片機、CPU;在數(shù)字芯片設(shè)計領(lǐng)域,F(xiàn)PGA雖然相比ASIC具有更短的開發(fā)周期與開發(fā)難度,但是其存在著成本過高、性能較差并且在資源的利用率上遠不及ASIC等問題,不能真正的替代ASIC。
第2節(jié) FPGA的結(jié)構(gòu)
FPGA可編程的特性決定了其實現(xiàn)數(shù)字邏輯的結(jié)構(gòu)不能像專用ASIC那樣通過固定的邏輯門電路來完成,而只能采用一種可以重復(fù)配置的結(jié)構(gòu)來實現(xiàn),而查找表(LUT)可以很好地滿足這一要求,目前主流的 FPGA 芯片仍是基于 SRAM 工藝的查找表結(jié)構(gòu)。
在任意一款 FPGA 芯片說明書中可以查看到該器件具體的參數(shù)指標(biāo),其中包含可編程邏輯模塊的數(shù)量、固定功能邏輯模塊(如乘法器)的數(shù)目及存儲器資源(如嵌入式 RAM)的大小。當(dāng)然僅僅依靠這些結(jié)構(gòu)是構(gòu)成不了 FPGA 的基本結(jié)構(gòu)的,在芯片中還有其他眾多部分,但是在比較 FPGA 時,上述結(jié)構(gòu)是最重要的參考指標(biāo)。在最底層的可配置邏輯模塊(如片上的邏輯單元)上,存在著基本的兩種部件:觸發(fā)器和查找表(LUT),而觸發(fā)器和查找表的組合方式不同,是各個 FPGA 家族之間區(qū)別的重要依據(jù),并且查找表本身的結(jié)構(gòu)也可能各不相同(有 4 輸入或 6 輸入或其他)。查找表(Look-Up-Table)簡稱為 LUT,其本質(zhì)上就是一個 RAM。
目前 FPGA 內(nèi)部中多使用 4輸入的 LUT,每一個 LUT 可以看成一個有 4 位地址線的 RAM。當(dāng)用戶在 EDA 工具上通過原理圖或硬件描述語言設(shè)計了一個邏輯電路以后,F(xiàn)PGA 開發(fā)軟件會自動計算邏輯電路的所有可能結(jié)果,并把真值表(即結(jié)果)事先寫入 RAM 中。這樣,每輸入一個信號進行邏輯運算就等于輸入一個地址進行查找表操作,通過地址找到對應(yīng)的 RAM 中的結(jié)果,最后將其輸出。以實現(xiàn)數(shù)字邏輯 Y=A&B&C 的功能為例。如果是在專用 ASIC 中,為了實現(xiàn)該邏輯,邏輯門都已經(jīng)事先確定好,Y 的輸出值為兩個邏輯與運算后的結(jié)果,其基本的實現(xiàn)結(jié)構(gòu)如下圖所示
而在 FPGA 的結(jié)構(gòu)中若要實現(xiàn)同樣的邏輯功能,用戶首先在 EDA 工具中使用硬件描述語言設(shè)計出“Y=A&B&C”邏輯代碼,EDA 工具(QUARTUS 或其他開發(fā)工具)分析這一行代碼,得出 A、B、C 在不同輸入組合下(共 8 種),Y 的值分別是多少,其真值表如下表所示:
然后軟件工具將所有的結(jié)果寫到查找表上,從而實現(xiàn)了該代碼的功能。下圖就是 FPGA 的實現(xiàn)基本結(jié)構(gòu)。查找表就類似于一個 RAM,輸入 A、B、C 則相當(dāng)于地址,通過 A、B、C 的地址就得讀到值賦給 Y 并輸出
第3節(jié) 更為復(fù)雜的FPGA架構(gòu)
1985,賽靈思公司推出了[敏感詞]塊 FPGA 芯片—XC2064,最初的 FPGA 包含了 8×8=64 的邏輯塊陣列和 85000 個晶體管,其門電路不超過 1000 個,且每個邏輯塊由一個四輸入的查找表和其它一些簡單功能模塊構(gòu)成。FPGA 誕生之初由于其容量非常有限,因此只能用來執(zhí)行一些相對簡單的任務(wù),如用來集中一些膠合邏輯或?qū)崿F(xiàn)基本的狀態(tài)機。
而在 22 年后,F(xiàn)PGA 行業(yè)兩大巨頭 Xilinx 和 Altera 公司紛紛推出了采用[敏感詞] 65nm 工藝的 FPGA 產(chǎn)品,其門數(shù)量已經(jīng)達到千萬級,晶體管個數(shù)更是超過 10 億個。在這 22 年間,F(xiàn)PGA 在緊跟半導(dǎo)體工藝進步的同時也推動了半導(dǎo)體的發(fā)展進程——2001 年采用 150nm 工藝、2002 年采用 130nm 工藝,2003 年采用 90nm 工藝,2006 年采用 65nm 工藝,而目前[敏感詞]推出的 FPGA 產(chǎn)品更是已經(jīng)使用上 10nm 工藝。隨著技術(shù)的發(fā)展和工藝節(jié)點的進步,F(xiàn)PGA 的容量和性能在不斷提高的同時,其功耗卻不斷的優(yōu)化減少。2006 年以前四輸入查找表一直被廣泛使用,在一些高端器件可能會用上六輸入、八輸入或更多輸入端口的查找表。而一個多輸入的查找表又可以分解成較小輸入的查找表,即能夠分裂成許多更小的功能。例如一個八輸入的查找表可以分解成兩個四輸入的查找表或分解成一個三輸入加一個五輸入的查找表。在實際的高端器件中,這種可編程構(gòu)造可以描述相當(dāng)于百萬級(有時甚至千萬級)的原始邏輯門。
在 FPGA 內(nèi)部,有著“軟內(nèi)核”與“硬內(nèi)核”之分。比如若利用 FPGA 的可編程性在芯片內(nèi)部構(gòu)造實現(xiàn)了一個計數(shù)器邏輯,那么在構(gòu)造計數(shù)器邏輯過程中使用到的功能便可以被稱為“軟功能”,又稱之為軟內(nèi)核。而如果某個功能若是直接利用芯片實現(xiàn)的,則是利用了芯片內(nèi)部的“硬功能”,一般又稱之為硬內(nèi)核。==軟內(nèi)核與硬內(nèi)核之間優(yōu)勢互補,軟內(nèi)核的優(yōu)勢在于可以在利用芯片資源的基礎(chǔ)上利用編程設(shè)計讓其完成需要實現(xiàn)的任何功能(注意是數(shù)字功能,不包括模擬功能)。而硬內(nèi)核由于是實現(xiàn)固定功能的器件,因此其優(yōu)勢在于資源利用率高且功耗較低,占用硅片的面積也較小,并具有較高的性能。而兩者最重要的區(qū)別在于:與軟內(nèi)核相比硬內(nèi)核可用于實現(xiàn)模擬功能,例如鎖相環(huán)的倍頻功能,這個功能需要在模擬電路下實現(xiàn),所以這一部分是在 FPGA 內(nèi)部用硬件來實現(xiàn)的。
第4節(jié) 帶嵌入式處理器的FPGA
在上文中提到“軟內(nèi)核”與“硬內(nèi)核”的概念,而利用 FPGA 的可編程構(gòu)造實現(xiàn)的事情之一即為使用其中的一部分?jǐn)?shù)字邏輯資源制作一個或多個軟處理器內(nèi)核,當(dāng)然,也可以實現(xiàn)不同規(guī)模的處理器。
舉例來說,可以創(chuàng)建一個或多個 8 位的處理器加上一個或多個 16 位或 32 位的軟處理器,而所有處理器都在同一器件中。而如果 FPGA 供應(yīng)商希望提供一個占用較少硅片面積、消耗較低功率但性能更高的處理器,解決方案是將其實現(xiàn)為硬內(nèi)核。如果需要高速、高性能的處理器,并且需要實現(xiàn)邏輯編程時,傳統(tǒng)的方法是在電路板上放置處理器(如 ARM、DSP 等)和 FPGA,ARM 或者 DSP 工程師實現(xiàn)軟件部分,F(xiàn)PGA 工程師實現(xiàn)可編程邏輯部分,兩者協(xié)同合作。
現(xiàn)在[敏感詞]的方案是使用 ZYNQ 一個芯片以更低的功耗、更高的速度實現(xiàn)以上功能。在 2010 年 4 月硅谷舉行的嵌入式系統(tǒng)大會上,賽靈思發(fā)布了可擴展處理平臺的架構(gòu)詳情,這款基于無處不在的 ARM 處理器的 SoC 可滿足復(fù)雜嵌入式系統(tǒng)的高性能、低功耗和多核處理能力要求。賽靈思可擴展處理平臺芯片硬件的核心本質(zhì)就是將通用基礎(chǔ)雙 ARM Cortex-A9 MP Core 處理器系統(tǒng)作為“主系統(tǒng)”,結(jié)合低功耗 28nm 工藝技術(shù),以實現(xiàn)高度的靈活性、強大的配置功能和高性能。由于該新型器件的可編程邏輯部分基于賽靈思 28nm 7 系列 FPGA,因此該系列產(chǎn)品的名稱中添加了“7000”,以保持與 7 系列 FPGA 的一致性,同時也方便日后本系列新產(chǎn)品的命名。
考慮下面所示這個例子
這個芯片完全以硬內(nèi)核方式實現(xiàn)的雙路 ARM Cortex-A9 微控制器子系統(tǒng)(運行時鐘高達 1GHz,包含浮點引擎,片上緩存,計數(shù)器,定時器等)以及種類廣泛的硬內(nèi)核接口功能(SPI,I2C,CAN
等),還有一個硬內(nèi)核的動態(tài)內(nèi)存控制器,所有這些組件都利用大量傳統(tǒng)的可編程構(gòu)造和大量的通用輸入輸出(GPIO)引腳進行了性能增強。如果是 ZYNQ 單芯片方案,是不是意味著只需要軟件工程師或者 FPGA 工程師獨立工作就可以了呢?目前所了解的情況是:FPGA 工程師負(fù)責(zé)搭建周邊電路,如 ARM 的接口、時鐘配置等,還負(fù)責(zé)可編程邏輯部分的開發(fā)。而軟件部分仍然還是軟件工程師負(fù)責(zé)。其主要原因在于 FPGA 邏輯開發(fā)和軟件開發(fā)都是專業(yè)性比較強的技能,非常少的工程師能同時掌握這兩個技能。當(dāng)然,這里說的掌握性能,是專業(yè)性的、能應(yīng)用到企業(yè)項目的技能,只是接觸一下的不算。
第5節(jié) 數(shù)據(jù)存儲以及配置分方式
隨機存取存儲器(英語:Random Access Memory,縮寫:RAM),也叫主存,是與CPU直接交換數(shù)據(jù)的內(nèi)部存儲器。它可以隨時讀寫(刷新時除外),而且速度很快,通常作為操作系統(tǒng)或其他正在運行中的程序的臨時數(shù)據(jù)存儲介質(zhì)。RAM工作時可以隨時從任何一個指定的地址寫入(存入)或讀出(取出)信息。它與ROM的[敏感詞]區(qū)別是數(shù)據(jù)的易失性,即一旦斷電所存儲的數(shù)據(jù)將隨之丟失。RAM在計算機和數(shù)字系統(tǒng)中用來暫時存儲程序、數(shù)據(jù)和中間結(jié)果。
在 FPGA 內(nèi)部存在著存儲單元片內(nèi) RAM 塊,數(shù)據(jù)是存放在 RAM 中并由其來設(shè)置工作狀態(tài)的,若想要 FPGA 進行工作,就需要對片內(nèi) RAM 進行編程。而如果外部有大量數(shù)據(jù)交互時,就要通過增
加外設(shè)來對數(shù)據(jù)進行暫時性的存儲,如 SDRAM 存儲器或者 DDR3 存儲器,暫存在外設(shè)中的數(shù)據(jù)最終也是要通過 FPGA 內(nèi)部的 RAM 進行存儲與處理。
當(dāng)在 EDA 工具上將程序設(shè)計完成之后,便需要將軟件上的程序燒錄進 FPGA 內(nèi)部。通過不同的配置模式,F(xiàn)PGA 便會有不同的編程方式。以下為常用的幾種配置模式
1、并行模式:通過并行 PROM、Flash 配置 FPGA;(將文件放置到PROM以及Flash中去,然后在把數(shù)據(jù)放置到FPGA)
2、主從模式:使用一片 PROM 配置多片 FPGA;
3、串行模式:串行 PROM 配置 FPGA;
4、外設(shè)模式:將 FPGA 作為微處理器的外設(shè),由微處理器對其編程。
對于外設(shè)模式,比如用一個CPU來作為中間緩沖的,從PROM中讀取數(shù)據(jù),然后再通過CPU傳輸?shù)紽PGA上去,比如可以實現(xiàn)加密功能,而直接通過并行模式則不能實現(xiàn)。
目前,主流的 FPGA 都是基于 SRAM 工藝的,在大部分的 FPGA 開發(fā)板上,使用的都是串行配置模式。由于 SRAM 掉電就會丟失內(nèi)部數(shù)據(jù),因此往往都會外接一個能夠掉電保存數(shù)據(jù)的片外存儲器以保存程序。這樣一來,上電時 FPGA 便將外部存儲器中的數(shù)據(jù)讀入片內(nèi) RAM 以完成配置,對 FPGA 編程完成后便進入工作狀態(tài);掉電后 FPGA 內(nèi)部 SRAM 中存儲的數(shù)據(jù)丟失,邏輯清零。以這種方式配置 FPGA 不僅能反復(fù)使用,還無需重復(fù)的手動配置。完成一次主動配置之后每次上電便會自動的實現(xiàn) FPGA 的內(nèi)部編程。
*** ***
FPGA 與 ASIC
(1)ASIC:即專用集成電路(Application Specific Integrated Circuit)的簡稱。電子產(chǎn)品中,它們無所不在,還真是比 FPGA 普及得多得多。但是 ASIC 的功能相對固定,它是為了專一功能或?qū)R粦?yīng)用領(lǐng)域而生,希望對它進行任何的功能和性能的改善往往是無濟于事的。
ASIC 是布滿鉛字的印刷品,那么 FPGA 就是可以自由發(fā)揮的白紙一張。
(2)FPGA:使用了 FPGA 器件的電子產(chǎn)品,在產(chǎn)品發(fā)布后仍然可以對產(chǎn)品設(shè)計作出修改,大大方便了產(chǎn)品的更新以及針對新的協(xié)議標(biāo)準(zhǔn)作出的相應(yīng)改進,從而可以加速產(chǎn)品的上市時間,并降低產(chǎn)品的失敗風(fēng)險和維護成本。相對于無法對售后產(chǎn)品設(shè)計進行修改的 ASIC 來說,這是 FPGA特有的一個優(yōu)勢。由于 FPGA 可編程的靈活性以及近年來電子技術(shù)領(lǐng)域的快速發(fā)展,F(xiàn)PGA 也正在向高集成、高性能、低功耗、低價格的方向發(fā)展,并且逐漸具備了與 ASIC 相當(dāng)?shù)男阅?,使其被廣泛地應(yīng)用在各行各業(yè)的電子及通信設(shè)備中。
(3)相同點:當(dāng)然,F(xiàn)PGA 與 ASIC 的開發(fā)過程有一些共通之處(當(dāng)然并不完全一樣,區(qū)別也是有的),例如它們都可以使用硬件編程語言 Verilog 或 VHDL,它們在時序設(shè)計、仿真驗證方面的基本原理、方法或優(yōu)化技巧基本是相通的。ASIC 開發(fā)通常分為前端和后端,前端是后端的輸入,前端最終的產(chǎn)出是一個能夠描述所實現(xiàn)功能的邏輯門電路及其連接的網(wǎng)表,F(xiàn)PGA 在綜合后也是得到一個類似的網(wǎng)表;ASIC 設(shè)計后端的任務(wù)是把前端得到的網(wǎng)表通過布局布線(需要人工參與)映射到具體的物理結(jié)構(gòu)上,而 FPGA 上與此類似的映射過程通常完全由開發(fā)工具包辦了,它并不需要設(shè)計者太多的參與。當(dāng)然了,從這樣簡單的開發(fā)對比也可以多少體會到 ASIC 和 FPGA 在成本、功耗或性能上為何存在差異。
FPGA、ARM 和 DSP
與 ASIC 相比,F(xiàn)PGA、ARM 和 DSP 都具備與生俱來的可編程特性。FPGA、ARM 和 DSP 都或多或少集成了一些 ASIC功能,正是這些 ASIC 功能,加上“可編程”特性,使得它們相互區(qū)別開了,并且各自獨霸一方。
ARM:是微處理器行業(yè)的一家知名企業(yè),設(shè)計了大量高性能、廉價、耗能低的 RISC 處理器、相關(guān)技術(shù)及軟件。由 ARM 公司設(shè)計的處理器風(fēng)靡全球,大有嵌入式系統(tǒng)無處不 ARM 的趨勢。我們通常所說的 ARM,更多的是指 ARM 公司的處理器,即 ARM處理器。ARM 通常包含一顆強大的處理器內(nèi)核,并且為這顆處理器量身配套了很多成熟的軟件工具以及高級編程語言,這也是它倍受青睞的原因之一。當(dāng)然了,ARM 不只是一顆處理器
而已,因為在 ARM 內(nèi)核處理器周邊,各種各樣精于控制的外設(shè)比比皆是,什么 GPIO、PWM、AD/DA、UART、SPI、IIC……一列一籮筐。ARM 的長處在控制和管理,在很多工業(yè)自動化中大有用武之地。
DSP:即數(shù)字信號處理器,是一種獨特的微處理器,有自己的完整指令系統(tǒng),能夠進行高速、高吞吐量的數(shù)字信號運算處理。它對各種語音、數(shù)據(jù)和視頻做運算處理;DSP 是為各種數(shù)學(xué)運算量身打造的。
FPGA用于很多原型產(chǎn)品設(shè)計過程中,在一些靈活性要求高、定制化程度高、性能要求也特別高的場合,F(xiàn)PGA再合適不過了。FPGA 固然強大,但是它成本、功耗和開發(fā)復(fù)雜性都很高,而在這些方面,ARM 和 DSP 正好彌補了 FPGA 所帶來的缺憾。
之所以會有 ARM、DSP 和 FPGA 的存在,和實際應(yīng)用情景是非常相關(guān)的。對于 ARM,它的主要應(yīng)用情景常常是有一些低速數(shù)據(jù)的采集、簡單的處理和傳輸,也還需要一些人機交互手段的存在。前面提到,ARM處理器周邊通常外設(shè)豐富,且它本身就精于控制,所以就很適合此類應(yīng)用。對于DSP,有無人機交互就無所謂了,它的應(yīng)用情景最主要的特點一定是高速數(shù)據(jù)的實時采集、較復(fù)雜的運算處理和傳輸。DSP對此作過專門優(yōu)化。FPGA,可以這么說,它是可以補前面二者的“缺”和“漏”,F(xiàn)PGA 可以在 ARM 和 DSP 之外滿足各種定制化的需求。ARM 和 DSP 在大批量、低成本的應(yīng)用中較為常見;而 FPGA 則更多的在小批量、定制化、成本不敏感的行業(yè)中應(yīng)用。
Verilog 與 VHDL
早期的 FPGA 開發(fā)通過繪制原理圖(和現(xiàn)在的硬件工程師繪制原理圖的方式大體相仿)完成。而隨著 FPGA 規(guī)模和復(fù)雜性的不斷攀升,這種落后的設(shè)計方式幾乎已經(jīng)被大家遺忘了,取而代之的是能夠?qū)崿F(xiàn)更好的編輯性和可移植性的代碼輸入方式。這兩種語言都是通過一系列分層次的模塊來表示復(fù)雜的數(shù)字系統(tǒng),逐個模塊的仿真驗證后,再集成各個模塊交由綜合工具生成門級的網(wǎng)表,最后由布局布線工具將其映射到最終的 FPGA 器件上。
Verilog :是在 1983 年由 Gateway Automation 公司的 Philip Moorby 發(fā)明,此人也是目前 EDA 行業(yè)鼎鼎有名的 Cadence 公司的[敏感詞]合伙人。時隔 10 年,1993 年,幾乎所有的 ASIC廠商都開始支持 Verilog,當(dāng)然 FPGA 廠商也不例外,此時,IEEE(電氣和電子工程師協(xié)會)正式將當(dāng)時的 Verilog2.0 作為標(biāo)準(zhǔn)的提案。1995 年,IEEE 制定了 Verilog 的標(biāo)準(zhǔn) IEEE1364-1995,即稱之為Verilog-95 的標(biāo)準(zhǔn)。2001 年,在進行了一番修正和擴展之后,發(fā)布了 IEEE 1364-2001 標(biāo)準(zhǔn),即 Verilog-2001。2005 年,Verilog 再次做出了細(xì)微的修正,發(fā)布了IEEE1364-2005 標(biāo)準(zhǔn),即 Verilog-2005。
VHDL :是 Very High Speed Integrated Circuit Hardware Description Language 的縮寫,也是誕生于上世紀(jì) 80 年代初期,但它與 Verilog 的民間背景不同,VHDL 則是美國軍方研發(fā),且早在 1987 年就被 IEEE 和美國[敏感詞]部確認(rèn)為標(biāo)準(zhǔn)硬件描述語言,并公布了 VHDL 的標(biāo)準(zhǔn)版本 IEEE-1076-1987(簡稱 87 版)。1993 年,IEEE 對 VHDL 進行了修訂,從更高的抽象層次和系統(tǒng)描述能力上擴展 VHDL 的內(nèi)容,公布了新版本的 VHDL,即 IEEE 標(biāo)準(zhǔn)的 1076-1993版本(簡稱 93 版)。
FPGA 發(fā)展概述
上世紀(jì) 60 年代中期,TI 公司設(shè)計制造了各式各樣的實現(xiàn)基本邏輯門電路功能的芯片,相信今天很多的工程師仍然很熟悉這些主要面對[敏感詞]應(yīng)用的 54XX 和商業(yè)應(yīng)用的 74XX 芯片。據(jù)說早期的工程師甚至能夠單憑著這些芯片架構(gòu)出一顆簡單 CPU 的功能。
從 1971 年 Intel 公司的[敏感詞]顆 4 位微處理器 Intel 4004 到上世紀(jì) 80 年代初被奉為經(jīng)典的8051 單片機,再到今天各大嵌入式處理器廠商競相使用的由 ARM 公司推出的各種 Cortex內(nèi)核。深入處理器的底層結(jié)構(gòu),你會發(fā)現(xiàn)他們最本質(zhì)的東西并沒有太大的改變。而處理器再強大,一顆芯片盡可以將各種外設(shè)嵌入其中,但對于任何一顆已經(jīng)批量出貨的芯片而言,它的功能是固定的,若想在既有外設(shè)功能的基礎(chǔ)上有任何的擴展,或許不是遇到電氣特性不支持就是遇到 IO 太少的尷
尬,而這些問題也就催生了可編程邏輯器件的誕生。
今天的 CPU 周圍已很難看見 54 或 74字樣的 ASIC 了,取而代之的可能是管腳密集的 CPLD 或 FPGA。在系統(tǒng)的可擴展性和靈活性方面,F(xiàn)PGA/CPLD 有著得天獨厚的優(yōu)勢。它更多的被應(yīng)用到了通信、數(shù)據(jù)采集、網(wǎng)絡(luò)、圖像處理、算法實現(xiàn)等對數(shù)據(jù)傳輸吞吐量和處理速度有更高要求的場合。
[敏感詞]款可編程邏輯器件(PLD)最初是在 1970 年以 PROM 的形式進入人們的視野,這種 PROM 結(jié)構(gòu)的可編程邏輯器件可以實現(xiàn)簡單的邏輯功能,很容易便可替代當(dāng)時流行的 54 或 74 系列邏輯門電路。受限于 PROM 的結(jié)構(gòu),[敏感詞]款可編程邏輯器件的輸入接口相對較少。因此,可編程邏輯陣列(PAL)便孕育而生,PAL 由一個可編程的“與”平面和一個固定的“或”平面構(gòu)成,或門的輸出可以通過觸發(fā)器有選擇地被置為寄存狀態(tài)。PAL 器件是現(xiàn)場可編程的,它的實現(xiàn)工藝有反熔絲技術(shù)、EPROM 技術(shù)和 EEPROM 技術(shù)。
PAL 的問題在于其實現(xiàn)方式使得信號通過可編程連線的時間相對較長。在 PAL 的基礎(chǔ)上,又發(fā)展了一種通用陣列邏輯 GAL,它要比 PAL速度快許多,它采用了 EEPROM 工藝,實現(xiàn)了電可擦除、電可改寫,其輸出結(jié)構(gòu)是可編程的邏輯宏單元,因而它的設(shè)計具有很強的靈活性,至今仍有許多人使用。
這些早期的 PLD 器件的一個共同特點是可以實現(xiàn)速度特性較好的邏輯功能,但其過于簡單的結(jié)構(gòu)也使它們只能實現(xiàn)規(guī)模較小的電路。電子領(lǐng)域的發(fā)展趨勢總是朝著速度更快、功能更強、體積更小、成本更廉價的方向邁進。復(fù)雜可編程邏輯器件(CPLD)的誕生也就順理成章了。Altera 公司于 1984 年發(fā)明了基于CMOS 和 EPROM 技術(shù)相結(jié)合的 CPLD。CPLD 可實現(xiàn)的邏輯功能相比 PAL 和 GAL 有了大幅度的提升,已經(jīng)可以勝任設(shè)計中復(fù)雜性較高、速度也較快的邏輯功能,尤其在接口轉(zhuǎn)換、總線控制和擴展方面有著較多的應(yīng)用。經(jīng)過幾十年的發(fā)展,今天的 CPLD 功能和性能也得到了進一步的提升,其基本結(jié)構(gòu)由可編程 IO 單元、基本邏輯單元、布線池以及其他相關(guān)輔助功能塊組成。Altera、Xilinx 和 Lattice 是主要的 CPLD 供應(yīng)商。
創(chuàng)始人之一 Ross Freeman 發(fā)明了現(xiàn)場可編程門陣列(FPGA),F(xiàn)reeman 先生發(fā)明的 FPGA 是一塊全部由“開放式門”組成的計算機芯片。采用該芯片,工程師可以根據(jù)需要進行靈活編程,添加各種新功能,以滿足不斷發(fā)展的協(xié)議標(biāo)準(zhǔn)或規(guī)范,工程師們甚至可以在設(shè)計的最后階段對它進行修改和升級。Freeman 先生當(dāng)時就推測低成本、高靈活性的 FPGA 將成為各種應(yīng)用中定制芯片的替代品。
三十多年后的今天,伴隨著制造工藝的不斷進步,F(xiàn)PGA 在深亞微米甚至深亞納米時代一直走在了創(chuàng)新[敏感詞]線。如今的 FPGA 器件,其組成不僅限于基本的可編程邏輯單元、可編程 IO 單元、豐富的布線資源,而且還擁有靈活的時鐘管理單元、嵌入式塊 RAM 以及各種通用的內(nèi)嵌功能單元,很多器件還順應(yīng)市場需求內(nèi)嵌專用的硬件模塊。
FPGA 的優(yōu)勢
1、在考慮是否使用 FPGA 技術(shù)來實現(xiàn)目標(biāo)產(chǎn)品時,我們需要重點從以下幾個方面進行評估。
● 可升級性——產(chǎn)生在設(shè)計過程中,甚至將來產(chǎn)品發(fā)布后,是否有較大的功能升級需求?是否應(yīng)該選擇具有易于更換的同等級、不同規(guī)模的 FPGA 器件?
● 開發(fā)周期——產(chǎn)品開發(fā)周期是否非常緊迫?若使用 FPGA 開發(fā),是否比其他方案具有更高的開發(fā)難度,能否面對必須在最短的時間內(nèi)開發(fā)出產(chǎn)品的挑戰(zhàn)?
● 產(chǎn)品性能——產(chǎn)品的數(shù)據(jù)速率、吞吐量或處理能力上是否有特殊要求?是否應(yīng)該選擇性能更好或速度等級更快的 FPGA 器件?
● 實現(xiàn)成本——是否有基于其它 ASIC、ARM 或 DSP 的方案,能夠以更低的成本實現(xiàn)設(shè)計?FPGA 開發(fā)所需的工具、技術(shù)支持、培訓(xùn)等額外的成本有哪些?通過開發(fā)可復(fù)用的設(shè)計,是否可以將開發(fā)成本分?jǐn)偟蕉鄠€項目中?是否有已經(jīng)實現(xiàn)的參考設(shè)計或者IP 核可供使用?
● 可用性——器件的性能和尺寸的實現(xiàn),是否可以趕上量產(chǎn)?是否有固定功能的器件可以代替?在產(chǎn)品及其衍生品的開發(fā)過程中,是否實現(xiàn)了固定功能?● 其它限制因素——產(chǎn)品是否要求低功耗設(shè)計?電路板面積是否大大受限?工程實現(xiàn)中是否還有其它的特殊限制?
2、基于以上的這些考慮因素,我們可以從如下三大方面總結(jié)出在產(chǎn)品的開發(fā)或產(chǎn)品的生命周期中,使用 FPGA 技術(shù)實現(xiàn)所能夠帶來的潛在優(yōu)勢。
● 靈活性:
可重編程,可定制。
易于維護,方便移植、升級或擴展。
降低 NRE 成本,加速產(chǎn)品上市時間。
支持豐富的外設(shè)接口,可根據(jù)需求配置。
● 并行性
更快的速度、更高的帶寬。
滿足實時處理的要求。
● 集成性
更多的接口和協(xié)議支持。
可將各種端接匹配元件整合到器件內(nèi)部,有效降低 BOM 成本。
單片解決方案,可以替代很多數(shù)字芯片。
減少板級走線,有效降低布局布線難度。
3、以下這些方面看,選擇 FPGA 技術(shù)來實現(xiàn)產(chǎn)品的開發(fā)設(shè)計有時并不是明智的決定。
● 在某些性能上,F(xiàn)PGA 可能比不上專用芯片;或者至少在穩(wěn)定性方面,F(xiàn)PGA 可能要遜色一些。
● 如果設(shè)計不需要太多的靈活性,F(xiàn)PGA 的靈活性反而是一種浪費,會潛在的增加產(chǎn)品的成本。
● 相比特定功能、應(yīng)用集中的 ASIC,使用 FPGA 實現(xiàn)相同功能可能產(chǎn)生更高的功耗。
● 在 FPGA 中除了實現(xiàn)專用標(biāo)準(zhǔn)器件(ASSP)所具有的復(fù)雜功能,還得添加一些額外的功能,實屬一大挑戰(zhàn)。FPGA 的設(shè)計復(fù)雜性和難度可能會給產(chǎn)品的開發(fā)帶來一場噩夢。
FPGA 應(yīng)用領(lǐng)域
1、從技術(shù)角度來看,主要是有以下需求的應(yīng)用場合。
● 邏輯粘合,如一些嵌入式處理常常需要地址或外設(shè)擴展,CPLD 器件尤其適合。今天已經(jīng)少有項目會選擇一顆 FPGA 器件專門用于邏輯粘合的應(yīng)用,但是在已經(jīng)使用的FPGA 器件中順便做些邏輯粘合的工作倒是非常普遍。
● 實時控制,如液晶屏或電機等設(shè)備的驅(qū)動控制,此類應(yīng)用也以 CPLD 或低端 FPGA 為主。
● 高速信號采集和處理,如高速 AD 前端或圖像前端的采集和預(yù)處理,近年來持續(xù)升溫的機器視覺應(yīng)用也幾乎是無一例外的都使用了 FPGA 器件。
● 協(xié)議實現(xiàn),如更新較快的各種有線和無線通信標(biāo)準(zhǔn)、廣播視頻及其編解碼算法、各種加密算法等,諸如此類小批量、定制化、更新?lián)Q代頻繁的應(yīng)用使用FPGA 比 ASIC更有競爭力。
● 各種原型驗證系統(tǒng)。由于工藝的提升,流片成本也不斷攀升,而在流片前使用 FPGA做前期的驗證已成為非常流行的做法。
● 并行計算。過去傳統(tǒng)的 CPU 計算受限于其串行順序處理的架構(gòu),已經(jīng)很難適應(yīng)今天的云計算和數(shù)據(jù)中心對大數(shù)據(jù)運算的需求了;而 GPU 雖然在并行處理以及所使用的高級編程語言上有不小的優(yōu)勢,也在過去一段時間內(nèi)成為了此類應(yīng)用的主流方案,但也受限于極高的成本和功耗代價;相比之下,單位功耗性能是 GPU的 3~4 倍的 FPGA則大有取而代之之勢。
● 片上系統(tǒng),如 Altera 公司的 Soc FPGA 和 Xilinx 公司的 Zynq,這類 FPGA 器件,既有成熟的 ARM 硬核處理器,又有豐富的 FPGA 資源,大有單芯片一統(tǒng)天下的架勢。
2、若從具體的行業(yè)細(xì)分來看,FPGA 在電信、無線通信、有線通信、消費電子產(chǎn)品、視頻和圖像處理、車載、航空航天和[敏感詞]、ASIC 原型開發(fā)、測試測量、存儲、數(shù)據(jù)安全、醫(yī)療電子、高性能計算以及各種定制設(shè)計中都有涉獵。
FPGA 開發(fā)流程
如圖所示,這是一個基于 FPGA 開發(fā)工具的開發(fā)流程圖。當(dāng)然了,在此之前,從FPGA 項目的提上議程開始,設(shè)計者需要進行 FPGA功能的需求分析,然后進行模塊的劃分,比較復(fù)雜和龐大的設(shè)計,則會通過模塊劃分把工作交給一個團隊的多人協(xié)作完成。各個模塊的具體任務(wù)和功能劃分完畢(通常各個模塊間的通信和接口方式也同時被確定),則可以著手進行詳細(xì)設(shè)計,其各個步驟包括設(shè)計輸入、設(shè)計綜合、約束輸入、設(shè)計實現(xiàn)、分析實現(xiàn)結(jié)果(查看工具給出的各種報告結(jié)果)。為了保證設(shè)計達到預(yù)期要求,設(shè)計仿真以及設(shè)計優(yōu)化則穿插其間。在EDA 工具上驗證無誤后,則可以生成下載配置文件燒錄到實際器件中進行板 級的調(diào)試工作。從圖中的箭頭示意不難看出,設(shè)計的迭代性是 FPGA開發(fā)過程中的一個重要特點,這就要求設(shè)計者從一開始就要非常認(rèn)真細(xì)致,否則后續(xù)的很多工作量可能就是不斷的返工。
1、設(shè)計輸入
設(shè)計輸入階段,設(shè)計者需要創(chuàng)建 FPGA 工程,并且創(chuàng)建或添加設(shè)計源文件到工程中。FPGA工程包含了各種不同類型的源文件和設(shè)計模塊,比如HDL 文件、EDIF 或 NGC 網(wǎng)表文件、原理圖、IP 核模塊、嵌入式處理器以及數(shù)字信號處理器模塊等。
2、設(shè)計綜合
設(shè)計綜合階段,F(xiàn)PGA 開發(fā)工具的綜合引擎將編譯整個設(shè)計,并將 HDL 源文件轉(zhuǎn)譯為特定結(jié)構(gòu)的設(shè)計網(wǎng)表。Vivado 設(shè)計工具內(nèi)置 Synthesis 綜合功能,也支持第三方綜合工具,如 Synplify, Synplify Pro 和 Precision 等軟件工具的使用。
3、約束輸入
約束輸入階段,設(shè)計者可以指定時序、布局布線或者其它的設(shè)計要求。Vivado 工具支持專用的編輯器實現(xiàn)時序約束、I/O引腳約束和布局布線約束。
4、設(shè)計仿真
在整個開發(fā)過程的任意時刻,設(shè)計者都可以使用仿真工具對 FPGA 工程進行功能驗證,比如 Vivado 內(nèi)置的仿真器或者第三方工具
ModelSim 仿真器。
5、設(shè)計實現(xiàn)
設(shè)計綜合之后,接著就需要設(shè)計實現(xiàn),將邏輯設(shè)計進一步轉(zhuǎn)譯為可以被下載燒錄到目標(biāo)FPGA 器件中的特定物理文件格式。使用 Vivado的工程導(dǎo)航窗口中支持的目標(biāo)和策略設(shè)置屬性,可以控制設(shè)計實現(xiàn)以及結(jié)果優(yōu)化。為了更快的達到設(shè)計目標(biāo),可以使用SmartXplorer進行不同的處理策略實現(xiàn),達到多次的自動實現(xiàn)處理以完成設(shè)計目標(biāo)。
6、分析實現(xiàn)結(jié)果
完成設(shè)計實現(xiàn)后,必須對設(shè)計約束、器件資源占用率、實現(xiàn)結(jié)果以及功耗等設(shè)計性能進行分析。既可以查看靜態(tài)報告,也可以使用 Vivado中內(nèi)置的工具動態(tài)的查看設(shè)計綜合實現(xiàn) 的結(jié)果。對于時序結(jié)果和功耗結(jié)果,Vivado 內(nèi)置工具中都可以進行查看。此外,在系統(tǒng)調(diào)試時也可以使用在線邏輯分析儀 ILA。
7、 設(shè)計優(yōu)化
基于對設(shè)計結(jié)果的分析,設(shè)計者可以對設(shè)計源文件、編譯屬性或設(shè)計約束進行修改,然 后重新綜合、實現(xiàn)以達到設(shè)計最優(yōu)化。
8、板級調(diào)試
在生成下載配置文件后,設(shè)計者便可以對 FPGA 器件進行調(diào)試。在此過程中,既可以實現(xiàn)下載配置文件的快速在線燒錄進行實時調(diào)試驗證,也可以實現(xiàn)產(chǎn)品固化燒錄使其可以離線 運行。
FPGA 開發(fā)流程是三個階段
[敏感詞]個階段是概念階段,或者也可以稱之為架構(gòu)階段,這個階段的任務(wù)是項目前期的立項準(zhǔn)備,如需求的定義和分析、各個設(shè)計模塊的劃分;
第二個階段是設(shè)計實現(xiàn)階段,這個階段包括編寫 RTL代碼、并對其進行初步的功能驗證、邏輯綜合和布局布線、時序驗證,這一階段是詳細(xì)設(shè)計階段;
第三個階段是 FPGA 器件實現(xiàn),除了器件燒錄和板級調(diào)試外,其實這個階段也應(yīng)該包括第二個階段的布局布線和時序驗證,因為這兩個步驟都是和FPGA 器件緊密相關(guān)的。
免責(zé)聲明:本文采摘自“大印藍海科技”公眾號,本文僅代表作者個人觀點,不代表薩科微及行業(yè)觀點,只為轉(zhuǎn)載與分享,支持保護知識產(chǎn)權(quán),轉(zhuǎn)載請注明原出處及作者,如有侵權(quán)請聯(lián)系我們刪除。
友情鏈接:站點地圖 薩科微官方微博 立創(chuàng)商城-薩科微專賣 金航標(biāo)官網(wǎng) 金航標(biāo)英文站
Copyright ?2015-2024 深圳薩科微半導(dǎo)體有限公司 版權(quán)所有 粵ICP備20017602號