| Microchip的16位數(shù)字信號(hào)控制器dsPIC融合了高性能16位MCU的控制優(yōu)勢(shì)和完全實(shí)現(xiàn)的DSP高運(yùn)算速度,形成了適合嵌入式系統(tǒng)設(shè)計(jì)的緊密結(jié)合的單芯片單指令流解決方案。 讓我們看一看過(guò)去和現(xiàn)在的一些微控制器(MCU)在性能和工具方面的表現(xiàn)。過(guò)去的MCU特性簡(jiǎn)單,比較容易使用。這些MCU工具不僅容易使用,并能提供合理的性能配置,雖然仿真器可能做得像磚頭一樣大。那時(shí),Flash只是代表了家喻戶(hù)曉的電視動(dòng)作名星Flash Gordon的名字,而不是標(biāo)準(zhǔn)的MCU程序存儲(chǔ)器技術(shù)。想象一下過(guò)去的嵌入式應(yīng)用設(shè)計(jì)師來(lái)到21世紀(jì)、看到有這么多嵌入式MCU和數(shù)字信號(hào)處理器(DSP)解決方案可選時(shí)的情景吧。除非他們能靜下心來(lái)仔細(xì)揣摩,否則對(duì)最佳器件的選擇將是相當(dāng)棘手甚至可能是難以實(shí)現(xiàn)的。 圖1:dsPIC DSC的CPU內(nèi)核框圖。 如今的MCU和DSP確實(shí)集成了最新的科技結(jié)晶,但有時(shí)要付出易用和靈活的代價(jià)。如今在MCU中很容易看到Flash程序存儲(chǔ)器,但在DSP中還不多見(jiàn)。MIPS標(biāo)稱(chēng)值不再是用單字節(jié)而是用雙字節(jié)來(lái)衡量。Microchip公司的16位DSC結(jié)合這兩個(gè)領(lǐng)域的最佳性能:簡(jiǎn)單靈活的30MIPS性能、業(yè)界領(lǐng)先的可靠Flash程序存儲(chǔ)器、豐富且靈活易用的外圍設(shè)備以及先進(jìn)易用的工具套件。Microchip在設(shè)計(jì)16位dsPIC DSC時(shí)充分考慮了當(dāng)前嵌入式設(shè)計(jì)師的需要。 架構(gòu)分析 Microchip公司通過(guò)16位dsPIC DSC的發(fā)布首次提出了DSC的概念。DSC采用16位(數(shù)據(jù))改良過(guò)的哈佛架構(gòu),它充分融合了高性能16位MCU的控制優(yōu)勢(shì)和完全實(shí)現(xiàn)的DSP的高運(yùn)算速度,從而形成了適合嵌入式系統(tǒng)設(shè)計(jì)的緊密結(jié)合的單芯片單指令流解決方案。 dsPIC DSC架構(gòu)支持84條指令和10種尋址模式。共有16個(gè)可用作數(shù)據(jù)或地址寄存器的16位CPU內(nèi)核工作寄存器(術(shù)語(yǔ)稱(chēng)為W寄存器陣列),其中包括了用于軟件堆棧訪(fǎng)問(wèn)的專(zhuān)用寄存器。所有的W寄存器都可以通過(guò)數(shù)據(jù)空間中的存儲(chǔ)器映射鏡像進(jìn)行直接或間接訪(fǎng)問(wèn)。該特性允許任何指令將任何寄存器(或寄存器的一部分)用作源或目的操作數(shù)。 指令集由用于嵌入式應(yīng)用的各種靈活的MCU指令和從單指令流執(zhí)行的DSP操作專(zhuān)用指令集組成,兩種指令共享很多CPU資源。架構(gòu)的頂層框圖如圖1所示。 圖2:dsPIC DSC的DSP引擎框圖。 三個(gè)地址產(chǎn)生單元(AGU)可以采用一套靈活的尋址模式在一個(gè)指令執(zhí)行周期內(nèi)完成一個(gè)或兩個(gè)(對(duì)于DSP MAC類(lèi)指令)數(shù)據(jù)存儲(chǔ)器讀和一個(gè)數(shù)據(jù)存儲(chǔ)器寫(xiě)操作。接著MCU指令可以在一個(gè)周期內(nèi)對(duì)以下操作求值: A B . C 其中: A=源操作數(shù)1(W寄存器直接尋址); B=源操作數(shù)2(W寄存器直接或間接讀); C=結(jié)果目標(biāo)(W寄存器直接或間接寫(xiě)); 是指令操作符 指令獲取機(jī)制采用簡(jiǎn)單的預(yù)取設(shè)計(jì),可以減輕大多數(shù)流程變化、必然的操作復(fù)雜性以及伴隨指令流水線(xiàn)的中斷延遲問(wèn)題。大多數(shù)指令在一個(gè)周期內(nèi)執(zhí)行完成,那些與流程控制有關(guān)的指令最多可能需要三個(gè)周期(一般是一個(gè)或兩個(gè)周期)。除法操作需要18個(gè)周期,但可以在任何時(shí)候被完全中斷。對(duì)MCU來(lái)說(shuō)中斷是最常見(jiàn)的請(qǐng)求,但會(huì)顯著降低深度流水線(xiàn)式DSP的標(biāo)稱(chēng)性能。 dsPIC DSC內(nèi)核通過(guò)62個(gè)獨(dú)立向量提供用于陷阱和中斷的向量化異常設(shè)計(jì)。異常由高達(dá)8個(gè)陷阱和54個(gè)中斷組成。每個(gè)中斷的優(yōu)先級(jí)非常靈活,可以按預(yù)先確定的"自然順序"分配,也可以按用戶(hù)可分配的從0(最低)到7(最高)之間的任意優(yōu)先級(jí)分配。dsPIC DSC架構(gòu)提供明確快速的中斷和陷阱響應(yīng):進(jìn)入延時(shí)為6個(gè)周期(200ns@30MIPS),退出延時(shí)為3個(gè)周期(100ns@30MIPS)。DSC本身的硬件特性、靈活直觀的軟件指令為異常情況的存儲(chǔ)和恢復(fù)提供了有力的支持。 dsPIC DSC內(nèi)核支持MCU和DSP功能需要的各種位操作。雖然位操作在MCU中很常見(jiàn),但它們?cè)贒SP中的應(yīng)用卻沒(méi)有那么廣泛。dsPIC DSC增加了更強(qiáng)大的位操作功能,如一些位測(cè)試、位設(shè)置和位移動(dòng)指令以及能識(shí)別出數(shù)據(jù)字中第一個(gè)有效位的位尋找操作。位尋找指令為縮放DSP操作數(shù)和規(guī)格化累加器值等功能提供了重要的支持。 圖3:DSP(MAC)指令語(yǔ)法實(shí)例。 dsPIC DSC提供業(yè)界領(lǐng)先的可靠的Flash程序存儲(chǔ)器和數(shù)據(jù)EEPROM,它們的E/W周期典型值分別是(10K分鐘/100K)和(100K分鐘/1E+06)。DSC架構(gòu)支持4Mx24位寬的線(xiàn)性程序空間(PS)和64KB線(xiàn)性數(shù)據(jù)空間(DS),第一套dsPIC DSC產(chǎn)品最多可支持144KB的PS和8KB的DS。dsPIC DSC的亮點(diǎn)是程序空間可視化(PSV)。PSV可以將32KB的PS映射進(jìn)DS的上部32KB位,允許任何指令像訪(fǎng)問(wèn)DS一樣訪(fǎng)問(wèn)PS。像LCD圖形和菜單、傳感器校正數(shù)據(jù)、大型固定數(shù)據(jù)陣列、FFT旋轉(zhuǎn)因子和數(shù)字濾波器系數(shù)等許多數(shù)據(jù)常量都可以充分利用這一性能優(yōu)勢(shì)。 為了實(shí)現(xiàn)更高層次的系統(tǒng)器件集成,dsPIC DSC具有豐富的外圍電路,有幾種外圍電路支持FIFO緩沖,有助于減少中斷頻率開(kāi)銷(xiāo)。dsPIC DSC支持各種用于故障防止和穩(wěn)定系統(tǒng)操作的系統(tǒng)管理功能,包括可編程上電定時(shí)器、看門(mén)狗與晶振啟動(dòng)定時(shí)器、可編程欠壓復(fù)位與低壓檢測(cè)電路。所有的dsPIC DSC器件都支持內(nèi)部的7.37MHz晶振,大多數(shù)dsPIC DSC還同時(shí)支持7.37MHz內(nèi)部晶振和滿(mǎn)足30MIPS吞吐量的片上PLL。一個(gè)明顯的好處是可以取消外部晶振,因此可以降低整個(gè)系統(tǒng)的成本。dsPIC DSC支持故障防止用時(shí)鐘監(jiān)視電路。該電路對(duì)器件時(shí)鐘進(jìn)行實(shí)時(shí)監(jiān)視,如果有故障發(fā)生,它會(huì)自動(dòng)切換到內(nèi)部晶振以保證連續(xù)穩(wěn)定和無(wú)故障的安全的系統(tǒng)工作過(guò)程。 為了實(shí)現(xiàn)最優(yōu)化的電源管理,dsPIC DSC支持睡眠和空閑操作模式。睡眠模式時(shí)CPU內(nèi)核和外設(shè)都停止工作,器件電流只有數(shù)毫安。在睡眠模式下,大多數(shù)外設(shè)都支持器件喚醒功能。而空閑模式下用戶(hù)可以有選擇地激活外設(shè),此時(shí)CPU內(nèi)核也是停止工作的,因此可以降低器件的工作電流。 “動(dòng)態(tài)PLL模式切換”和“運(yùn)行時(shí)輸入時(shí)鐘分頻”模式用于額外的電源管理控制。 簡(jiǎn)單明確的DSP性能 dsPIC DSC的DSP和MCU部分緊密地配合。這二個(gè)部分共享指令裝載和解碼邏輯,因此在一個(gè)代碼序列中MCU和DSP指令可以任意混合。DSC內(nèi)核具有完整的DSP功能(不僅是附加的乘法-累加單元),可以支持并行的雙操作數(shù)存取存儲(chǔ)器尋址、整套MAC類(lèi)型的操作、飽和邏輯和零開(kāi)銷(xiāo)循環(huán)控制,例如完全可中斷的DO和REPEAT指令。 dsPIC DSC的DSP引擎直接從W寄存器陣列輸入數(shù)據(jù),但包含它自己專(zhuān)門(mén)的40位結(jié)果寄存器(累加器A和B)。DSP引擎受操作MCU ALU的相同的單指令解碼器控制。所有操作數(shù)有效的地址都是利用X和Y AGU從W陣列中的寄存器產(chǎn)生。因此MCU指令流程不可能實(shí)施并行操作,雖然MCU ALU和DSP引擎資源可以被同一條指令并行使用。所有DSP指令都是單字指令,并且在一個(gè)周期內(nèi)執(zhí)行完。ED和EDAC(歐幾里得距離運(yùn)算)這二條指令在執(zhí)行周期內(nèi)同時(shí)使用16位MCU ALU計(jì)算(預(yù)取的)操作數(shù)差異。EDAC指令在模式識(shí)別應(yīng)用中非常有用,例如生物統(tǒng)計(jì)識(shí)別或一些基于維特比譯碼器的應(yīng)用。 |