剖析MICROCHIP公司dsPIC数字信号控制器的细节

日期:2009-12-13 11:05:18   浏览次数:5586   作者:[email protected]

当应用工程师为了满足产品设计要求采用了MCU+DSP结构,而作为芯片制造商看到了这种应用的需要,将具有MCUh和DSP结构的芯片做到了一起,产生了dsPIC具有DSP内核的单片机芯片。北京致芯科技可以提供全系列dsPIC芯片解密服务,从PIC的dsPIC30F3011到dsPIC60F都可以破解。

要想了解dsPIC芯片,首先让我们看一看过去和现在的一些微控制器(MCU)在性能和工具方面的表现。过去的MCU特性简单,比较容易使用。这些MCU工具不仅容易使用,并能提供合理的性能配置,虽然仿真器可能做得像砖头一样大。那时,Flash只是代表了家喻户晓的电视动作名星Flash Gordon的名字,而不是标准的MCU程序存储器技术。想象一下过去的嵌入式应用设计师来到21世纪、看到有这么多嵌入式MCU和数字信号处理器(DSP)解决方案可选时的情景吧。除非他们能静下心来仔细揣摩,否则对最佳器件的选择将是相当棘手甚至可能是难以实现的。

图1:dsPIC DSC的CPU内核框图。

如今的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所示。

图2:dsPIC DSC的DSP引擎框图。

三个地址产生单元(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个周期([email protected]),退出延时为3个周期([email protected])。DSC本身的硬件特性、灵活直观的软件指令为异常情况的存储和恢复提供了有力的支持。

dsPIC DSC内核支持MCU和DSP功能需要的各种位操作。虽然位操作在MCU中很常见,但它们在DSP中的应用却没有那么广泛。dsPIC DSC增加了更强大的位操作功能,如一些位测试、位设置和位移动指令以及能识别出数据字中第一个有效位的位寻找操作。位寻找指令为缩放DSP操作数和规格化累加器值等功能提供了重要的支持。

图3:DSP(MAC)指令语法实例。

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指令在模式识别应用中非常有用,例如生物统计识别或一些基于维特比译码器的应用。

图4:MPLAB C30 C编译器性能比较

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类指令能够以[email protected]的速度执行下面的所有指令,或有选择的执行某些指令(取决于指令本身)。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、数学和外设库。

表1:DSP指令集总结。

需要用汇编语言编写一些时序严格的子程序吗?不用担心,dsPIC DSC指令集非常直观和直接了当,与来自DSP固有架构的一些奇怪指令有很大的不同。除了软件语言工具外,Microchip公司还为dsPIC DSC提供:高性价比的MPLAB ICD2调试器和编程器、MPLAB ICE 4000实时在电路仿真开发环境和MPLAB PM3通用器件编程器。Microchip公司还为dsPIC DSC的代码开发、模拟和仿真环境提供MPLAB可视化器件初始化工具(VDI)和MPLAB集成开发环境(IDE)。

是不是需要一块开发板又不想花费太多?Microchip公司有多种节省成本的开发板,从全功能的开发板到支持马达控制、通用和基于连接应用的精简功能的小尺寸开发板都可以选择。所有开发板都支持MPLAB ICD2和MPLAB ICE 4000,并提供详尽的C和汇编代码模块范例以及完全用户指南。

除了这些核心工具外,Microchip公司还提供诸如dsPIC DSC数字滤波器设计、dsPICworks数据分析和DSP软件包等先进的软件工具。这些工具可使你迅速开始下一个高级信号处理应用。dsPICworks软件工具提供相当多的功能,例如:信号发生,算术操作和数字信号处理,一、二、三维显示和测试功能,与MPLAB IDE、MPLAB ASM30汇编器和C30 C编译器完全兼容的数据输入/输出功能。

dsPIC DSC数字滤波器设计工具可按最小数量购买,它通过菜单化的直观的用户界面简化了dsPIC DSC的有限脉冲响应(FIR)和无限脉冲响应(IIR)数字滤波器的设计、分析和实现过程。输入所需的滤波器频率规范后,dsPIC DSC FD能够自动产生可用于MPLAB IDE的滤波器代码和系数文件。设计数字滤波器变得轻而易举。

应用库构建模块

除了软硬件工具外,Mircochip还提供整套应用库创建模块。这套在不断扩展的列表目前支持以下一些功能:AC感应马达和无刷直流马达控制、RTOS、语音识别、语音编解码、连接性(75-14.4kbps软MODEM和TCP/IP堆栈)、噪声抑制、声学回声消除、不对称和对称加密和DSP等。这些应用库根据实际应用的工业标准/建议开发和全面测试,许多库采用汇编语言编码,因此具有最优化的代码大小和速度性能,所有的库均可被C语言调用。