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