以前剛學(xué)習(xí)單片機(jī)時(shí),經(jīng)過一定的編程,能實(shí)現(xiàn)很多不同的功能,當(dāng)時(shí)就覺得單片機(jī)真的是神通廣大。后來接觸到DSP,發(fā)現(xiàn)DSP處理數(shù)字在通信上,更加方便。于是我就很好奇的問自己,DSP和單片機(jī),究竟有什么區(qū)別:
1 、存儲(chǔ)器結(jié)構(gòu)不同
????? 單片機(jī)使用馮.諾依曼存儲(chǔ)器結(jié)構(gòu)。這種結(jié)構(gòu)中,只有一個(gè)存儲(chǔ)器空間通過一組總線(一個(gè)地址總線和一個(gè)數(shù)據(jù)總線)連接到處理器核。大多數(shù)DSP采用了哈佛結(jié)構(gòu),將存儲(chǔ)器空間劃分成兩個(gè),分別存儲(chǔ)程序和數(shù)據(jù)。
2 、定點(diǎn)計(jì)算
??? 大多數(shù)DSP使用定點(diǎn)計(jì)算,而不是使用浮點(diǎn)。為了不使用浮點(diǎn)機(jī)器而又保證數(shù)字的準(zhǔn)確,DSP處理器在指令集和硬件方面都支持飽和計(jì)算、舍入和移位。
3 、專門的尋址方式
???? ?DSP處理器往往都支持專門的尋址模式.這些專門的尋址模式在GPP(General Purpose Processors, 通用處理器)中是不常使用的,只有用軟件來實(shí)現(xiàn)。
4、對(duì)密集的乘法運(yùn)算的支持
??? 單片機(jī)不是設(shè)計(jì)來做密集乘法任務(wù)的,即使是一些現(xiàn)代的GPP,也要求多個(gè)指令周期來做一次乘法。而DSP處理器使用專門的硬件來實(shí)現(xiàn)單周期乘法。DSP處理器還增加了累加器寄存器來處理多個(gè)乘積的和。累加器寄存器通常比其他寄存器寬,增加稱為結(jié)果bits的額外bits來避免溢出。
5 、零開銷循環(huán)
??? 單片機(jī)是Single-chip Microcomputer的較準(zhǔn)確譯法,但最能準(zhǔn)確反映單片機(jī)設(shè)計(jì)思想、并且有長(zhǎng)遠(yuǎn)技術(shù)眼光的詞匯是Microcontroller(微控制器)。
之所以出現(xiàn)Single-chip Microcomputer一詞,實(shí)在是因?yàn)樵缙?,甚至到MSC-51時(shí)期,單片機(jī)準(zhǔn)確地體現(xiàn)了Single-chip Microcomputer的形態(tài)和內(nèi)容。然而發(fā)展到MSC-96,發(fā)展到新一代80C51、M68HC05、M68HC11系列單片機(jī)時(shí),在單片機(jī)中著力擴(kuò)展了各種控制功能,如:A/D、PWM、PCA計(jì)數(shù)器捕獲/比較邏輯、高速I/O口、WDT等,已突破了Microcomputer的傳統(tǒng)內(nèi)容, 朝Microcontroller的內(nèi)涵發(fā)展。因此,目前已到了該給單片機(jī)正名的時(shí)候了,國外已逐漸統(tǒng)一成Microcontroller。如果我們?nèi)匀槐A魡纹瑱C(jī)這一習(xí)慣叫法,則應(yīng)把它認(rèn)為是一個(gè)單片形態(tài)的微控制器,或直接稱作微控制器或單片微控制器,而不要再使用單片微型計(jì)算機(jī)或單片計(jì)算機(jī)這些詞匯了。
?
MCU和DSP最近在制作電子類產(chǎn)品方面都應(yīng)用廣泛,DSP在數(shù)字信號(hào)處理、通信領(lǐng)域應(yīng)用較多,MCU在自動(dòng)控制、智能信號(hào)上應(yīng)用廣泛。
?? 處理器通??梢苑譃槿箢悾褪菙?shù)字信號(hào)處理器-DSP、微控制器-MCU,還有中央處理器-CPU。為便于大家理解它們?cè)趹?yīng)用中的差異,我們不妨作這樣的比喻:DSP好比是一次方程式賽車的引擎,追求的是高速高效;MCU好比是摩托車引擎,追求的是靈巧便捷;CPU則好比是豪華家用車的引擎,追求的是面面俱到。當(dāng)然DSP與MCU的融合將相應(yīng)成輝,可以滿足更多更廣的應(yīng)用需求。???
?? MCU的特點(diǎn):
?? 適合實(shí)時(shí)控制和操作任務(wù)
?? 可預(yù)測(cè)的執(zhí)行周期
?? 擅長(zhǎng)中斷處理,特別是外部異步事件
?? 比較多的I/O功能,
?? 程序較大
?? 豐富的片上外設(shè)
?? DSP的特點(diǎn):
?? 適合處理實(shí)時(shí)連續(xù)的數(shù)據(jù)流;
?? 針對(duì)多重密集算法的數(shù)學(xué)引擎;
?? 可觀的MIPS性能;
?? 可預(yù)測(cè)的執(zhí)行時(shí)間;
?? 適合處理小型和重復(fù)性的工作;
?? 代碼體積小、芯片體積小等
?
ASIC/FPGA/MCU/DSP區(qū)別:
這么說吧,ASIC原本就是專門為某一項(xiàng)功能開發(fā)的專用集成芯片,比如你看攝像頭里面的芯片,小小的一片,集成度很低,成本很低,可是夠用了。一個(gè)山寨攝像頭賣才賣30塊,買一片ARM多少錢?后來ASIC發(fā)展了一些,稱為半定制專用集成電路,相對(duì)來說更接近FPGA,甚至在某些地方,ASIC就是個(gè)大概 念,F(xiàn)PGA屬于ASIC之下的一部分。
FPGA基本就是高端的CPLD(Complex Programmable Logic Device復(fù)雜可編程邏輯器件),兩者非常接近。我現(xiàn)在用的是ALTERA DE2開發(fā)板的CYCLONE系列FPGA。這種器件是用邏輯門來表述性能的。本身他就是一堆的邏輯門,通過硬件描述語言,比如verilogHDL把它轉(zhuǎn)成電路連接,從最基本的邏輯門層面上連接成電路(參見數(shù)字電路書上那些全加器觸發(fā)器什么的)。應(yīng)該說,雖然看起來像一塊CPU,其實(shí)是完全硬件實(shí)現(xiàn)的。 后來因?yàn)閷懘a麻煩,對(duì)控制部分比較薄弱,本來跟其他CPU配合使用,即麻煩的算法CPU提交給FPGA,F(xiàn)PGA算完把結(jié)果再返回給CPU。可是這樣外圍電路就變得麻煩。于是提出了SOC設(shè)計(jì)方法,就是直接在FPGA里寫一個(gè)CPU出來,既然FPGA萬能,做個(gè)CPU自然毫無壓力。這其中還有軟核和硬核的區(qū)別,不過除了性能,使用方法大同小異。所謂IP核,就是把各種專用集成電路用硬件描述語言描述,然后燒到FPGA里形成專門的電路,這樣就不必另外搭芯片了,所有的電路在一片F(xiàn)PGA里面形成。
DSP實(shí)際應(yīng)該稱為DSPs,即用于DSP處理的專用芯片。跟普通計(jì)算機(jī)的區(qū)別一方面是他是哈佛結(jié)構(gòu)的,也就是數(shù)據(jù)和程序空間分開。(普通計(jì)算機(jī)是馮諾依曼結(jié)構(gòu))另一方面他有流水線結(jié)構(gòu),不過現(xiàn)在其他也有了,見賢思齊。再一方面他有專用的硬件算法電路,用以完成DSP運(yùn)算,比如最基本的乘法累加。上過DSP的就知道,蝶形算法FFT什么的,拆成最基本單元就是乘法累加,把這部分加速了,整體性能就有非常大的提高。DSP對(duì)于流媒體的處理能力遠(yuǎn)遠(yuǎn)的優(yōu)于通用CPU。所以你看現(xiàn)在手機(jī)CPU,至少語音部分都是用DSP的。后來DSP概念也復(fù)雜化,各家都把一個(gè)控制核心整合到DSP里面,比如現(xiàn)在的智能手機(jī)芯片??梢钥匆幌赂咄ɑ蛘逿I的芯片,基本是一個(gè)ARM核控制整體運(yùn)算,一個(gè)DSP處理語音編解碼, 一個(gè)GPU負(fù)責(zé)圖像運(yùn)算,一個(gè)基帶和天線處理模塊負(fù)責(zé)通信,再加一些七七八八的東東比如GPS模塊什么的。
單片機(jī)就是一個(gè)百搭的通用CPU,提供各種接口來對(duì)整體進(jìn)行控制,相當(dāng)一個(gè)總調(diào)度,當(dāng)然,簡(jiǎn)單的功能一片CPU獨(dú)立工作也就完成了。原來的51系列就是一堆IO口,后來慢慢的把常用的PWM,AD之類的功能加入了單片機(jī)。主要包括用了無數(shù)年仍然牛逼各大學(xué)必教的51系列,還有AVR,PIC,ARM,HOTEK……其實(shí)ARM9以后,已經(jīng)說不清ARM算哪類了,目前的架構(gòu)來看,更接近DSP。
總之,現(xiàn)在各種東西都取長(zhǎng)補(bǔ)短大融合,所以只要選擇自己需要用的就好,沒必要強(qiáng)求分類。
? FPGA是可編程陣列,多采用查找表結(jié)構(gòu),這是和CPLD最大的區(qū)別,能用FPGA實(shí)現(xiàn)各種AISC、DSP和單片機(jī)。
ASIC就是專用IC,沒有明確的定義??梢岳斫鉃槌藛纹瑱C(jī)、DSP、FPGA之類的能叫出類目的IC,剩下的都是ASIC。
DSP是一類特殊的CPU,主要特點(diǎn)是能在一個(gè)時(shí)鐘周期完成一次乘加,因此適合信號(hào)處理用。
單片機(jī)就是一個(gè)簡(jiǎn)單的CPU,和通用處理器沒明確界限,認(rèn)為他簡(jiǎn)單,就可以叫單片機(jī),不過都是單核。