dsPIC30F 和 dsPIC33F 器件采用改进的哈佛架构内核,数据线宽度为 16 位,采用增强指令集,包含对 DSP 的支持。内核采用具有可变长度操作码字段的 24 位指令字。程序计数器 (PC)为 23 位宽,可对最大为 4M x 24 位的用户程序存储空间进行寻址。单周期指令预取机制用来帮助维持吞吐量并提供可预测的执行。大多数指令都在单个周期内执行。使用 DO 和 REPEAT 指令支持无开销的程序循环结构,这两个指令在任何时候都可被中断。 dsPIC30F 和 dsPIC33F 拥有 16 个 16 位工作寄存器。每个工作寄存器可作为数据、地址或偏移量寄存器。第 16 个工作寄存器 (W15)用作中断和调用时的软件堆栈指针。 dsPIC30F 和 dsPIC33F 架构具有相同的指令集。包括两类指令:MCU 类指令和 DSP 类指令。该架构将这两类指令进行了无缝集成,所有指令的执行均由同一个执行单元来实现。该指令集包括多种寻址模式,且设计为确保最佳的 C 编译器效率。数据空间可寻址为 32K 字或 64KB,被分成两块,称为 X 和 Y 数据存储空间。每个存储块有各自独立的地址发生单元(Address Generation Unit,AGU)。MCU 类指令只通过 X 数据空间 AGU 进行操作,可将整个存储器映射作为一个线性数据空间访问。那些具有两个源操作数的 DSP 类指令通过 X 和 Y 的 AGU 进行操作,这将数据地址空间分成两个部分,X 和 Y 数据空间的边界视具体器件而定。可以选择以 16K 程序字为边界 (由 8 位程序空间可视性页 (Program Space Visibility Page, PSVPAG)寄存器定义)将数据存储空间的高 32KB 映射到程序存储空间。程序存储空间到数据存储空间的映射功能让任何指令都能象访问数据存储空间一样访问程序存储空间,这对于数据常数的存放是非常有用的。 X 和 Y 地址空间都支持无开销循环缓冲区 (模寻址)。模寻址省去了 DSP 算法的软件边界检查开销。此外, X AGU 的循环寻址可以与任何 MCU 类指令一起使用。 X AGU 还支持位反转寻址,大幅简化了基为 2 的 FFT 算法对输入或输出数据的重新排序。该款器件内核支持固有(无操作数)寻址、相对寻址、立即数寻址、存储器直接寻址、寄存器直接寻址、寄存器间接寻址以及寄存器偏移量寻址模式。根据功能性要求的不同,每一条指令都与预先定义的寻址模式组相关联。任何一条指令可支持多达 7 种寻址模式。对于大多数指令, dsPIC30F/33F 可在每一指令周期内执行数据 (或程序数据)存储器读、工作寄存器(数据)读、数据存储器写以及程序(指令)存储器读操作。因此可支持 3 操作数指令 , 即允许在单个周期内执行 A + B = C 操作 。 DSP 引擎具备一个高速17位×17位乘法器、一个40 位ALU、两个40 位饱和累加器和一个40位双向桶形移位寄存器。该桶形移位寄存器在单个周期内至多可将一个 40 位的值右移 16 位或左移 16 位。 DSP 类指令可以无缝地与所有其他指令一起操作,设计为可实现最佳的实时性能。 MAC 类指令和其他相关指令可以同时从存储器中取出两个数据操作数并将两个工作寄存器相乘。这要求数据空间对于这些指令拆分为两块,但对所有其他指令保持线性。这是通过为每个地址空间指定某些工作寄存器,以透明和 灵活的方式实现的。 dsPIC30F 具有向量异常机制,可支持最多 8 个不可屏蔽陷阱源和最多 54 个中断源。 dsPIC33F 具有相似的向量异常机制,不同的是可支持最多 118 个中断源。两个系列都可为每个中断源分配 7 个优先级之一。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !