與典型的微控制器相比,現場可編程門陣列FPGA是一種能夠提供更強性能和靈活性的器件,本文通過解答幾個有關FPGA的常見問題——什么是FPGA、為什么我會需要FPGA、如何為FPGA編程——為開發(fā)者提供FPGA入門所需的基本概念和知識。
如果您是二元思維的人,那么不要錯過第1到4部分內容。在這篇博客中,我將簡單介紹我最感興趣的電子器件:現場可編程門陣列(FPGA)。
當我和人們談起FPGA時,我聽到很多人說:“我不知道它們的工作原理”、“它們太復雜了”、“我無法用C語言編程”。我不希望看到這樣一種神奇的器件遭受如此冷遇,因此下面我將嘗試解答一些常見問題(FAQ)。
問題1:什么是現場可編程門陣列?
詳細解答如下:顧名思義,有人推斷它是可編程的邏輯門結構。這種解釋很接近,但又不太準確,因為內部邏輯陣列實際并不是利用門來實現的。相反,我們將陣列中的這些塊稱為“邏輯單元”。這些邏輯單元通常由查找表 (LUT)(用于實現任意邏輯功能)以及一些輔助電路(例如多路復用器、加法器和觸發(fā)器)構成。您會經常聽到人們將這種邏輯單元陣列稱為“FPGA結構”。
簡而言之,我可以將FPGA比作一個盒子,里面裝有各種沒有商標、用于構建數字電路的彩色構件。我可以通過適合我的應用的任何方式,將這些構件連接到一起。
如果您能描述數字電路如何工作,就能用足夠的邏輯單元在FPGA內構建該電路。需要25個PWM輸出?沒問題。需要特殊通信協議?對某些硬件進行編程來處理該協議。
問題2:為什么我會需要FPGA?
FPGA可用于實現數字系統,但簡單的微控制器通常也能夠達到同樣的效果。微控制器價格低廉,而且易于放置在印刷電路板上。雖然FPGA是一種功能強大的工具,但未必適合所有情況。它們有更多的功耗、布局和外部電路要求,甚至可能非常苛刻。使用成本高昂且具有諸多特殊要求的FPGA似乎有些不合時宜。
但您也許已經猜到了需要FPGA的原因:靈活性。您擁有可配置的邏輯塊,就意味著不再受到硬件的制約。您不會再遇到定時器或UART不夠用的情況,只要您擁有邏輯單元便可創(chuàng)建更多定時器或UART。它能夠隨著技術和要求的變化,在今后進行重新配置,從而延長產品的生命周期。
第二個原因是速度。微控制器只能按順序一次執(zhí)行一條指令。由于硬件特性,FPGA結構本身是并行的。因此它能同時執(zhí)行多個指令,這對于FFT或圖形處理等操作非常有用,因為在按順序執(zhí)行的處理器上,這些操作可能產生很高的成本。與LVDS等典型微控制器相比,FPGA還提供了更多高速I/O選項,收發(fā)器能夠以10+Gbps的速度處理HDMI等協議。
問題3:如何為FPGA編程?
FPGA采用一種名為HDL(即硬件描述語言)的特殊語言。它主要包含兩種語言:Verilog和VHDL。幾乎所有開發(fā)套件(例如Quartus或Vivado)都支持這兩種語言,所以選擇哪種語言只是偏好問題。
然后對這兩種語言進行“合成”,這類似于微控制器的編譯。合成工具告訴FPGA如何連接其邏輯單元,以產生代碼所描述的效果。請記住,代碼被轉換為硬件指令而非CPU指令,在您開始使用時,務必牢記這一點。
為了簡化開發(fā),FPGA供應商提供了常用代碼塊目錄,供您輕松置入到設計中。其中包括倍頻器、RAM和通信塊等。您可對它們進行配置并添加到設計中,而無需查看涉及的HDL代碼,從而加快開發(fā)速度。
有些供應商還提供高級別合成(HLS) 工具,能夠將使用C或C++語言編寫的功能轉換為HDL代碼塊。使用這些工具,可以通過抽除一些低級別細節(jié),顯著減少具有軟件背景的開發(fā)人員的入門障礙。
仍然不太相信?我最喜歡的FPGA功能之一是它能夠使用軟處理器。軟處理器是從FPGA的邏輯單元構建的完整處理器。利用軟處理器,您能夠為處理器構建定制的輔助硬件,并使用C語言編寫應用程序。您可在短短幾分鐘內完成簡單的軟處理器系統設置和編程。如果您仍然需要傳統處理器,可考慮在單一封裝中包含FPGA和硬ARM處理器的SoC。
總而言之,與典型的微控制器相比,FPGA的成本更高,使用難度更大,但如果您需要,它們能夠提供更強的性能和靈活性。隨著技術的改進,集成度的提高,FPGA的成本變得更低,它們甚至能夠取代傳統的微控制器。
責任編輯:tzh
-
微控制器
+關注
關注
48文章
7903瀏覽量
153684 -
FPGA
+關注
關注
1643文章
21954瀏覽量
613996 -
電路板
+關注
關注
140文章
5086瀏覽量
101470
發(fā)布評論請先 登錄
評論