0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

FPGA基礎(chǔ)知識(shí)及設(shè)計(jì)和執(zhí)行FPGA應(yīng)用所需的工具

Hack電子 ? 來(lái)源:Hack電子 ? 2024-11-11 11:29 ? 次閱讀

引言:本文將首先介紹FPGA的基礎(chǔ)知識(shí),包括FPGA的工作原理以及為什么要使用FPGA等,然后討論設(shè)計(jì)和執(zhí)行FPGA應(yīng)用所需的工具。

1. 概述

現(xiàn)場(chǎng)可編程門陣列(FPGA)器件,其物理屬性可通過(guò)使用硬件描述語(yǔ)言 (HDL)來(lái)操控,該器件可在軟硬件編程之間架起一座橋梁,使軟硬件工程之間的界限變的更加模糊。

2efe0f30-9053-11ef-a511-92fbcf53809c.png

圖1:Altera Agilex 9、7、5 和 3 FPGA 家族

通常人們認(rèn)為,F(xiàn)PGA是只能由硬件工程師編程的器件。幸運(yùn)的是,今時(shí)不同往日,現(xiàn)代統(tǒng)一軟件平臺(tái)插入通用開(kāi)發(fā)工具,可簡(jiǎn)化FPGA的編程過(guò)程,軟件開(kāi)發(fā)人員也可了解如何編程FPGA。

2. 什么是FPGA 以及為什么使用 FPGA?

FPGA是一種集成電路(IC),具有可配置邏輯塊(CLB)以及其它用戶可編程并可重新編程的特性。術(shù)語(yǔ)“現(xiàn)場(chǎng)可編程”表示FPGA的功能是可調(diào)節(jié)的,與其它由制造商硬連接的IC不一樣。

FPGA是屬于可編程邏輯器件(PLD)范疇的集成電路(IC)。FPGA技術(shù)的基本功能建立在自適應(yīng)硬件之上,具有制造后可修改的獨(dú)特功能。硬件塊陣列(每塊都可配置)可根據(jù)需要進(jìn)行連接,允許為所有應(yīng)用構(gòu)建特定域的高效架構(gòu)。

2f24dfde-9053-11ef-a511-92fbcf53809c.png

圖2:GPU VS FPGA典型特點(diǎn)對(duì)比

這種硬件靈活應(yīng)變性是CPU和GPU所不具備的獨(dú)特差異化特性。雖然CPU 靈活性很高,但其底層硬件是固定的。CPU一旦出廠,硬件就無(wú)法修改。它依靠軟件來(lái)告訴它要針對(duì)內(nèi)存中的哪個(gè)數(shù)據(jù)執(zhí)行哪項(xiàng)具體運(yùn)算(算術(shù)函數(shù))。硬件必須能夠執(zhí)行所有可能的運(yùn)算,稱之為使用軟件指令,通常一次只能執(zhí)行一條指令。相比之下,F(xiàn)PGA可并行處理海量數(shù)據(jù)。與CPU相比,自適應(yīng)硬件的優(yōu)勢(shì)因應(yīng)用而異,很大程度上取決于計(jì)算的性質(zhì)及其并行化的能力,但與功能可高度并行化的CPU實(shí)現(xiàn)方案相比,性能提高20倍的情況并不少見(jiàn)。

2f48f82e-9053-11ef-a511-92fbcf53809c.jpg

圖3:CPU VS GPU典型特點(diǎn)對(duì)比

GPU不僅可彌補(bǔ)CPU的一個(gè)主要不足之處:并行處理大量數(shù)據(jù)的能力,而且運(yùn)行的數(shù)據(jù)集還很寬。從根本上講,GPU和CPU類似,因?yàn)樗鼈冇泄潭ǖ挠布?,而且使用軟件指令運(yùn)行。一條指令可處理1000個(gè)以上的數(shù)據(jù),因此它們適用于圖形加速、高性能計(jì)算、視頻處理以及某些形式的機(jī)器學(xué)習(xí)等特定域。但從根本上講,GPU的基本架構(gòu)和數(shù)據(jù)流在制造之前是固定的。

FPGA可幫助編程人員和設(shè)計(jì)人員更靈活地適應(yīng)和更新計(jì)算架構(gòu),從而帶來(lái)更能滿足其需求的特定域架構(gòu)。FPGA并不是什么新事物,但因人工智能等領(lǐng)域的創(chuàng)新速度,其重要性日益凸顯。第一款商用FPGA是AMD于1985年發(fā)明的,在目前的FPGA市場(chǎng)上占據(jù)60%至70%的份額。

3. FPGA 的用途與應(yīng)用

