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

Linux應(yīng)用編程的基本概念
基于FPGA實(shí)現(xiàn)數(shù)碼管顯示

X電容和Y電容的基本概念
卷積神經(jīng)網(wǎng)絡(luò)的基本概念、原理及特點(diǎn)
循環(huán)神經(jīng)網(wǎng)絡(luò)的基本概念
組合邏輯控制器的基本概念、實(shí)現(xiàn)原理及設(shè)計(jì)方法
圖機(jī)器學(xué)習(xí)入門:基本概念介紹

評(píng)論