幹分享 FPGA 程式設計原理概述

Mondo 科技 更新 2024-01-30

FPGA晶元 硬體和軟體工程之間的界限比我們看到的要模糊得多。 一種稱為現場可程式設計門陣列 (FPGA) 的器件,其物理特性可以通過使用硬體描述語言 (HDL) 來操縱,它彌合了硬體和軟體程式設計之間的差距。

但FPGA通常被認為是只能由硬體工程師程式設計的裝置。 幸運的是,現在情況並非如此,現代統一軟體平台插入通用開發工具,以簡化 FPGA 程式設計過程。

事實上,軟體開發人員也可以學習如何對 FPGA 進行程式設計。 本文將首先介紹 FPGA 的基礎知識,例如 FPGA 的工作原理以及為什麼要使用它們。 然後,本文討論了設計和執行第乙個FPGA應用所需的工具。

什麼是FPGA,為什麼要使用它?

FPGA 是一種積體電路 (IC),具有可配置邏輯塊 (CLB) 和其他使用者可程式設計和可重新程式設計功能。 術語“現場可程式設計”表示FPGA的功能是可調節的,這與製造商硬連線的其他IC不同。

FPGA 是屬於可程式設計邏輯器件 (PLD) 類別的積體電路 (IC)。 FPGA 技術的基本功能建立在自適應硬體之上,具有獨特的功能,可以在製造後進行修改。 可以根據需要連線一系列硬體模組,每個模組都是可配置的,從而允許為所有應用程式構建特定於領域的高效架構。

這種硬體靈活性是 CPU 和 GPU 所不具備的獨特差異化優勢。

雖然 CPU 很靈活,但它們的底層硬體是固定的。 一旦CPU出廠,硬體就無法修改。 它依靠軟體來告訴它對記憶體中的哪些資料執行哪個特定的操作(算術函式)。 硬體必須能夠執行所有可能的操作,這是使用軟體指令呼叫的,並且通常一次只能執行一條指令。 相比之下,FPGA 可以並行處理大量資料。 自適應硬體相對於 CPU 的優勢因應用程式而異,很大程度上取決於計算的性質及其並行化能力,但與功能高度可並行化的 CPU 實現相比,效能提高 20 倍的情況並不少見。

GPU 不僅彌補了 CPU 的主要缺點之一(能夠並行處理大量資料),而且還可以在廣泛的資料集上執行。 從根本上說,GPU 類似於 CPU,因為它們具有固定的硬體並使用軟體指令執行。 單條指令可以處理1000多條資料,因此適用於圖形加速、高效能計算、處理和某些形式的機器習等特定領域。 但從根本上說,GPU 的基本架構和資料流在製造之前是固定的。

FPGA 為程式設計師和設計人員提供了更大的靈活性來調整和更新計算架構,從而產生更能滿足其需求的特定領域架構。 FPGA 並不是什麼新鮮事,但由於人工智慧等領域的創新速度,它們變得越來越重要。 AMD於2024年發明了第乙個商用FPGA,在當前FPGA市場中占有60%至70%的份額。

FPGA的用途和應用

FPGA 的應用範圍很廣。 如今,它被用於資料中心、航空航天工程、國防、人工智慧 (AI)、工業物聯網 (IoT)、有線和無線網路以及汽車。 這些裝置通常出現在使用者需要實時資訊的環境中。 例如,家庭安全攝像頭需要以高解像度和最小延遲將即時影象傳送到房主的智慧型裝置。 隨著消費者越來越依賴通過手機傳送和接收即時訊息,這些期望只會增加。

此外,FPGA 還有助於加速原本在軟體中完成的功能。 這使得 FPGA 成為解除安裝需要高效能的任務的非常有用的工具,例如用於人工智慧的深度神經網路 (DNN) 推理。

FPGA 和硬體加速

FPGA 的架構使其成為硬體加速的高效解決方案。 ASIC 和 GPU 等裝置使用過時的方法在程式設計和記憶體之間切換。 而且它們也不適合需要實時資訊的應用,因為儲存和檢索任務所需的高功率會導致效能滯後。

與 ASIC 和 GPU 不同,FPGA 不需要在記憶體和程式設計之間切換,這使得儲存和檢索資料的過程更加高效。 FPGA 架構更加靈活,因此您可以自定義希望 FPGA 用於特定任務的功率。

這種靈活性有助於將極其耗能的任務從傳統 CPU 或其他裝置解除安裝到乙個或多個 FPGA。 許多 FPGA 可以重新程式設計,因此您可以輕鬆公升級和調整硬體加速系統。