今天,數(shù)據(jù)中心、航空航天工程、國(guó)防、人工智能(AI)、工業(yè)物聯(lián)網(wǎng) (IoT)、有線及無(wú)線網(wǎng)絡(luò)以及汽車等眾多行業(yè)無(wú)處不見(jiàn)其身影。這類器件通常處于用戶需要實(shí)時(shí)信息的環(huán)境中。例如,一款家庭安防攝像頭需要將即時(shí)圖像以高分辨率和最小的時(shí)延傳給房主的智能設(shè)備。隨著消費(fèi)者對(duì)通過(guò)手機(jī)收發(fā)即時(shí)信息的依賴程度越來(lái)越高,這些期望值只會(huì)增加。

此外,F(xiàn)PGA也有助于完成本來(lái)可以在軟件中完成的功能加速。這使得 FPGA成了一種非常有幫助的工具,可卸載需要高性能的任務(wù),比如人工智能的深度神經(jīng)網(wǎng)絡(luò) (DNN) 推斷。

4. FPGA 和硬件加速

FPGA 的架構(gòu)使其成了硬件加速的高效解決方案。ASIC和GPU等器件使用一種過(guò)時(shí)的方法在編程和內(nèi)存之間切換。而且它們也不能適應(yīng)需要實(shí)時(shí)信息的應(yīng)用,因?yàn)榇鎯?chǔ)和檢索任務(wù)所需的高功率會(huì)導(dǎo)致性能滯后。

2facd6f0-9053-11ef-a511-92fbcf53809c.png

圖3:Xilinx KCU1500 萬(wàn)兆網(wǎng)絡(luò)硬件加速卡

與 ASIC和GPU 不同, FPGA不需要在內(nèi)存和編程之間切換,這使得存儲(chǔ)和檢索數(shù)據(jù)的過(guò)程更高效。FPGA架構(gòu)靈活性更高,因此您可以自定義您希望 FPGA 用于特定任務(wù)的電源。

2fdd1a0e-9053-11ef-a511-92fbcf53809c.png

圖4:支持PCIe Gen4 ×16的VectorPath加速卡

這種靈活性有助于將能耗極高的任務(wù)從傳統(tǒng)CPU或其它器件轉(zhuǎn)移到一個(gè)或幾個(gè)FPGA上。許多FPGA都可以重新編程,因此您可以對(duì)硬件加速系統(tǒng)輕松進(jìn)行升級(jí)和調(diào)整。

5. FPGA編程是怎樣進(jìn)行的?

FPGA編程可根據(jù)您希望器件具備的功能,使用HDL來(lái)操控電路。該過(guò)程不同于對(duì)GPU或CPU的編程,因?yàn)槟帉懙某绦驅(qū)⒉粫?huì)按順序運(yùn)行。相反,您可使用HDL來(lái)創(chuàng)建電路,并根據(jù)您想要的功能對(duì)硬件進(jìn)行物理修改。

300988c8-9053-11ef-a511-92fbcf53809c.jpg

圖5:HDL綜合成門電路

這個(gè)過(guò)程類似于軟件編程,其中您編寫的代碼將轉(zhuǎn)換成二進(jìn)制文件并加載在FPGA上。但結(jié)果是HDL對(duì)硬件進(jìn)行了物理修改,而不是通過(guò)嚴(yán)格優(yōu)化器件來(lái)運(yùn)行軟件。

FPGA上的一個(gè)程序?qū)⑦壿嬮T和內(nèi)存塊等較低層次的元件組裝在一起,其可協(xié)同工作,共同完成一項(xiàng)任務(wù)。因?yàn)槟菑念^開(kāi)始操控硬件的,因此FPGA將帶來(lái)很高的靈活性。您可以根據(jù)任務(wù)調(diào)整內(nèi)存或功耗等基本功能。

6. FPGA編程語(yǔ)言

FPGA似乎主要服務(wù)于芯片設(shè)計(jì)人員,而不是專門從事軟件開(kāi)發(fā)的工程師。畢竟,大多數(shù)用于編寫FPGA代碼的HDL都是較低級(jí)的語(yǔ)言,硬件工程師可能比軟件工程師更熟悉這些語(yǔ)言。但有些HDL與通用軟件語(yǔ)言的類似程度遠(yuǎn)比您想象的高。

3029b2d8-9053-11ef-a511-92fbcf53809c.png

