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的分析,希望能給大家幫助。
相關文章
- 反向代理是什麼?和正向代理有什麼區別呢?
- 個人電腦和伺服器有什麼區別呢伺服器
- 堡壘機和伺服器有什麼區別呢?伺服器
- 主機電腦和伺服器有什麼區別呢伺服器
- *和body有什麼區別
- Cache 和 Buffer 有什麼區別?
- mongodb和mysql有什麼區別MongoDBMySql
- shim和polyfill有什麼區別
- float和double有什麼區別?
- int 和 Integer 有什麼區別
- cookie和session 有什麼區別?CookieSession
- session 和 cookie 有什麼區別?SessionCookie
- modbus和tcp有什麼區別?TCP
- Nginx和Apache有什麼區別?NginxApache
- COOKIE和SESSION有什麼區別?CookieSession
- RegisterClass和RegisterClassEx有什麼區別?
- for update 和 for update of 有什麼區別
- PEAR 和 PECL 有什麼區別?
- Activity和Fragment有什麼區別Fragment
- vue和react有什麼區別?VueReact
- Iterator和ListIterator有什麼區別
- Hifi和ONT 有什麼區別
- cookie是什麼?和session有什麼區別?CookieSession
- IPFS和區塊鏈有什麼區別區塊鏈
- Java和Python是什麼?有什麼區別?JavaPython
- RPA和IPA有什麼區別
- Jsp和Servlet有什麼區別?JSServlet
- HTTP和HTTPS有什麼區別?HTTP
- VPS和HTTP有什麼區別?HTTP
- 命令和事件有什麼區別? - Oskar事件
- c++中&和&&有什麼區別C++
- DAO和Repository有什麼區別
- 青蛙和癩蛤蟆有什麼區別
- maven </dependencies>和</dependencyManagement> 有什麼區別Maven
- JMS和AMQP有什麼區別嗎MQ
- Go語言原子操作及互斥鎖,有什麼區別呢?Go
- 什麼是報表工具?和 EXCEL 有什麼區別?Excel
- Java 介面和抽象類是什麼,有什麼區別Java抽象