一、寫在前面
FPGA 是可編程芯片,因此 FPGA 的設計方法包括硬件設計和軟件設計兩部分。硬件包括 FPGA 芯片電路、存儲器、輸入輸出接口電路以及其他設備;軟件即是相應的 HDL 程序以及最新非常流行的基於高層次綜合的程序方法,如Xilinx的一系列工具HLS、SDSoC和Altera的SoC EDS等。
(1)選擇FPGA(SoC)的若干理由
a) FPGA具有現場可編程能力,即使產品已經投入市場,也可根據特殊應用重新配置硬件;
b)FPGA具有強大的並行處理能力;
c) FPGA具有比ASIC設計更短的設計週期和更低設計成本;
d) FPGA比較易用;
e) 隨着半導體技術的突飛猛進, FPGA 越來越成爲一種融合處理、HBM存儲、接口於一體的超級芯片。
(2)設計提醒
強烈推薦FPGA設計遵循自頂向下的設計流程,也就是說從系統級設計開始,劃分爲若干個二級單元,然後再把各個二級單元劃分爲下一層次的基本單元,一直下去,直到能夠使用基本模塊或者 IP 核直接實現爲止。
需要特別提醒的是,大規模邏輯設計必須先有完整明確的需求和實現方案後再啓動硬件平臺和軟件設計。否則,任何一個小的改動都可能導致極大的糾正成本甚至整個系統全盤推翻重來。
二、設計小Tips
(1)明確FPGA設計需求
和所有的設計一樣,FPGA設計過程是一個迭代過程,首先是有一個系統的想法,然後將這一想法細化到具體交易中。
圖1 需求評估拓撲
(2)如何選型
FPGA的硬件設計選型主要考慮如下因素:
1)器件的供貨渠道和開發工具支持
2)器件的硬件資源
a)邏輯資源;
b) IO資源(FPGA負荷過重、發熱,影響速度、穩定性和壽命);
c) 佈線資源(影響速度);
d) DSP(乘法器、矢量浮點加速器)資源;
e)存儲器資源(內部RAM塊和內部和外部的DDR/SRAM)等;
f) 時鐘資源;
g) 串行收發器;
h) 硬核及集成塊。
3)器件的電氣接口特性
4) 器件的速度等級
5) 器件的封裝和價格等
(3)嵌入式設計流程
圖2 設計流程
這個流程看上去有點像操作系統的層次結構,硬件就是FPGA邏輯和底層單元;中間件就是平臺相關的可以重複利用的標準協議和接口;應用層執行產品的核心功能。這三個層級是向下驗證的,最後實現系統的集成和驗證。
更爲具體的,針對某種器件,嵌入式工程師的主要工作如下:
圖三 設計內容
三、FPGA的幾種典型應用
a)運動控制。需要高性能的工業設計領域;
b)電視廣播。SDI接口已經圖像流的優化重構和壓縮;
c)通信領域。處理通信過程中的海量並行數據流;
d)汽車輔助駕駛。屬於對圖像處理、圖形、控制的集大成應用;
e)高性能計算。數據庫、金融市場加速、地震和醫學成像、矩陣數學、AI、雲計算、機器學習應用等;
f)高端服務器;
g)IO和總線擴展、橋接。
隨着半導體技術的飛速發展,器件的集成度越來越高,集成的硬核和功能塊也越來越豐富。FPGA各廠商面向不同層次的應用也在不斷的拓展,FPGA必將褪下它貴族的臉孔走入尋常百姓家。
圖4 ADAS應用
圖5 雲級應用
圖6 軟件無線電系統
圖7 控制系統與無線通信
感興趣的同行歡迎掃描以下二維碼關注微信公衆號或QQ討論羣進一步交流。