題:
為什麼FPGA無處不在?
Utku
2015-09-13 17:26:57 UTC
view on stackexchange narkive permalink

在閱讀關於FPGA的文章時,如果我理解正確的話,它們基本上是完全可配置的邏輯門電路。因此,可以與他們一起設計任何東西。可以以最定制的方式設計一切,因此可以以微控制器更高效的方式達到相同的目的。有了它,看起來FPGA可以隨時隨地擊敗微控制器。所以我的問題是,如果FPGA確實如此出色,是什麼使它們無法比微控制器流行得多?從這個角度來看,在我看來,FPGA應該早就淘汰了微控制器。那麼為什麼不這樣呢?是成本,編寫FPGA的困難還是完全其他?

[Soft core Processors VS Hard core Processors]的可能副本(http://electronics.stackexchange.com/questions/55377/soft-core-processors-vs-hard-core-processors)
您可能還需要閱讀以下主題:http://electronics.stackexchange.com/questions/4382/fpgas-vs-microcontrollers?rq=1
直升機比汽車更靈活,那麼為什麼有人仍然使用汽車上下班呢?
因為所有FPGA公司都為您提供了極其可怕的專有工具,這些工具具有巨大的學習曲線,並且大多數開發人員無法使用。用完全開放的工具鏈代替它,它們可能無處不在。
@R .. ...或至少不是絕對不得已的選擇。
八 答案:
Olin Lathrop
2015-09-13 17:41:47 UTC
view on stackexchange narkive permalink

您忽略了許多設計選擇因素:

  1. 成本 b>。對於相同的邏輯複雜度,FPGA比微處理器昂貴。

  2. 邏輯複雜度 b>。與直接使用微控制器中的相同數量的門相比,可執行代碼可以實現更為複雜的邏輯。

  3. 易於開發 b>。編寫可執行代碼比為所有小問題定義邏輯要容易得多。即使是微不足道的微控制器項目也具有數千行代碼。開發等效的邏輯定義將花費更長的時間,並且調試和驗證也更加困難。

  4. 功耗 b>。由於FPGA旨在用於微處理機無法處理的高速操作(否則您將使用微處理機),因此它們並未針對低功耗進行優化。這使它們不適用於某些低功耗應用。一些微控制器的睡眠電流低於1 µA,並且在慢速時鐘頻率下僅能以幾µA的電流運行。嘗試找到可以做到這一點的FPGA。

    ol>

    與micros相比,FPGA的主要優勢在於它們速度更快並且可以並行執行更多操作。除此之外,您寧願使用微型。因此,在設計過程中,通常是從微型芯片開始,然後在確實需要速度和/或併發高速運行時勉強使用FPGA。即使這樣,您也只能在FPGA中實現對速度至關重要的部分,而將較低的速度控制功能等保留在微控制器中。

“即使那樣,您也只能在FPGA中實現對速度至關重要的部件,而將較低的速度控制功能等保留在微控制器中。”那是因為FPGA的開發很痛苦,對吧?
@Utku:是的,雖然上面的原因1-2通常也適用,但這就是上面的原因3。對於同一任務,FPGA的成本效益不如微處理器,除非*任務具有如此高的速度要求,以至於微處理器無法做到。
很容易看出這個答案是從CPU用戶的角度編寫的。“當您確實需要速度和/或併發高速操作時,不情願地使用FPGA”。他們並不*壞*。在有些應用中,人們甚至不會“想”通過FPGA使用CPU。
我通常的解釋方式是:在CPU上並行執行操作很困難,在FPGA中串行執行操作很困難。
如果您是為了娛樂而hacking,只需在您的FPGA中實現一個HDL微控制器並充分利用兩者。
關於FPGA要記住的一件大事:邏輯的可重配置性是有代價的-FPGA實現的等效邏輯要比FPGA本身複雜得多。與硬邏輯中的等效實現相比,所有查找表,路由矩陣組件等消耗的矽面積和功耗要大得多。這意味著,與在微控制器,通用CPU和FPGA本身中直接在矽中構建相同的功能相比,FPGA在所有性能指標(活動和空閒功耗,密度,時鐘速度等)上都更差。
stanri
2015-09-13 22:48:24 UTC
view on stackexchange narkive permalink

我在這裡尚未詳細說明的一個區別是,FPGA以與處理器完全不同的方式使用並表現為FPGA。

FPGA確實很好一遍又一遍地做完全相同的任務。例如,處理視頻,音頻或RF信號。或路由以太網數據包。或模擬流體流動。在任何情況下,您都會非常快速地拋出大量相同類型的數據,並且您希望以相同的方式處理所有這些數據。或者您想重複運行相同的算法。 FPGA實際上並沒有啟動和停止的“任務” [1],它的全部工作是對打開的所有數據執行相同的操作。它不會改變齒輪,也不會做其他任何事情。它是最終的生產線工人。它將永久地重複做同樣的事情,直到永遠。

CPU是靈活性的縮影。可以對它們進行編程以完全執行任何操作,並且可以對它們進行編程以同時執行多種不同的操作。它們具有啟動和停止的任務,變速,多任務,不斷切換和改變功能的功能。

FPGA和CPU完全相反。 CPU的商品是時間-它必須更快地完成工作。應用程序運行得越快越好。

FPGA的商品是空間。您的FPGA只有這麼大,並且只有太多可用的門來執行您想要的任務。在大多數情況下,問題是速度大於速度[2]。

可以使FPGA像CPU一樣工作。您可以將CPU IP內核放入FPGA中,但是由於其他人已經描述的原因,很難證明其合理性[3]。 FPGA和CPU是對立的,兩者都有各自的優缺點,因此都有各自的位置。


注意:

1)FPGA可以是可以執行不同的任務,但是即使那樣,它還是一個預先設計的特定數字。

