題:
FPGA,ASIC和通用微控制器之間有什麼異同?
user58446
2015-01-20 16:45:30 UTC
view on stackexchange narkive permalink

我已經閱讀了這篇文章,但它並不能完整地回答我的問題:

我認為微控制器是指具有某些內存,寄存器並可以處理的任何事物一組指令,例如LOAD,STORE和ADD。它包含邏輯門等以執行其作用,但是其主要任務是成為通用的位處理器。我認為Microntroller是一個相互連接的ASIC設計系統,可以創建存儲和處理指令的功能。

我認為ASIC器件是一種使用邏輯和電子組件專門構建的電路,以執行一個任務,無需考慮其他任務,也不包含額外的硬件。

我認為FPGA器件是ASIC器件(一種低級設備)+一堆未使用的東西,用於實現一個特定的真值表。

儘管它的名字叫FGPA,但它感覺很“特定於應用程序”,因為必須重新連接它才能執行新的不同任務。這導致與ASIC的混淆。但是,在重新連接FPGA的情況下,應提供所有必需的硬件。另外,FPGA的目的是可編程的,但這不是微處理器的目的嗎?

我上面引用的帖子也提到了HDL,我很熟悉。 HDL不能同時用於ASIC和FPGA並通過代理設計整個微控制器嗎?

您的問題還不是很清楚。您是否已閱讀有關FPGA和ASIC的相關問題?實際上,HDL實際上是用於設計ASIC和FPGA實現的,您可以使用HDL設計微控制器。
Altera提供了一本名為[FPGA for Dummies]的免費電子書(http://www.altera.com/devices/fpga/new-to-fpgas/resource-center.html),該書解釋了FPGA,ASIC和微控制器之間的區別。好。
@kkrambo您叫__me__是假人嗎?:)對不起,無法抗拒...我會檢查一下。
我在問題標題中添加了“相似性”一詞,因為似乎有一些細微的技術術語可能會混淆這三種不同設備之間的關係:例如,一個設備可能包含其他兩個設備之一,或者可能包含許多其他設備相似的組件,但在一些重要方面有所不同。一些現有的答案已經涉及到這一點。謝謝。
五 答案:
Mister Mystère
2015-01-20 17:08:04 UTC
view on stackexchange narkive permalink

ASIC與FPGA

現場可編程門陣列可以看作是專用集成電路的原型設計階段:ASIC的製造非常昂貴,並且一旦製造就可以了沒有回頭路了(因為最昂貴的固定成本是口罩[一種製造“模具”]及其開發)。 FPGA可多次重編程,但是由於連接了通用門陣列來實現您的目標,因此並沒有像ASIC那樣對其進行優化。而且,FPGA是本機動態設備,因此,如果關閉電源,不僅會丟失當前狀態,還會丟失配置。儘管現在存在添加了FLASH芯片和/或微控制器以在啟動時加載配置的電路板,所以這往往不是那麼重要。 ASIC和FPGA均可使用硬件描述語言進行配置,有時將FPGA用於最終產品。但是通常,當設計固定後,ASIC就會起作用。

FPGA與微控制器

關於微控制器和FPGA之間的區別,您可以將微控制器視為一種ASIC,它基本上可以處理FLASH中的代碼/ ROM順序。即使未進行優化,您也可以使用FPGA製作微控制器,但並非相反。 FPGA的佈線就像電子電路一樣,因此您可以擁有真正的並行電路,而不是像微控制器那樣,處理器從一段代碼跳到另一段代碼來模擬足夠好的並行性。但是,由於FPGA是為並行任務而設計的,因此編寫順序代碼並不像在微控制器中那樣容易。

例如,通常,如果在FPGA上用偽代碼“ let C be A XOR B”編寫,它將轉換為“使用包含的樂高積木(查找表和鎖存器)構建XOR門,然後連接A / B作為輸入,C作為輸出”,無論是否使用C,每個時鐘週期都會更新。而在將轉換為“讀指令”的微控制器上,它是RAM的地址A和地址B的變量的XOR,結果存儲在地址C。裝入算術邏輯單元寄存器,然後要求ALU進行XOR,然後將輸出寄存器複製到RAM的地址C”。但是在用戶方面,兩條指令都是1行代碼。如果要這樣做,那麼在HDL中我們需要定義一個人為地執行序列的過程-與並行代碼分開。而在微控制器中則無關。另一方面,要從微控制器中獲得“並行性”(真正的調優),您將需要處理一些瑣碎的線程。不同的工作方式,不同的目的。

總結:

ASIC與FPGA:固定的,對於少量產品而言更便宜(更便宜) (針對大批量交易),但更優化。

ASIC與微控制器:當然就像比較工具和錘子。

FPGA與微控制器:尚未針對順序代碼處理進行優化,但也可以非常輕鬆地完成真正的並行任務。 通常 FPGA用HDL編程,C / Assembly中的微控制器

每當並行任務的速度成為問題時,就採用FPGA,改進設計並最終使其成為ASIC。從長遠來看(批量生產)對您來說更便宜。如果可以執行順序任務,請使用微控制器。我想如果從長遠來看它也對您便宜,您可以從中製造出更多的專用IC。最好的解決方案可能是兩者兼而有之。

在寫完這篇文章後,我快速搜索了一下:enter image description here enter image description here

