引言:本文將首先介紹FPGA的基礎(chǔ)知識,包括FPGA的工作原理以及為什么要使用FPGA等,然后討論設(shè)計和執(zhí)行FPGA應用所需的工具。
1. 概述
現(xiàn)場可編程門陣列(FPGA)器件,其物理屬性可通過使用硬件描述語言 (HDL)來操控,該器件可在軟硬件編程之間架起一座橋梁,使軟硬件工程之間的界限變的更加模糊。
圖1:Altera Agilex 9、7、5 和 3 FPGA 家族
通常人們認為,F(xiàn)PGA是只能由硬件工程師編程的器件。幸運的是,今時不同往日,現(xiàn)代統(tǒng)一軟件平臺插入通用開發(fā)工具,可簡化FPGA的編程過程,軟件開發(fā)人員也可了解如何編程FPGA。
2. 什么是FPGA 以及為什么使用 FPGA?
FPGA是一種集成電路(IC),具有可配置邏輯塊(CLB)以及其它用戶可編程并可重新編程的特性。術(shù)語“現(xiàn)場可編程”表示FPGA的功能是可調(diào)節(jié)的,與其它由制造商硬連接的IC不一樣。
FPGA是屬于可編程邏輯器件(PLD)范疇的集成電路(IC)。FPGA技術(shù)的基本功能建立在自適應硬件之上,具有制造后可修改的獨特功能。硬件塊陣列(每塊都可配置)可根據(jù)需要進行連接,允許為所有應用構(gòu)建特定域的高效架構(gòu)。
圖2:GPU VS FPGA典型特點對比
這種硬件靈活應變性是CPU和GPU所不具備的獨特差異化特性。雖然CPU 靈活性很高,但其底層硬件是固定的。CPU一旦出廠,硬件就無法修改。它依靠軟件來告訴它要針對內(nèi)存中的哪個數(shù)據(jù)執(zhí)行哪項具體運算(算術(shù)函數(shù))。硬件必須能夠執(zhí)行所有可能的運算,稱之為使用軟件指令,通常一次只能執(zhí)行一條指令。相比之下,F(xiàn)PGA可并行處理海量數(shù)據(jù)。與CPU相比,自適應硬件的優(yōu)勢因應用而異,很大程度上取決于計算的性質(zhì)及其并行化的能力,但與功能可高度并行化的CPU實現(xiàn)方案相比,性能提高20倍的情況并不少見。
圖3:CPU VS GPU典型特點對比
GPU不僅可彌補CPU的一個主要不足之處:并行處理大量數(shù)據(jù)的能力,而且運行的數(shù)據(jù)集還很寬。從根本上講,GPU和CPU類似,因為它們有固定的硬件,而且使用軟件指令運行。一條指令可處理1000個以上的數(shù)據(jù),因此它們適用于圖形加速、高性能計算、視頻處理以及某些形式的機器學習等特定域。但從根本上講,GPU的基本架構(gòu)和數(shù)據(jù)流在制造之前是固定的。
FPGA可幫助編程人員和設(shè)計人員更靈活地適應和更新計算架構(gòu),從而帶來更能滿足其需求的特定域架構(gòu)。FPGA并不是什么新事物,但因人工智能等領(lǐng)域的創(chuàng)新速度,其重要性日益凸顯。第一款商用FPGA是AMD于1985年發(fā)明的,在目前的FPGA市場上占據(jù)60%至70%的份額。
3. FPGA 的用途與應用
今天,數(shù)據(jù)中心、航空航天工程、國防、人工智能(AI)、工業(yè)物聯(lián)網(wǎng) (IoT)、有線及無線網(wǎng)絡(luò)以及汽車等眾多行業(yè)無處不見其身影。這類器件通常處于用戶需要實時信息的環(huán)境中。例如,一款家庭安防攝像頭需要將即時圖像以高分辨率和最小的時延傳給房主的智能設(shè)備。隨著消費者對通過手機收發(fā)即時信息的依賴程度越來越高,這些期望值只會增加。
此外,F(xiàn)PGA也有助于完成本來可以在軟件中完成的功能加速。這使得 FPGA成了一種非常有幫助的工具,可卸載需要高性能的任務(wù),比如人工智能的深度神經(jīng)網(wǎng)絡(luò) (DNN) 推斷。
4. FPGA 和硬件加速
FPGA 的架構(gòu)使其成了硬件加速的高效解決方案。ASIC和GPU等器件使用一種過時的方法在編程和內(nèi)存之間切換。而且它們也不能適應需要實時信息的應用,因為存儲和檢索任務(wù)所需的高功率會導致性能滯后。
圖3:Xilinx KCU1500 萬兆網(wǎng)絡(luò)硬件加速卡
與 ASIC和GPU 不同, FPGA不需要在內(nèi)存和編程之間切換,這使得存儲和檢索數(shù)據(jù)的過程更高效。FPGA架構(gòu)靈活性更高,因此您可以自定義您希望 FPGA 用于特定任務(wù)的電源。
圖4:支持PCIe Gen4 ×16的VectorPath加速卡
這種靈活性有助于將能耗極高的任務(wù)從傳統(tǒng)CPU或其它器件轉(zhuǎn)移到一個或幾個FPGA上。許多FPGA都可以重新編程,因此您可以對硬件加速系統(tǒng)輕松進行升級和調(diào)整。
5. FPGA編程是怎樣進行的?
FPGA編程可根據(jù)您希望器件具備的功能,使用HDL來操控電路。該過程不同于對GPU或CPU的編程,因為您編寫的程序?qū)⒉粫错樞蜻\行。相反,您可使用HDL來創(chuàng)建電路,并根據(jù)您想要的功能對硬件進行物理修改。
圖5:HDL綜合成門電路
這個過程類似于軟件編程,其中您編寫的代碼將轉(zhuǎn)換成二進制文件并加載在FPGA上。但結(jié)果是HDL對硬件進行了物理修改,而不是通過嚴格優(yōu)化器件來運行軟件。
FPGA上的一個程序?qū)⑦壿嬮T和內(nèi)存塊等較低層次的元件組裝在一起,其可協(xié)同工作,共同完成一項任務(wù)。因為您是從頭開始操控硬件的,因此FPGA將帶來很高的靈活性。您可以根據(jù)任務(wù)調(diào)整內(nèi)存或功耗等基本功能。
6. FPGA編程語言
FPGA似乎主要服務(wù)于芯片設(shè)計人員,而不是專門從事軟件開發(fā)的工程師。畢竟,大多數(shù)用于編寫FPGA代碼的HDL都是較低級的語言,硬件工程師可能比軟件工程師更熟悉這些語言。但有些HDL與通用軟件語言的類似程度遠比您想象的高。
當我們將“編程”一詞用于FPGA時,因為程序的設(shè)置方式和執(zhí)行方式的緣故,它與創(chuàng)建軟件并不完全相同。但使用該術(shù)語確實包含了編寫并執(zhí)行FPGA代碼與創(chuàng)建軟件算法的過程相似的理念。最初的思維方式是,F(xiàn)PGA只能由電路設(shè)計硬件工程師來編程。
在統(tǒng)一軟件平臺的幫助下,軟件開發(fā)人員無需掌握HDL技術(shù),便可使用他們喜歡的語言來對FPGA進行編程。這不僅可消除必須轉(zhuǎn)而采用全新編程語言的壓力,而且還可幫助軟件開發(fā)人員將工作重心從硬件轉(zhuǎn)向概念。這些平臺的工作原理本質(zhì)上是將較高級的語言翻譯成較低級的語言,以便FPGA執(zhí)行所需的功能。能夠與統(tǒng)一軟件平臺一起用于FPGA編程的語言包括:
TensorFlow 和 Pytorch 等 AI 框架:有了Vitis AI, AI 科學家現(xiàn)在可直接從 TensorFlow 或 Pytorch 獲取其訓練有素的深度學習模型,并針對FPGA 加速進行編譯。這不僅無需對低層次硬件進行編程,而且還可在幾分鐘內(nèi)實現(xiàn)瞬間編譯,從而能夠與使用CPU和GPU的典型軟件編譯體驗相媲美。
C 和 C++:在高層次綜合(HLS)的幫助下,基于C語言的語言現(xiàn)在可用于 FPGA 設(shè)計。具體來說,AMD Vivado HLS編譯器提供的編程環(huán)境能夠與標準處理器及專用處理器共享關(guān)鍵技術(shù),用于優(yōu)化C語言程序和C++程序。這允許軟件工程師優(yōu)化代碼,無需掃清有限內(nèi)存空間或計算資源的路障。
Python:設(shè)計人員可使用Python語言和庫來創(chuàng)建高性能應用并通過PYNQ編程FPGA。PYNQ是AMD的一個開源項目,可簡化AMD平臺的使用。此外,現(xiàn)在主要用于FPGA編程的,也有大量主流HDL。下面簡單介紹一下其名稱和主要屬性:
Lucid:這種語言是專門針對FPGA設(shè)計的,可彌補Verilog等一些更早語言的不足。
VHDL:超高速集成電路 (VHSIC)硬件描述語言的首字母縮寫,該語言最早出現(xiàn)在20世紀80年代,主要基于Ada和Pascal。
Verilog:Verilog是有史以來創(chuàng)建的第一款HDL,今天主要用于測試分析與驗證。該語言的內(nèi)核基于C語言。
7. 如何編程FPGA
雖然FPGA只存在于硬件工程師領(lǐng)域,但AI科學家和軟件編程人員現(xiàn)在可以訪問新平臺,讓該過程感覺就像編寫軟件程序一樣。有了正確的工具,您將找到一個為FPGA編程的解決方案,在當前的軟硬件知識層面滿足您的需求。
如果您習慣了針對GPU進行編程,即使結(jié)果有點不同,編寫FPGA代碼的過程也會感覺非常相似。FPGA編程包括編寫代碼、根據(jù)需要將該程序翻譯成較低級的語言,以及將該程序轉(zhuǎn)換為二進制文件。然后,您將向FPGA提供程序,操作就像讓GPU讀取一款用C++編寫的軟件一樣。就是這么簡單。
但為了優(yōu)化該編程過程,您需要訪問正確的平臺。幸運的是AMD擁有完美的解決方案,這是一套開創(chuàng)性的工具,可在FPGA編程過程的每個環(huán)節(jié)為軟件開發(fā)人員提供幫助。
8. 使用 Vitis 統(tǒng)一軟件平臺簡化 FPGA 編程
Vitis統(tǒng)一軟件平臺是一款領(lǐng)先應用,可為軟件工程師、數(shù)據(jù)科學家以及 AI開發(fā)人員優(yōu)化FPGA編程過程。它包括一個針對AMD FPGA和ACAP硬件平臺優(yōu)化的擴展性開源庫,以及一個內(nèi)核開發(fā)套件,有了該套件,沒有豐富的硬件經(jīng)驗,也可無縫構(gòu)建加速應用。
此外,Vitis還包括Vitis Model Composer,其在MATLAB和 Simulink中提供了一個工具套件。它可優(yōu)化設(shè)計并測試新應用的過程。
9. 如何使用 Vitis 軟件針對應用加速啟動設(shè)計
Vitis分四個步驟幫助您針對邊緣、本地或云端的數(shù)據(jù)及計算密集型應用設(shè)計加速器:
(1)確定應用中需要加速的性能關(guān)鍵部分。
(2)使用Vitis加速庫設(shè)計加速器,也可使用C、C++、OpenCL或RTL開發(fā)自己的加速器。
(3)構(gòu)建、分析和調(diào)試,以驗證功能正確性并確保符合性能目標。
(4)在邊緣、本地或云端的AMD平臺上部署加速應用。
-
FPGA
+關(guān)注
關(guān)注
1645文章
22015瀏覽量
616842 -
HDL
+關(guān)注
關(guān)注
8文章
330瀏覽量
47943 -
現(xiàn)場可編程門陣列
+關(guān)注
關(guān)注
1文章
20瀏覽量
4860
原文標題:FPGA編程:原理概述
文章出處:【微信號:Hack電子,微信公眾號:Hack電子】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
FPGA基礎(chǔ)知識:什么是FPGA,為何需要FPGA?
FPGA基礎(chǔ)知識簡介
新手的FPGA學習必備的四個基礎(chǔ)知識詳解
FPGA教程之CPLD與FPGA的基礎(chǔ)知識說明

FPGA基礎(chǔ)知識培訓教程免費下載

FPGA硬件基礎(chǔ)知識FPGA的邏輯單元工程文件免費下載
FPGA基礎(chǔ)知識----FPGA 簡介

評論