FPGA和微控制器有什麼區別呢?
[導讀]什麼是FPGA,微控制器,DSP,ASIC?你真的知道嗎?ASIC原本就是專門為某一項功能開發的專用整合晶片,比如你看攝像頭裡面的晶片,小小的一片,整合度很低,成本很低,可是夠用了。一個山寨攝像頭賣才賣 30塊,買一片ARM多少錢?後來ASIC發展了一些,稱為半定製專用積體電路,相對來說更接近FPGA,甚至在某些地方,ASIC就是個大概 念,FPGA屬於ASIC之下的一部分。
什麼是FPGA,微控制器,DSP,ASIC?你真的知道嗎?ASIC原本就是專門為某一項功能開發的專用整合晶片,比如你看攝像頭裡面的晶片,小小的一片,整合度很低,成本很低,可是夠用了。一個山寨攝像頭賣才賣 30塊,買一片ARM多少錢?後來ASIC發展了一些,稱為半定製專用積體電路,相對來說更接近FPGA,甚至在某些地方,ASIC就是個大概 念,FPGA屬於ASIC之下的一部分。
FPGA基本就是高階的CPLD,兩者非常接近。我現在用的是ALTERA DE2開發板的CYCLONE系列FPGA。這種器件是用邏輯閘來表述效能的。本身他就是一堆的邏輯閘,通過硬體描述語言,比如verilogHDL把它 轉成電路連線,從最基本的邏輯閘層面上連線成電路(參見數位電路書上那些全加器觸發器什麼的)。
應該說,雖然看起來像一塊CPU,其實是完全硬體實現的。後來因為寫程式碼麻煩,對控制部分比較薄弱,本來跟其他CPU配合使用,即麻煩的演算法CPU提交給 FPGA,FPGA算完把結果再返回給CPU。可是這樣外圍電路就變得麻煩。於是提出了SOC設計方法,就是直接在FPGA裡寫一個CPU出來,既然 FPGA萬能,做個CPU自然毫無壓力。
這其中還有軟核和硬核的區別,不過除了效能,使用方法大同小異。所謂IP核,就是把各種專用積體電路用硬體描述語言描述,然後燒到FPGA裡形成專門的電路,這樣就不必另外搭晶片了,所有的電路在一片FPGA裡面形成。
DSP實際應該稱為DSPs,即用於DSP處理的專用晶片。跟普通計算機的區別一方面是他是哈佛結構的,也就是資料和程式空間分開。(普通計算機是馮 諾依曼結構)另一方面他有流水線結構,不過現在其他也有了,見賢思齊。再一方面他有專用的硬體演算法電路,用以完成DSP運算,比如最基本的乘法累加。上過 DSP的就知道,蝶形演算法FFT什麼的,拆成最基本單元就是乘法累加,把這部分加速了,整體效能就有非常大的提高。
DSP對於流媒體的處理能力遠遠的優於通用CPU。所以你看現在手機CPU,至少語音部分都是用DSP的。後來DSP概念也複雜化,各家都把一個控制核心 整合到DSP裡面,比如現在的智慧手機晶片。可以看一下高通或者TI的片,基本是一個ARM核控制整體運算,一個DSP處理語音編解碼,一個GPU負責圖 像運算,一個基帶和天線處理模組負責通訊,再加一些七七八八的東東比如GPS模組什麼的。
微控制器就是一個百搭的通用CPU,提供各種介面來對整體進行控制,相當一個總排程,當然,簡單的功能一片CPU獨立工作也就完成了。原來的51系列就是一 堆IO口,後來慢慢的把常用的PWM,AD之類的功能加入了微控制器。主要包括用了無數年仍然牛逼各大學必教的51系列,還有 AVR,PIC,ARM,HOTEK……其實ARM9以後,已經說不清ARM算哪類了,目前的架構來看,更接近DSP。
總之,現在各種東西都取長補短大融合,所以只要選擇自己需要用的就好,沒必要強求分類。以上就是FPGA,微控制器,DSP,ASIC的分析,希望能給大家幫助。
相關文章
- html和html5有什麼區別呢?HTML
- 反向代理是什麼?和正向代理有什麼區別呢?
- 堡壘機和伺服器有什麼區別呢?伺服器
- 主機電腦和伺服器有什麼區別呢伺服器
- 個人電腦和伺服器有什麼區別呢伺服器
- font-style的屬性有Italic和oblique,兩者有什麼區別呢
- QPS和TPS有什麼區別?
- xpath和dom有什麼區別?
- ReferenceError和TypeError有什麼區別?Error
- DOM和BOM有什麼區別?
- Iterator和ListIterator有什麼區別
- Hifi和ONT 有什麼區別
- Activity和Fragment有什麼區別Fragment
- modbus和tcp有什麼區別?TCP
- vue和react有什麼區別?VueReact
- HTTP和HTTPS有什麼區別?HTTP
- VPS和HTTP有什麼區別?HTTP
- mongodb和mysql有什麼區別MongoDBMySql
- python和nodejs有什麼區別PythonNodeJS
- Jsp和Servlet有什麼區別?JSServlet
- SpringBoot和Spring有什麼區別?Spring Boot
- Cache 和 Buffer 有什麼區別?
- RPA和IPA有什麼區別
- int 和 Integer 有什麼區別
- rancher 和 Kubernetes有什麼區別?
- @Controller和@RestController有什麼區別?ControllerREST
- session 和 cookie 有什麼區別?SessionCookie
- float和double有什麼區別?
- cookie和session 有什麼區別?CookieSession
- shim和polyfill有什麼區別
- cookie是什麼?和session有什麼區別?CookieSession
- Java和Python是什麼?有什麼區別?JavaPython
- 什麼是 MicroPython?和CPython有什麼區別?Python
- IPFS和區塊鏈有什麼區別區塊鏈
- xpgu是什麼 xgpu和xgp有什麼區別GPU
- JMS和AMQP有什麼區別嗎MQ
- maven </dependencies>和</dependencyManagement> 有什麼區別Maven
- Python語言中=和==有什麼區別?Python