dsPIC30F数字信号控制器入门 客户支持 Microchip产品的用户可以通过以下渠道获得帮助: ·代理商或代表 ·当地销售办事处 ·应用工程师(FAE) ·技术支持 ·开发系统信息热线 客户应联系其代理商、代表或应用工程师(FAE)寻求支持。当地销售办事处也可为 客户提供帮助。本文档后附有销售办事处的联系方式。 也可通过http://support..microchip.com获得网上技术支持。 DS70151A_CN第6页 2007 Microchip Technology Inc
dsPIC30F 数字信号控制器入门 DS70151A_CN 第 6 页 2007 Microchip Technology Inc. 客户支持 Microchip 产品的用户可以通过以下渠道获得帮助: • 代理商或代表 • 当地销售办事处 • 应用工程师 (FAE) • 技术支持 • 开发系统信息热线 客户应联系其代理商、代表或应用工程师 (FAE)寻求支持。当地销售办事处也可为 客户提供帮助。本文档后附有销售办事处的联系方式。 也可通过 http://support.microchip.com 获得网上技术支持
dsPIC30F数字信号 MICROCHIP 控制器入门 第1章dsPIC30F数字信号控制器 1.1 简介 16位dsPIC30F数字信号控制器(Digital Signal Controller,DSC)是Microchip最新 最先进的处理器系列。在本章中,您将了解到此处理器的特性、各种可用的dsPIC器 件以及如何为您的应用选择最合适的dsPIC器件。 dsPIC:30F是一款高性能的16位处理器,它通过单片机最根本的实时控制功能来提供 真正的DSP功能。可区分优先级的中断、扩展的内置外设和电源管理功能与功能齐全 的DSP引擎相结合。两个40位累加器、单周期16x16MAC、40位桶形移位器、同 时取两个操作数的操作和零开销循环控制也是促使它成为功能强大的DSC的因素。 如果您无法理解这些术语,不必担心,本章中将更加详细地介绍它们。 1.2 架构 1.2.1 哈佛架构 dsPIC处理器采用改进的哈佛架构,具有独立的程序和数据存储器总线,如图1-1所 不。 图1-1: 独立的数据和程序总线 处理器内核 程序总线 数据总线 24 ,16 程序 数据 存储器 存储器 哈佛架构允许使用不同大小的数据字(16位)和指令字(24位)。这种设计提高了 指令集的效率。由于dsPIC处理器在执行访问数据RAM的当前指令的同时可以从程 序存储器中预取下一条指令,这就加快了处理速度。 2007 Microchip Technology Inc. DS70151A_CN第7页
2007 Microchip Technology Inc. DS70151A_CN 第7 页 dsPIC30F 数字信号 控制器入门 第 1 章 dsPIC30F 数字信号控制器 1.1 简介 16 位 dsPIC30F 数字信号控制器(Digital Signal Controller,DSC)是 Microchip 最新 最先进的处理器系列。在本章中,您将了解到此处理器的特性、各种可用的 dsPIC 器 件以及如何为您的应用选择最合适的 dsPIC 器件。 dsPIC30F 是一款高性能的 16 位处理器,它通过单片机最根本的实时控制功能来提供 真正的 DSP 功能。可区分优先级的中断、扩展的内置外设和电源管理功能与功能齐全 的 DSP 引擎相结合。两个 40 位累加器、单周期 16x16 MAC、 40 位桶形移位器、同 时取两个操作数的操作和零开销循环控制也是促使它成为功能强大的 DSC 的因素。 如果您无法理解这些术语,不必担心,本章中将更加详细地介绍它们。 1.2 架构 1.2.1 哈佛架构 dsPIC 处理器采用改进的哈佛架构,具有独立的程序和数据存储器总线,如图 1-1 所 示。 图 1-1: 独立的数据和程序总线 哈佛架构允许使用不同大小的数据字 (16 位)和指令字 (24 位)。这种设计提高了 指令集的效率。由于 dsPIC 处理器在执行访问数据 RAM 的当前指令的同时可以从程 序存储器中预取下一条指令,这就加快了处理速度。 24 程序总线 数据总线 处理器内核 16 程序 存储器 数据 存储器
dsPIC:30F数字信号控制器入门 1.2.2 程序存储器和程序计数器 程序计数器(Program Counter,PC)为24位宽,可寻址最大4M×24位用户程序 存储空间。对于每条24位指令,程序计数器以2为增量递增,这简化了对存储在程序 存储器中的16位数据常量的寻址操作。程序存储空间包含了复位单元、中断向量表、 用户程序存储空间、数据EEPROM以及配置存储空间(见图1-2中的“程序存储器 映射”)。 处理器从复位单元0x000000处开始执行程序。用户可通过一条G0T0指令(转移到 代码开始处)对此单元进行编程。复位单元处的G0TO指令后跟中断向量表。代码的 程序存储空间位于向量表后,起始地址为0x100。 使用DO和REPEAT指令实现最低开销的程序循环结构:这两条指令在任何时间都可被 中断。这些特性使重复DSP算法非常有效,并保持了处理实时事件的能力。 1.2.3 数据存储器 数据空间为64KB,大多数指令将其看作一个线性地址空间。当使用某些DSP指令, 如我们熟知的DSP乘法指令时,该存储空间被分成两块,分别称为X和Y数据空间 (见图1-2中的“数据存储器映射”)。因此,这些DSP指令支持双操作数读操作, 即,同一条指令可同时从X存储空间和Y存储空间中取数据。对于任何给定器件,X 和Y数据空间的边界是固定的。当未执行DSP指令时,所有存储空间都被看作是一个 X存储空间。 数据存储器的前2KB分配给特殊功能寄存器(Special Function Registers,SFR)。 SFR是dsPIC器件内核和外设功能的控制和状态寄存器。 在SFR之后,最大8KB的存储空间被用作数据RAM。它可作为存储数据的通用存储 器。对于DSP指令,它被分成X和Y存储空间。 数据空间的前8KB(即,SFR的2KB和数据RAM的前6KB)被称为Near RAM。 此RAM区域可直接通过文件寄存器指令访问。某些指令无法直接访问非Near的 RAM,必须使用间接寻址来访问。 数据RAM空间的最后32KB未实现,但可被映射到程序空间上,以用于程序空间可 视性(Program Space Visibility,PSV)。PSV允许对程序存储器中的数据表进行读 操作,就好像它们在数据RAM中一样。(此特性对于访问DSP滤波器系数相当有 用。) DS70151ACN第8页 2007 Microchip Technology Inc
dsPIC30F 数字信号控制器入门 DS70151A_CN 第 8 页 2007 Microchip Technology Inc. 1.2.2 程序存储器和程序计数器 程序计数器 (Program Counter, PC)为 24 位宽,可寻址最大 4M × 24 位用户程序 存储空间。对于每条 24 位指令,程序计数器以 2 为增量递增,这简化了对存储在程序 存储器中的 16 位数据常量的寻址操作。程序存储空间包含了复位单元、中断向量表、 用户程序存储空间、数据 EEPROM 以及配置存储空间 (见图 1-2 中的 “程序存储器 映射”)。 处理器从复位单元 0x000000 处开始执行程序。用户可通过一条 GOTO 指令 (转移到 代码开始处)对此单元进行编程。复位单元处的 GOTO 指令后跟中断向量表。代码的 程序存储空间位于向量表后,起始地址为 0x100。 使用 DO 和 REPEAT 指令实现最低开销的程序循环结构;这两条指令在任何时间都可被 中断。这些特性使重复 DSP 算法非常有效,并保持了处理实时事件的能力。 1.2.3 数据存储器 数据空间为 64 KB,大多数指令将其看作一个线性地址空间。当使用某些 DSP 指令, 如我们熟知的 DSP 乘法指令时,该存储空间被分成两块,分别称为 X 和 Y 数据空间 (见图 1-2 中的 “数据存储器映射”)。因此,这些 DSP 指令支持双操作数读操作, 即,同一条指令可同时从 X 存储空间和 Y 存储空间中取数据。对于任何给定器件, X 和 Y 数据空间的边界是固定的。当未执行 DSP 指令时,所有存储空间都被看作是一个 X 存储空间。 数据存储器的前 2 KB 分配给特殊功能寄存器 (Special Function Registers, SFR)。 SFR 是 dsPIC 器件内核和外设功能的控制和状态寄存器。 在 SFR 之后,最大 8 KB 的存储空间被用作数据 RAM。它可作为存储数据的通用存储 器。对于 DSP 指令,它被分成 X 和 Y 存储空间。 数据空间的前 8 KB (即, SFR 的 2 KB 和数据 RAM 的前 6 KB)被称为 Near RAM。 此 RAM 区域可直接通过文件寄存器指令访问。某些指令无法直接访问非 Near 的 RAM,必须使用间接寻址来访问。 数据 RAM 空间的最后 32 KB 未实现,但可被映射到程序空间上,以用于程序空间可 视性 (Program Space Visibility, PSV)。 PSV 允许对程序存储器中的数据表进行读 操作,就好像它们在数据 RAM 中一样。(此特性对于访问 DSP 滤波器系数相当有 用。)
dsPIC30F数字信号控制器 图1-2: 程序和数据存储器 程序存储器映射 数据存储器映射 RESET指令 000002 保留 000004 振荡器敌陌所向量 地址错误陷阱向 高字节 16位 低字节 堆伐错误路阱向量 地址 地址 数学学错误陷饼同量 MSB LSB 果留 0x0001 0x0000 保留 SFR空I 保留 0x07FF 0x07FE 中新0同 000014 0x0801 0x0800 中1向量 X数据RAM 中厨52可量 中断53阿量 00007E 备用向量表 000080 0000FE 0x1FFF 000100 Y数据RAM 用户闪存 程序存储器 017FFE 注3 018000 0x2801 0x2800 保留 (读为0) 7FEFFE 0x8001 0x8000 7FF0000 数据闪存 7FFFFE 800000 X数据RAM 保留 未实现 8005BE 器件ID 8005c0 8005F 800600 保留 OxFFFF 0xFFFE F7FFFE 配置 F80000 注 1:因器件而异一一最大值=0x17FF。 寄存器 F8000E 2:因器件而异一一始终与X数据RAM末尾 F80010 相邻。 保留 3:因器件而异 -最大值=0x27FF。 FEFFFE 器件ID FF0000 FFFFFE 1.2.4 工作寄存器阵列 dsPIC器件具有16个16位工作寄存器。最后一个工作寄存器(W15)始终用作软件 堆栈指针。W15不能用于其他目的。其余工作寄存器可用作数据寄存器、数据地址指 针或地址偏移量寄存器。软件堆栈用于存储中断和调用的返回地址,在执行PUSH和 PO卫指令时,会对该堆栈进行操作。C编译器将软件堆栈广泛用于存储局部变量。 1.2.5 数据寻址模式 CPU支持固有(无操作数)寻址、相对寻址、立即数寻址、存储器直接寻址、寄存器 直接寻址和寄存器间接寻址模式。不必担心,它们并没有听起来那么复杂。每条对数 据存储器进行寻址的指令都可以使用某种可用的寻址模式。每条指令最多支持6种寻 址模式。工作寄存器则广泛地用作间接寻址模式地址指针。它们可被修改(如递增) 并用作同一指令中的指针。 @2007 Microchip Technology Inc. DS70151ACN第9页
dsPIC30F 数字信号控制器 2007 Microchip Technology Inc. DS70151A_CN 第 9 页 图 1-2: 程序和数据存储器 1.2.4 工作寄存器阵列 dsPIC 器件具有 16 个 16 位工作寄存器。最后一个工作寄存器 (W15)始终用作软件 堆栈指针。 W15 不能用于其他目的。其余工作寄存器可用作数据寄存器、数据地址指 针或地址偏移量寄存器。软件堆栈用于存储中断和调用的返回地址,在执行 PUSH 和 POP 指令时,会对该堆栈进行操作。 C 编译器将软件堆栈广泛用于存储局部变量。 1.2.5 数据寻址模式 CPU 支持固有 (无操作数)寻址、相对寻址、立即数寻址、存储器直接寻址、寄存器 直接寻址和寄存器间接寻址模式。不必担心,它们并没有听起来那么复杂。每条对数 据存储器进行寻址的指令都可以使用某种可用的寻址模式。每条指令最多支持 6 种寻 址模式。工作寄存器则广泛地用作间接寻址模式地址指针。它们可被修改 (如递增) 并用作同一指令中的指针。 000002 000004 000014 00007E 000080 0000FE 000100 017FFE 018000 7FFFFE 800000 8005BE 8005C0 8005FE 800600 F7FFFE F80000 F8000E F80010 FEFFFE FF0000 FFFFFE 7FEFFE 7FF0000 配置存储空间 用户存储空间 0x0000 0x07FE 0x0800 X 数据 RAM SFR 空间 Y 数据 RAM X 数据 RAM 未实现 0x2800 0x8000 0xFFFE 0x0001 0x07FF 0x0801 0x2801 0x8001 0xFFFF 0x1FFF Near RAM 提供程序空间可视性 MSB LSB 16 位 高字节 地址 低字节 地址 注 1 注 2 注 3 注 1: 因器件而异——最大值 = 0x17FF。 2: 因器件而异——始终与 X 数据 RAM 末尾 相邻。 3: 因器件而异——最大值 = 0x27FF。 程序存储器映射 数据存储器映射 RESET 指令 保留 振荡器故障陷阱向量 地址错误陷阱向量 堆栈错误陷阱向量 数学错误陷阱向量 保留 保留 保留 中断 0 向量 中断 1 向量 中断 52 向量 中断 53 向量 备用向量表 用户闪存 程序存储器 数据闪存 保留 器件 ID 保留 配置 寄存器 保留 器件 ID 保留 (读为 0)
dsPIC:30F数字信号控制器入门 1.2.6 棋寻址和位反转寻址 模寻址允许实现循环缓冲区,这样省去了检查缓冲区边界所需的处理器开销。缓冲区 的指针可设置为到达缓冲区末端后自动返回到缓冲区开始处,反之亦然。此操作可在 X和Y存储空间中进行,从而极大地减少了DSP算法的开销。 位反转寻址极大地简化了基2FFT算法对输入或输出数据的重新排序。X存储空间支 持位反转寻址。 1.2.7 程序空间可视性 可选择将数据存储空间映射的高32KB映射到任何16K程序字(32KB)边界的程序 空间内,该边界是由8位程序空间可视性页(Program Space Visibility Page, PSVPAG)寄存器定义的。 程序空间到数据空间的映射功能使得任何指令都能象访问数据空间一样访问程序空间。 此功能对于查找表,尤其是DSP算法中滤波器系数表非常有用。 图1-3: 程序空间可视性 处理器内核 程序总线 数据总线 24 16 数据 存储器 程序 存储器 1.2.8 指令集 dsPIC:30F指令集有两类指令:MCU指令和DSP指令。这两类指令可无缝地集成到该 架构中并从单一执行单元处执行。指令集包括很多寻址模式,指令集的设计旨在优化 C编译器的效率。 除了少数特例外,大多数指令的执行都在一个指令周期内完成。特例是:更改程序流 的指令(BRA和CALL等)、双字传送指令(MOV.D)和程序存储器读/写(表)指 令。 对于大多数指令而言,在每个指令周期内,dsPIC30F都能执行一次数据存储器读操 作、一次工作寄存器数据读操作、一次数据存储器写操作和一次程序存储器(指令) 读操作。因此,可以支持3个操作数的指令,使得A+B=C类操作能在单周期内完 成。 DS70151ACN第10页 2007 Microchip Technology Inc
dsPIC30F 数字信号控制器入门 DS70151A_CN 第 10 页 2007 Microchip Technology Inc. 1.2.6 模寻址和位反转寻址 模寻址允许实现循环缓冲区,这样省去了检查缓冲区边界所需的处理器开销。缓冲区 的指针可设置为到达缓冲区末端后自动返回到缓冲区开始处,反之亦然。此操作可在 X 和 Y 存储空间中进行,从而极大地减少了 DSP 算法的开销。 位反转寻址极大地简化了基 2 FFT 算法对输入或输出数据的重新排序。 X 存储空间支 持位反转寻址。 1.2.7 程序空间可视性 可选择将数据存储空间映射的高 32 KB 映射到任何 16K 程序字 (32 KB)边界的程序 空间内,该边界是由 8 位程序空间可视性页 (Program Space Visibility Page, PSVPAG)寄存器定义的。 程序空间到数据空间的映射功能使得任何指令都能象访问数据空间一样访问程序空间。 此功能对于查找表,尤其是 DSP 算法中滤波器系数表非常有用。 图 1-3: 程序空间可视性 1.2.8 指令集 dsPIC30F 指令集有两类指令:MCU 指令和 DSP 指令。这两类指令可无缝地集成到该 架构中并从单一执行单元处执行。指令集包括很多寻址模式,指令集的设计旨在优化 C 编译器的效率。 除了少数特例外,大多数指令的执行都在一个指令周期内完成。特例是:更改程序流 的指令 (BRA 和 CALL 等)、双字传送指令 (MOV.D)和程序存储器读/写 (表)指 令。 对于大多数指令而言,在每个指令周期内, dsPIC30F 都能执行一次数据存储器读操 作、一次工作寄存器数据读操作、一次数据存储器写操作和一次程序存储器 (指令) 读操作。因此,可以支持 3 个操作数的指令,使得 A + B = C 类操作能在单周期内完 成。 24 程序总线 数据总线 处理器内核 数据 存储器 16 程序 存储器