單片機(jī)與DSP結(jié)合的dsPIC芯片介紹
1 dsPIC的產(chǎn)生
目前,在自動(dòng)檢測(cè)、控制等領(lǐng)域正掀起應(yīng)用DSP的熱潮。DSP(Digital Signal Processor)即數(shù)字信號(hào)處理器,是在數(shù)字信號(hào)處理的各種理論和算法的基礎(chǔ)上發(fā)展起來(lái)的,用于完成各種實(shí)時(shí)數(shù)字信息的處理。20世紀(jì)80年代初,隨著微電子技術(shù)的展,DSP就應(yīng)運(yùn)而生了。DSP器件的出現(xiàn),使得各種數(shù)字信號(hào)處理的算法得到了實(shí)現(xiàn)。DSP器件不但使數(shù)字信號(hào)處理得到了實(shí)際應(yīng)用,而且還拓寬到了系統(tǒng)控制領(lǐng)域,從而誕生了一大批新型的電子產(chǎn)品。DSP技術(shù)的迅速普及,也為今天的信息高速公路建設(shè)奠定了基礎(chǔ)。
DSP器件的數(shù)字信號(hào)處理大致有如下特點(diǎn):①可程控,可以只設(shè)計(jì)一個(gè)硬件配置,然后設(shè)計(jì)各種軟件來(lái)執(zhí)行多樣的信號(hào)處理任務(wù);②穩(wěn)定性好,沒(méi)有時(shí)漂、溫漂;③可重復(fù)性好,無(wú)論多少臺(tái)計(jì)算機(jī)去計(jì)算同一序列的和,都會(huì)提供一模一樣的結(jié)果;④易于實(shí)現(xiàn)自適應(yīng)算法;⑤基于大規(guī)模的集成電路。
這樣就不難看出,單片機(jī)和DSP各有特點(diǎn)。前者控制功能強(qiáng),后者數(shù)字信號(hào)處理能力強(qiáng),因而,將高性能16位單片機(jī)加上DSP功能,就產(chǎn)生了 dsPIC芯片。DsPIC是一種將單片機(jī)的特征同數(shù)字信號(hào)處理器(DSP)的能力結(jié)構(gòu)在一起的器件。它在異步事件處理能力、精密仿真、常見(jiàn)的開(kāi)發(fā)環(huán)境以及外圍部件等方面都表現(xiàn)出DSP強(qiáng)大的性能。
為了縮小單片機(jī)同DSP之間的性能差異,使客戶能方便地將單片機(jī)的功能轉(zhuǎn)移到DSP上,Microchip公司推出了dsPIC。目前推出的產(chǎn)品主要有dsPIC30FXXX系列??紤]到DSP和單片的內(nèi)部區(qū)別,dsPIC器件將高性能16位單片機(jī)的控制特點(diǎn)和DSP高速運(yùn)算的優(yōu)點(diǎn)相結(jié)合,為嵌入式系統(tǒng)設(shè)計(jì)提供了適合的,單芯片、單指令流的解決方案。它消除了目前類(lèi)似設(shè)計(jì)中所需求的額外組成部分,從而減小了印制板空間,也降低了系統(tǒng)成本 dsPIC30FXXX高性能單片要同系列可以應(yīng)用于非常廣闊的范圍,包括馬達(dá)控制、因特網(wǎng)接入器件、汽車(chē)產(chǎn)品、功能電路、數(shù)字應(yīng)答機(jī)、低速軟件調(diào)制解調(diào)器、線卡、POS終端、自動(dòng)售貨機(jī)、生物測(cè)定安全裝置、不間斷電源、電源管理和自然語(yǔ)音輸入/輸出等等。
由于dsPIC兼容了單片機(jī)和DSP芯片這兩類(lèi)產(chǎn)品的優(yōu)點(diǎn),因此它具有下列特點(diǎn):
*豐富的外圍部件;
*完整的DSP引擎;
*改進(jìn)的中斷能力;
*Flash存儲(chǔ)器,靈活的重編程能力;
*強(qiáng)大的開(kāi)發(fā)環(huán)境;
*引腳數(shù)少;
*使用優(yōu)化的高級(jí)語(yǔ)言;
*方便PIC系列單片機(jī)用戶移植現(xiàn)有的代碼;
*熟悉的類(lèi)似單片機(jī)的用戶開(kāi)發(fā)平臺(tái)。
此外,dsPIC還可以支持4M×24位的可尋址Flash程序存儲(chǔ)體,以及32K×16位的數(shù)據(jù)存儲(chǔ)空間。相對(duì)于其它許多單片機(jī)的5V供電及DSP的3.3V供電,dsPIC的供電電壓是2.5~5.5V。
圖1 dsPIC芯片內(nèi)部結(jié)構(gòu)圖
2 dsPIC30F與PIC16F87X的比較
dsPIC30F芯片采用16位(數(shù)據(jù))改進(jìn)型——非流水線的哈佛RISC結(jié)構(gòu),芯片具體結(jié)構(gòu)如圖1所示。程序計(jì)數(shù)器(PC)為24位寬,可以尋址4M×24位的程序存儲(chǔ)器空間。而PIC16F87X系列單片機(jī)采用的是8位流水線哈佛結(jié)構(gòu),有一個(gè)13位寬的程序計(jì)數(shù)器PC,最大只可尋址8K的程序存儲(chǔ)器空間。
DsPIC30F有16個(gè)16位的工作寄存器(W0~W15)。每個(gè)工作寄存器都可以作為數(shù)據(jù)、尋址或移位寄存器來(lái)操作。其中,第16個(gè)工作寄存器(即W15)作為中斷和程序調(diào)用的堆棧指針。PIC16F87X系列同其它種類(lèi)的PIC機(jī)一樣,只含有一個(gè)用于ALU的8位W工作寄存器,相當(dāng)于一般單片機(jī)的A累加器,是不可尋址的。
dsPIC30F指令字是24位的,其指令系統(tǒng)有很大的增強(qiáng),最大特點(diǎn)就是包含了對(duì)DSP的支持。因?yàn)檫@種DSP引擎具有1個(gè)高速的16位與 16位相乘的乘法器、1個(gè)40位的ALU、2個(gè)40位的飽和累加器(saturating accumulator)以及1個(gè)40位的雙向移位器,因而能夠明顯提高芯片算法能力和周期。由此,這種芯片的指令系統(tǒng)就分成兩大類(lèi)——單片機(jī)類(lèi)和DSP 類(lèi)。這種指令系統(tǒng)基于高效的C編譯器,支持固有尋址(無(wú)操作數(shù))、相對(duì)尋址、立刻尋址、存儲(chǔ)器尋址、寄存器直接尋址、間接尋址和移動(dòng)尋址7種方式。每條指令都同預(yù)先定義的尋址方式有關(guān),而這些預(yù)定義的尋址方式是由特定功能需求決定的,且每條指令都支持這7種尋址方式。對(duì)于大多數(shù)指令,dsPIC30F芯片在每個(gè)指令周期能夠執(zhí)行數(shù)據(jù)(或程序數(shù)據(jù))存儲(chǔ)器讀操作、工作寄存器(數(shù)據(jù))讀操作、數(shù)據(jù)存儲(chǔ)器寫(xiě)操作以及程序(指令)存儲(chǔ)器讀操作。因此,它可以支持3 操作數(shù)的指令,比如,在一個(gè)周期內(nèi)可以完成A+B=C的操作。而PIC16F87X系列單片機(jī)每條指令長(zhǎng)14位(其它系列指令字長(zhǎng)也12位或16位的),整個(gè)指令系統(tǒng)共分成三類(lèi)——字節(jié)操作類(lèi)、位操作類(lèi)以及立刻數(shù)操作和控制操作類(lèi),支持立即數(shù)尋址、寄存器間接尋址、直接尋址和位尋址四種尋址方式,但由于這樣尋址種類(lèi)的劃分依據(jù)是操作數(shù)的來(lái)源,因此并非每條指令都可以支持這四種尋址方式,例如,位操作類(lèi)的指令就只能采用位尋址方式。對(duì)PIC16F87X系列單片機(jī),其指令的操作個(gè)數(shù)最多只能是兩個(gè),另外,再加上這種系列單片機(jī)不提供對(duì)DSP的支持,那么在數(shù)字信號(hào)處理速度方面,同dsPIC30F相比顯然要慢很多。
dsPIC30F芯片的數(shù)據(jù)空間被一分為二,分別以X和Y數(shù)據(jù)存儲(chǔ)器進(jìn)行引用,可以作為32K字(word)或64KB(byte)進(jìn)行尋址。每個(gè)存儲(chǔ)器塊都有自己獨(dú)立的地址產(chǎn)生單元(AGU)。單片機(jī)類(lèi)的指令僅單獨(dú)通過(guò)X存儲(chǔ)器的AGU單元進(jìn)行操作,把整個(gè)存儲(chǔ)器作為一個(gè)線性的數(shù)據(jù)空間進(jìn)行尋址。而DSP類(lèi)指令的乘法累加器(MAC)是通過(guò)X和Y的AGU共同操作的,這樣就將數(shù)據(jù)地址空間分成相對(duì)獨(dú)立的兩部分。不過(guò),這樣的X和Y的數(shù)據(jù)空間邊界是任意的,且是由芯片自身特性決定的。數(shù)據(jù)空間存儲(chǔ)器高位的32KB,通過(guò)定義8位程序空間可見(jiàn)頁(yè)面寄存器PSVPAG(Program Space Visibility Page),任意的16位程序字邊界中隨意地被映射到的程序空間低位(用戶空間),這樣就使得任何指令能夠像訪問(wèn)數(shù)據(jù)空間一樣訪問(wèn)程序空間。不過(guò),采用這種方式訪問(wèn)的執(zhí)行時(shí)間比一般的訪問(wèn)方式要多一個(gè)周期。而且,只有每條指令字的低16位才可以使用這種方法訪問(wèn)。PIC16F87X系列單片機(jī)的數(shù)據(jù)存儲(chǔ)器分成多個(gè)存儲(chǔ)區(qū)。每個(gè)存儲(chǔ)區(qū)由通用寄存器和專用寄存器兩部分組成。存儲(chǔ)區(qū)之間的選擇是通過(guò)定義狀態(tài)寄存器STATUS的RP0和RP1位進(jìn)行的,每個(gè)存儲(chǔ)體最多只能達(dá)到128字節(jié)。
dsPIC芯片不支持多級(jí)指令流水線,而采用單級(jí)指令預(yù)取機(jī)制,就是在可利用的最大執(zhí)行時(shí)間前的一個(gè)周期訪問(wèn)指令。因此,dsPIC芯片大多數(shù)指令是單周期的。此外,dsPIC30F芯片還有一個(gè)特征,就是含有由61個(gè)區(qū)分優(yōu)先級(jí)的向量組成的矢量異常處理結(jié)構(gòu),這些異常情況包括復(fù)位(RESET)、6個(gè)捕捉以及54個(gè)中斷。
結(jié)語(yǔ)
dsPIC器件的開(kāi)發(fā)有助于緩解16位單片機(jī)和低端數(shù)字信號(hào)處理器(DSP之間的性能差,是傳統(tǒng)16位單片機(jī)應(yīng)用的理想解決方案。與此同時(shí),隨著控制技術(shù)日趨復(fù)雜化,越來(lái)越多的工業(yè)系統(tǒng)要使用DSP精確控制實(shí)時(shí)響應(yīng),以及現(xiàn)有產(chǎn)品要求增加更多功能,以增強(qiáng)I/O易用性和安全接入,dsPIC必將在高性能數(shù)字信號(hào)控制器市場(chǎng)占據(jù)重要一席之地。同時(shí),隨著多種dsPIC產(chǎn)品系列的不斷迅速開(kāi)發(fā),以及愈加完善的開(kāi)發(fā)工具、應(yīng)用系統(tǒng)庫(kù)、現(xiàn)場(chǎng)應(yīng)用工程技術(shù)和綜合技術(shù)等的產(chǎn)品,dsPIC一定會(huì)得到廣大用戶的青睞。