題:
什麼時候可以使用FPGA而不能使用微控制器/ DSP?
Jolle
2014-01-22 19:41:32 UTC
view on stackexchange narkive permalink

我必須在高級微控制器課程和高級FPGA課程之間進行選擇。

我在這兩個科目上都有入門課程,現在讓我感到困擾的是我已經非常擅長微控制器的固件開發,而我卻看不到我可以用FPGA和FPGA來做哪些產品/項目。 不能使用微控制器/ DSP。

您能提出一些微控制器或DSP不夠用的應用程序/產品/項目嗎?為什麼?

相機?高速相機?高速圖像處理?

主要原因是:1. 100%確定性反應; 2.並行的巨大潛力。但是,許多設計都在FPGA中集成了“排序核心” CPU,因為為處理器編寫瘋狂的邏輯要比為硬件編程容易得多。
每個設備可能實現的功能之間的區別不是很清楚。每種方法都有優勢,並且雙方都有解決方案。還沒有參加過入門課程,希望您能理解,所以我想知道您的要求是什麼。
我正在尋找在大多數情況下微控制器不夠用或FPGA是顯而易見的選擇的應用程序。
在入門課程中,您發現哪一個更容易理解?然後選擇另一種上的高級,因為(也許)您將能夠自己學習更簡單的一種。
http://stackoverflow.com/questions/7458850/what-are-some-practical-applications-of-an-fpga
十 答案:
pjc50
2014-01-22 22:43:32 UTC
view on stackexchange narkive permalink

另請參閱 FPGA與微控制器

高速圖像或視頻處理就是一個很好的例子。或處理不是直接光學圖像的“圖像”,例如雷達或基於激光的系統。

要考慮的關鍵是吞吐量延遲要求。微控制器可以每微秒服務一次中斷(非常粗略)。它一次只能處理一個中斷。如果需要精心處理,則限制了在特定時間內可以服務的數量。

使用FPGA,通常可以立即響應輸入事件。 (嗯,在下一個時鐘週期)。您可以並行處理許多處理單元。如果您知道您的過濾器需要20個週期,那麼這完全與其他任何事情無關。

高度並行的整數密集型計算在FPGA上效果最佳,特別是在存在復雜的數據依賴性的情況下。但是,它們的板載內存並不多。您可以在側面添加一些DRAM,但要花一些時間。

您可能還需要一個用於外圍設備的設備,或者說一些高速數字總線。您不能將HDMI插入微控制器或從微控制器中彈出。您不能在一個周圍構建PCI卡。

Dave Tweed
2014-01-22 21:01:26 UTC
view on stackexchange narkive permalink

好吧,我在FPGA中進行高清視頻的實時處理。我的某些工作可以在GPU芯片中完成,但不能在微控制器或DSP上完成。 FPGA更加靈活。

