FPGA 與微控制器:嵌入式設計的另一種方法
大多數(shù)工程師通過學習微控制器開始嵌入式系統(tǒng)培訓。微控制器在單個集成電路上需要一個完整的微型計算系統(tǒng)。CPU、RAM、ROM 和輸入/輸出外圍設備都在一個拇指大小的片上系統(tǒng) (SoC) 上——包含所有或大部分電子元件的集成電路。
除了組件之外,嵌入式設計的另一部分涉及軟件開發(fā)。微控制器(和微處理器)有一個在大小和操作上保持固定的指令集,這意味著工程師通過匯編語言或嵌入式 C 使用相同的指令來解決計算任務,通常用于實際應用程序。
好消息是,如果有編程語言方面的經(jīng)驗,使用微控制器學習起來相對簡單。流行的版本,如 AVR、8051、PIC 和 ARM,使工程師能夠接觸到嵌入式系統(tǒng)的軟件開發(fā)方面。因此,有幾種選擇。
然而,還有另一種嵌入式軟件開發(fā)方法是微控制器所不具備的能力:基于硬件的嵌入式設計。為此,需要現(xiàn)場可編程門陣列 (FPGA)。
FPGA 由 Xilinx 于 1984 年發(fā)明。它們是包含數(shù)百萬個邏輯門的集成電路,這些邏輯門以電子方式配置以執(zhí)行特定任務(這意味著門是現(xiàn)場可編程的)。
讓我們將 FPGA 與計算機進行比較。計算機(可以是微控制器、微處理器或圖形處理器)是一種基于指令集執(zhí)行任務的數(shù)字電子電路。這些指令包含由計算機的數(shù)字電路在數(shù)據(jù)上實現(xiàn)的機器代碼,其中數(shù)據(jù)在寄存器或存儲芯片上存儲和操作。
或者,F(xiàn)PGA 將設計帶到硬件中,因此工程師可以從架構(gòu)級別設計一個(簡單的)計算設備來執(zhí)行特定的任務或應用程序。
微控制器與 FPGA
盡管 FPGA 通常用于設計數(shù)字電路以執(zhí)行簡單的計算任務,但在計算方面它無法與微控制器相提并論。微控制器和微處理器是真正的具有復雜架構(gòu)的計算設備。
FPGA 可與專用集成電路 (ASIC) 相媲美,并可與其一起工作。ASIC 是為特定任務定制的,而不是用于一般用途。事實上,任何 ASIC 功能都可以在 FPGA 上定制設計和制造。
微控制器讓具有匯編或高級編程語言專業(yè)知識的工程師為計算機設計軟件,而 FPGA 允許設計簡單的計算設備。這種基于硬件的嵌入式設計需要對數(shù)字電路和計算機體系結(jié)構(gòu)有詳細的了解。
語言上的一些差異:
微控制器使用匯編語言或高級語言(例如“C”)進行編程,然后將其轉(zhuǎn)換為機器代碼以在 CPU 上執(zhí)行。
FPGA 芯片使用 Verilog 或超高速集成電路硬件描述語言 (VHDL) 進行編程。VHDL 被轉(zhuǎn)換為在 FPGA 芯片上制造的數(shù)字邏輯塊,以設計用于特定應用的定制計算機。通過使用 VHDL 或 Verilog,工程師可以從根級別設計數(shù)據(jù)路徑和算術(shù)邏輯單元 (ALU) 硬件。如果有足夠的邏輯塊來支持設計,甚至可以在 FPGA 上設計微控制器。
首先了解微控制器和微處理器是有意義的,因為了解計算機如何運行以及如何編程以執(zhí)行特定任務非常重要。微控制器、FPGA 和 CPLD(復雜可編程邏輯設備)是獨立的嵌入式系統(tǒng),各有優(yōu)缺點。
FPGA 將這種知識擴展到硬件電路,了解如何構(gòu)建計算機。
FPGA 的優(yōu)勢
FPGA 不僅可以作為學習數(shù)字設計和計算機體系結(jié)構(gòu)的一種方式,而且這些芯片還可以在嵌入式系統(tǒng)工程中提供實際應用。它們提供了 ASIC 的替代方案,具有某些優(yōu)勢……
多線程。 FPGA 可以同時或以并行形式處理多條指令。與微控制器相比,這是一個很大的優(yōu)勢,微控制器一次只能按順序執(zhí)行一條指令。這意味著 FPGA 在處理任務時通常要快得多。由于這些過程在硬件級別進行邏輯編碼,因此 FPGA 芯片非常適合專用或?qū)I(yè)應用,包括預處理傳感器數(shù)據(jù)、密碼學、邏輯電路設計、數(shù)字音頻應用、視頻流等。
另一方面,微控制器具有帶有專用指令集的通用架構(gòu),這使得它們更適合以較慢的速度解決可能需要標準接口的復雜計算任務。
總的來說,由于這種多線程特性,當應用程序中要處理的數(shù)據(jù)量很大時,F(xiàn)PGA 具有優(yōu)勢。如今,F(xiàn)PGA 板可提供內(nèi)置 CPU,因此特定應用程序處理只需要設計邏輯。
靈活性和設計范圍。 任何數(shù)字電路,無論復雜程度如何,都可以在 FPGA 上設計,前提是該芯片包含足夠數(shù)量的邏輯塊來模擬設計。因此,從技術(shù)上講,F(xiàn)PGA 可用于設計任何外圍設備或執(zhí)行任何計算任務。
它們還可以被編程為具有多個定時器、通道 UART 或通道脈沖寬度調(diào)制 (PWM) 發(fā)生器——這與不提供這種靈活性的微控制器不同。這是因為無法更改微控制器中的芯片組以適應應用程序。相反,它們具有通用計算單元和內(nèi)置外圍設備(例如定時器、GPIO、中斷和串行接口)。
FPGA 的這種靈活性為專門設計的工程師提供了更大的能力。
模擬因素。通常,在任何嵌入式系統(tǒng)中,控制器或處理器與提供模擬輸入的傳感器或需要來自控制器或處理器的模擬輸出的執(zhí)行器耦合。
現(xiàn)場可編程模擬陣列 (FPAA) 也是讓設計人員對復雜模擬電路進行編程的一種選擇。許多 FPGA 芯片都包含 FPAA,因此可以針對數(shù)字電路對芯片進行編程并處理模擬信號。這些混合信號芯片包含模數(shù)轉(zhuǎn)換器 (ADC) 或數(shù)模轉(zhuǎn)換器 (DAC) 外圍設備,以及模擬信號調(diào)節(jié)塊。
此類設備中的輸出引腳可以根據(jù)該引腳上負載的需要,針對驅(qū)動強度和轉(zhuǎn)換速率進行編程。這是 FPGA 如何提供更大靈活性的另一個示例,能夠為特定應用提供模擬編程。
可重用性。FPGA 可以重新編程以模擬任何其他數(shù)字(或模擬)電路,因此電路永遠不會固定。當芯片上電時,根據(jù)配置數(shù)據(jù)的數(shù)字設計被加載到芯片上。每次芯片上電時都會發(fā)生這種情況。
下一次啟動新設計時可以更改配置數(shù)據(jù)。由于芯片是可重復使用的,工程師可以在同一芯片上無休止地試驗不同的數(shù)字設計。
單芯片解決方案。FPGA 為應用程序提供單芯片解決方案。這不同于通常必須與其他外圍設備(可能不是內(nèi)置的)、接口或 ASIC 接口的微控制器。
實時處理。FPGA 不是通用計算 IC,而是用于在芯片上設計專用計算設備。與運行程序(機器代碼)的微控制器不同,數(shù)據(jù)路徑和 ALU 在 FPGA 上制造以解決計算任務。
這意味著 FPGA 不是運行程序,而是被編程為執(zhí)行特定任務。這種在硬件級別執(zhí)行的邏輯允許實時處理數(shù)據(jù)和信息。這就是為什么 FPGA 通常用于高速、關鍵的應用程序,在這些應用程序中,微控制器可能會因為依賴代碼在指令集有限的固定架構(gòu)上運行而出現(xiàn)故障。
~
鑒于這些優(yōu)勢,F(xiàn)PGA 是高速并行處理的理想選擇,在這些情況下,要處理的數(shù)據(jù)量很大,或者處理芯片需要定制的外圍設備、可配置的模擬輸出或時間關鍵的專用應用程序(這在其他情況下是不可能的)通用 CPU)。
FPGA 提供了對復雜集成設計的訪問,否則這些設計只能以高昂的工程成本獲得。這種芯片就像****大小板上的微型半導體鑄造廠。
在實際應用中,F(xiàn)PGA 用于產(chǎn)量較低的特定垂直領域。它廣泛用于 ASIC 設計原型制作,通常無需冗長的制造過程即可快速上市。
常見應用包括數(shù)字信號處理、圖像處理、生物信息學、密碼學、軟件設計的無線電、醫(yī)學成像、語音識別、電信、數(shù)據(jù)中心、航空航天電子和安全系統(tǒng)。
相比之下,微控制器用于一般嵌入式應用,例如汽車、消費和工業(yè)電子產(chǎn)品、通信系統(tǒng)等。
FPGA 的缺點 FPGA
有一些明顯的缺點,具體取決于應用。這些包括復雜性、高功率要求和價格點。
成本——FPGA 板比微控制器成本更高(大約 50 美元,而 10 美元或更低)。這是嵌入式設計培訓課程開始時通常不討論 FPGA 芯片的原因之一。
然而,F(xiàn)PGA 是可重復使用的,從而賦予它們更大的長期價值,特別是對于研發(fā)或原型目的。在其他情況下,盡管微控制器的速度低且架構(gòu)通用,但它們通常更實惠。
FPGA開發(fā)板。
高功率要求。大多數(shù) FPGA 板由 48V 背板供電。不幸的是,高功率要求使它們不適用于多種嵌入式應用。將此與微控制器板進行比較,微控制器板通常只需要 5 或 3.3 V 電源即可運行。它們是設計任何電池供電的便攜式嵌入式設備的不二之選。
揮發(fā)性。FPGA 的數(shù)字設計通過配置數(shù)據(jù)傳遞給它。通電后,電路板會進行相應配置并開始運行。配置數(shù)據(jù)必須在主模式下存儲在閃存中,或者在從模式下由處理器通過邊界掃描 (JTAG) 接口傳遞。一旦電路板斷電,這些數(shù)據(jù)就會丟失。
大多數(shù) FPGA 的易失性使其不適合存在斷電或中斷風險的應用。
啟動時間。FPGA 每次上電時都必須加載配置數(shù)據(jù)。這會顯著增加其操作的啟動時間。然而,一旦加載了配置數(shù)據(jù),F(xiàn)PGA 板的運行速度通常比微控制器快得多。
對于某些需要在激活后立即采取行動的關鍵應用程序,啟動時間可能是個問題。FPGA 不適合嵌入式設備頻繁開關機的應用。由于嵌入式設備的高功率要求,也不可能讓這些芯片在嵌入式設備中持續(xù)通電。
高引腳數(shù)。通常,大多數(shù) FPGA 都有多個引腳。因此,這些芯片不適合計算處理器或控制器必須緊湊的狹小空間或受限嵌入式應用。相比之下,有許多具有八個或更少引腳的微控制器,很容易安裝在小型設備中。
復雜。使用 FPGA 需要詳細了解數(shù)字設計和計算機體系結(jié)構(gòu)。它不像微控制器那么簡單。與軟件開發(fā)所需的高級編程或匯編語言相比,F(xiàn)PGA 的語言(VHDL 或 Verilog)學習起來相當復雜。
雖然大多數(shù)用于 FPGA 開發(fā)的工具都是免費提供的,但它們使用起來很復雜,而且很難選擇理想的電路板。數(shù)字設計中也有許多并發(fā)癥、陷阱和注意事項,只能通過時間和實踐經(jīng)驗來學習。
設計限制。只能將數(shù)字設計的邏輯塊與 FPGA 互連。在門級也沒有控制,而且通常合成是非標準的。但是,F(xiàn)PGA 非常適合測試架構(gòu)或早期 ASIC 設計。
耐用性。與微控制器相比,F(xiàn)PGA IC 的使用壽命較短。雖然微控制器可以在設備中使用數(shù)十年,但嵌入式設備中的 FPGA 芯片通常需要每兩到五年更換一次。
高成本、引腳、數(shù)量和功率要求,以及復雜性、易變性和設計限制意味著 FPGA 在嵌入式應用中不太常見。目前,它們僅用于需要專用架構(gòu)、定制外圍設備或通過并行處理執(zhí)行關鍵機器代碼的高功率設備。
結(jié)論
FPGA 有優(yōu)點也有缺點。這取決于應用程序??偟膩碚f,它們使工程師能夠更好地訪問硬件設計并能夠探索集成電路,而微控制器是不可能做到的。但這需要一定程度的知識和經(jīng)驗。全面了解嵌入式設計工程是值得的。
微控制器和處理器提供軟件經(jīng)驗,而 FPGA 提供硬件知識。就像第一次從頭開始構(gòu)建代碼一樣,經(jīng)驗會隨著時間的推移變得更容易。
*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。