2)速度也是FPGA設計規範。

3。將CPU放入FPGA的操作相對來說比較頻繁,但是要根據具體應用情況而定。例如,如果您需要一個非常小的微控制器並具有額外的FPGA空間。

最後:這個答案是一個很大的簡化-FPGA的使用非常多樣且非常複雜,這是對通常使用它們的方式。

“或者路由以太網數據包。或者模擬流體流動。” 儘管據我所知,ASIC通常用於前者(至少已量產),而GPU更快,更便宜,功耗更低,並且後者更容易編程。
-1
FPGA可以執行ASIC的任何事情都可以實現@reirab,以降低功耗和降低邊際生產成本。FPGA的優勢在於原型設計和小批量生產,因為ASIC的前期成本要高得多。這意味著只有在完成設計後,您才需要進行大量設計,後者才有意義。
考慮到您可以在FPGA中輕鬆實現CPU(任何認真的CS學生至少應該這樣做一次),聲稱CPU比FPGA更靈活是很奇怪的。FPGA的概念比CPU低得多,因此直接比較它們並沒有多大意義。
這個答案真的困擾我。“ CPU的商品就是時間”,“ FPGA的商品就是空間”。??ASIC和CPU是截然相反的,而FPGA位於中間,兩者兼有。
AiliyqinnpCMT。好。
Spehro Pefhany
2015-09-13 18:13:27 UTC
view on stackexchange narkive permalink

正如Olin所說,諸如Micro之類的東西在許多任務上效率更高,而且幾乎總是可以找到FPGA出現在任何地方使用的Micro。所用矽的面積(以非線性方式轉化為成本)和功耗要小得多。因此,在FPGA上實現“軟” MCU並不少見,但是這種微控制器的成本和性能卻難以承受。

一些現代的FPGA包含一個或多個“硬”核,例如無處不在的ARM系列。而且,它們可能包含專用的內存塊,因為從門外製作內存確實效率很低。在典型的FPGA中,32位微核僅佔矽片面積的一小部分,這使您可以了解相對成本。

開發要困難得多,而IP往往不那麼容易。免費提供Micros和專用SOC解決方案-例如LCD控制器,PCI接口,以太網MAC。部分原因是通過公開HDL邏輯描述,他們轉移了設計,而不僅僅是設計的實例。另一個原因是性能取決於FPGA中邏輯的佈局,這在開發過程中需要付出很多努力。

進一步的複雜性是,大多數複雜的FPGA基於RAM進行配置,而過程成本卻很高。這樣就需要外部非易失性存儲器來存儲板上任何MCU的配置和程序存儲器。上電時必須將該內存加載到RAM中。

