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