FPGA和嵌入式有哪些區別於聯繫?
最近在貼吧剛看到這個東西,開始以為是一樣的,原諒我這個無知的電子小白吧,現在大二了,FPGA這個都有哪些用處,在哪些方面有優勢,如何學習這個東西~
現在在學STM32的,對這個有什麼幫助沒
在回答之前先理清楚概念:
FPGA:即現場可編程門陣列,它是在PAL、GAL、CPLD等可編程器件的基礎上進一步發展的產物。它是作為專用集成電路(ASIC)領域中的一種半定製電路而出現的,既解決了定製電路的不足,又克服了原有可編程器件門電路數有限的缺點。
嵌入式系統(Embedded system),是一種「完全嵌入受控器件內部,為特定應用而設計的專用計算機系統」,根據英國電器工程師協會(U.K. Institution of Electrical Engineer)的定義,嵌入式系統為控制、監視或輔助設備、機器或用於工廠運作的設備。 所以這兩個概念不是同一層次的。前一概念是指硬體實現,後者則是系統層面的東西了。也許我可以重新定義下這個問題:FPGA和單片機有什麼區別與聯繫?
一。 先從體系結構來看。單片機(比如你說的stm32)的硬體架構已經決定了,用戶通過編寫指令控制單片機順序執行任務。FPGA可以看做許多邏輯門,用戶通過HDL將邏輯門組織成電路。所以從應用層次上來說,FPGA更接近硬體(個人定義,歡迎指正)。舉個例子,要算一個4位加法,單片機上最多就一個ADD指令,具體怎麼實現你是管不了的;在FPGA上你可以採用不同的電路來實現(並行OR串列),執行效率和資源佔用都可以精確到門級。
二。從應用層面來看題主說「FPGA和嵌入式有什麼區別與聯繫」這種問法本身是有問題的(先不說他們並不是並列關係),FPGA也可以作為嵌入式系統的計算核心。既然FPGA比單片機更接近硬體,那麼如果我告訴你FPGA可以模擬出一個單片機你應該也不會覺得奇怪吧?這就是所謂的「軟核」。COPY一段百度裡面的:「前不久,Altera 正式推出了Nios II系列32位RISC嵌入式處理器。Nios II系列軟核處理器是Altera的第二代FPGA嵌入式處理器,其性能超過200DMIPS,在Altera FPGA中實現僅需35美分。Altera的Stratix 、Stratix GX、 Stratix II和 Cyclone系列FPGA全面支持Nios II處理器,以後推出的FPGA器件也將支持Nios II。自Altera於2000年推出第一代16位Nios處理器以來,已經交付了13000多套Nios開發套件,Nios成為最流行的軟核處理器。剛推出的Nios II系列採用全新的架構,比第一代Nios具有更高水平的效率和性能。和第一代相比,Nios II核平均佔用不到50%的FPGA資源,而計算性能增長了1倍……」
blablabla………………
所以單片機能做的FPGA也能做,FPGA能做的單片機不一定能做。 總結一下:做FPGA你構造的是硬體,單品機你寫的是軟體。ps:我現在也還在不斷學習中,如果有問題歡迎指正。本人幹了10年嵌入式軟體了,說實話也是干著干著才知道這叫嵌入式,之前人家問我幹啥的,一直說不清,只會說行業,直到工作兩年後才慢慢知道自己做的職位叫嵌入式開發。
所在公司是小公司,但正好做FPGA的也有,還有幾個牛人屬於做FPGA比較早的,工作中也常有合作,所以應該有點小資格說說到底嵌入式和FPGA是啥關係。
我認為,它們沒有高低和從屬關係,完全在思考問題的角度和技術角度都不是一路的。現在之所以容易分不清楚,就是經過這些年工具的進步,二者的開發模式有些相似了,怎麼說呢,最初,FPGA是可編程邏輯陣列,啥意思,就是一堆與或非門,你的工作說白了就是搭電路圖完成邏輯功能,比如做通信設備,就要完成E1或SDH的各種編解碼,如果是簡單的業務邏輯,比如PCM語音業務,用電阻電容三極體搭就行了,可如果邏輯複雜,電阻電容搭的就太大太笨了,而且成本高,於是有牛人把這些東西集成到硅晶元里,就是集成電路,後來更有牛人讓這個集成電路晶元可以自由修改,就成FPGA了。。。說的太糙了,湊合看吧,大概意思。FPGA的開發我是經常看到的,總結一下就是邏輯實現+約束+綜合+模擬,非常類似嵌入式開發的編碼+編譯+調試的開發流程,而且都是寫代碼,只是此代碼非彼代碼。一般公司作者兩種活的都是兩個部門的,但聯繫比較緊密,因為設備很多功能都要靠兩者配合完成,而且都能商量分工合作。究竟誰來做更多考量的是成本,因為FPGA的規模是有限的,幾十萬門的FPGA能做的邏輯就那麼多,而嵌入式在代碼規模上基本不需要過多考慮,實在不行還能擴展個NOR FLASH啥的,Linux等系統一言不合就跑RAM里運行了。。。當然除了成本,兩者也有各自擅長的方面,比如並發的快速業務只能用FPGA來處理,它天生就支持多進程。而複雜、交互的功能更適合嵌入式軟體來完成,比如協議棧、CLI這些。。。。FPGA在一些需要並行運算,演算法加速應用較多,大多都是一些成本不敏感的行業。或者需要一些自定義的地方。一般電子出生的都會PCB,單片機arm, FPGA等。但是未來只會把其中一個當主要方向其他也都需要知道。
FPGA用在信號處理,性能指標要求非常高的地方
建議用一下xilinx的zynq系列 就能把FPGA和嵌入式區別開來
FPGA是一門技術,嵌入式是一種應用。FPGA現場可編程門陣列,在一些領域性能不錯,還能滿足一定的可變特性。是CPU和ASIC的一種折中均衡吧。
簡單的說,就是
FPGA可以設計嵌入式的東西,
但是嵌入式的做不了FPGA的東西。
FPGA相當於嵌入式的更加底下的一層,就是由門電路堆積起來的。FPGA可以自行設計如基於51內核的單片機,以及它的外圍電路。
FPGA更接近IC設計,而嵌入式是IC應用。
難度上FPGA會更難,需求的知識也更多,特別是數電和模電。
同樣是學生黨,所以對市場不懂。
精通嵌入式的人有很多,但精通FPGA的真的沒幾個,學好FPGA前途無量啊!高端技術!
兩個是完全不同的領域。FPGA一般用在電子自動化的實現,比如你家的電冰箱在什麼時候工作什麼時候燈亮什麼情況休息。嵌入式沒學過
推薦閱讀:
※對做黑客感興趣該從什麼起步,怎樣發展?
※注釋會影響解釋型語言的效率嗎?
※如何實現一個關係資料庫?
※如何學習Zynq?
※為什麼國內創造不出很棒的編程語言?
TAG:編程語言 | 現場可編輯邏輯門陣列FPGA | 嵌入式開發 |