博客專欄

EEPW首頁 > 博客 > FPGA 與微控制器:嵌入式設(shè)計(jì)的另一種方法

FPGA 與微控制器:嵌入式設(shè)計(jì)的另一種方法

發(fā)布人:電子資料庫(kù) 時(shí)間:2023-01-18 來源:工程師 發(fā)布文章

大多數(shù)工程師通過學(xué)習(xí)微控制器開始嵌入式系統(tǒng)培訓(xùn)。微控制器在單個(gè)集成電路上需要一個(gè)完整的微型計(jì)算系統(tǒng)。CPU、RAM、ROM 和輸入/輸出外圍設(shè)備都在一個(gè)拇指大小的片上系統(tǒng) (SoC) 上——包含所有或大部分電子元件的集成電路。

除了組件之外,嵌入式設(shè)計(jì)的另一部分涉及軟件開發(fā)。微控制器(和微處理器)有一個(gè)在大小和操作上保持固定的指令集,這意味著工程師通過匯編語言或嵌入式 C 使用相同的指令來解決計(jì)算任務(wù),通常用于實(shí)際應(yīng)用程序。

好消息是,如果有編程語言方面的經(jīng)驗(yàn),使用微控制器學(xué)習(xí)起來相對(duì)簡(jiǎn)單。流行的版本,如 AVR、8051、PIC 和 ARM,使工程師能夠接觸到嵌入式系統(tǒng)的軟件開發(fā)方面。因此,有幾種選擇。

然而,還有另一種嵌入式軟件開發(fā)方法是微控制器所不具備的能力:基于硬件的嵌入式設(shè)計(jì)。為此,需要現(xiàn)場(chǎng)可編程門陣列 (FPGA)。

FPGA 由 Xilinx 于 1984 年發(fā)明。它們是包含數(shù)百萬個(gè)邏輯門的集成電路,這些邏輯門以電子方式配置以執(zhí)行特定任務(wù)(這意味著門是現(xiàn)場(chǎng)可編程的)。

讓我們將 FPGA 與計(jì)算機(jī)進(jìn)行比較。計(jì)算機(jī)(可以是微控制器、微處理器或圖形處理器)是一種基于指令集執(zhí)行任務(wù)的數(shù)字電子電路。這些指令包含由計(jì)算機(jī)的數(shù)字電路在數(shù)據(jù)上實(shí)現(xiàn)的機(jī)器代碼,其中數(shù)據(jù)在寄存器或存儲(chǔ)芯片上存儲(chǔ)和操作。

或者,F(xiàn)PGA 將設(shè)計(jì)帶到硬件中,因此工程師可以從架構(gòu)級(jí)別設(shè)計(jì)一個(gè)(簡(jiǎn)單的)計(jì)算設(shè)備來執(zhí)行特定的任務(wù)或應(yīng)用程序。

image.png


微控制器與 FPGA
盡管 FPGA 通常用于設(shè)計(jì)數(shù)字電路以執(zhí)行簡(jiǎn)單的計(jì)算任務(wù),但在計(jì)算方面它無法與微控制器相提并論。微控制器和微處理器是真正的具有復(fù)雜架構(gòu)的計(jì)算設(shè)備。

FPGA 可與專用集成電路 (ASIC) 相媲美,并可與其一起工作。ASIC 是為特定任務(wù)定制的,而不是用于一般用途。事實(shí)上,任何 ASIC 功能都可以在 FPGA 上定制設(shè)計(jì)和制造。

微控制器讓具有匯編或高級(jí)編程語言專業(yè)知識(shí)的工程師為計(jì)算機(jī)設(shè)計(jì)軟件,而 FPGA 允許設(shè)計(jì)簡(jiǎn)單的計(jì)算設(shè)備。這種基于硬件的嵌入式設(shè)計(jì)需要對(duì)數(shù)字電路和計(jì)算機(jī)體系結(jié)構(gòu)有詳細(xì)的了解。

語言上的一些差異:

  • 微控制器使用匯編語言或高級(jí)語言(例如“C”)進(jìn)行編程,然后將其轉(zhuǎn)換為機(jī)器代碼以在 CPU 上執(zhí)行。

  • FPGA 芯片使用 Verilog 或超高速集成電路硬件描述語言 (VHDL) 進(jìn)行編程。VHDL 被轉(zhuǎn)換為在 FPGA 芯片上制造的數(shù)字邏輯塊,以設(shè)計(jì)用于特定應(yīng)用的定制計(jì)算機(jī)。通過使用 VHDL 或 Verilog,工程師可以從根級(jí)別設(shè)計(jì)數(shù)據(jù)路徑和算術(shù)邏輯單元 (ALU) 硬件。如果有足夠的邏輯塊來支持設(shè)計(jì),甚至可以在 FPGA 上設(shè)計(jì)微控制器。