許多系統結合了FPGA和MCU / DSP來充分利用兩者的優勢。我可能正在從事的一個項目涉及視頻流中的對象識別。初步步驟(噪聲消除,歸一化,邊緣檢測等)最好在FPGA中完成,但是決定哪些低級功能是被識別對象的一部分的高級邏輯最好在CPU上完成(

最終,您將希望在這兩個領域都精通,所以實際上只是一個問題,首先要做哪個。

Adam Davis
2014-01-22 23:47:18 UTC
view on stackexchange narkive permalink

簡而言之,在需要對大量數據執行少量處理的地方,FPGA很好;而在需要對少量數據執行大量處理的地方,CPU很好。

HDMI視頻流是很多數據。在一般的視頻情況下,它可以由CPU,GPU或ASIC完成,但是如果您需要對其做一點工作(例如,添加覆蓋),則可以選擇FPGA。

音頻流不是很多數據,但是如果您需要對它進行語音識別,那麼您將首選CPU而不是FPGA。

雖然您可以進行軟件定義的廣播在CPU中,使用FPGA可以比在CPU中更輕鬆地處理更大範圍的頻譜。

雖然您可以使用FPGA製作鍵盤控制器,但微控制器將成為現實。與FPGA相比,它更便宜,功耗更低,並且更易於開發高級鍵盤軟件(宏,遊戲功能,重新映射)。

當然,您可以權衡取捨,在其中任何一個中進行任何操作,但是如果精通這兩個方面,那麼您將能夠更加權衡權衡,並且避免因為給定問題選擇錯誤的解決方案而導致的零件成本或開發時間增加。

Olin Lathrop
2014-01-22 20:50:46 UTC
view on stackexchange narkive permalink

通常,可以使用微控制器來完成這項工作。微控制器通過執行順序指令來執行邏輯。

FPGA可以執行邏輯,因為其硬件門在邏輯上是這樣做的。這意味著它可以更快地執行操作,並且可以同時執行許多此類操作。在FPGA中創建和調試與微控制器中相同的邏輯通常更為複雜且困難,因此,當需要額外的速度和低延遲時,可以使用FPGA。

embedded.kyle
2014-01-24 03:30:19 UTC
view on stackexchange narkive permalink

我還沒有提到的一個應用是微電子工程或MCU / CPU / GPU / ASIC芯片本身的設計。這些芯片通常通過在HDL中進行設計來原型化,然後在FPGA中實現。這使它們在最終使用HDL創建在處理器或ASIC中生產實際矽所需的佈局之前,可以更輕鬆,更便宜,更快速地進行測試和修改。

評論者以軟核芯片(儘管它們有拼寫錯誤並稱為排序核芯片)。您可以使用ARM / 8051 / etc。軟核以及所需的任何軟核外圍設備,並且實質上設計了自己的定制微控制器,該微控制器在FPGA中實現。然後,假設您有足夠的資源,就可以將其製作到自己的微控制器中。

如果您喜歡這種應用,請查看 OpenCores有什麼可能。

LeoR
2014-01-23 19:48:55 UTC
view on stackexchange narkive permalink

我們製造了廣泛使用FPGA的雷達儀器(主要是合成孔徑)。我認為微控制器無法輕鬆滿足嚴格的時序要求。我相信很多LIDAR儀器也使用FPGA。

基本上,凡是納秒級時序要求的東西都需要FPGA或ASIC。

Void Star
2014-01-23 05:03:30 UTC
view on stackexchange narkive permalink

微控制器只能順序地處理數據,一次只能處理一條指令,因此,如果您的操作非常昂貴,則可能需要以某種方式使計算並行化。處理音頻/視頻就是一個很好的例子。為了滿足該需求,已經開發了可以並行執行某些任務的數字信號處理器,但是它們的通用性不足以實現任何任意算法,因此這些處理器將適用於許多任務,但不能滿足所有任務。 FPGA是通用的硬件。由於您可以本質上定義自己的硬件設計,然後將其下載到FPGA,因此只要有足夠的資源,它就可以實現可以想像的任何算法。

一個具體示例:Ken Perlin建議他的單純噪聲算法的硬件實現。使用傳統的CPU或微控制器可以相對較快地完成此操作,但是使用定制硬件可以使其變得超快。既然我懷疑DSP是否可以做到這一點,最簡單的方法就是FPGA。當然,困難的方法是為您製造一個實際的物理芯片,這非常昂貴。 http://www.csee.umbc.edu/~olano/s2002c36/ch02.pdf

stanri
2016-02-08 00:20:32 UTC
view on stackexchange narkive permalink

這裡沒有一個答案是數據採集。如果您想使用ADC來採樣200Mhz的信號(例如,RF信號)並對其進行處理,則微控制器根本無法足夠快地處理數據。典型的DAQ FPGA板將接收,過濾,執行 DDC並將RF數據以低得多的頻率傳遞給CPU。 FPGA還可以在RF頻譜上執行FFT和信道化操作。

另一個應用程序是數據包路由,例如管理一個(或多個)每個運行速度為10Gb / s的 XAUI以太網接口的設備。這些FPGA為不同的目的地過濾和調度數據包隊列。微控制器/常規CPU將無法處理這些接口的帶寬。

supercat
2014-01-23 03:21:40 UTC
view on stackexchange narkive permalink

微處理器和微控制器可以使用相對較少的電路來完成很多工作的根本原因是,如果微處理機僅需要每秒執行1000次復雜的計算,並且需要20微秒的時間(因此微處理機將在計算的2%的時間),其餘98%的時間將用於該計算的大多數硬件都可用於其他目的。因此,只要不需要同時使用這些功能,微控制器就可以使用少量的硬件來執行大量不同的功能。

FPGA中的電路數量通常可與微控制器(FPGA的大小相差幾個數量級,微控制器也一樣,但范圍重疊)。但是,與微控制器不同,微控制器的電路元件的連接方式有助於將其用於許多非同時任務,而FPGA將被設計為“全時”將其電路的一部分專用於各種任務。如果要讓微控制器對100個輸入中的每個輸入上發生的脈衝數進行計數,則僅限於對足夠慢的脈衝進行計數,以使控制器能夠逐個順序地處理它們-如果所有輸入都可以產生脈衝獨立地,即使是快速控制器,也很難在每個輸入每秒計數數千個以上的脈衝。相比之下,如果使用FPGA來處理這項工作,則它可以將計數器電路專用於每個輸入,即使每個輸入獨立地每秒產生數千萬次脈衝,也可以毫無困難地對來自每個輸入的每個脈衝進行計數。 / p>

Lee Timothy
2014-12-09 12:36:57 UTC
view on stackexchange narkive permalink

FPGA實現了硬件邏輯電路或功能塊,理論上它可以實現您想要的任何東西。而且這些模塊同時運行,不太可能像傳統的MCU那樣逐行運行程序。因此,FPGA的性能要比MCU好得多,但是它需要了解與編程語言在語法,樣式和概念上不同的HDL或VHDL語言。


我可以說,它可以實現因此,可以實現帶有功能塊的MCU來促進高性能的開發就不足為奇了。賽靈思為嵌入式MCU提供了一個功能塊,稱為Microblaze。因此,您還可以在FPGA中執行嵌入式系統程序。


例如,您想實現一個可編程的音頻均衡器,而諸如FFT之類的最繁重的計算部分可以通過功能塊來實現,而不是通過功能塊來實現。運行軟件計算。但是某些簡單的任務,例如LCD,I / O接口可以由MCU完成。 FPGA使您可以同時擁有MCU嵌入式系統和硬件功能塊。



該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...