題:
FPGA與微控制器
Sushrut J Mair
2010-09-13 11:36:01 UTC
view on stackexchange narkive permalink

我從事Arduino系列(特別是Sanguino)的工作,構建了一些簡單的設備和一個簡單的照像鏡。因此,我對微控制器(特別是Atmel的)非常滿意。我很想知道FPGA與標準微控制器有何不同。我來自技術背景(C / C ++編程),因此喜歡技術解答。請記住,我是電子領域的新手(相對於我的軟件經驗)。 :)

我確實進行了此查詢,這很好,但是我正在尋找更詳細的信息。

謝謝!Sushrut。

附錄-現實世界中是否有使用混合架構(即將fpga與微控制器相結合)的良好示例?
Sushrut J Mair-通常,當您擁有FPGA並需要Micro時,Micro會在FPGA中實現。
是的,假名,同意。但是,我一直在尋找使用FPGA和MCU來設計系統的任何現實情況。其思想是設計的FPGA部分用於實現“可進化”的硬件,該硬件根據系統的輸入變化做出響應和變形,而核心邏輯處理由MCU完成。
五 答案:
ajs410
2010-09-13 22:49:51 UTC
view on stackexchange narkive permalink

為FPGA設計需要硬件描述語言(HDL)。 HDL與C絕對沒有任何區別。C程序是一系列順序的指令,必須扭曲自身才能實現並行執行,而HDL描述了並發電路,並且必須扭曲自身才能實現順序執行。這是一個截然不同的世界,如果您試圖像軟件開發人員那樣在FPGA中構建電路,那會很受傷。

MCU是有時間限制的。為了完成更多的工作,您需要更多的處理器週期。時鐘對其頻率有非常嚴格的限制,因此很容易碰到計算壁壘。但是,FPGA受空間限制。為了完成更多工作,您只需添加更多電路。如果您的FPGA不夠大,您可以購買更大的FPGA。構建一個無法容納最大的FPGA的電路非常困難,即使您這樣做,也有應用筆記描述瞭如何將FPGA菊花鏈在一起。

FPGA更加註重並行執行。有時,您需要擔心您的MCU的ISR需要多長時間來處理該中斷,以及是否能夠達到硬實時限制。但是,在FPGA中,始終有很多有限狀態機(FSM)運行。它們就像“毫微微控制器”,就像控制邏輯的小雲。它們都同時運行,因此不必擔心會丟失中斷。您可能有一個FSM與ADC接口,另一個FSM與微控制器的地址/數據總線接口,另一個FSM將數據流傳輸到立體聲編解碼器,還有另一個FSM緩衝從ADC到編解碼器的數據流。需要使用模擬器來確保所有FSM和諧地唱歌。如果只有一個時鐘週期就關閉了任何控制邏輯(並且很容易犯此類錯誤),那麼您將陷入失敗的困境。

FPGA是PCB佈局設計師的夢想。它們是非常可配置的。您可以有許多不同的邏輯接口(LVTTL,LVCMOS,LVDS等),它們的電壓甚至驅動強度都可以變化(因此不需要串聯終端電阻)。引腳可以互換;您見過MCU地址總線,其中的引腳分散在芯片周圍嗎?您的PCB設計人員可能必須丟掉一堆通孔,才能將所有信號正確地綁在一起。借助FPGA,PCB設計人員可以以幾乎任何方便的順序將信號運入芯片,然後可以將設計回注到FPGA工具鏈。

FPGA也有很多好看的玩具。我最喜歡的之一是Xilinx芯片中的Digital Clock Manager。您將其饋入一個時鐘信號,然後使用各種各樣的倍頻器和分頻器可以從中獲得另外四個信號,所有這些信號均具有原始的50%佔空比和100%的相位...甚至可以解決時鐘偏斜問題

編輯(對附錄的答复):

您可以將“軟核”放入FPGA。您實際上是將微控制器電路連接在一起,或者可能是將其他人的電路放入設計中,例如Xilinx的PicoBlaze或MicroBlaze或Altera的Nios。但是,與使用C-> VHDL編譯器一樣,與使用FSM和數據路徑或實際的微控制器相比,這些內核往往有點腫且速度慢。開發工具還會給設計過程增加極大的複雜性,當FPGA已經是非常複雜的芯片時,這可能是一件壞事。

也有一些FPGA嵌入了“硬核”,例如Xilinx的Virtex4系列具有一個真正的專用IBM PowerPC,並帶有FPGA架構。

EDIT2(回複評論):

我想我現在看到了...您在問有關將分立MCU連接到FPGA的問題。即兩個單獨的芯片。有充分的理由這樣做;具有硬核的FPGA和足夠大以支持體面的軟核的FPGA通常是帶有數百個引腳的怪獸,這些引腳最終需要BGA封裝,這很容易使設計PCB的難度增加了10倍。 / p> C更容易得多,因此,MCU肯定可以與FPGA協同工作。由於編寫C更加容易,因此您可以在MCU中編寫“大腦”或中央算法,而FPGA可以實現可能需要加速的子算法。嘗試將可更改的內容放入C代碼,因為它更容易更改,而讓FPGA成為更專用的類型,不會經常更改。