首先了解微控制器和微處理器是有意義的,因?yàn)榱私庥?jì)算機(jī)如何運(yùn)行以及如何編程以執(zhí)行特定任務(wù)非常重要。微控制器、FPGA 和 CPLD(復(fù)雜可編程邏輯設(shè)備)是獨(dú)立的嵌入式系統(tǒng),各有優(yōu)缺點(diǎn)。

FPGA 將這種知識(shí)擴(kuò)展到硬件電路,了解如何構(gòu)建計(jì)算機(jī)。

FPGA 的優(yōu)勢(shì)
FPGA 不僅可以作為學(xué)習(xí)數(shù)字設(shè)計(jì)和計(jì)算機(jī)體系結(jié)構(gòu)的一種方式,而且這些芯片還可以在嵌入式系統(tǒng)工程中提供實(shí)際應(yīng)用。它們提供了 ASIC 的替代方案,具有某些優(yōu)勢(shì)……

多線程。 FPGA 可以同時(shí)或以并行形式處理多條指令。與微控制器相比,這是一個(gè)很大的優(yōu)勢(shì),微控制器一次只能按順序執(zhí)行一條指令。這意味著 FPGA 在處理任務(wù)時(shí)通常要快得多。由于這些過程在硬件級(jí)別進(jìn)行邏輯編碼,因此 FPGA 芯片非常適合專用或?qū)I(yè)應(yīng)用,包括預(yù)處理傳感器數(shù)據(jù)、密碼學(xué)、邏輯電路設(shè)計(jì)、數(shù)字音頻應(yīng)用、視頻流等。

另一方面,微控制器具有帶有專用指令集的通用架構(gòu),這使得它們更適合以較慢的速度解決可能需要標(biāo)準(zhǔn)接口的復(fù)雜計(jì)算任務(wù)。

總的來說,由于這種多線程特性,當(dāng)應(yīng)用程序中要處理的數(shù)據(jù)量很大時(shí),F(xiàn)PGA 具有優(yōu)勢(shì)。如今,F(xiàn)PGA 板可提供內(nèi)置 CPU,因此特定應(yīng)用程序處理只需要設(shè)計(jì)邏輯。

靈活性和設(shè)計(jì)范圍。 任何數(shù)字電路,無論復(fù)雜程度如何,都可以在 FPGA 上設(shè)計(jì),前提是該芯片包含足夠數(shù)量的邏輯塊來模擬設(shè)計(jì)。因此,從技術(shù)上講,F(xiàn)PGA 可用于設(shè)計(jì)任何外圍設(shè)備或執(zhí)行任何計(jì)算任務(wù)。

它們還可以被編程為具有多個(gè)定時(shí)器、通道 UART 或通道脈沖寬度調(diào)制 (PWM) 發(fā)生器——這與不提供這種靈活性的微控制器不同。這是因?yàn)闊o法更改微控制器中的芯片組以適應(yīng)應(yīng)用程序。相反,它們具有通用計(jì)算單元和內(nèi)置外圍設(shè)備(例如定時(shí)器、GPIO、中斷和串行接口)。

FPGA 的這種靈活性為專門設(shè)計(jì)的工程師提供了更大的能力。

模擬因素。通常,在任何嵌入式系統(tǒng)中,控制器或處理器與提供模擬輸入的傳感器或需要來自控制器或處理器的模擬輸出的執(zhí)行器耦合。

現(xiàn)場(chǎng)可編程模擬陣列 (FPAA) 也是讓設(shè)計(jì)人員對(duì)復(fù)雜模擬電路進(jìn)行編程的一種選擇。許多 FPGA 芯片都包含 FPAA,因此可以針對(duì)數(shù)字電路對(duì)芯片進(jìn)行編程處理模擬信號(hào)。這些混合信號(hào)芯片包含模數(shù)轉(zhuǎn)換器 (ADC) 或數(shù)模轉(zhuǎn)換器 (DAC) 外圍設(shè)備,以及模擬信號(hào)調(diào)節(jié)塊。

