Microchip的16位数字信号控制器dsPIC融合了高性能16位MCU的控制优势和完全实现的DSP高运算速度,形成了适合嵌入式系统设计的紧密结合的单芯片单指令流解决方案。
让我们看一看过去和现在的一些微控制器(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个周期(200ns@30MIPS),退出延时为3个周期(100ns@30MIPS)。DSC本身的硬件特性、灵活直观的软件指令为异常情况的存储和恢复提供了有力的支持。
dsPIC DSC内核支持MCU和DSP功能需要的各种位操作。虽然位操作在MCU中很常见,但它们在DSP中的应用却没有那么广泛。dsPIC DSC增加了更强大的位操作功能,如一些位测试、位设置和位移动指令以及能识别出数据字中第一个有效位的位寻找操作。位寻找指令为缩放DSP操作数和规格化累加器值等功能提供了重要的支持。
图3:DSP(MAC)指令语法实例。