題:
為什麼要在FPGA中實現微控制器?
James C
2015-01-07 03:53:20 UTC
view on stackexchange narkive permalink

我目前正在“研究” FPGA,它們可以做什麼,如何做等。

在一個以上的地方(例如,在這裡),我已經看到了一些項目。用FPGA實現一個簡單的微控制器。

所以我的問題是
我想知道,進行此類實現的目的是什麼?為什麼要使用在FPGA中實現的微控制器而不是板上的微控制器?有什麼好處?也許還有什麼缺點?

其中許多使用固定IP內核,但是自己動手可以是很好的學習體驗。
@ChrisStratton-您能提供更多信息,還是發布有關固定IP核的鏈接?是的,我相信這將是一次很棒的學習經歷。但這就是我問這個問題的原因之一。我想知道這不只是學習經歷。
大多數這樣做的人都在使用Microblaze,Picobloze,Nios II等產品-這些基本上是“罐裝”(庫)中的處理器設計,您可以對其進行許可並放入您的項目中。相比之下,您可能會從HDL源代碼中自己開發代碼,也許是從您在典型的CS101講座中呈現的框圖開始的。將講義圖轉化為工作硬件時,有許多有趣的實踐需要應對。
有關開源CPU內核的許多示例,請參見[Open Cores](http://opencores.org/)。
我有一個例子。我們已經淘汰了舊產品的微控制器。我們找不到合適的替代微控制器,並具有適當的外圍設備組合。通過將FPGA與嵌入式處理器配合使用,我們可以在FPGA上實現理想的外設組合。
六 答案:
Majenko
2015-01-07 04:10:45 UTC
view on stackexchange narkive permalink

如果您的項目要使用FPGA進行繁重的工作,並且具有備用容量,那麼為什麼犧牲額外的芯片,而只需在芯片中實現它。 FPGA?

對於許多過程控制環境,用C之類的語言來實現所需的設置要比用VHDL或Verilog來實現要容易得多。通過將微控制器添加到FPGA中,您將獲得兩全其美的優勢-邏輯和接口系統的VHDL / Verilog等功能,以及核心控制和管理系統的過程語言簡單性。

這個答案的第一句話是主要原因。這主要是在您板上已經有一塊具有備用容量的FPGA時完成的。(至少)減少了一個芯片,減少了電路板的複雜度。您不會將FPGA放在板上來僅用它來實現微控制器,但是當您已經擁有FPGA時,這是降低零件成本和電路板複雜性的好方法。至少這就是我們這樣做的原因。
PkP
2015-01-07 04:12:34 UTC
view on stackexchange narkive permalink

優點:

  • 微控制器和任何自定義接口或片上I / O邏輯之間的快速接口。
  • 可自定義的處理器和調試接口
  • 與通常用VHDL編寫控制代碼相比,控制邏輯通常也更容易。缺點:
    • 可能需要更昂貴的FPGA才能適合與僅在FPGA上提供自定義邏輯相比,微控制器和自定義邏輯都可能更困難
    • ,尤其是對於存儲器,如果內核很複雜,則比單獨的現成的微控制器更難實現芯片。
額外好處:設計更簡單,芯片更少。
其他缺點:許可更多IP
功耗有何缺點?
-1
所有非常好的評論。很好,我想說一般而言FPGA具有很大的功耗,因為宏單元中的邏輯利用率通常遠非100%。FPGA可以使用複雜的功耗最小化技術來彌補這一點。同一時代的FPGA和處理器之間的製造過程(技術)可能非常相似。處理器具有專用的存儲塊以及FPGA。這些是否符合您的需求,取決於您找到符合您需求的FPGA的幸運程度。
Paebbels
2015-01-07 04:44:43 UTC
view on stackexchange narkive permalink

作為對Majenko和PkP答案的擴展:

這種將CPU嵌入FPGA設計的趨勢導致了多種異構系統,例如:

  • Xilinx' Zynq-7000系列
  • Altera的Arria / Cyclon / Stratix SoC FPGA
  • MicroSemi的SmartFusion FPGA

還有一個Intel Atom + Altera FPGA芯片在市場上: http://www.altera.com/devices/processor/intel/e6xx/proc-e6x5c.html

用於FPGA的大多數免費微控制器都遭受了工具鏈支持不良。嵌入式ARM CPU具有跟踪/調試支持,編譯器(gcc工具鏈)和完整的linux支持。以下是FPL 2014上進行的一項調查: http://dx.doi.org/10.1109/FPL.2014.6927482

編輯1:
還有賽普拉斯的PSoC(可編程片上系統)設備。這些設備包括一個微控制器(M8C,8051,ARM Cortex M0或Cortex M3)和經典的SoC集成I / O控制器或設備(I²C,SPI,定時器,CAN,DAC,ADC,OpAmp等)。可編程零件。這部分不像傳統的FPGA那樣細粒度可編程,但是可以用來實現附加的I / O控制器或內置的硬件加速器。 PSoC允許您在設計中使用模擬組件。
http://www.cypress.com/psoc/?source=CY-ENG-HEADER

PSoC概述: PSoC
(來源: electronicdesign.com) sub>

Cort Ammon
2015-01-07 08:24:37 UTC
view on stackexchange narkive permalink

如果您只需要一個微控制器,而沒有FPGA,那麼使用帶有微控制器固件的FPGA是不尋常的。但是,並非所有項目都朝這個方向發展。許多任務顯然需要FPGA,但最終遇到了實際上不適合VHDL解決方案的任務。有時,僅由通用CPU最好地解決問題。或者,有時是另一回事:有些任務根本不適合通用CPU,它們需要並行性。

那時,您可以選擇。您可以在設備中添加一個額外的芯片,或者您可以意識到在FPGA上沒有使用一堆備用門。許可一點IP,就可以立即擁有一個可以工作的通用CPU!

另一個有趣的細節是您可以自定義一些微控制器固件。我知道一些嵌入式Power PC的項目,但是卻去除了浮點支持所需的所有門,以及很多分支預測功能。這樣就足夠小,可以與基於VHDL的固件並排安裝。

Steven Leibson
2015-01-07 23:51:40 UTC
view on stackexchange narkive permalink

在FPGA中實例化微處理器或微控制器有幾個有效的理由。這是三個:

  1. 您只想了解處理器的操作。 FPGA為您提供了無限的方法來探查處理器執行代碼時發生的情況。

  2. 您正在實現一個大型系統,該系統需要FPGA的硬件級速度(比在微處理器上執行的軟件要快),但是您的設計需要一個複雜狀態機,使用在Xilinx PicoBlaze等簡單處理器上運行的軟件比在硬件FSM中更容易實現。請注意,在最新的FPGA處理技術中,PicoBlaze的運行速度可高達240MHz,並且PicoBlaze處理器每兩個時鐘週期執行一條指令,因此您將獲得一個快速,一致的狀態機,該狀態機可以輕鬆地用軟件編程。

  3. 擴展(2),需要一個可以處理中斷的狀態機。處理器確實對此非常有好處,因為它們已經知道如何在處理中斷之前和之後安全地保存和恢復狀態。

  4. ol>

    這裡有一個警告:如果您想要一個快速的處理器有了標準的指令集和龐大的開發生態系統,那麼您需要一個快速的硬核處理器,例如Xilinx Zynq SoC中的兩個ARM Cortex-A9。 Zynq SoC中的FPGA結構仍然允許您在可編程邏輯中實例化更多處理器內核,但是ARM Cortex-A9可以運行標準操作系統(例如Linux)和標準IDE(例如Android)。

    在ARM Cortex-A9和PicoBlaze之間,可以使用許多來源的可編程邏輯來實現許多軟處理器。有些人喜歡使用自己的處理器,這是一項很棒的教育活動。但是,微處理器需要軟件開發工具,與創建處理器本身相比,創建/調試這些工具需要花費大量的工作量。您必須始終在定制/微處理器的可能利益與創建/調試處理器內核和工具所需的時間和精力之間進行權衡。

    全面披露:但是我很確定我沒有聲明FPGA始終是解決方案。如果50美分的微控制器可以勝任,那麼最好使用它。 FPGA和Zynq SoC適用於需要超越微控制器功能的繁重工作的項目。

熱烈歡迎,史蒂文!
好的答案,但是誰需要一個可以處理中斷的狀態機呢?對於獲取-解碼-執行處理器而言,中斷是必不可少的罪惡,因為處理外部刺激需要專門使用處理器來運行ISR。在FPGA中,外部激勵在單獨的邏輯塊中處理,而狀態機也繼續運行。無需保存和恢復狀態。基本上,中斷是解決HDL最初沒有的問題的不完善解決方案。
Ben,您當然對硬件實現的狀態機是正確的。您始終可以將“中斷”引腳連接為另一個狀態機輸入。但是,使用運行C的處理器實現時,許多複雜的狀態機只是更容易理解,或者至少對於某些開發人員來說更容易理解。那是您需要中斷的時間。
shuckc
2015-01-08 00:17:11 UTC
view on stackexchange narkive permalink

有時候,您可能會使用FPGA,因為您擁有要在已經過時且不可用的物理處理器上運行的軟件,因此您需要將其複活。儘管不兼容引腳(儘管已經看到了DIP樣式的安裝座),但是這可以使您保持週期精確。在商品微處理器上進行純軟件仿真的可能性不大。例如 apple2fpga



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