此類設(shè)備中的輸出引腳可以根據(jù)該引腳上負(fù)載的需要,針對(duì)驅(qū)動(dòng)強(qiáng)度和轉(zhuǎn)換速率進(jìn)行編程。這是 FPGA 如何提供更大靈活性的另一個(gè)示例,能夠?yàn)樘囟☉?yīng)用提供模擬編程。

可重用性。FPGA 可以重新編程以模擬任何其他數(shù)字(或模擬)電路,因此電路永遠(yuǎn)不會(huì)固定。當(dāng)芯片上電時(shí),根據(jù)配置數(shù)據(jù)的數(shù)字設(shè)計(jì)被加載到芯片上。每次芯片上電時(shí)都會(huì)發(fā)生這種情況。

下一次啟動(dòng)新設(shè)計(jì)時(shí)可以更改配置數(shù)據(jù)。由于芯片是可重復(fù)使用的,工程師可以在同一芯片上無休止地試驗(yàn)不同的數(shù)字設(shè)計(jì)。

單芯片解決方案。FPGA 為應(yīng)用程序提供單芯片解決方案。這不同于通常必須與其他外圍設(shè)備(可能不是內(nèi)置的)、接口或 ASIC 接口的微控制器。

實(shí)時(shí)處理。FPGA 不是通用計(jì)算 IC,而是用于在芯片上設(shè)計(jì)專用計(jì)算設(shè)備。與運(yùn)行程序(機(jī)器代碼)的微控制器不同,數(shù)據(jù)路徑和 ALU 在 FPGA 上制造以解決計(jì)算任務(wù)。

這意味著 FPGA 不是運(yùn)行程序,而是被編程為執(zhí)行特定任務(wù)。這種在硬件級(jí)別執(zhí)行的邏輯允許實(shí)時(shí)處理數(shù)據(jù)和信息。這就是為什么 FPGA 通常用于高速、關(guān)鍵的應(yīng)用程序,在這些應(yīng)用程序中,微控制器可能會(huì)因?yàn)橐蕾嚧a在指令集有限的固定架構(gòu)上運(yùn)行而出現(xiàn)故障。

~

鑒于這些優(yōu)勢(shì),F(xiàn)PGA 是高速并行處理的理想選擇,在這些情況下,要處理的數(shù)據(jù)量很大,或者處理芯片需要定制的外圍設(shè)備、可配置的模擬輸出或時(shí)間關(guān)鍵的專用應(yīng)用程序(這在其他情況下是不可能的)通用 CPU)。

FPGA 提供了對(duì)復(fù)雜集成設(shè)計(jì)的訪問,否則這些設(shè)計(jì)只能以高昂的工程成本獲得。這種芯片就像****大小板上的微型半導(dǎo)體鑄造廠。

在實(shí)際應(yīng)用中,F(xiàn)PGA 用于產(chǎn)量較低的特定垂直領(lǐng)域。它廣泛用于 ASIC 設(shè)計(jì)原型制作,通常無需冗長(zhǎng)的制造過程即可快速上市。

常見應(yīng)用包括數(shù)字信號(hào)處理、圖像處理、生物信息學(xué)、密碼學(xué)、軟件設(shè)計(jì)的無線電、醫(yī)學(xué)成像、語音識(shí)別、電信、數(shù)據(jù)中心、航空航天電子和安全系統(tǒng)。

相比之下,微控制器用于一般嵌入式應(yīng)用,例如汽車、消費(fèi)和工業(yè)電子產(chǎn)品、通信系統(tǒng)等。

FPGA 的缺點(diǎn) FPGA
有一些明顯的缺點(diǎn),具體取決于應(yīng)用。這些包括復(fù)雜性、高功率要求和價(jià)格點(diǎn)。

成本——FPGA 板比微控制器成本更高(大約 50 美元,而 10 美元或更低)。這是嵌入式設(shè)計(jì)培訓(xùn)課程開始時(shí)通常不討論 FPGA 芯片的原因之一。

然而,F(xiàn)PGA 是可重復(fù)使用的,從而賦予它們更大的長(zhǎng)期價(jià)值,特別是對(duì)于研發(fā)或原型目的。在其他情況下,盡管微控制器的速度低且架構(gòu)通用,但它們通常更實(shí)惠。

image.png


FPGA開發(fā)板。

高功率要求。大多數(shù) FPGA 板由 48V 背板供電。不幸的是,高功率要求使它們不適用于多種嵌入式應(yīng)用。將此與微控制器板進(jìn)行比較,微控制器板通常只需要 5 或 3.3 V 電源即可運(yùn)行。它們是設(shè)計(jì)任何電池供電的便攜式嵌入式設(shè)備的不二之選。