FPGA程式設計是如何工作的?

FPGA 程式設計使用 HDL 根據您希望器件執行的操作來操縱電路。 該過程與對 GPU 或 CPU 進行程式設計不同,因為您編寫的程式不會按順序執行。 相反,您可以使用 HDL 建立電路,並根據您想要執行的操作對硬體進行物理修改。

這個過程類似於軟體程式設計,你寫的**被轉換為二進位檔案並載入到FPGA上。 但結果是,HDL 通過嚴格優化裝置來對硬體進行物理修改,而不是執行軟體。

FPGA 上的程式組裝了較低階別的元件,例如邏輯門和儲存器塊,這些元件協同工作以完成單個任務。 由於您是從頭開始操作硬體,因此 FPGA 提供了很大的靈活性。 您可以根據任務調整記憶體或功耗等基本功能。

用於對 FPGA 進行程式設計的語言

FPGA 似乎主要服務於晶元設計人員,而不是專門從事軟體開發的工程師。 畢竟,大多數用於編寫 FPGA 的 HDL 都是低階語言,硬體工程師可能比軟體工程師更熟悉這些語言。 但有些 HDL 與通用軟體語言的相似程度比您想象的要高得多。

當我們對 FPGA 使用“程式設計”一詞時,它與建立軟體並不完全相同,因為程式的設定和執行方式不同。 但該術語的使用確實包含了這樣一種想法,即編寫和執行FPGA類似於建立軟體演算法的過程。 最初的思維方式是,FPGA只能由電路設計硬體工程師進行程式設計。 現在情況已不再如此。

在統一軟體平台的幫助下,軟體開發人員可以使用他們喜歡的語言對 FPGA 進行程式設計,而無需掌握 HDL 技術。 這不僅消除了必須切換到新程式語言的壓力,而且還有助於軟體開發人員將注意力從硬體轉移到概念上。 這些平台本質上是通過將高階語言翻譯成較低階別的語言來工作的,以便FPGA可以執行所需的功能。 可與統一軟體平台一起用於 FPGA 程式設計的語言包括:

TensorFlow 和 PyTorch 等 AI 框架:借助 Vitis AI,AI 科學家現在可以直接從 TensorFlow 或 PyTorch 獲取訓練有素的深度 習 模型,並對其進行編譯以進行 FPGA 加速。 這不僅消除了對低階硬體程式設計的需求,而且還可以在幾分鐘內實現瞬間編譯,與 CPU 和 GPU 的典型軟體編譯體驗相媲美。

C 和 C++ 在高階綜合 (HLS) 的幫助下,基於 C 的語言現在可用於 FPGA 設計。 具體而言,AMD Vivado HLS 編譯器提供了乙個程式設計環境,該環境與標準和專用處理器共享關鍵技術,以優化 C 和 C++ 程式。 這使軟體工程師能夠進行優化**,而無需清除有限的記憶體空間或計算資源的障礙。

Python:設計人員可以使用 Python 語言和庫建立高效能應用,並通過 PynQ 對 FPGA 進行程式設計。 Pynq 是 AMD 的乙個開源專案,可簡化 AMD 平台的使用。

此外,現在還有大量主流的HDL主要用於FPGA程式設計。 以下是其名稱和主要屬性的簡要說明:

Lucid:這種語言是專門為FPGA設計的,以補充一些較舊的語言,如Verilog。

VHDL:甚高速積體電路(VHSIC)硬體描述語言的首字母縮寫,最早出現在20世紀80年代,主要基於ADA和PASCAL。

Verilog:Verilog 是有史以來第乙個 HDL,目前主要用於測試分析和驗證。 該語言的核心基於 C 語言。

如何對 FPGA 進行程式設計

雖然FPGA只存在於硬體工程師的領域,但人工智慧科學家和軟體程式設計師現在可以訪問新平台,使這個過程感覺就像編寫軟體程式一樣。 使用正確的工具,您將找到滿足您當前硬體和軟體知識水平需求的 FPGA 程式設計解決方案。

如果您正在為 GPU 進行 習 程式設計,編寫 FPGA 的過程會感覺非常相似,即使結果略有不同。 FPGA 程式設計涉及編寫、根據需要將程式翻譯成較低階別的語言,以及將程式轉換為二進位檔案。 然後,您將向 FPGA 提供乙個程式,就像您要求 GPU 讀取用 C++ 編寫的軟體一樣。 就是這麼簡單。

