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