揮發(fā)性。FPGA 的數(shù)字設(shè)計(jì)通過配置數(shù)據(jù)傳遞給它。通電后,電路板會(huì)進(jìn)行相應(yīng)配置并開始運(yùn)行。配置數(shù)據(jù)必須在主模式下存儲(chǔ)在閃存中,或者在從模式下由處理器通過邊界掃描 (JTAG) 接口傳遞。一旦電路板斷電,這些數(shù)據(jù)就會(huì)丟失。

大多數(shù) FPGA 的易失性使其不適合存在斷電或中斷風(fēng)險(xiǎn)的應(yīng)用。

啟動(dòng)時(shí)間。FPGA 每次上電時(shí)都必須加載配置數(shù)據(jù)。這會(huì)顯著增加其操作的啟動(dòng)時(shí)間。然而,一旦加載了配置數(shù)據(jù),F(xiàn)PGA 板的運(yùn)行速度通常比微控制器快得多。

對(duì)于某些需要在激活后立即采取行動(dòng)的關(guān)鍵應(yīng)用程序,啟動(dòng)時(shí)間可能是個(gè)問題。FPGA 不適合嵌入式設(shè)備頻繁開關(guān)機(jī)的應(yīng)用。由于嵌入式設(shè)備的高功率要求,也不可能讓這些芯片在嵌入式設(shè)備中持續(xù)通電。

高引腳數(shù)。通常,大多數(shù) FPGA 都有多個(gè)引腳。因此,這些芯片不適合計(jì)算處理器或控制器必須緊湊的狹小空間或受限嵌入式應(yīng)用。相比之下,有許多具有八個(gè)或更少引腳的微控制器,很容易安裝在小型設(shè)備中。

復(fù)雜。使用 FPGA 需要詳細(xì)了解數(shù)字設(shè)計(jì)和計(jì)算機(jī)體系結(jié)構(gòu)。它不像微控制器那么簡(jiǎn)單。與軟件開發(fā)所需的高級(jí)編程或匯編語言相比,F(xiàn)PGA 的語言(VHDL 或 Verilog)學(xué)習(xí)起來相當(dāng)復(fù)雜。

雖然大多數(shù)用于 FPGA 開發(fā)的工具都是免費(fèi)提供的,但它們使用起來很復(fù)雜,而且很難選擇理想的電路板。數(shù)字設(shè)計(jì)中也有許多并發(fā)癥、陷阱和注意事項(xiàng),只能通過時(shí)間和實(shí)踐經(jīng)驗(yàn)來學(xué)習(xí)。

設(shè)計(jì)限制。只能將數(shù)字設(shè)計(jì)的邏輯塊與 FPGA 互連。在門級(jí)也沒有控制,而且通常合成是非標(biāo)準(zhǔn)的。但是,F(xiàn)PGA 非常適合測(cè)試架構(gòu)或早期 ASIC 設(shè)計(jì)。

耐用性。與微控制器相比,F(xiàn)PGA IC 的使用壽命較短。雖然微控制器可以在設(shè)備中使用數(shù)十年,但嵌入式設(shè)備中的 FPGA 芯片通常需要每?jī)傻轿迥旮鼡Q一次。

高成本、引腳、數(shù)量和功率要求,以及復(fù)雜性、易變性和設(shè)計(jì)限制意味著 FPGA 在嵌入式應(yīng)用中不太常見。目前,它們僅用于需要專用架構(gòu)、定制外圍設(shè)備或通過并行處理執(zhí)行關(guān)鍵機(jī)器代碼的高功率設(shè)備。

結(jié)論
FPGA 有優(yōu)點(diǎn)也有缺點(diǎn)。這取決于應(yīng)用程序??偟膩碚f,它們使工程師能夠更好地訪問硬件設(shè)計(jì)并能夠探索集成電路,而微控制器是不可能做到的。但這需要一定程度的知識(shí)和經(jīng)驗(yàn)。全面了解嵌入式設(shè)計(jì)工程是值得的。

微控制器和處理器提供軟件經(jīng)驗(yàn),而 FPGA 提供硬件知識(shí)。就像第一次從頭開始構(gòu)建代碼一樣,經(jīng)驗(yàn)會(huì)隨著時(shí)間的推移變得更容易。


*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。



關(guān)鍵詞: FPGA

相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