但為了優化該程式設計過程,您需要訪問正確的平台。 幸運的是,AMD擁有完美的解決方案,這是一套突破性的工具,可以在FPGA程式設計過程的每一步為軟體開發人員提供幫助。

利用 Vitis 統一軟體平台簡化 FPGA 程式設計

Vitis 統一軟體平台是一款領先的應用,可為軟體工程師、資料科學家和 AI 開發人員優化 FPGA 程式設計。 它包括乙個針對 AMD FPGA 和 ACAP 硬體平台優化的可擴充套件開源庫,以及乙個核心開發套件,無需豐富的硬體經驗即可無縫構建加速應用程式。

此外,Vitis 還包括 Vitis Model Composer,它在 MATLAB 和 Simulink 中提供了一套工具。 它優化了設計和測試新應用程式的過程。

如何使用 Vitis 軟體加速應用的啟動設計

Vitis 通過四個步驟幫助您為邊緣、本地或雲端的資料和計算密集型應用設計加速器:

確定應用程式中需要加速的關鍵效能部分。

使用 Vitis 加速庫設計加速器,或使用 C、C++、OpenCL 或 RTL 開發自己的加速器。

構建、分析和除錯以驗證功能正確性並確保符合效能目標。

在邊緣、本地或雲端的 AMD 平台上部署加速應用。

AMD 是業界排名第一的 FPGA 供應商

雖然如果沒有硬體專業知識,FPGA 程式設計可能會令人望而生畏,但像 Vitis 這樣的平台可以幫助軟體開發人員簡化流程。 AMD 是業界收入最高的 FPGA 供應商,也是為軟體工程師提供資源以建立 FPGA 應用的行業領導者。

使用 AMD Vitis HLS 工具將用 C、C++ 和 OpenCL 編寫的函式整合到硬體中。 HLS 工具不僅可以自動修改和簡化更新,還可以優化 C++ 以實現每個應用程式的低延遲和高吞吐量

注意:文章** 電子發燒友社群。

相關問題答案

    分享在西班牙留學的經歷,滿滿的乾貨!

    西班牙在教育方面享譽全球,是許多學生的理想之地。因此,越來越多的學生選擇西班牙作為他們的學習目的地。那麼,就讓我們和大家分享一下在西班牙留學的心得合集吧,歡迎大家參考一下!時間規劃可以在幾周內完成,這樣大家就不會覺得時間很緊迫,並且有足夠的空間及時調整,不會讓大家因為時間過長而產生鬆弛感。制定詳細的...

    乾貨體檢彙編歷年問題分享!

    近年來,醫療行業的快速發展使得體檢準備成為備受關注的熱門考試。對於考生來說,深入學習歷年試卷,不僅能幫助你了解考試動態,還能有效提高你的備考效率。本文將分享體檢彙編的歷年問題,幫助學生更好地面對體檢準備。.歷年題分析 洞察考試趨勢 首先,深入了解歷年試卷是備考的第一步。通過分析多年來的問題,我們可以...

    乾貨分享政料寫作指南 新手如何輕鬆上手!

    新手如何寫 材料?為新手編寫 材料的過程首先需要明確的目標和目的。編寫材料通常是為了向特定受眾傳達資訊,表達政策意圖和倡議,或解釋特定行動的理由和效果。根據體裁和體裁的不同,材料可能包括政策宣告 報告 公告 新聞稿 通知等。以下是編寫材料的一些基本步驟和要點 .收集資訊 在撰寫第乙份材料之前,有必要...

    將家具運送到布里斯班乾貨共享

    最近,很多朋友都詢問了關於共享海運家具到布里斯班的事情,有鑑於此,我們整理了相關內容,希望對您有所幫助。將家具運送到布里斯班乾貨共享 海運家具是一種常見的運輸方式,尤其是在家具進出口領域。布里斯班是澳大利亞昆士蘭州的首府和大城市,是乙個重要的經濟中心,吸引了許多人在這裡運送家具。在本文中,我們將重點...

    旅遊體驗乾貨分享,日本各民宿保姆級攻略

    日本寄宿家庭的預訂流程。.決定旅行的目的地和時間。首先,您需要確定旅行的目的地和時間,以便您更好地選擇最佳住宿。在選擇目的地時,您可以根據自己的興趣和旅行需求進行選擇。例如,如果你喜歡日本的傳統文化和美食,你可以選擇去京都 東京和其他城市如果你喜歡大自然,你可以選擇去北海道 沖繩等地區。.找到合適的...