FPGA是工具箱中非常有用的工具,但是它們不會在短期內普遍取代MCU或ASIC。

Neil_UK
2015-09-15 13:01:15 UTC
view on stackexchange narkive permalink

工作中矽的最佳用途是ASIC,沒有浪費,但是它們具有巨大的學習曲線,NRE和不靈活性。

有兩種方法可以在芯片中構建靈活性。 a)具有空間優化的ALU,並在存儲的數據上反複使用它。這就是所謂的MCU,需要“不做任何事情”的大面積矽片,程序存儲器,從單元到單元運行的寬總線以及總線訪問開關。 b)具有細粒度的邏輯,並具有一些可選的空間優化部件,例如乘法器,小型RAM和簡單CPU。這就是所謂的FPGA,它需要大面積的“無所事事”的芯片,可編程的開關和連接線。分成串行塊,FPGA最適合需要高速並行操作的任務。當應用程序很繁重,而成本主要由矽成本決定時,這就是自然使用這兩種類型的方法。比矽更合適。 Altera有一些很小的非常低功耗的FPGA可以與極少數的MCU競爭。

Kevin White
2015-09-13 21:59:10 UTC
view on stackexchange narkive permalink

就功耗和芯片利用率而言,FPGA與微處理器相比非常差。

FPGA在邏輯配置電路中消耗了大部分芯片面積,這不適用於微控制器。與微處理器的專用實現相比,可用的互連要多得多。

由於邏輯效率不高,FPGA比諸如微處理器的專用ASIC消耗的功率更多。 / p>

在專用ASIC中,可以在FPGA中實現的任何功能可以更高效,更便宜,功耗更低,電路板空間更小等方式完成。假設卷的大小足以抵消NRE。

如果目標是實現微處理器的全部功能,請確定。一旦完成一項特定任務,就可以在微控制器中識別出很多浪費的矽片-可能是加密引擎在項目中浪費了空間。還是CAN外設?還是浮點單位?FPGA的最佳利用率較低,但是您也不會像微控制器那樣在大範圍內遭受0%的利用率。(另一方面,在時鐘門控的情況下,從功率的角度來看,非常希望大型電路的使用率為0%)
supercat
2015-09-16 00:21:26 UTC
view on stackexchange narkive permalink
基於微處理器的dsystem和後來的微控制器已經能夠通過使用其中的許多單個電路來在不同的時間完成許多不同的任務而實現很大程度的功能。我認為將1976年設計的街機機Tank與在世界第二台微處理器控制的遊戲機Atari 2600上運行的Combat遊戲進行比較具有啟發性。以最低的成本實施類似Tank的遊戲;可以通過插入不同的ROM卡盒來玩不同的遊戲,這是一個很好的獎勵。

遊戲Tank允許兩名玩家在屏幕上駕駛坦克並互相射擊。它具有用於每個戰車X和Y位置的“滑動”計數器,用於每個玩家射擊的X和Y位置,用於每個玩家角度和射擊角度的向上/向下計數器,用於每個玩家得分的計數器,X和Y光柵光束位計數器,以及在這些東西之上的許多控制電路。它具有從ROM提取並顯示比賽場數據的硬件,還具有從兩個ROM提取兩個玩家的戰車形狀和比分並顯示這些得分的硬件。

Atari 2600擁有一個滑動計數器,用於兩個玩家物體,兩個導彈物體中的每個物體以及一個稱為“球”的物體的水平位置,該物體在戰鬥中不使用,但在其他一些遊戲中使用。對於每個播放器對象,它都有硬件輸出存儲在8位鎖存器中的模式以及每個播放器的“延遲”八位鎖存器,只要其他播放器的播放器被複製到主8位鎖存器中形狀已更新。它還具有一個水平光束位置計數器和一個20位運動場形狀的鎖存器,該鎖存器每條掃描線輸出到屏幕兩次,右側副本顯示為左側的重複或反射。它具有檢測衝突的硬件,但不會檢測到任何後果。它沒有具有任何對象的垂直位置的硬件,也沒有光柵光束的垂直位置(!),也沒有與得分保持,得分顯示,遊戲時間等相關的任何硬件。

