什么是FPGA芯片?FPGA芯片的生產廠商?FPGA芯片在工業領域的應用?


什么是FPGA芯片
PGA中文全稱為現場可編程門陣列(FieldProgrammableGateArray),是邏輯芯片的一種。FPGA自問世以來,經過了幾個不同的發展階段,在工藝技術和應用需求等因素的驅動下,FPGA的特性和工具都發生了明顯變化,并在靈活性、性能、功耗、成本之間具有較好的平衡性?;谏鲜鎏攸c,FPGA芯片早期作為ASIC(專用集成電路)芯片的半定制化電路替代品應用于部分場景中,近年來,FPGA芯片在工業領域的應用范圍也不斷拓寬。集成電路芯片包括數字芯片和模擬芯片兩大類,數字芯片可以分為存儲器芯片和邏輯芯片,我們熟知的邏輯芯片一般包括CPU、GPU、DSP等通用處理器芯片,以及專用集成電路芯片ASIC。FPGA(現場可編程門陣列,FieldProgrammableGateArray)也是邏輯芯片的一種。
FPGA是在PAL(可編程邏輯陣列)、GAL(通用陣列邏輯)、CPLD(復雜可編程邏輯器件)等傳統邏輯電路和門陣列的基礎上進一步發展的產物。它利用計算機輔助設計,繪制出實現用戶要求的原理圖、編輯布爾方程或用硬件描述語言等方式作為設計輸入;然后經一系列轉換程序、自動布局布線、模擬仿真的過程;最后生成FPGA的數據文件,對FPGA器件初始化。這樣就實現了滿足用戶要求的專用集成電路,真正達到了用戶自行設計、自行研制和自行生產集成電路的目的。
FPGA與CPU、GPU、ASIC等芯片的核心區別是:其底層邏輯運算單元的連線和邏輯布局未固化。用戶可通過EDA軟件對邏輯單元和開關陣列編程,進行功能配置,從而去實現特定功能的集成電路芯片。而其他類別邏輯芯片,像ASIC、CPU和GPU等,物理底層邏輯單元的運算關系均已固定且不可變。簡單地說,如果CPU、GPU、ASIC等是像建好的樓房,樓房中房間、走廊及樓梯等格局是已經固定了;而FPGA的內部類似霍格沃茲中的魔法樓梯,可以隨時改變房間到房間的路線關系。
FPGA由可編程邏輯塊(CLB)、輸入/輸出模塊(IOB)、可編程互連資源(PIR)等三種可編程電路和用于存放編程數據的靜態存儲器SRAM組成。CLB是實現邏輯功能的基本單元,它們通常規則排列成一個陣列,散布于整個芯片中。IOB主要完成芯片上的邏輯與外部引腳的接口,通常排列在芯片的四周。PIR提供了豐富的連線資源,包括縱橫網狀連線、可編程開關矩陣和可編程連接點等,它們將各個CLB之間、CLB與IOB之間以及IOB之間連接起來,構成特定功能的電路。靜態存儲器SRAM用于存放內部IOB、CLB和PIR的編程數據,并形成對IOB、CLB及PIR的控制,從而完成系統邏輯功能。
由于FPGA需要被反復燒寫,它實現的組合邏輯基本結構無法通過固定的與非門來完成,而只能采用一種易于反復配置的結構。查找表(Look-Up-Table,簡稱為LUT)可以很好地滿足這一要求。
LUT實質上是一個RAM,當用戶描述了一個邏輯電路后,軟件會計算所有可能的結果,并寫入RAM。每一個信號進行邏輯運算,就等于輸入一個地址進行查表,找出地址對應的內容,輸出結果。這樣也大大加快了FPGA的運算速度。目前主流FPGA都采用了基于SRAM工藝的查找表結構,也有一些FPGA采用Flash或反熔絲工藝的查找表結構。
FPGA芯片的生產廠商
兩大巨頭: Xilinx 和 Altera。
一群小弟:紫光同創、京微雅格、高云半導體、上海安路、西安智多晶等,同國外領先廠商相比,國產 FPGA 廠商不論從產品性能、功耗、功能上都有較大差距。
ZYNQ
ZYNQ = FPGA + ARM 核,可以自己定制電路,還可以做普通的嵌入式開發。
PYNQ:Python Productivity for Zynq
PYNQ = Python + ZYNQ,是 Xilinx 推出的一種開放源代碼框架,使用 Python 語言和庫,使設計人員可以利用 zynq 中可編程邏輯和微處理器的優勢來快速構建高性能的嵌入式應用程序。
Xilinx A7 系列 FPGA 芯片
于是 FPGA 應運而生,于 1985 年由 Xilinx 創始人之一 Ross Freeman 發明,屬于可編程邏輯器件 PLD(Programmable Logic Device)的一種。
真正意義上的第一顆 FPGA 芯片 XC2064 為 Xilinx 所發明,這個時間差不多比著名的摩爾定律晚 20 年左右,但是 FPGA 一經問世,后續的發展速度之快,超出大多數人的想象。
我們要知道一塊專用的 ASIC 定制集成電路的芯片他在出廠前功能就已經定死了,就拿上面的數字時鐘來舉例,假如我現在拿到一塊全新的數字時鐘芯片,那么我只需要看看廠家給我提供的數據手冊,看看它是怎么操作的,可能僅僅只需要給它通上電然后簡單的配置一下它就能工作了。它的功能是不可更改的,就只能跑個數字時鐘,而且它內部電路是啥樣的我也不知道,雖然用起來簡單,但是缺乏靈活性,但 FPGA 就不一樣了,它在出廠的那一刻是不具備任何功能的,可以說就是一張白紙。你可以在這張白紙上肆意創作,你想要它實現數字時鐘的功能沒問題,通過特定的編輯語言,例如 Verilog、VHDL 等硬件描述語言將數字時鐘的邏輯編寫好,下載到 FPGA 內部,它就會生成一個數字時鐘的電路,去完成數字時鐘的功能。當你不想要這個功能了,沒問題你可以隨時將內部程序擦除,或者用一個新的設計去覆蓋原有的設計。理論上我們可以用 FPGA 去生成一個任意我們想要的功能,正是基于這種強大的可編輯能力,FPGA 近年來越來越受到市場的認可,在未來 FPGA 的適用范圍必將越來越廣闊。
FPGA芯片在工業領域的應用
當前,隨著AI、大數據、物聯網、無人駕駛等新興技術的發展,FPGA憑借靈活性、可重構性贏得了更多增量市場。由于FPGA芯片通過專用EDA軟件現場對硬件進行變成即可實現具體功能,這樣的高靈活性使得其下游應用領域豐富,包括汽車電子、工業控制、軍事、醫療、消費電子、人工智能等。這些領域增長明確,發展空間廣闊,是FPGA芯片需求增長核心源動力。
例如,FPGA通常被應用在汽車電子領域中的網關控制器、車用PC機、遠程信息處理系統;軍事領域中的安全通信、雷達、聲納;消費產品領域中的顯示器、投影儀、數字電視和機頂盒、家庭網絡;醫療領域中的大型醫療成像設備、臨床設備等方面。
在加速轉型的工業領域,企業對于數據處理能力的要求越來越高。此外,隨著制造業智能工廠的建設需求越來越盛,設備的高度靈活性和多功能性顯得尤為重要,新設備需要具有可重新編程的能力,以應對不斷變化的市場標準和多樣化性能需求。FPGA的可重復編程、并行計算能力強、靈活性強等特點能很好地滿足上述需求。特別是FPGA在電機控制、機器視覺、工業機器人等場景的應用成為了制造業構建智能工廠的新選擇。
當前,電機控制的發展越來越趨于多樣化、復雜化,FPGA芯片固有的可編程性和并行處理能力十分適合高端產品的電機控制,尤其是工業領域。FPGA以硬件方式進行并行處理,并不占用CPU資源,可以促使系統性能達到最大化。目前很多廠商會將一些優化算法整合到FPGA中,可以基于FPGA器件,通過一個平臺實現多個電機控制,極大程度的提高了能源的利用效率。例如,GEMBO公司與英特爾及貝加萊(B&R)三方合作,聯合開發了基于FPGA的端到端的電機控制和監控解決方案,實現電機的電流、轉速和溫度采集及電機進行實時控制。
在機器視覺方面,目前主流的工業相機解決方案,由于CPU的計算性能有限,對于計算復雜度很高的視覺算法,其處理速度難以滿足系統實時性的需求。隨著FPGA集成度越來越高,基于FPGA的嵌入式視覺系統成為機器視覺發展的重要方向。例如,英特爾?FPGA解決方案在單個FPGA上集成多種功能,如圖像采集、攝像頭接口、預處理和通信功能。隨著攝像頭傳感器不斷進行技術升級,智能互聯網協議攝像頭逐漸取代模擬攝像頭,基于人工智能和深度學習的視頻分析取得進展,FPGA出色的低延遲、確定性、靈活性都超出了基于視覺的系統所需的許多關鍵要求。
當前,工業機器人產業市場增長強勁。由于勞動力供應的短缺和成本的上升,提高流程效率和自動化程度更加迫切。因此,在制造業,能夠執行各種操作和運輸任務的多軸機器人的使用范圍正在迅速擴大。FPGA內部豐富的布線資源、嵌入式專用IP、基本可編程邏輯單元等使其可以同時處理不同種類的任務,實現更加靈活的同時,滿足一些高速接口的時序要求,這些都是工業機器人實現控制功能必備的條件。例如,工業機器人制造商安川電機為了獲得更高的性能和精度,選擇采用多款英特爾?FPGA,用于機器人控制和伺服控制。
可以看到,FPGA所提供的靈活性、優秀的并行計算性能可以幫助制造企業在實現數字化、智能化的條件下,極大程度地降低成本、功耗。據研究機構MarketResearchFuture(MRFR)統計,預計到2025年,全球FPGA在工業市場應用占比將從2019年的12%增長至19%,市場前景廣闊。
工業數字化轉型升級為FPGA的應用開辟了新的處女地,帶來了良好的發展契機。但在技術壁壘極高的FPGA領域,不論是芯片架構、關鍵IP、高速接口等芯片硬件設計,還是設計工具和生態系統建設,都需要在正確的發展路徑上不斷積累和加速,才能針對不同的應用場景、市場環境,靈活應對,突破重圍。
FPGA芯片有什么用
FPGA 所能應用的領域大概可以分成六大類:
1)通信領域
FPGA 在通信領域的應用可以說是無所不能,得益于 FPGA 內部結構的特點,它可以很容易地實現分布式的算法結構,這一點對于實現無線通信中的高速數字信號處理十分有利。因為在無線通信系統中,許多功能模塊通常都需要大量的濾波運算,而這些濾波函數往往需要大量的乘和累加操作。而通過 FPGA 來實現分布式的算術結構,就可以有效地實現這些乘和累加操作。尤其是 Xilinx 公司的 FPGA內部集成了大量的適合通信領域的一些資源比如:基帶處理(通道卡)、接口和連接功能以及 RF(射頻卡)三大類:
(1)基帶處理資源
基帶處理主要包括信道編解碼(LDPC、Turbo、卷積碼以及 RS 碼的編解碼算法)和同步算法的實現(WCDMA 系統小區搜索等)。
(2)接口和連接資源
接口和連接功能主要包括無線基站對外的高速通信接口(PCI Express、以太網 MAC、高速 AD/DA 接口)以及內部相應的背板協議(OBSAI、CPRI、EMIF、LinkPort)的實現。
(3)RF 應用資源
RF 應用主要包括調制/解調、上/下變頻(WiMAX、WCDMA、TD-SCDMA 以及 CDMA2000 系統的單通道、多通道 DDC/DUC)、削峰(PC-CFR)以及預失真(Predistortion)等關鍵技術的實現。
總而言之只要你 FPGA 學的好,在通信領域你絕對可以大展身手。
2)數字信號處理領域
在數字信號處理領域 FPGA 同樣所向披靡,主要是因為它的高速并行處理能力。FPGA 最大優勢是其并行處理機制,即利用并行架構實現數字信號處理的功能。這一并行機制使得 FPGA 特別適合于完成 FIR 等數字濾波這樣重復性的數字信號處理任務,對于高速并行的數字信號處理任務來說,FPGA 性能遠遠超過通用 DSP 處理器的串行執行架構,還有就是它接口的電壓和驅動能力都是可編程配置的不像傳統的 DSP 需要受指令集控制,因為指令集的時鐘周期的限制,不能處理太高速的信號,對于速率級為 Gbps 的 LVDS 之類信號就難以涉及。所以在數字信號處理領域 FPGA 的應用也是十分廣泛的。
3)視頻圖像處理領域
隨著時代的變換,人們對圖像的穩定性、清晰度、亮度和顏色的追求越來越高, 像以前的標清(SD)慢慢演變成高清(HD),到現在人們更是追求藍光品質的圖像。這使得處理芯片需要實時處理的數據量越來越大,并且圖像的壓縮算法也是越來越復雜,使得單純的使用 ASSP 或者 DSP 已經滿足不了如此大的數據處理量了。這時 FPGA 的優勢就凸顯出來了,它可以更加高效的處理數據,所以在圖像處理領域在綜合考慮成本后,FPGA 也越來越受到市場的歡迎。
4)高速接口設計領域
其實看了 FPGA 在通信領域和數字信號處理領域的表現,我想大家也已應該猜 到了在高速接口設計領域,FPGA 必然也是有一席之地的。它的高速處理能力和多達成百上千個的 IO 決定了它在高速接口設計領域的獨特優勢。比如說我需要和 PC 端做數據交互,將采集到的數據送給 PC 機處理,或者將處理后的結果傳給 PC 機進行顯示。PC 機與外部系統通信的接口比較豐富,如 ISA、PCI、PCI Express、PS/2、USB 等。傳統的做法是對應的接口使用對應的接口芯片,例如 PCI 接口芯片,當我需要很多接口時我就需要多個這樣的接口芯片,這無疑會使我們的硬件外設變得復雜,體積變得龐大,會很不方便,但是如果使用 FPGA 優勢立馬就出來了,因為不同的接口邏輯都可以在 FPGA 內部去實現,完全沒必要那么多的接口芯片,在配合 DDR 存儲器的使用,將使我們接口數據的處理變得更加得心應手。
5)人工智能領域
如果大家比較喜歡關注科技板塊的新聞的話最近一定會被 5G 通信和人工智能充斥 眼球,確實 21 世紀已經不知不覺走到了 2020 年,在這 20 年間,人工智能迅速發展,5G 的順利研發也使人工智能如虎添翼,可以預見,未來必將是人工智能的天下。FPGA 在人工智能系統的前端部分也是得到了廣泛的應用,例如自動駕駛,需要對行駛路線、紅綠燈、路障和行駛速度等各種交通信號進行采集,需要用到多種傳感器,對這些傳感器進行綜合驅動和融合處理就可以使用 FPGA。還有一些智能機器人,需要對圖像進行采集和處理,或者對聲音信號進行處理都可以使用 FPGA 去完成,所以 FPGA 在人工智能系統的前端信息處理上使用起來得心應手。
6)IC 驗證領域
IC 這個詞大家可能一聽到就覺得特別高深,不是凡人所能觸及到的,而 IC 設計更是一些神人才能勝任的工作。不可否認的是 IC 設計門檻確實比較高,但是我們也沒必要把它過于神話,其實簡單點來講我們可以拿 PCB 設計來與之比較,PCB 是拿一個個元器件在印制線路板上去搭建一個特定功能的電路組合,而 IC 設計呢是拿一個個 MOS 管,PN 節在硅基襯底上去搭建一個特定功能的電路組合,一個 宏觀一個微觀。PCB 如果設計廢了大不了重新設計再打樣也不會造成太大損失,但是如果 IC 設計廢了再重新設計那損失就很慘重了,俗話說大炮一開,黃金萬兩,那么在 IC 領域光刻機一開黃金萬兩也不是吹的,光刻膠貴的要命,光刻板開模也不便宜,加上其他多達幾百上千道工序,其中人力、物力、機器損耗、機器保養,絕對是讓人肉疼的損失,所以 IC 設計都要強調一版成功。保證 IC 一版成功就要進行充分的仿真測試和 FPGA 驗證,仿真驗證是在服務器上面跑仿真軟件進行測試,類似 ModelSim/VCS 軟件;FPGA 驗證主要是把 IC 的代碼移植到 FPGA 上面,使用 FPGA 綜合工具進行綜合、布局布線到最終生成 bit 文件,然后下載到 FPGA 驗證板上面進行驗證,對于復雜的 IC 我們還可以給他拆成幾個部分功能去分別驗證,每個功能模塊放在一個 FPGA 上面,FPGA 生成的電路非常接近真實的 IC 芯片。這樣極大的方便我們 IC 設計人員去驗證自己的 IC 設計。
FPGA的優勢
經過多年發展,FPGA在靈活性、性能、功耗、成本之間具有較好的平衡性。其優勢體現在以下幾個方面:
設計靈活:屬于硬件可重構的芯片結構,內部設置數量豐富的輸入輸出單元引腳及觸發器。
兼容性強:FPGA芯片可與CMOS、TTL等大規模集成電路兼容,協同完成計算任務。
并行計算:FPGA內部結構可按數據包步驟多少搭建相應數量流水線,不同流水線處理不同數據包,實現流水線并行、數據并行功能。
適用性強:是專用電路中開發周期最短、應用風險最低的器件之一。
相較于CPU,FPGA并行計算能力可提升運算速率并降低時延。CPU的本質是利用大規模存儲器在時間維度內復用處理單元,并在強大邏輯數據庫支持下實現更多應用邏輯,但同時也會失去處理單元的并行處理能力。
相較于GPU,FPGA在功耗和靈活性等方面具備優勢。一方面,由于GPU采用大量的處理單元并且大量訪問片外存儲SDRAM,其計算峰值更高,同時功耗也較高,FPGA的平均功耗(10W)遠低于GPU的平均功耗(200W),可有效改善散熱問題;另一方面,GPU在設計完成后無法改動硬件資源,而FPGA根據特定應用對硬件進行編程,更具靈活性。
相較于ASIC芯片,FPGA具備短周期、高性價比的優勢。ASIC需從標準單元進行設計,當芯片的功能及性能需求發生變化時或者工藝進步時,ASIC需重新投片,由此帶來較高的沉沒成本以及較長的開發周期;而FPGA包括預制門和觸發器,具有編程、除錯、再編程和重復操作等優點,可實現芯片功能重新配置。因此早期FPGA常作為定制化ASIC領域的半定制電路出現,被業內認為是構建原型和開發設計的較快推進的路徑之一。
FPGA芯片選擇策略和原則
由于FPGA具備設計靈活、可以重復編程的優點,因此在電子產品設計領域得到了越來越廣泛的應用。在工程項目或者產品設計中,選擇FPGA芯片可以參考以下的幾點策略和原則。
盡量選擇成熟的產品系列
FPGA芯片的工藝一直走在芯片設計領域的前列,產品更新換代速度非常快。穩定性和可靠性是產品設計需要考慮的關鍵因素。廠家最新推出的FPGA系列產品一般都沒有經過大批量應用的驗證。選擇這樣的芯片會增加設計的風險。
而且,最新推出的FPGA芯片因為產量比較小,一般供貨情況都不會很理想,價格也會偏高一些。如果成熟的產品能滿足設計指標要求,那么最好選這樣的芯片來完成設計。
例如,要用FPGA設計一塊數據采集卡。采用Altera公司的Cyclone、CyloneII和CycloneIII等3個系列的芯片都可以完成這個功能??紤]到Cyclone和CyloneII是成熟產品,同時CyloneII又是Cyclone的升級產品,因此選擇CyloneII是比較理想的方案。
盡量選擇兼容性好的封裝
FPGA系統設計一般采用硬件描述語言(HDL)來完成設計。這與基于CPU的軟件開發又有很大不同。特別是算法實現的時候,在設計之前,很難估算這個算法需要占多少FPGA的邏輯資源。
作為代碼設計者,希望算法實現之后再選擇FPGA的型號。但是,現在的設計流程一般都是軟件和硬件并行開始設計。也就是說,在HDL代碼設計之前,就開始硬件板卡的設計。這就要求硬件板卡具備一定的兼容性,可以兼容不同規模的FPGA芯片。
幸運的是,FPGA芯片廠家考慮到了這一點。目前,同系列的FPGA芯片一般可以做到相同物理封裝兼容不同規模的器件。例如,Xilinx的Spartan3系列FPGA,在BGA456封裝下,可以選擇3S200、2S400、3S1000、3S1500這4種型號的FPGA。
正是因為這一點,將來的產品就具備非常好的擴展性,可以不斷地增加新的功能或者提高性能,而不需要修改電路板的設計文件。
盡量選擇一個公司的產品
如果在整個電子系統中需要多個FPGA器件,那么盡量選擇一個公司的產品。這樣的好處不僅可以降低成本,而且降低開發難度。因為開發環境和工具是一致的,芯片接口電平和特性也一致,便于互聯互通。
很多第一次接觸FPGA的設計師在芯片選型的時候都有過這個疑問。其實這兩個最大的FPGA廠家位于美國的同一座城市,人員和技術交流都很頻繁,因此產品各有的優勢和特色,很難說清楚誰好誰壞。
在全球不同的地區,這兩家公司的FPGA芯片產品的市場表現會有所差別。在中國市場,兩家公司可以說是平分秋色,在高校里面Altera的客戶會略多一些。針對特定的應用,兩個廠家的產品目錄里面都可以找到適合的系列或者型號。
比如,針對低成本應用,Altera公司的Cyclone系列和Xilinx公司的Spartan3系列是對應的。針對高性能應用,Altera公司的Stratix系列和Xilinx公司的Virtex系列是對應的。所以,最終選擇那個公司的產品還是看開發者的使用習慣。
FPGA的發展歷程
自問世以來,FPGA經過了幾個不同的發展階段。賽靈思于1984年發明了世界首款FPGA,接下來的幾十年里,這種名為FPGA的器件,在容量和速度上都有大幅度提升,成本和能耗也大大降低。這些進步主要由工藝技術所驅動,而且人們很容易認為FPGA的發展只是隨著工藝的發展簡單地增大了容量。其實并沒有這么簡單,真正的FPGA發展之路要精彩得多。
發明時代:1984-1992年
首款FPGA,即賽靈思XC2064,只包含64個邏輯模塊,每個模塊含有兩個3輸入查找表和一個寄存器。盡管容量很小,XC2064晶片的尺寸卻非常大,比當時的微處理器還要大,因此,其成本高達數百美元。在成本壓力下,FPGA架構師尋求通過架構和工藝創新來盡可能提高FPGA設計效率。由于基于SRAM的FPGA面積比較大,而基于反熔絲的FPGA可以避免SRAM存儲系統片上占位面積過大問題。于是1990年出現的最大容量的FPGA是基于反熔絲的Actel1280。
擴展時代:1992-1999年
FPGA初創公司都是無晶圓廠的公司,難以獲得領先的芯片技術。因此FPGA開啟了擴展時代。90年代后期,基于SRAM的FPGA體現出明顯的產品優勢,因為基于SRAM的器件可立即使用密度更高的新工藝,而反熔絲則額外需要大量時間。IC代工廠意識到只要能用新工藝產出晶體管和電線,就能制造基于SRAM的FPGA,每一代新工藝的出現都會將晶體管數量增加一倍,使成本減半,并將FPGA的尺寸增大一倍。此時,更大的FPGA設計需要具有自動布局布線功能的綜合工具。到90年代末,自動綜合、布局和布線已經成為設計流程的必要步驟,FPGA公司對EDA工具依賴程度大大增加。
積累時代:2000-2007年
新千年伊始,FPGA已成為數字系統中的通用組件。容量和設計尺寸快速增加,使得FPGA在數據通信領域開辟了巨大市場。然而,單純提高容量不足以保證市場增長,FPGA廠商通過如下兩種方式解決了這一挑戰。針對低端市場,廠商更關注效率問題,并生產低容量、低性能的FPGA系列。針對高端市場,FPGA廠商開發了針對重要功能的軟邏輯(IP)庫,以獲取更高性能的FPGA。此外,FPGA的設計特點在2000年代發生了改變。FPGA用戶不再只是實現邏輯,他們需要使FPGA設計符合系統標準要求,這些標準主要是指信號和協議方面的通信標準,可用來連接外部組件或者實現內部模塊通信。積累時代末期,FPGA已發展為集成有可編程邏輯的復雜功能集,儼然變成了一個系統。
系統時代:2008年至今
為解決系統設計問題,FPGA越來越多地整合系統模塊:高速收發器、存儲器、DSP處理單元和完整處理器。同時還進一步集成了重要控制功能:比特流加密與驗證、混合信號處理、電源與溫度監控以及電源管理等。
近年來,FPGA的開發工具也在不斷發展。雖然FPGA可使用Verilog或VHDL等低層次硬件描述語言來編程,但系統FPGA需要高效的系統編程語言,目前已有多種高層次綜合(HLS)工具,采用以C/C++等更高層次的語言編寫算法,并將其轉換為Verilog或VHDL等低層次的硬件描述語言,以便對FPGA器件進行快速編程。
FPGA芯片設計及關鍵技術
本文來自“FPGA專題:萬能芯片點燃新動力,國產替代未來可期(2023)”,FPGA又稱現場可編程門陣列,是在硅片上預先設計實現的具有可編程特性的集成電路,用戶在使用過程中可以通過軟件重新配置芯片內部的資源實現不同功能。通俗意義上講,FPGA 芯片類似于集成電路中的積木,用戶可根據各自的需求和想法,將其拼搭成不同的功能、特性的電路結構,以滿足不同場景的應用需求。鑒于上述特性,FPGA 芯片又被稱作“萬能”芯片。
FPGA 芯片由可編程的邏輯單元(Logic Cell,LC)、輸入輸出單元(Input Output Block,IO)和開關連線陣列(Switch Box,SB)三個部分構成:
(1)邏輯單元:通過數據查找表(Look-up Table,LUT)中存放的二進制數據來實現不同的電路功能。LUT 的本質是一種靜態隨機存取存儲器(Static Random Access Memory,SRAM),其大小是由輸入端的信號數量決定的,常用的查找表電路是四輸入查找表(4-input LUT,LUT4)、五輸入查找表(5-input LUT,LUT5)和六輸入查找表(6-input LUT,LUT6)。查找表輸入端越多,可以實現的邏輯電路越復雜,因此邏輯容量越大,但是查找表的面積和輸入端數量成指數關系,輸入端數量增加一個,查找表使用的 SRAM 存儲電路面積增加約一倍。不同的邏輯單元結構可以使用不同大小的查找表,或者是不同查找表類型的組合。此外,邏輯單元內部還包含選擇器、進位鏈和觸發器等其他組件。為了提高芯片架構效率,若干邏輯單元可以進一步組成邏輯塊(Logic Block),邏輯塊內部提供快速局部資源,從而形成層次化芯片架構。
(2)輸入輸出單元:是芯片與外界電路的接口部分,用于實現不同條件下對輸入/輸出信號的驅動與匹配要求。
(3)開關陣列:能夠通過內部 MOS 管的開關控制信號連線的走向。
FPGA 從 Xilinx 公司 1985 年推出世界首款 FPGA 芯片“XC2064”經歷過數十年發展,在硬件架構上大致經歷了四個階段:從 PROM 階段(簡單的數字邏輯)到 PAL/GAL 階段(“與”&“或”陣列)再到 CPLD/FPGA 階段(超大規模電路),到如今 FPGA 與 ASIC 技術融合、向系統級發展的 SoC FPGA/eFPGA 階段。硬件水平整體趨向更大規模、更高靈活性、更優性能。
FPGA 芯片屬于邏輯芯片大類。邏輯芯片按功能可分為四大類芯片:通用處理器芯片(包含中央處理芯片 CPU、圖形處理芯片 GPU,數字信號處理芯片 DSP等)、存儲器芯片(Memory)、專用集成電路芯片(ASIC)和現場可編程邏輯陣列芯片(FPGA)。
FPGA 兼具靈活性和并行性兩大特點。
(1)靈活性:FPGA芯片擁有更高的靈活性和更豐富的選擇性,通過對 FPGA 編程,用戶可隨時改變芯片內部的連接結構,實現任何邏輯功能。尤其是在技術標準尚未成熟或發展更迭速度快的行業領域,FPGA 能有效幫助企業降低投資風險及沉沒成本,是一種兼具功能性和經濟效益的選擇。
(2)并行性:CPU、GPU 在執行任務時,執行單元需按順序通過取指、譯碼、執行、訪存以及寫回等一系列流程完成數據處理,且多方共享內存導致部分任務需經訪問仲裁,從而產生任務延時。而 FPGA 每個邏輯單元與周圍邏輯單元的連接構造在重編程(燒寫)時就已經確定,寄存器和片上內存屬于各自的控制邏輯,無需通過指令譯碼、共享內存來通信,各硬件邏輯可同時并行工作,大幅提升數據處理效率。尤其是在執行重復率較高的大數據量處理任務時,FPGA 相比 CPU 等優勢明顯。
相較于其他邏輯芯片而言,FPGA 在靈活性、性能、功耗、成本之間具有較好的平衡:
(1)相較于 GPU,FPGA 在功耗和靈活性等方面具備優勢。一方面,由于GPU 采用大量的處理單元并且大量訪問片外存儲 SDRAM,其計算峰值更高,同時功耗也較高,FPGA 的平均功耗(10W)遠低于 GPU 的平均功耗(200W),可有效改善散熱問題;另一方面,GPU 在設計完成后無法改動硬件資源,而 FPGA根據特定應用對硬件進行編程,更具靈活性。機器學習使用多條指令平行處理單一數據,FPGA 的定制化能力更能滿足精確度較低、分散、非常規深度神經網絡計算需求。
(2)相較于 ASIC 芯片,FPGA 在項目初期具備短周期、高性價比的優勢。ASIC 需從標準單元進行設計,當芯片的功能及性能需求發生變化時或者工藝進步時,ASIC 需重新投片,由此帶來較高的沉沒成本以及較長的開發周期;而 FPGA具有編程、除錯、再編程和重復操作等優點,可實現芯片功能重新配置,因此早期 FPGA 常作為定制化 ASIC 領域的半定制電路出現,被業內認為是構建原型和開發設計的較快推進的路徑之一。
FPGA邏輯結構中的內存大致分為三個層次(以Intel Agilex-M FPGA為例),包括超本地化片上內存、以 HBM2e 堆棧形式提供的本地封裝內存,以及 DDR5和 LPDDR5 等外部內存架構和接口。
片上內存(MLAB 模塊和 M20K 模塊):最本地化的內存;
封裝內存(HBM):彌合內存層次結構中關鍵缺口的內存,其容量遠大于片上內存(兩個數量級以上),同時帶寬又遠大于片外內存(兩個數量級以上);
片外內存(DDR5、LPDDR5 等):對于超出 HBM2e 容量的應用,或對獨立內存的靈活性有要求時,需要 DDR5 和 LPDDR5 以及其他主流的內存架構。
HBM2e 與 FPGA 裸片集成在同一封裝中可以在小尺寸外形規格中實現更高帶寬、更低功耗、更低時延。
(1)內存容量方面:每個 HBM2e 堆棧可包含 4 層或 8 層,每層提供 2GB 內存,因此單個 Intel Agilex-M 系列 FPGA 可包含 16GB或 32 GB 的高帶寬內存;
(2)帶寬方面:HBM2e 可實現每堆棧高達 410Gbps 的內存帶寬,較 DDR5 組件的帶寬提升高達 18 倍,較 GDDR6 組件提升 7 倍。兩個 HBM2e 堆棧加起來可提供高達 820Gbps 的峰值內存帶寬;
(3)功耗和時延方面:由于 HBM2e 集成在封裝中,因此也不需要使用外部 I/O 引腳,從而節省了電路板空間,并消除了它們會帶來的功耗和互連時延。
片上網絡(NoC,Network on Chip)是指在單芯片上集成大量的計算資源以及連接這些資源的片上通信網絡,用于在可編程邏輯(PL)、處理器系統(PS)和其它硬核塊中的 IP 端點之間共享數據。
與之對應的概念——片上系統(SoC)則是包含一整套多樣化和互連單元的單芯片,旨在解決一定范圍的任務。傳統上,SoC 包括幾個計算內核、內存控制器、I/O 子系統以及它們之間的連接與切換方式(總線、交叉開關、NoC 元件)。
片上網絡 NoC 包括計算和通信兩個子系統。計算子系統(由 PE,Processing Element 構成的子系統)完成廣義的“計算”任務,PE 既可以是現有意義上的CPU、SoC,也可以是各種專用功能的 IP 核或存儲器陣列、可重構硬件等。通信子系統(由 Switch 組成的子系統)負責連接 PE,實現計算資源之間的高速通信。通信節點及其間的互連線所構成的網絡即為片上通信網絡。
類比城市高速公路網絡,NoC 架構簡化互連路徑,提高 FPGA 傳輸速率。Achronix 基于臺積電(TSMC)的 7nm FinFET 工藝的 Speedster7t FPGA 器件包含了 2D NoC 架構,為 FPGA 外部高速接口和內部可編程邏輯的數據傳輸提供了超高帶寬(~27Tbps)。NoC 使用一系列高速的行和列網絡通路(水平和垂直方式)在整個 FPGA 內部分發數據,每一行或每一列都有兩個 256 位的、單向的、行業標準的 AXI 通道,可以在每個方向上以 512Gbps(256bit x 2GHz)的傳輸速率運行。
NoC 為 FPGA 設計提供了幾項重要優勢,包括:(1)提高設計的性能;(2)減少邏輯資源閑置,在高資源占用設計中降低布局布線擁塞的風險;(3)減小功耗;(4)簡化邏輯設計,由 NoC 去替代傳統的邏輯去做高速接口和總線管理;(5)實現真正的模塊化設計。
Intel(Altera)利用 NoC 架構實現內存和可編程邏輯結構之間的現高帶寬數據傳輸。如下圖所示,每個片上 HBM2e 堆棧通過 UIB 與其 NoC 通信。片外內存(DDR4、DDR5 等)則通過 IO96 子系統與 NoC 通信。NoC 通過一個由交換機(路由器)、互連鏈路(導線)、發起程序(I)和目標(T)組成的網絡,將數據從數據源傳輸到目的地。每個 NoC 都提供一個橫向網絡,通過 AXI4 發起程序將可編程邏輯結構中的邏輯連接到集成 NoC 的目標內存。此外,每個 NoC 也都提供一個縱向網絡,通過優化的路由將橫向網絡路徑讀取的內存數據分發到 FPGA的可編程邏輯結構深處(可編程邏輯結構和/或 M20K 模塊)。
AMD(Xilinx)在 AI 引擎和可編程邏輯之間部署 NoC 架構,可大幅降低功耗。AMD Versal 產品最突出的優勢之一,是能夠在自適應引擎中將 AI 引擎陣列與可編程邏輯(PL)結合使用,由 AI 引擎陣列接口連接 AI 引擎陣列和可編程邏輯。這樣的資源結合為在最佳資源、AI 引擎、自適應引擎或標量引擎中實現功能提供了極大的靈活性。該方案與傳統可編程邏輯 DSP 和 ML 實現方案相比,可將芯片面積計算密度提高達 8 倍,從而在額定值情況下,可將功耗降低 40%。
淺析FPGA芯片的散熱設計
任何芯片要工作,必須滿足一個溫度范圍,這個溫度是指硅片上的溫度,通常稱之為結溫(junction temperature)。
ALTERA的FPGA分為商用級(commercial)和工業級(induatrial)兩種,商用級的芯片可以正常工作的結溫范圍為0~85攝氏度,而工業級芯片的范圍是-40~100攝氏度。在實際電路中,我們必須保證芯片的結溫在其可以承受的范圍之內。
隨著芯片的功耗越來越大,在工作的時候就會產生越來越多的熱量。如果要維持芯片的結溫在正常的范圍以內,就需要采取一定的方法使得芯片產生的熱量迅速發散到環境中去。
學過中學物理的人都知道,熱量傳遞主要采用三種方法,即傳導、對流和輻射,芯片向外散熱同樣是采用這幾種方式。
下圖所示為一個芯片散熱的簡化模型。圖中芯片產生的熱量主要傳給芯片外封裝,如果沒有貼散熱片,就由芯片封裝外殼直接散布到環境中去;如果加了散熱片,熱量就會由芯片的外封裝通過散熱片膠傳到散熱片上,再由散熱片傳到環境中。一般來說,散熱片的表面積都做的相當大,與空氣的接觸面就大,這樣有利于傳熱。在平時的實踐中已經發現,絕大多數散熱片都是黑色的,由于黑色物體容易向外輻射熱量,這樣也有利于熱量向外散發。而且散熱片表面的風速越快,散熱越好。
簡化的芯片熱流模型
除此之外,有一小部分熱量經過芯片襯底傳導到芯片的焊錫球上,再經由PCB把熱量散步到環境中。由于這部分熱量所占的比例比較小,所以在下面討論芯片封裝和散熱片的熱阻時就忽略了這一部分。
首先需要理解“熱阻(thermal resistance)”的概念,熱阻是描述物體導熱的能力,熱阻越小,導熱性越好,反之越差,這一點有點類似電阻的概念。
從芯片的硅片到環境的熱阻,假設所有的熱量都最終由散熱片散布到環境中,這樣可以得到一個簡單的熱阻模型,如下圖:
帶散熱片的芯片散熱模型
從硅片到環境的總熱阻稱為JA,因此滿足:
JA=JC+CS+SA
JC是指芯片到外封裝的熱阻,一般由芯片供應商提供;CS是指芯片外封裝到散熱片的熱阻,如果散熱片采用導熱膠附著在芯片表面,這個熱阻就是指導熱膠的熱阻,一般由導熱膠供應商提供;SA是指散熱片到環境的熱阻,一般由散熱片廠家給出這個熱阻值,這個熱阻值是隨著風速的提高而降低的,廠家通常會給出不同風速情況下的熱阻值。
芯片的封裝本身就是作為一個散熱裝置。如果芯片沒有加散熱片,JA就是硅片經過外封裝,再到環境中的熱阻值,這個值顯然要大于有散熱片是的JA值。這個值取決于芯片本身封裝的特性,一般由芯片廠家提供。
下圖顯示為ALTERA的STRATIX IV器件的封裝熱阻。其中給出了各種風速下的芯片的JA值,這些值可以用來計算無散熱器時的情況。另外,其中的JC是用來計算帶散熱片時的總JA值。
Stratix iv器件封裝的熱阻
假設硅片消耗的功率是P,則:
TJ(結溫)=TA+P*JA
需要滿足TJ不能超過芯片允許的最大的結溫,再根據環境溫度和芯片實際消耗的功率,可以計算出對JA最大允許的要求。
JAMax=(TJMax - TA)/P TA(環境溫度)
如果芯片封裝本身的JA大于這個值,那么必須考慮給芯片加合適的散熱裝置,以降低芯片到環境的有效JA值,防止芯片過熱。
在實際的系統中,部分熱量也會從PCB散出,如果PCB層數多,面積較大,也是非常有利于散熱的。
解讀FPGA芯片SOPC發射端電路設計
本文設計基于FPGA 芯片EP3C16Q240C8N 的片上可編程系統,該系統可用于實現IFFT運算和接口模塊,利用可嵌入到此FPGA 芯片的NiosII 軟核處理器來實現數據傳輸和控制。功能電路中的ADI 的數字上變頻芯片AD9957 和可控增益芯片AD8369 用于實現DAB 基帶信號的上變頻和信號放大。這套DAB 發射機電路板尺寸為100cm*160cm,經過測試,能很好的完成發射,具有較高的可靠性。
DAB 發射機是數字音頻廣播重要組成部分。DAB 技術是歐洲尤里卡項目之一,目前已經非常成熟.DAB 采用先進的數字技術,正交分頻復用技術(OFDM),能以極低的數據傳輸率及失真下傳送CD 質量之立體聲節目,可解決傳統模擬廣播接收不良及干擾問題.DAB 發射系統包括信源編碼。信道編碼。 時間交織。頻率交織.OFDM 調制和射頻部分。射頻部分包括上變頻和增益放大,用來把基帶信號搬移到發射頻率上并將其放大。
FPGA 技術不斷進步,成本和功耗不斷下降的同時性能和容量在大幅上升,FPGA 也代替MCU 越來越多的嵌入到系統中去。為了便于系統集成,本文設計FPGA 系統嵌入到DAB 發射系統中,使得開發變得方便靈活,同時也降低了成本。
FPGA 的SOPC 系統構成
該系統硬件框圖如圖1所示。系統中FPGA采用ALTERA 公司的CycloneIII 系列芯片EP3C16Q240C8N.FPGA 中的NiosII 軟核處理器完成數據的控制和指令傳送,還可以在FPGA 上實現OFDM 調制。配置芯片選用EPCS16,片外擴展存儲器為IS42S16100-7T.框圖中,功能電路是用來實現DAB 發射功能的,它包括數字上變頻(其中已經包括A/D 和D/A 轉換)。信號放大.USB 傳輸等。
根據DAB 發射系統設計可以得出系統中各個單元所需的資源:邏輯單元。寄存器。引腳。內存。乘法器單元。鎖相環分別為8839.4719.104.202752bits.6和1.這款芯片為QPFP 封裝。
配置電路
FPGA 芯片按配置速度快慢依次為:
Active parallel(AP)模式.Fast passiveparallel(FPP)模式.Active serial(AS)模式.Passive serial(PS)模式。另外還有用于調試的Joint Test Action Group(JTAG)模式。本文FPGA 同時配置AS 模式和JTAG 模式。根據cycloneIII 的數據手冊,配置方案由MSEL 引腳決定。當使用AS 和JTAG 兩種方式時,MSEL[3:0]為“010”。如圖2所示為ATERA 給出的AS 和JTAG 配置電路。AS
AS 模式是指FPGA 的EPCS 控制器發出讀取數據的信號,從而把串行FLASH(EPCS系列芯片)的數據讀入FPGA 中,實現對FPGA 的編程。配置數據通過FPGA 的DATA0引腳送入,數據被同步在DCLK 輸入上,1個時鐘周期傳送1位數據。 本文中選取的配置芯片EPCS16SI8,有16Mbits 的存儲空間,可以支持DCLK 時鐘工作在20MHz 和40MHz.JTAG 接口是一個業界標準接口,主要用于芯片測試等功能.ALTERA 的FPGA 基本上都可以支持JTAG 命令來配置FPGA 的方式,而且JTAG 配置方式比其他任何方式優先級高.JTAG 模式是將配置數據存儲在SRAM,掉電后需重新下載。它與FPGA 的接口有4個必需的信號TDI,TDO,TMS 和TCK 以及1個可選信號TRST 構成。
責任編輯:David
【免責聲明】
1、本文內容、數據、圖表等來源于網絡引用或其他公開資料,版權歸屬原作者、原發表出處。若版權所有方對本文的引用持有異議,請聯系拍明芯城(marketing@iczoom.com),本方將及時處理。
2、本文的引用僅供讀者交流學習使用,不涉及商業目的。
3、本文內容僅代表作者觀點,拍明芯城不對內容的準確性、可靠性或完整性提供明示或暗示的保證。讀者閱讀本文后做出的決定或行為,是基于自主意愿和獨立判斷做出的,請讀者明確相關結果。
4、如需轉載本方擁有版權的文章,請聯系拍明芯城(marketing@iczoom.com)注明“轉載原因”。未經允許私自轉載拍明芯城將保留追究其法律責任的權利。
拍明芯城擁有對此聲明的最終解釋權。