當(dāng)我們將“編程”一詞用于FPGA時(shí),因?yàn)槌绦虻脑O(shè)置方式和執(zhí)行方式的緣故,它與創(chuàng)建軟件并不完全相同。但使用該術(shù)語(yǔ)確實(shí)包含了編寫并執(zhí)行FPGA代碼與創(chuàng)建軟件算法的過(guò)程相似的理念。最初的思維方式是,F(xiàn)PGA只能由電路設(shè)計(jì)硬件工程師來(lái)編程。

在統(tǒng)一軟件平臺(tái)的幫助下,軟件開(kāi)發(fā)人員無(wú)需掌握HDL技術(shù),便可使用他們喜歡的語(yǔ)言來(lái)對(duì)FPGA進(jìn)行編程。這不僅可消除必須轉(zhuǎn)而采用全新編程語(yǔ)言的壓力,而且還可幫助軟件開(kāi)發(fā)人員將工作重心從硬件轉(zhuǎn)向概念。這些平臺(tái)的工作原理本質(zhì)上是將較高級(jí)的語(yǔ)言翻譯成較低級(jí)的語(yǔ)言,以便FPGA執(zhí)行所需的功能。能夠與統(tǒng)一軟件平臺(tái)一起用于FPGA編程的語(yǔ)言包括:

TensorFlow 和 Pytorch 等 AI 框架:有了Vitis AI, AI 科學(xué)家現(xiàn)在可直接從 TensorFlow 或 Pytorch 獲取其訓(xùn)練有素的深度學(xué)習(xí)模型,并針對(duì)FPGA 加速進(jìn)行編譯。這不僅無(wú)需對(duì)低層次硬件進(jìn)行編程,而且還可在幾分鐘內(nèi)實(shí)現(xiàn)瞬間編譯,從而能夠與使用CPU和GPU的典型軟件編譯體驗(yàn)相媲美。

C 和 C++:在高層次綜合(HLS)的幫助下,基于C語(yǔ)言的語(yǔ)言現(xiàn)在可用于 FPGA 設(shè)計(jì)。具體來(lái)說(shuō),AMD Vivado HLS編譯器提供的編程環(huán)境能夠與標(biāo)準(zhǔn)處理器及專用處理器共享關(guān)鍵技術(shù),用于優(yōu)化C語(yǔ)言程序和C++程序。這允許軟件工程師優(yōu)化代碼,無(wú)需掃清有限內(nèi)存空間或計(jì)算資源的路障。

Python:設(shè)計(jì)人員可使用Python語(yǔ)言和庫(kù)來(lái)創(chuàng)建高性能應(yīng)用并通過(guò)PYNQ編程FPGA。PYNQ是AMD的一個(gè)開(kāi)源項(xiàng)目,可簡(jiǎn)化AMD平臺(tái)的使用。此外,現(xiàn)在主要用于FPGA編程的,也有大量主流HDL。下面簡(jiǎn)單介紹一下其名稱和主要屬性:

Lucid:這種語(yǔ)言是專門針對(duì)FPGA設(shè)計(jì)的,可彌補(bǔ)Verilog等一些更早語(yǔ)言的不足。

VHDL:超高速集成電路 (VHSIC)硬件描述語(yǔ)言的首字母縮寫,該語(yǔ)言最早出現(xiàn)在20世紀(jì)80年代,主要基于Ada和Pascal。

Verilog:Verilog是有史以來(lái)創(chuàng)建的第一款HDL,今天主要用于測(cè)試分析與驗(yàn)證。該語(yǔ)言的內(nèi)核基于C語(yǔ)言。

7. 如何編程FPGA

雖然FPGA只存在于硬件工程師領(lǐng)域,但AI科學(xué)家和軟件編程人員現(xiàn)在可以訪問(wèn)新平臺(tái),讓該過(guò)程感覺(jué)就像編寫軟件程序一樣。有了正確的工具,您將找到一個(gè)為FPGA編程的解決方案,在當(dāng)前的軟硬件知識(shí)層面滿足您的需求。

如果您習(xí)慣了針對(duì)GPU進(jìn)行編程,即使結(jié)果有點(diǎn)不同,編寫FPGA代碼的過(guò)程也會(huì)感覺(jué)非常相似。FPGA編程包括編寫代碼、根據(jù)需要將該程序翻譯成較低級(jí)的語(yǔ)言,以及將該程序轉(zhuǎn)換為二進(jìn)制文件。然后,您將向FPGA提供程序,操作就像讓GPU讀取一款用C++編寫的軟件一樣。就是這么簡(jiǎn)單。

但為了優(yōu)化該編程過(guò)程,您需要訪問(wèn)正確的平臺(tái)。幸運(yùn)的是AMD擁有完美的解決方案,這是一套開(kāi)創(chuàng)性的工具,可在FPGA編程過(guò)程的每個(gè)環(huán)節(jié)為軟件開(kāi)發(fā)人員提供幫助。

