FPGA 101:新手指南
如果您是二元思維的讀者,別擔心,您沒有錯過第 1 到第 4 部分。我將在本文中簡單介紹我最喜愛的電子元件:現場可編程閘陣列 (FPGA)。每當我跟人談起 FPGA,經常聽到這樣的聲音:「我不知道它們如何運作」、「它們太複雜了」,或「我無法用 C 語言對它們進行程式設定」。我不願見到這麼好的元件竟如此輕易遭人排除,因此決定嘗試解答以下一些常見問題。
什麼是現場可編程閘陣列?
以下是詳細的回答:從名稱來看,我們可能會推斷它是邏輯閘的一種可編程結構。意思雖然接近,但並不準確,因為內部邏輯陣列實際上並未用閘實作。其實我們是將陣列中的區塊稱為邏輯元素。這些區塊通常包括一個實作任意邏輯功能的查找表 (LUT),以及一些支援電路,例如多工器、加法器,以及正反器。您常會聽到此邏輯元素陣列被稱為「FPGA 結構」。
圖 1:FPGA 邏輯元素的範例。(圖片來源:Wikimedia Commons)
簡單來說,我把 FPGA 想像成一盒彩色、未註冊商標的建置區塊,可用於打造數位電路。我可以根據我的應用需求,以任何想要的方式將區塊連接。只要您能描述數位電路的行為,就能使用足夠的邏輯元素在 FPGA 內建立電路。需要 25 個 PWM 輸出?沒問題。需要特殊通訊協定?可寫入某個硬體來處理。
我為何會需要 FPGA?
FPGA 可用於實作數位系統,但用一個簡單的微控制器往往也能達到同樣的效果。微控制器價格實惠,並且易於放置在 PCB 上。FPGA 是強大的工具,但不一定每個案例都非常適用。這種元件對於功率、佈局和外部電路都有較高的要求,可能令人望而卻步。採用 FPGA 之下價格昂貴得多,又有許多特殊要求,似乎是一種荒謬的想法。
您可能已經猜到需要採用 FPGA 的第一個理由:彈性。當您具備可設定的邏輯區塊,便意味著永不必受制於硬體。只要有邏輯元素就能創造更多的計時器或 UART,因此您永遠不會用盡計時器或 UART。隨著技術和要求的改變,一段時間後能夠重新配置,因此還能延長產品的生命週期。
第二個理由是速度。微控制器是循序逐一地執行指令。FPGA 結構由於其硬體的性質,本質上可作業並行。如此可允許同時進行多項作業,這對於 FFT 或圖形處理等在循序處理器上較昂貴的操作格外適用。FPGA 還具有比典型微控制器更多的高速 I/O 選項 (如 LVDS),以及能夠達到 10+ Gbps 的收發器 (適用於 HDMI 等協定)。
如何對 FPGA 進行編程?
FPGA 使用一種名為 HDL 的特殊語言,即硬體描述語言 (Hardware Description Language)。該語言有兩大主流:Verilog 和 VHDL。幾乎每個開發套件 (例如 Quartus 或 Vivado) 都同時支援這兩種語言,因此決定使用哪一種全依偏好。然後,這些語言就會進行「合成」,如同微控制器的編譯。合成工具會告訴 FPGA 如何連接其邏輯元素以建立您的程式碼所描述的效果。請牢記,當您第一次開始使用時,您的程式碼是要轉換成硬體,而不是 CPU 指令。
為使開發工作更加輕鬆,FPGA 廠商會向您提供一份型錄,內有能輕易放入設計中的常用程式碼區塊,包括乘法器、RAM、通訊區塊等等。您完全不必檢視相關的 HDL 程式碼就可對其進行設定並加入至您的設計,從而加快您的開發時間。
圖 2:部分方塊圖,顯示 Xilinx 型錄和 HLS 的 IP 區塊。(圖片來源:eewiki.net)
部分廠商還提供高階合成 (HLS) 工具,能將以 C 或 C++ 語言所撰寫的功能轉換成 HDL 程式碼的區塊。使用這些工具能抽除一些低階詳細資料,為具有軟體背景的開發人員降低進入的門檻。
還是不太信服?對於 FPGA,我最喜愛的功能之一就是能夠使用軟式處理器。這是一個以 FPGA 的邏輯元素所建置的完整處理器。利用軟式處理器,您可為處理器建置自訂的支援硬體,並以 C 語言撰寫您的應用。您只需要幾分鐘時間,就能設置簡單的軟式處理器系統並完成編程。若您還是需要傳統處理器,可以考慮在單一封裝中納入 FPGA 和硬式 ARM 處理器的 SoC。
總而言之,與典型的微控制器相比,FPGA 價格更高,使用起來也較難,但在需要的時候能提供高出許多的功率和彈性。隨著技術的進步,以及 FPGA 在更高的整合層級之下變得較不昂貴,它們甚至可以取代傳統的微控制器。因此,上述只要有任何一點您感興趣,不妨現在就開始使用 FPGA 以便搶得先機。若您想尋找一款低成本開發板來開始使用,請查看我們各家 FPGA 供應商的下列精選電路板:Terasic 的 DE10-Lite、Digilent 的 Arty、Lattice 的 Mobile Dev Board,或 Microsemi 的 Maker Kit。

Have questions or comments? Continue the conversation on TechForum, Digi-Key's online community and technical resource.
Visit TechForum