一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

【干貨分享】FPGA 編程:原理概述

電子發(fā)燒友論壇 ? 來源:未知 ? 2023-07-04 08:35 ? 次閱讀

軟硬件工程之間的界限比我們看到的更模糊。稱之為現(xiàn)場可編程門陣列 (FPGA) 的器件,其物理屬性可通過使用硬件描述語言 (HDL) 來操控,該器件可在軟硬件編程之間架起一座橋梁。

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

事實(shí)上,軟件開發(fā)人員也可了解如何編程 FPGA。本文將首先介紹 FPGA 的基礎(chǔ)知識(shí),比如 FPGA 的工作原理以及為什么要使用 FPGA 等。然后討論設(shè)計(jì)和執(zhí)行首款 FPGA 應(yīng)用所需的工具。

e110403e-19fe-11ee-962d-dac502259ad0.jpg

何為 FPGA 以及為什么使用 FPGA?

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

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

這種硬件靈活應(yīng)變性是 CPUGPU 所不具備的獨(dú)特差異化特性。

雖然 CPU 靈活性很高,但其底層硬件是固定的。CPU 一旦出廠,硬件就無法修改。它依靠軟件來告訴它要針對(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 倍的情況并不少見。

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),從而帶來更能滿足其需求的特定域架構(gòu)。FPGA 并不是什么新事物,但因人工智能等領(lǐng)域的創(chuàng)新速度,其重要性日益凸顯。第一款商用 FPGA 是 AMD 于 1985 年發(fā)明的,在目前的 FPGA 市場上占據(jù) 60% 至 70% 的份額。

免費(fèi)電子書下載
自適應(yīng)計(jì)算概述

下載電子書

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

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

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

FPGA 和硬件加速

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

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

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

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

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

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

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

e1ecf1c8-19fe-11ee-962d-dac502259ad0.png

用于編程 FPGA 的語言

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

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

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

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

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

  • Python :設(shè)計(jì)人員可使用 Python 語言和庫來創(chuàng)建高性能應(yīng)用并通過 PYNQ 編程 FPGA。PYNQ 是 AMD 的一個(gè)開源項(xiàng)目,可簡化 AMD 平臺(tái)的使用。

此外,現(xiàn)在主要用于 FPGA 編程的,也有大量主流 HDL。下面簡單介紹一下其名稱和主要屬性:

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

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

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

如何編程 FPGA

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

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

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

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

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

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

如何使用 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 加速庫設(shè)計(jì)加速器,也可使用 C、C++、OpenCL 或 RTL 開發(fā)自己的加速器。

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

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

AMD 是業(yè)內(nèi)排名第一的 FPGA 供應(yīng)商

盡管沒有硬件專業(yè)技術(shù),F(xiàn)PGA 編程可能會(huì)讓人望而卻步,但 Vitis 等平臺(tái)可幫助軟件開發(fā)人員簡化該過程。AMD 是業(yè)界收入最高的 FPGA 廠商,也是為軟件工程師創(chuàng)建 FPGA 應(yīng)用提供資源的行業(yè)領(lǐng)導(dǎo)者。

使用 C、C++ 和 OpenCL 編寫的函數(shù)可以使用 AMD Vitis HLS 工具集成到硬件中。HLS 工具不僅可為代碼修改實(shí)現(xiàn)自動(dòng)化,簡化更新,而且還可針對(duì)每款應(yīng)用的低時(shí)延和高吞吐量優(yōu)化 C/C++ 代碼。



e2dd35fc-19fe-11ee-962d-dac502259ad0.png

e314aff0-19fe-11ee-962d-dac502259ad0.png

聲明本文由電子發(fā)燒友社區(qū)發(fā)布,轉(zhuǎn)載請(qǐng)注明以上來源。如需社區(qū)合作及入群交流,請(qǐng)?zhí)砑游⑿臙EFans0806,或者發(fā)郵箱liuyong@huaqiu.com。