8. 使用 Vitis 統(tǒng)一軟件平臺(tái)簡(jiǎn)化 FPGA 編程

Vitis統(tǒng)一軟件平臺(tái)是一款領(lǐng)先應(yīng)用,可為軟件工程師、數(shù)據(jù)科學(xué)家以及 AI開(kāi)發(fā)人員優(yōu)化FPGA編程過(guò)程。它包括一個(gè)針對(duì)AMD FPGA和ACAP硬件平臺(tái)優(yōu)化的擴(kuò)展性開(kāi)源庫(kù),以及一個(gè)內(nèi)核開(kāi)發(fā)套件,有了該套件,沒(méi)有豐富的硬件經(jīng)驗(yàn),也可無(wú)縫構(gòu)建加速應(yīng)用。

此外,Vitis還包括Vitis Model Composer,其在MATLABSimulink中提供了一個(gè)工具套件。它可優(yōu)化設(shè)計(jì)并測(cè)試新應(yīng)用的過(guò)程。

9. 如何使用 Vitis 軟件針對(duì)應(yīng)用加速啟動(dòng)設(shè)計(jì)

Vitis分四個(gè)步驟幫助您針對(duì)邊緣、本地或云端的數(shù)據(jù)及計(jì)算密集型應(yīng)用設(shè)計(jì)加速器:

(1)確定應(yīng)用中需要加速的性能關(guān)鍵部分。

(2)使用Vitis加速庫(kù)設(shè)計(jì)加速器,也可使用C、C++、OpenCL或RTL開(kāi)發(fā)自己的加速器。

(3)構(gòu)建、分析和調(diào)試,以驗(yàn)證功能正確性并確保符合性能目標(biāo)。

(4)在邊緣、本地或云端的AMD平臺(tái)上部署加速應(yīng)用。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1625

    文章

    21637

    瀏覽量

    601316
  • HDL
    HDL
    +關(guān)注

    關(guān)注

    8

    文章

    327

    瀏覽量

    47310
  • 現(xiàn)場(chǎng)可編程門陣列

    關(guān)注

    1

    文章

    20

    瀏覽量

    4719

原文標(biāo)題:FPGA編程:原理概述