盒式磁帶中的軟件可以處理2600省略的所有硬件功能。每條掃描線只需要對照光柵的位置檢查每個對象的垂直位置一次,每幀最多更新一次玩家的得分和剩餘遊戲時間即可,玩家的得分存儲在遊戲場上方的掃描線上因此可能會共享用於運動場等的相同硬件。

在FPGA中實現類似“坦克”這樣的遊戲的通常方法是使用單獨的電路來實現不同的功能,這與1976年的街機遊戲機幾乎相同。這種方法可行,但要使用大量的硬件。基於微處理器的方法可以消除一半以上的硬件,而增加一個微處理器,這可能包含比其替換的硬件更少的電路(2600可以實現比Tank更複雜的遊戲,而Tank需要更多的硬件

FPGA非常適合需要一個可以同時執行許多簡單任務的設備的情況。但是,在需要執行許多任務但不需要同時處理它們的情況下,基於微處理器(或基於微控制器)的系統通常會更好一些,因為它們使少量使用變得容易完成大量不同目的的電路。

你也不能埋雷嗎?;-)
-1
如果Combat願意放棄彈跳射擊等其他選擇,則Combat可能有可能將這些地雷作為閃爍的方塊來實現。但是我認為Joe Decuir(程序員)在選擇可玩選項方面做得很好。我的一個疑惑是,如果轟炸機是2倍而不是4倍的精靈,雙翼飛機與轟炸機可能會更有趣。
vini_i
2015-09-13 17:39:44 UTC
view on stackexchange narkive permalink

這完全是成本。當微型器件的價格低至30美分時,便宜的FPGA的價格就在5美元左右。成本似乎並不高,但是當您製作一百萬個放屁的新穎玩具以10美元的價格出售時,FPGA的價格將扼殺您的底線。

成本當然是一個問題,但是要說差別完全是*天真地以為所有微控制器都可以被FPGA取代。
如果成本不是問題,那麼@OlinLathrop可以由FPGA完成微控制器可以做的任何事情。FPGA具有固定軟微控制器內核的能力已證明了這一點。問題在於,可以容納這種內核的FPGA至少要比正在仿真微內核的內核貴一個數量級。
成本可能意味著比單位價格高得多,但這就是您要投入此分析的全部內容。
我不知道你是故意假裝錯過了重點,還是只是密密麻麻。無論哪種方式,您都在回應沒人說的話。所有人都同意FPGA的成本更高,而成本是一個問題。但是,再次聲稱這是“僅”問題是錯誤的。如果我給您提供了許多免費的Micros和FPGA,那麼仍然有很多重要的原因,為什麼您會在許多設計中在FPGA上使用Micros。
成本是一條紅鯡魚。Micros的成本更低,因為它們使用得更多。如果更多地使用FPGA,那麼它們的成本也將降低。以ARM曾經花費超過x86但對低功耗應用非常有吸引力的ARM為例。當功能電話開始出現在市場上時,ARM的成本開始下降。當智能手機開始出現時,使用哪種CPU架構就很容易了,因為ARM的成本大大低於其他任何東西。但是成本很低,因為它們被大量使用。並非相反。
@sleb:不,成本差異不僅僅是由於數量。在FPGA中,每個交付的門所需的矽面積比在微控制器等定制芯片中要大得多。柵極互連層的所有可配置性都佔用了矽片面積。批量生產時,芯片的成本全都與其矽面積有關。
gaborous
2015-09-13 21:59:51 UTC
view on stackexchange narkive permalink

除了添加其他非常好的答案外,我認為FPGA的採用也屬於領域問題:例如,對於神經形態設備,FPGA板變得無處不在,因為對並行性的需求非常大,這就是

如果您推斷神經形態設備的趨勢,您可以想像並行化基於或迫切需要的其他領域可能會更多地採用FPGA。因此,也許FPGA不會在消費級產品中變得無處不在,但它可能適用於特定領域,因為它似乎正在出現在神經形態設備中。

儘管這可能是正確的,但對於完整的答案來說似乎還不夠。也許將其作為評論會更好,或者您可以對此進行擴展。
這不能為問題提供答案。要批評或要求作者澄清,請在其帖子下方發表評論。
@Funkyguy,確實回答了問題。他們實質上是在說FPGA並非無處不在,因為普通的消費類應用不需要並行性,而並行性正是FPGA的強項。


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