學FPGA如何少走10年彎路?入門很重要!

2021-10-05 12:42:43 字數 2163 閱讀 7010

與典型的微控制器相比,現場可程式設計門陣列fpga是一種能夠提供更強效能和靈活性的器件,本文通過解答幾個有關fpga的常見問題——什麼是fpga、為什麼我會需要fpga、如何為fpga程式設計——為開發者提供fpga入門所需的基本概念和知識。

如果您是二元思維的人,那麼不要錯過第1到4部分內容。在這篇部落格中,我將簡單介紹我最感興趣的電子器件:現場可程式設計門陣列(fpga)。

當我和人們談起fpga時,我聽到很多人說:「我不知道它們的工作原理」、「它們太複雜了」、「我無法用c語言程式設計」。我不希望看到這樣一種神奇的器件遭受如此冷遇,因此下面我將嘗試解答一些常見問題(faq)。

問題1:什麼是現場可程式設計門陣列?

詳細解答如下:顧名思義,有人推斷它是可程式設計的邏輯門結構。這種解釋很接近,但又不太準確,因為內部邏輯陣列實際並不是利用門來實現的。相反,我們將陣列中的這些塊稱為「邏輯單元」。這些邏輯單元通常由查詢表 (lut)(用於實現任意邏輯功能)以及一些輔助電路(例如多路復用器、加法器和觸發器)構成。您會經常聽到人們將這種邏輯單元陣列稱為「fpga結構」。

圖1,fpga 邏輯單元示例

簡而言之,我可以將fpga比作乙個盒子,裡面裝有各種沒有商標、用於構建數位電路的彩色構件。我可以通過適合我的應用的任何方式,將這些構件連線到一起。

如果您能描述數位電路如何工作,就能用足夠的邏輯單元在fpga內構建該電路。需要25個pwm輸出?沒問題。需要特殊通訊協議?對某些硬體進行程式設計來處理該協議。

問題2:為什麼我會需要fpga?

fpga可用於實現數字系統,但簡單的微控制器通常也能夠達到同樣的效果。微控制器**低廉,而且易於放置在印刷電路板上。雖然fpga是一種功能強大的工具,但未必適合所有情況。它們有更多的功耗、布局和外部電路要求,甚至可能非常苛刻。使用成本高昂且具有諸多特殊要求的fpga似乎有些不合時宜。

但您也許已經猜到了需要fpga的原因:靈活性。您擁有可配置的邏輯塊,就意味著不再受到硬體的制約。您不會再遇到定時器或uart不夠用的情況,只要您擁有邏輯單元便可建立更多定時器或uart。它能夠隨著技術和要求的變化,在今後進行重新配置,從而延長產品的生命週期。

第二個原因是速度。微控制器只能按順序一次執行一條指令。由於硬體特性,fpga結構本身是並行的。因此它能同時執行多個指令,這對於fft或圖形處理等操作非常有用,因為在按順序執行的處理器上,這些操作可能產生很高的成本。與lvds等典型微控制器相比,fpga還提供了更多高速i/o選項,收發器能夠以10+gbps的速度處理hdmi等協議。

問題3:如何為fpga程式設計?

fpga採用一種名為hdl(即硬體描述語言)的特殊語言。它主要包含兩種語言:verilog和vhdl。幾乎所有開發套件(例如quartus或vivado)都支援這兩種語言,所以選擇哪種語言只是偏好問題。

然後對這兩種語言進行「合成」,這類似於微控制器的編譯。合成工具告訴fpga如何連線其邏輯單元,以產生**所描述的效果。請記住,**被轉換為硬體指令而非cpu指令,在您開始使用時,務必牢記這一點。

為了簡化開發,fpga**商提供了常用**塊目錄,供您輕鬆置入到設計中。其中包括倍頻器、ram和通訊塊等。您可對它們進行配置並新增到設計中,而無需檢視涉及的hdl**,從而加快開發速度。

圖2,顯示來自 xilinx 目錄和 hls 的 ip 塊的部分框圖

有些**商還提供高階別合成(hls) 工具,能夠將使用c或c++語言編寫的功能轉換為hdl**塊。使用這些工具,可以通過抽除一些低級別細節,顯著減少具有軟體背景的開發人員的入門障礙。

仍然不太相信?我最喜歡的fpga功能之一是它能夠使用軟處理器。軟處理器是從fpga的邏輯單元構建的完整處理器。利用軟處理器,您能夠為處理器構建定製的輔助硬體,並使用c語言編寫應用程式。您可在短短幾分鐘內完成簡單的軟處理器系統設定和程式設計。如果您仍然需要傳統處理器,可考慮在單一封裝中包含fpga和硬arm處理器的soc。

總而言之,與典型的微控制器相比,fpga的成本更高,使用難度更大,但如果您需要,它們能夠提供更強的效能和靈活性。隨著技術的改進,整合度的提高,fpga的成本變得更低,它們甚至能夠取代傳統的微控制器。

fpga如何約束走線 FPGA如何從入門到高手?

1 fpga入門基礎知識熟練掌握 掌握fpga必備的基礎,熟練掌握verilog程式語言,熟練掌握fpga開發工具,ise,vivado,quartus,modelsim等。熟悉fpga的開發流程,編寫約束檔案。圖1 vivado 17.4 圖2 quartus16.0 2 fpga ip核使用 常...

10個方法助你少奮鬥10年

1 努力工作要努力,隨隨便便過日子過四五年也是過,稍微努力的過四五年也是過,努力的過四五年也是過,何不努力好好的幹。如果努力的過好畢業後的四五年,這對我們以後的人生非常有幫助 2 虛心學習多與比自己大的人 長輩 成功人士交流學習,要虛心聽取 認真分析他們的意見和建議,以免自己以後走彎路。3 自由出來...

讓你少走10年的彎路,給自己19點忠告

從來沒有想寫點東西的想法,今天改變一下 因為都是在變化的,而思來想去,因為沒有啟發和給予他人的價值,就寫下了上面的題目和下面的我的見解 1 朋友請管注自己的嘴,有一句話說的好,培養乙個人要千句話,而毀人就一句話。積德吧!2 沒有永遠的朋友也沒有永遠的敵人,這話真的很耐用。3 朋友們不要聽別人當面對你...