更多熱點(diǎn)文章閱讀

  • 基于Cortex-M3內(nèi)核的32位微控制器,STM32項(xiàng)目實(shí)戰(zhàn)分享!

  • 基于32位RISC-V設(shè)計(jì)的互聯(lián)型微控制器,沁恒微CH32V307開發(fā)樣例

  • RK3568!四核64位ARMv8.2A架構(gòu),匯聚編譯源碼及實(shí)戰(zhàn)樣例

  • 尺寸僅有21mm*51mm,板邊采用郵票孔設(shè)計(jì),合宙 Air105 核心板開發(fā)總結(jié)

  • 嵌入式Linux開發(fā)秘籍!工程師大佬親歷分享項(xiàng)目樣例


原文標(biāo)題:【干貨分享】FPGA 編程:原理概述

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


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

原文標(biāo)題:【干貨分享】FPGA 編程:原理概述

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    干貨】基于串口的FPGA遠(yuǎn)程升級(jí)

    近期,我們收到許多粉絲朋友的技術(shù)問題反饋,為便于大家的學(xué)習(xí),小編整理了一系列常見問題的技術(shù)指南,將陸續(xù)分期發(fā)布,請(qǐng)大家敬請(qǐng)關(guān)注“小眼睛FPGA”微信公眾號(hào),在FPGA的世界里,我們努力把復(fù)雜的技術(shù)
    的頭像 發(fā)表于 04-14 09:53 ?158次閱讀
    【<b class='flag-5'>干貨</b>】基于串口的<b class='flag-5'>FPGA</b>遠(yuǎn)程升級(jí)

    fpga和cpu的區(qū)別 芯片是gpu還是CPU

    一、FPGA與CPU的區(qū)別 FPGA(Field-Programmable Gate Array,現(xiàn)場可編程門陣列)和CPU(Central Processing Unit,中央處理器)是兩種不同類
    的頭像 發(fā)表于 02-01 14:57 ?1116次閱讀

    CPLD 與 FPGA 的區(qū)別

    在數(shù)字電路設(shè)計(jì)領(lǐng)域,CPLD和FPGA是兩種常用的可編程邏輯器件。它們都允許工程師根據(jù)需要設(shè)計(jì)和重新配置數(shù)字電路,但它們?cè)诮Y(jié)構(gòu)、性能和應(yīng)用上存在顯著差異。 CPLD和FPGA的定義 CPLD
    的頭像 發(fā)表于 01-23 09:46 ?896次閱讀

    FPGA與ASIC的區(qū)別 FPGA性能優(yōu)化技巧

    FPGA與ASIC的區(qū)別 FPGA(現(xiàn)場可編程門陣列)和ASIC(專用集成電路)是兩種不同的集成電路技術(shù),它們?cè)诙鄠€(gè)方面存在顯著的區(qū)別: FPGA ASIC 基本定義 由通用的邏輯單元
    的頭像 發(fā)表于 12-02 09:51 ?759次閱讀

    玩轉(zhuǎn)FPGA必備的基礎(chǔ)知識(shí)

    ,那我們首先最重要的當(dāng)然是要了解什么FPGA。FPGA(Field-Programmable Gate Array),即現(xiàn)場可編程門陣列。看到編程兩個(gè)字碼農(nóng)就笑了,不就是
    的頭像 發(fā)表于 11-28 10:24 ?652次閱讀

    XILINX FPGA Verilog編程大全2015

    不錯(cuò)的FPGA編程書籍
    發(fā)表于 11-26 13:59 ?8次下載

    MCU與FPGA的區(qū)別和聯(lián)動(dòng)

    微控制器單元(MCU)和現(xiàn)場可編程門陣列(FPGA)是兩種廣泛應(yīng)用于電子設(shè)計(jì)領(lǐng)域的集成電路。它們各自具有獨(dú)特的特點(diǎn)和應(yīng)用場景,同時(shí)也可以在某些項(xiàng)目中實(shí)現(xiàn)聯(lián)動(dòng),以發(fā)揮各自的優(yōu)勢(shì)。 MCU與FPGA
    的頭像 發(fā)表于 11-01 13:51 ?1838次閱讀

    詳解FPGA的基本結(jié)構(gòu)

    ZYNQ PL 部分等價(jià)于 Xilinx 7 系列 FPGA,因此我們將首先介紹 FPGA 的架構(gòu)。簡化的 FPGA 基本結(jié)構(gòu)由 6 部分組成,分別為可編程輸入/輸出單元、基本可
    的頭像 發(fā)表于 10-25 16:50 ?2781次閱讀
    詳解<b class='flag-5'>FPGA</b>的基本結(jié)構(gòu)

    FPGA與ASIC的優(yōu)缺點(diǎn)比較

    FPGA(現(xiàn)場可編程門陣列)與ASIC(專用集成電路)是兩種不同的硬件實(shí)現(xiàn)方式,各自具有獨(dú)特的優(yōu)缺點(diǎn)。以下是對(duì)兩者優(yōu)缺點(diǎn)的比較: FPGA的優(yōu)點(diǎn) 可編程性強(qiáng) :
    的頭像 發(fā)表于 10-25 09:24 ?1406次閱讀

    FPGA在物聯(lián)網(wǎng)中的應(yīng)用前景

    FPGA(現(xiàn)場可編程門陣列)在物聯(lián)網(wǎng)中的應(yīng)用前景非常廣闊,其高度的靈活性和可編程性使其成為物聯(lián)網(wǎng)應(yīng)用中不可或缺的核心組件。以下是對(duì)FPGA在物聯(lián)網(wǎng)中應(yīng)用前景的分析: 一、物聯(lián)網(wǎng)
    的頭像 發(fā)表于 10-25 09:22 ?1001次閱讀

    FPGA加速深度學(xué)習(xí)模型的案例

    FPGA(現(xiàn)場可編程門陣列)加速深度學(xué)習(xí)模型是當(dāng)前硬件加速領(lǐng)域的一個(gè)熱門研究方向。以下是一些FPGA加速深度學(xué)習(xí)模型的案例: 一、基于FPGA的AlexNet卷積運(yùn)算加速 項(xiàng)目名稱
    的頭像 發(fā)表于 10-25 09:22 ?927次閱讀

    FPGA編程語言的入門教程

    FPGA(現(xiàn)場可編程邏輯門陣列)的編程涉及特定的硬件描述語言(HDL),其中Verilog和VHDL是最常用的兩種。以下是一個(gè)FPGA編程
    的頭像 發(fā)表于 10-25 09:21 ?880次閱讀

    FPGA教學(xué)實(shí)驗(yàn)室建設(shè)必要性 解決方案概述

    FPGA教學(xué)實(shí)驗(yàn)室建設(shè)必要性&解決方案概述
    的頭像 發(fā)表于 07-26 08:33 ?415次閱讀
    <b class='flag-5'>FPGA</b>教學(xué)實(shí)驗(yàn)室建設(shè)必要性 解決方案<b class='flag-5'>概述</b>

    在多FPGA集群上實(shí)現(xiàn)高級(jí)并行編程

    今天我們看的這篇論文介紹了在多FPGA集群上實(shí)現(xiàn)高級(jí)并行編程的研究,其主要目標(biāo)是為非FPGA專家提供一個(gè)成熟且易于使用的環(huán)境,以便在多個(gè)并行運(yùn)行的設(shè)備上擴(kuò)展高性能計(jì)算(HPC)應(yīng)用。
    的頭像 發(fā)表于 07-24 14:54 ?1671次閱讀

    基于FPGA的CCD工業(yè)相機(jī)系統(tǒng)設(shè)計(jì)

    基于FPGA的CCD工業(yè)相機(jī)系統(tǒng)設(shè)計(jì)是一個(gè)綜合性的項(xiàng)目,它結(jié)合了硬件電路設(shè)計(jì)、FPGA編程以及圖像處理技術(shù)。以下是一個(gè)詳細(xì)的系統(tǒng)設(shè)計(jì)方案,包括設(shè)計(jì)概述、硬件架構(gòu)、
    的頭像 發(fā)表于 07-17 11:24 ?1823次閱讀