文章出處:【微信號(hào):Hack電子,微信公眾號(hào):Hack電子】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    FPGA基礎(chǔ)知識(shí):什么是FPGA,為何需要FPGA

    、其發(fā)展脈絡(luò)以及如何使用 FPGA。本系列文章由 5 部分組成,這是第 1 部分,將討論 FPGA基礎(chǔ)知識(shí),并介紹主要提供商的一些示例解決方案。第 2 部分、第 3 部分、第 4 部分和第 5
    的頭像 發(fā)表于 01-13 14:04 ?1.3w次閱讀

    哪有FPGA的verilog編程基礎(chǔ)知識(shí)?

    沒(méi)接觸過(guò)FPGA開(kāi)發(fā),那個(gè)verilog編程有什么入門基礎(chǔ)知識(shí)學(xué)習(xí)的?
    發(fā)表于 04-29 23:09

    FPGA基礎(chǔ)知識(shí)學(xué)習(xí)

    RAM中。這些數(shù)據(jù)定義了FPGA中的各個(gè)邏輯門的功能以及它們之間的連接方式。這個(gè)過(guò)程被稱為FPGA的配置或編程。 一旦配置完成,FPGA就可以開(kāi)始執(zhí)行邏輯運(yùn)算了。每個(gè)邏輯門都有一個(gè)輸入
    發(fā)表于 04-29 23:26

    FPGA基礎(chǔ)知識(shí),初學(xué)者必備。

    FPGA基礎(chǔ)知識(shí),初學(xué)者必備。
    發(fā)表于 11-27 15:03

    FPGA基礎(chǔ)知識(shí)點(diǎn)及工作原理是什么

    FPGA基礎(chǔ)知識(shí)點(diǎn)及工作原理是什么
    發(fā)表于 04-30 06:14

    FPGA基礎(chǔ)知識(shí)簡(jiǎn)介

    FPGA基礎(chǔ)知識(shí)簡(jiǎn)介 FPGA技術(shù)的發(fā)展歷史縱觀數(shù)字集成電路的發(fā)展歷史,經(jīng)歷了從電子管、晶體管、小規(guī)模集成電路到大規(guī)模以及超大規(guī)模集成
    發(fā)表于 02-09 08:34 ?1320次閱讀

    新手的FPGA學(xué)習(xí)必備的四個(gè)基礎(chǔ)知識(shí)詳解

    FPGA 已成為現(xiàn)今的技術(shù)熱點(diǎn)之一,無(wú)論學(xué)生還是工程師都希望跨進(jìn)FPGA的大門。網(wǎng)絡(luò)上各種開(kāi)發(fā)板、培訓(xùn)班更是多如牛毛,仿佛在告訴你不懂FPGA你就OUT啦。那么我們要玩轉(zhuǎn)FPGA必須具
    發(fā)表于 01-12 05:06 ?4.4w次閱讀

    FPGA教程之CPLD與FPGA基礎(chǔ)知識(shí)說(shuō)明

    本文檔詳細(xì)介紹的是FPGA教程之CPLD與FPGA基礎(chǔ)知識(shí)說(shuō)明主要內(nèi)容包括了:一、復(fù)雜可編程邏輯器件簡(jiǎn)介二、CPLD的組成與特點(diǎn)三、FPGA的組成與特點(diǎn)四、CPLD與
    發(fā)表于 02-27 17:09 ?32次下載
    <b class='flag-5'>FPGA</b>教程之CPLD與<b class='flag-5'>FPGA</b>的<b class='flag-5'>基礎(chǔ)知識(shí)</b>說(shuō)明

    FPGA基礎(chǔ)知識(shí)培訓(xùn)教程免費(fèi)下載

    本文檔的主要人詳細(xì)介紹的是FPGA基礎(chǔ)知識(shí)培訓(xùn)教程免費(fèi)下載包括了:1.什么是FPGA ,2.Actel FPGA整體概述 3.Actel FPGA
    發(fā)表于 04-23 08:00 ?8次下載
    <b class='flag-5'>FPGA</b><b class='flag-5'>基礎(chǔ)知識(shí)</b>培訓(xùn)教程免費(fèi)下載

    FPGA硬件基礎(chǔ)知識(shí)FPGA的邏輯單元工程文件免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是FPGA硬件基礎(chǔ)知識(shí)FPGA的邏輯單元工程文件免費(fèi)下載。
    發(fā)表于 12-10 15:00 ?16次下載

    FPGA的入門基礎(chǔ)知識(shí)詳細(xì)說(shuō)明

    本文檔的主要內(nèi)容詳細(xì)介紹的是FPGA的入門基礎(chǔ)知識(shí)詳細(xì)說(shuō)明。
    的頭像 發(fā)表于 12-20 10:13 ?9405次閱讀
    <b class='flag-5'>FPGA</b>的入門<b class='flag-5'>基礎(chǔ)知識(shí)</b>詳細(xì)說(shuō)明

    FPGA基礎(chǔ)知識(shí)----FPGA 簡(jiǎn)介

    可以通過(guò)編程來(lái)改變內(nèi)部結(jié)構(gòu)的芯片。FPGA 功能實(shí)現(xiàn):需要通過(guò)編程即設(shè)計(jì)硬件描述語(yǔ)言,經(jīng)過(guò) EDA 工具
    發(fā)表于 11-30 17:21 ?43次下載
    <b class='flag-5'>FPGA</b><b class='flag-5'>基礎(chǔ)知識(shí)</b>----<b class='flag-5'>FPGA</b> 簡(jiǎn)介

    如何學(xué)習(xí)FPGA?FPGA學(xué)習(xí)必備的基礎(chǔ)知識(shí)

    FPGA已成為現(xiàn)今的技術(shù)熱點(diǎn)之一,無(wú)論學(xué)生還是工程師都希望跨進(jìn)FPGA的大門。網(wǎng)絡(luò)上各種開(kāi)發(fā)板、培訓(xùn)班更是多如牛毛,仿佛在告訴你不懂FPGA你就OUT啦。那么我們要玩轉(zhuǎn)FPGA必須具備
    的頭像 發(fā)表于 10-27 17:43 ?757次閱讀

    基于FPGA的加速基礎(chǔ)知識(shí)

    電子發(fā)燒友網(wǎng)站提供《基于FPGA的加速基礎(chǔ)知識(shí).pdf》資料免費(fèi)下載
    發(fā)表于 09-18 10:12 ?0次下載
    基于<b class='flag-5'>FPGA</b>的加速<b class='flag-5'>基礎(chǔ)知識(shí)</b>

    FPGA基礎(chǔ)知識(shí)介紹

    電子發(fā)燒友網(wǎng)站提供《FPGA基礎(chǔ)知識(shí)介紹.pdf》資料免費(fèi)下載
    發(fā)表于 02-23 09:45 ?29次下載