FPGA vs Microcontrollers,在這個論壇上

Connor Wolf
2015-01-20 17:01:47 UTC
view on stackexchange narkive permalink

可以通過重新編程來“重新連接” FPGA。 FPGA通電後會將其配置加載到其可配置邏輯單元中。這意味著可以在不更改硬件的情況下對其進行重新編程。

只能通過修改矽鑄造廠的光刻掩模來重新佈線ASIC。

微控制器是一種ASIC的 type 類型,它可以執行程序並可以執行通用操作。但是,如果要更改指令集或執行類似的操作,則必須修改實際的矽IC佈局。


FPGA和MCU之間的差異更加模糊。基本上,FPGA在硬件級別上是許多小型SRAM單元,所有單元均連接到密集的多路復用器矩陣。基本上,FPGA是一堆離散邏輯,可以通過對多路復用器和SRAM單元進行重新編程來簡單地電子“重新佈線”。

實際上,在MCU內部 中實現了MCU,因為MCU只是邏輯單元的特定配置。實際上,FPGA在MCU的設計過程中非常普遍。

微控制器是某種邏輯配置的實現。之所以擁有它們,是因為通過直接在矽片中實現MCU,可以大大優化所需的矽片裸片空間總量,並且可以進行某些性能優化,而FPGA的“通用性”則無法實現。這樣可以大大降低MCU的生產成本,結果,普通的MCU比能夠包含等效邏輯的FPGA便宜得多。


FPGA 在某些應用中很有用,因為它們可以以MCU無法實現的方式實現邏輯結構。例如,如果您需要添加X1 + Y1,X2 + Y2,X3 + Y3和X4 + Y4,則MCU將必須依次執行每個操作 *。一個FPGA可以簡單地同時具有4個分離 ALU ,因此它可以在四分之一的時間內執行相同的操作(假設兩個設備的時鐘相同)

這是FPGA(或為同一任務而設計的ASIC)真正發揮作用的地方,事實上,您可以同時做很多很多事情,其中​​一個可以-process只能順序執行。

*(注意:這裡我忽略了SIMD之類的東西)

我認為FPGA / ASIC的區別並不模糊。在FPGA中,其“接線”可以更改的電路可以同時獨立運行。MCU具有大量電路,這些電路的接線無法更改,其行為是通過可從可編程存儲器陣列中逐個訪問的信息來控制的。在任何時候,CPU通常只能執行從幾千個到幾十億個選擇的列表中的一項操作,但是將對MCU進行設計,以便將這些操作順序地組合在一起就可以執行有用的工作。
謝謝。十分接近成為答案……儘管10個月後。+1做出補償。
Gipsy Danger
2015-01-20 17:11:21 UTC
view on stackexchange narkive permalink

這是一個很好的問題,

基本上,微控制器和ASIC的硬件(通常稱為矽)固定在石頭上,無法更改。可以配置 FPGA來代表許多不同種類的硬件(其中可能包括微控制器)。

您可能認為微控制器可以做很多不同的事情,但是這都是通過運行不同的程序來完成的-技術上來說是軟件,但有時也稱為固件-硬件本身基本不變,它執行相同的操作,但是輸入的順序不同。

FPGA通常是用來生成專用於ASIC的設計的不同之處在於,如果您想更新FPGA的內部工作原理或添加/刪除功能塊,只需要做的就是更新其固件, ASIC作為內部工作已致力於矽,因此不可重新配置。

因此,簡而言之,使用微處理器,您可以使用相同的硬件來運行不同的程序,使用FPGA,您可以重新配置硬件以執行不同的功能,而ASIC就像微處理器一樣,因為硬件不能

ASIC和FPGA都可以包含微控制器,如果可以,它們可以像獨立的微控制器一樣為它們編寫程序,這是一個示例。這是Altera的NIOS II嵌入式處理器。

如果仍然令人困惑,請讓我知道它尚不清楚,我將盡力澄清我的答案。

Gipsy >

Jasen
2015-01-20 17:01:33 UTC
view on stackexchange narkive permalink

好吧,如果行為像門的特定集合一樣,則沒有任何FPGA可以通過電信號進行編程,某些FPGA包含用於存儲此配置的閃存,有些則不需要,並且每次電源復位後都必須重新編程。

ASIC已從已經配置的生產線中退出。

FPGA錯誤可以通過固件升級來修復,而ASIC缺陷無法經濟地修復。

OrangeDog
2015-01-20 19:40:59 UTC
view on stackexchange narkive permalink

儘管FGPA具名,但它感覺非常“特定於應用程序”,因為必須重新連接它才能執行新的不同任務。

這與“特定於應用”。通過重新佈線,您可以將一個FPGA用於多個應用程序。您無法更改ASIC,因此只能將其應用於一項任務(該任務可能正在實現微控制器)。

儘管在重新連接FPGA的情況下,所有必需的硬件都應

不知道這意味著什麼。通常,有一個用於重新編程FPGA的軟件接口。這是一種ASIC,需要數百萬個[貨幣單位]的硬件。

FPGA的目的是可編程的,但這不是微處理器的目的嗎?

微控制器允許您為固定硬件編程順序軟件。就像普通的計算機一樣,但是非常小並且資源有限。 FPGA使您可以使用HDL對所需的任何硬件進行編程。



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