MCU設計工具也更易於使用。設計工具需要花費幾分鐘來構建FPGA位文件,即使對於有些簡單的設計也是如此,但是複雜的MCU程序通常需要幾秒鐘。 MCU出錯的地方少得多,因此它們也更容易調試...我不能低估FPGA的複雜程度。您確實需要獲取所擁有的數據表,並且應該嘗試閱讀該表的每一頁。我知道,它有數百頁...仍然可以執行。

連接它們的最佳方法是使用帶有外部地址和數據總線的MCU。然後,您可以簡單地將FPGA電路映射到MCU中,並添加自己的“寄存器”,每個寄存器都有自己的地址。現在,FPGA可以添加自定義外設,例如32位定時器,當讀取第一個字節時可以立即鎖存所有4個字節,以防止8位讀取之間的溢出。您還可以將其用作粘合邏輯,以從其他芯片(例如單獨的ADC)中映射更多外設。

最後,某些MCU設計用於與FPGA之類的“外部主設備”一起使用。賽普拉斯製造了一些內部具有8051的USB MCU,但其目的是要通過以下方式產生/消耗USB數據: FPGA。

這是個很好的信息,謝謝。我聽說過C / C ++到HDL編譯器。你有沒有嘗試過它們?
他們很好...對於單個邏輯塊,還算不錯。但是我不會通過這種編譯器來編寫整個設計。它們的效率不是很高,因為它們的語言差異如此之大...您必須使用特殊的約定,它們不僅僅採用任何舊的ANSI C代碼。
謝謝,這很有用。我已經訂購了萊迪思半導體的XP2 Brevia開發套件。一旦我對基本的FPGA設計概念感到滿意,我打算嘗試一些HDL到C的編譯器。
剛剛在原始查詢中看到了我附錄的答案。謝謝-所以您是說實際上(至少使用當今的技術),標準MCU + FPGA的混合架構幾乎沒有增加值,因此無法真正在現實世界中使用?
太棒了謝謝ajs410。我希望花上幾週的時間來啟動自己的fpga,然後再進入令人興奮的混合拱門可能性!
davidcary
2010-09-27 10:59:39 UTC
view on stackexchange narkive permalink

“現實世界中的示例...將FPGA與微控制器結合起來?”這樣做-可能是通過在FPGA內部實現軟CPU來實現的。實際上,給定的性能水平通常比單獨使用FPGA(或單獨使用MCU)使用FPGA加獨立的微控制器來實現更低的零件成本和更低的功耗。板載FPGA和微控制器的是一些比較著名的設備:

Yann Vernier
2010-09-27 08:09:39 UTC
view on stackexchange narkive permalink

通常將FPGA專門用於執行微控制器無法高效完成的任務,例如高度並行或低延遲的操作,在多個時鐘域中運行或以硬件速度執行自定義邏輯。這樣一來,它們就會很繁重,而且您幾乎不需要MCU作為設計的核心-它們可能會移到管理位置,例如加載配置位流。一個例子是 Minimig中的PIC或ARM,它們實現了存儲接口。

但是,有一些產品模糊了這些界限。一些示例:

  1. 大型FPGA往往內置有硬核CPU(較大的項目通常無論如何都需要它們),就像它們具有RAM和乘法器模塊一樣。
  2. 某些微控制器旨在並行操作(XMOS XS1,Atmel Xmega,GreenArray,視差螺旋槳)
  3. 某些芯片被設計為混合芯片(Cypress PSoC,Atmel FPSLIC)
  4. ol>

    來自命令式編程背景技術,這是對硬件設計的一種調整,因為您需要獲得FPGA的優勢。但是,您也會在其他地方找到有用的經驗。

Leon Heller
2010-09-13 16:22:50 UTC
view on stackexchange narkive permalink

像AVR這樣的MCU與編程到FPGA中的MCU之間並沒有什麼區別。 OpenCores站點具有用於AVR的VHDL代碼,可在FPGA中使用。您可以研究它,看看它是如何工作的,甚至不用購買合適的FPGA板就可以在模擬器中親自嘗試。

我經常發現,對於同一MCU,FPGA必須以較低的時鐘速度運行,否則它們的價格會高得多。在更昂貴的情況下,您可以輕鬆地在控制器和外部引腳之間實現額外的硬件,這通常是值得的。
如果系統中仍然需要FPGA,則MCU是“免費的”。
Dipten
2017-03-30 18:29:39 UTC
view on stackexchange narkive permalink

微控制器是一種數字電路,它們依次從其程序存儲器中依次執行命令。微控制器的數字硬件電路是固定的,組成數字電路的不同柵極之間的互連是永久性的,並蝕刻在矽片上。FPGA可以看作是具有可編程互連功能的數字門(實際上雖然有luts)池的集合。現在,可以通過對互連編程來在fpga上製作任何數字電路(甚至是微控制器)。



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