MICROCHIP dsPIC30F2011, dsPIC30F2012, dsPIC30F3012, dsPIC30F3013 Technical data

dsPIC30F2011/2012/3012/3013
数据手册
高性能 16
数字信号控制器
2007 Microchip Technology Inc. DS70139E_CN
请注意以下有关 Microchip 器件代码保护功能的要点:
•Microchip的产品均达到 Microchip 数据手册中所述的技术指标。
•Microchip确信:在正常使用的情况下, Microchip 系列产品是当今市场上同类产品中最安全的产品之一。
目前,仍存在着恶意、甚至是非法破坏代码保护功能的行为。就我们所知,所有这些行为都不是以 Microchip 数据手册中规定的操 作规范来使用 Microchip 产品的。这样做的人极可能侵犯了知识产权。
•Microchip愿与那些注重代码完整性的客户合作。
•Microchip或任何其他半导体厂商均无法保证其代码的安全性。代码保护并不意味着我们保证产品是 “牢不可破”的。
代码保护功能处于持续发展中。 Microchip 承诺将不断改进产品的代码保护功能。任何试图破坏 Microchip 代码保护功能的行为均可视 为违反了《数字器件千年版权法案 (Digital Millennium Copyright Act)》。如果这种行为导致他人在未经授权的情况下,能访问您的软
件或其他受版权保护的成果,您有权依据该法案提起诉讼,从而制止这种行为。
提供本文档的中文版本仅为了便于理解。请勿忽视文档中包含 的英文部分,因为其中提供了有关 Microchip 产品性能和使用
任何差错不承担任何责任。建议参考 Microchip Technology Inc. 的英文原版文档。
本出版物中所述的器件应用信息及其他类似内容仅为您提供便 利,它们可能由更新之信息所替代。确保应用符合技术规范,
是您自身应负的责任。Microchip 对这些信息不作任何明示或 暗示、书面或口头、法定或其他形式的声明或担保,包括但不
限于针对其使用情况、质量、性能、适销性或特定用途的适用 性的声明或担保。 Microchip 对因这些信息及使用这些信息而
引起的后果不承担任何责任。如果将 Microchip 器件用于生命 维持和 / 或生命安全应用,一切风险由买方自负。买方同意在 由此引发任何一切伤害、索赔、诉讼或费用时,会维护和保障
Microchip 免于承担法律责任,并加以赔偿。在 Microchip 知识 产权保护下,不得暗中或以其他方式转让任何许可证。
商标
Microchip 的名称和徽标组合、 Microchip 徽标、 Accuron dsPIC、 K
EELOQ、 KEELOQ 徽标、 microID、 MPLAB、 PIC、
PICmicroPICSTARTPRO MATErfPIC SmartShunt
均为 Microchip Technology Inc. 在美国和其他国家或地区的 注册商标。
AmpLabFilterLabLinear Active Thermistor、 Migratable MemoryMXDEVMXLABSEEVALSmartSensor
The Embedded Control Solutions Company 均为 Microchip Technology Inc. 在美国的注册商标。
Analog-for-the-Digital AgeApplication Maestro CodeGuarddsPICDEMdsPICDEM.netdsPICworks
dsSPEAKECANECONOMONITORFanSense FlexROMfuzzyLAB、 In-Circuit Serial Programming、
ICSPICEPICMindiMiWiMPASMMPLAB Certified 徽标、MPLIBMPLINKPICkitPICDEMPICDEM.net
PICLABPICtailPowerCalPowerInfoPowerMate PowerToolREAL ICErfLABSelect ModeSmart
SerialSmartTelTotal Endurance、 UNI/O、 WiperLock 和 ZENA 均为 Microchip Technology Inc. 在美国和其他国家或地
区的商标。 SQTP Microchip Technology Inc. 在美国的服务标记。
在此提及的所有其他商标均为各持有公司所有。 © 2007, Microchip Technology Inc. 版权所有。
Microchip Gresham
印度的设计中心均通过了
MCU与dsPIC® DSC、KEELOQ
设、非易失性存储器和模拟产品方面的质量体系流程均符合
16949:2002
系也已通过了
位于美国亚利桑那州
的全球总部、设计和晶圆生产厂及位于美国加利福尼亚州和
。此外,
Microchip
ISO 9001:2000
Chandler和Te mp e
ISO/TS-16949:2002
®
跳码器件、串行
在开发系统的设计和生产方面的质量体
认证。
与位于俄勒冈州
认证。公司在
EEPROM
®
PIC
、单片机外
ISO/TS-
DS70139E_CN ii  2007 Microchip Technology Inc.
dsPIC30F2011/2012/3012/3013
dsPIC30F201 1/2012/3012/3013
数字信号控制器
注: 本数据手册总结了 dsPIC30F 系列器件的功能,但是不 应把本手册当作无所不包的参考手册来使用。有关 CPU、外 设、寄存器说明和一般器件功能的更多信息,请参见
dsPIC30F 系列参考手册》(DS70046E_CN)。有关器件
指令集和编程的更多信息,请参见 《dsPIC30F/33F 程序员 参考手册》(DS70157B_CN)。

高性能改进型 RISC CPU

改进的哈佛架构
优化的 C 编译器指令集架构
灵活的寻址模式
83 条基本指令
24 位宽指令, 16 位宽数据总线
最大 24 KB 的片上闪存程序空间
最大 2 KB 的片上数据 RAM
最大 1 KB 的非易失性数据 EEPROM
16 x 16 位工作寄存器阵列
工作速度最高可达 30 MIPS :
-DC至 40 MHz 外部时钟输入
-4 MHz - 10 MHz 振荡器输入,带 PLL (4 倍 频、 8 倍频和 16 倍频)
最多 21 个中断源:
- 每一个中断具有 8 个用户可选择的中断优先
-3个外部中断源
-4个处理器陷阱源

DSP 特性:

双数据取操作
模寻址和位反转寻址模式
两个具备可选饱和逻辑的 40 位宽累加器
17 x 17 位单周期硬件小数 / 整数乘法器
所有 DSP 指令均为单周期指令
- 乘 - 累加 (MAC)操作
在一个周期内可将数据左右移位 16 位

外设特性:

高灌电流 / 拉电流 I/O 引脚:25 mA/25 mA
3 16 位定时器 / 计数器;可选择将 16 位定时器
配对组成 32 位定时器模块
16 位输入捕捉功能
高性能
16 位比较 /PWM 输出功能
3 线 SPI 模块 (支持 4 种帧模式)
2
I
C™ 模块支持多主器件 / 从模式和 7 位 /10 位寻
最多两个带有 FIFO 缓冲区的可寻址 UART 模块

模拟特性:

12 位模数转换器 (ADC)具有以下特性:
- 转换速率为 200 ksps
- 最多 10 个输入通道
- 在休眠和空闲模式下可以进行转换
可编程低电压检测 (Programmable Low-Voltage
Detection PLVD
可编程欠压复位

特殊数字信号控制器特性:

增强型闪存程序存储器:
- 对于工业级温度范围,最少擦写次数 1 万次, 典型擦写次数 10 万次。
数据 EEPROM 存储器:
- 对于工业级温度范围,最少擦写次数 10 次,典型擦写次数 100 万次。
软件控制下,可自行再编程
上电复位 (Power-on Reset, POR)、上电延时
定时器 (Power-up TimerPWRT)以及振荡器 起振定时器 (Oscillator Start-up Timer, OST
灵活的看门狗定时器 (Watchdog Timer, WDT)
带有片上低功耗 RC 振荡器,能保证可靠的运行
故障保护时钟监视器操作:
- 检测时钟故障并切换到片上低功耗 RC 振荡器
可编程代码保护
在线串行编程 (In-Circuit Serial
Programming™ ICSP™)功能
可选择的功耗管理模式:
- 休眠、空闲和备用时钟模式

CMOS 技术:

低功耗高速闪存技术
宽工作电压范围为 2.5V 至 5.5V
工业级温度范围和扩展级温度范围
低功耗
2007 Microchip Technology Inc. DS70139E_CN 第1
dsPIC30F2011/2012/3012/3013

dsPIC30F2011/2012/3012/3013 传感器系列

器件 引脚
程序存储器
字节 指令
dsPIC30F2011 18 12K 4K 1024 3 2 2 dsPIC30F3012 18 24K 8K 2048 1024 3 2 2 dsPIC30F2012 28 12K 4K 1024 3 2 2 dsPIC30F3013 28 24K 8K 2048 1024 3 2 2
引脚图
18 引脚 PDIP SOIC
SRAM字节EEPROM
字节
16
定时器输入捕捉
输出比较 / 标准 PWM
12 A/D 200 Ksps
8 通道
8 通道 10 通道 10 通道
C
SPI
2
UART
I
111 111 111 211
EMUD3/AN0/V
EMUC3/AN1/VREF-/CN3/RB1
EMUD1/SOSCI/T2CK/U1ATX/CN1/RC13
EMUC1/SOSCO/T1CK/U1ARX/CN0/RC14
28 引脚 PDIP SOIC
EMUD3/AN0/VREF+/CN2/RB0
EMUC3/AN1/V
EMUD1/SOSCI/T2CK/U1ATX/CN1/RC13
EMUC1/SOSCO/T1CK/U1ARX/CN0/RC14
28 引脚 SPDIP SOIC
EMUD3/AN0/VREF+/CN2/RB0
EMUC3/AN1/V
EMUD1/SOSCI/T2CK/U1ATX/CN1/RC13
EMUC1/SOSCO/T1CK/U1ARX/CN0/RC14
MCLR
REF+/CN2/RB0
/LVDIN/CN4/RB2
AN2/SS1
AN2/SS1/LVDIN/CN4/RB2
AN2/SS1/LVDIN/CN4/RB2
AN3/CN5/RB3
OSC1/CLKI
OSC2/CLKO/RC15
MCLR
REF-/CN3/RB1
AN3/CN5/RB3 AN4/CN6/RB4 AN5/CN7/RB5
OSC2/CLKO/RC15
IC2/INT2/RD9
REF-/CN3/RB1
AN3/CN5/RB3 AN4/CN6/RB4 AN5/CN7/RB5
IC2/INT2/RD9
VSS
OSC1/CLKI
VDD
MCLR
VSS
OSC1/CLKI V
VDD
1 2 3 4 5 6 7
8 9
1 2 3 4 5 6 7 8 9 10 11 12 13 14
1 2 3 4 5 6 7
8 9 10 11 12 13 14
18 17 16 15 14
V 13 12 11 10
dsPIC30F201
dsPIC30F301
AV
28
AVSS
27
AN6/OCFA/RB6
26
EMUD2/AN7/RB7
25
AN8/OC1/RB8
24
AN9/OC2/RB9
23
CN17/RF4
22
CN18/RF5
21
V
20
V
19
PGC/EMUC/U1RX/SDI1/SDA/RF2
18
dsPIC30F201
dsPIC30F301
PGD/EMUD/U1TX/SDO1/SCL/RF3
17
SCK1/INT0/RF6
16
EMUC2/IC1/INT1/RD8
15
28
AV
AVSS
27
AN6/OCFA/RB6
26
EMUD2/AN7/RB7
25
AN8/OC1/RB8
24
AN9/OC2/RB9
23
U2RX/CN17/RF4
22
U2TX/CN18/RF5
21 20
V
19
PGC/EMUC/U1RX/SDI1/SDA/RF2
18
PGD/EMUD/U1TX/SDO1/SCL/RF3
17
SCK1/INT0/RF6
16 15
EMUC2/IC1/INT1/RD8
DD
AV
SS
AV AN6/SCK1/INT0/OCFA/RB6 EMUD2/AN7/OC2/IC2/INT2/RB7
DD
V
SS
PGC/EMUC/AN5/U1RX/SDI1/SDA/CN7/RB5 PGD/EMUD/AN4/U1TX/SDO1/SCL/CN6/RB4 EMUC2/OC1/IC1/INT1/RD0
DD
DD SS
DD
DD SSOSC2/CLKO/RC15
注: 关于各个引脚的详细说明,请参见第 1.0 节 “器件概述”。
DS70139E_CN 2 2007 Microchip Technology Inc.
引脚图
28 引脚 QFN
dsPIC30F2011/2012/3012/3013
REF+/CN2/RB0
EMUD3/AN0/V
MCLR
EMUC3/AN1/VREF-/CN3/RB1
AVDD
AVSS
AN6/SCK1/INT0/OCFA/RB6
EMUD2/AN7/OC2/IC2/INT2/RB7
111213
NC
EMUC2/OC1/IC1/INT1/RD0
22
23
NC
21 20
NC
19
NC NC
18
VDD
17
VSS
16
PGC/EMUC/AN5/U1RX/SDI1/SDA/CN7/RB5
15
14
NC
PGD/EMUD/AN4/U1TX/SDO1/SCL/CN6/RB4
/LVDIN/CN4/RB2
AN2/SS1
OSC2/CLKO/RC15
AN3/CN5/RB3
NC NC
V
OSC1/CLKI
1 2 3 4
SS
5 6 7
2827262524
dsPIC30F2011
8910
DD
V
EMUD1/SOSC1/T2CK/U1ATX/CN1/RC13
EMUC1/SOSCO/T1CK/U1ARX/CN0/RC14
注: 关于各个引脚的详细说明,请参见第 1.0 节 “器件概述”。
2007 Microchip Technology Inc. DS70139E_CN 3
dsPIC30F2011/2012/3012/3013
引脚图
28 引脚 QFN
REF-/CN3/RB1
AVDD
AVSS
AN6/OCFA/RB6
AN2/SS1/LVDIN/CN4/RB2
AN3/CN5/RB3 AN4/CN6/RB4 AN5/CN7/RB5
V
OSC1/CLKI
OSC2/CLKO/RC15
1 2 3
4
SS
5 6 7
MCLR
EMUC3/AN1/V
EMUD3/AN0/VREF+/CN2/RB0
26
27
28
dsPIC30F2012
10
8
9
25
11
121314
EMUD2/AN7/RB7
22
23
24
21
AN8/OC1/RB8
20
AN9/OC2/RB9 CN17/RF4
19
CN18/RF5
18
V
DD
17
VSS
16
PGC/EMUC/U1RX/SDI1/SDA/RF2
15
DD
V
IC2/INT2/RD9
SCK1/INT0/RF6
EMUC2/IC1/INT1/RD8
PGD/EMUD/U1TX/SDO1/SCL/RF3
EMUD1/SOSCI/T2CK/U1ATX/CN1/RC13
EMUC1/SOSCO/T1CK/U1ARX/CN0/RC14
注: 关于各个引脚的详细说明,请参见第 1.0 节 “器件概述”。
DS70139E_CN 4 2007 Microchip Technology Inc.
引脚图
dsPIC30F2011/2012/3012/3013
44 引脚 QFN
PGC/EMUC/AN5/U1RX/SDI1/SDA/CN7/RB5
PGD/EMUD/AN4/U1TX/SDO1/SCL/CN6/RB4NCEMUC2/OC1/IC1/INT1/RD0NCNC
44 4342 4140 3938 3736 35
1 2 32
SS
V
3
NC
4
DD
V
5
NC NC NC NC NC NC NC
6 7 8
9 10 11
dsPIC30F3012
12 1314 1516 1718 1920 21
NC
NCNCV
DD
EMUC1/SOSCO/T1CK/U1ARX/CN0/RC14
34
22
EMUD1/SOSCI/T2CK/U1ATX/CN1/RC13
33
OSC2/CLKO/RC15 OSC1/CLKI VSS
31 30
SS
V
29
NC NC
28
NC
27
NC
26
AN3/CN5/RB3
25 24
NC
23
AN2/SS1/LVDIN/CN4/RB2
NC
NC
AVSS
AVDD
MCLR
REF+/CN2/RB0
AN6/SCK1/INT0/OCFA/RB6
EMUD2/AN7/OC2/IC2/INT2/RB7
EMUD3/AN0/V
注: 关于各个引脚的详细说明,请参见第 1.0 节 “器件概述”。
NC
NC
REF-/CN3/RB1
EMUC3/AN1/V
2007 Microchip Technology Inc. DS70139E_CN 第5
dsPIC30F2011/2012/3012/3013
引脚图
44 引脚 QFN
DD
EMUC1/SOSCO/T1CK/U1ARX/CN0/RC14
NC
IC2/INT2/RD9
V
PGD/EMUD/U1TX/SDO1/SCL/RF3
SCK1/INT0/RF6
EMUC2/IC1/INT1/RD8NCNC
NC
EMUD1/SOSCI/T2CK/U1ATX/CN1/RC13
PGC/EMUC/U1RX/SDI1/SDA/RF2
V
NC
V
NC NC
U2TX/CN18/RF5
NC
U2RX/CN17/RF4
AN9/OC2/RB9 AN8/OC1/RB8
444342414039383736
1 2 32
SS
3 4
DD
5 6
dsPIC30F3013
7 8
9 10 11
121314151617181920
NC
NC
AVSS
AVDD
AN6/OCFA/RB6
EMUD2/AN7/RB7
MCLR
REF-/CN3/RB1
REF+/CN2/RB0
EMUC3/AN1/V
EMUD3/AN0/V
35
21
NC
注: 关于各个引脚的详细说明,请参见第 1.0 节 “器件概述”。
34
OSC2/CLKO/RC15
33
OSC1/CLKI VSS
31
SS
V
30 29
NC NC
28
AN5/CN7/RB5
27
AN4/CN6/RB4
26
AN3/CN5/RB3
25
NC
24
AN2/SS1/LVDIN/CN4/RB2
23
22
NC
DS70139E_CN 第6 页  2007 Microchip Technology Inc.
dsPIC30F2011/2012/3012/3013
目录
1.0 器件概述 ....................................................................................................................................................................................... 9
2.0 CPU 架构概述 ............................................................................................................................................................................ 17
3.0 存储器构成 ................................................................................................................................................................................ 27
4.0 地址发生器单元 .......................................................................................................................................................................... 41
5.0 闪存程序存储器 .......................................................................................................................................................................... 47
6.0 数据 EEPROM 存储器 ................................................................................................................................................................ 53
7.0 I/O 端口 ...................................................................................................................................................................................... 57
8.0 中断 ............................................................................................................................................................................................ 63
9.0 Timer1 模块 ................................................................................................................................................................................ 71
10.0 Timer2/3 模块 ............................................................................................................................................................................. 75
11.0 输入捕捉模块.............................................................................................................................................................................. 81
12.0 输出比较模块.............................................................................................................................................................................. 85
13.0 SPI 模块 ..................................................................................................................................................................................... 89
2
14.0 I
C 模块 ...................................................................................................................................................................................... 93
15.0 通用异步收发器 (UART)模块 ............................................................................................................................................... 101
16.0 12 位模数转换器 (ADC)模块 ................................................................................................................................................ 109
17.0 系统集成 ................................................................................................................................................................................... 119
18.0 指令集汇总 ............................................................................................................................................................................... 133
19.0 开发支持 ................................................................................................................................................................................... 141
20.0 电气特性 ................................................................................................................................................................................... 145
21.0 封装信息 ................................................................................................................................................................................... 183
索引.................................................................................................................................................................................................... 193
Microchip 网站.................................................................................................................................................................................... 199
变更通知客户服务 .............................................................................................................................................................................. 199
客户支持............................................................................................................................................................................................. 199
读者反馈表 ......................................................................................................................................................................................... 200
产品标识体系 ..................................................................................................................................................................................... 201
致 客 户
我们旨在提供最佳文档供客户正确使用 Microchip 产品。 为此,我们将不断改进出版物的内容和质量,使之更好地满足您的要求。 出版物的质量将随新文档及更新版本的推出而得到提升。
如果您对本出版物有任何问题和建议,请通过电子邮件联系我公司 TRC 经理,电子邮件地址为 CTRC@microchip.com,或将本 数据手册后附的 《读者反馈表》传真到 86-21-5407 5066。我们期待您的反馈。
最新数据手册
欲获得本数据手册的最新版本,请查询我公司的网站:
http://www.microchip.com
查看数据手册中任意一页下边角处的文献编号即可确定其版本。文献编号中数字串后的字母是版本号 的 A 版本。
勘误表
现有器件可能带有一份勘误表,描述了实际运行与数据手册中记载内容之间存在的细微差异以及建议的变通方法。一旦我们了解到 器件 / 文档存在某些差异时,就会发布勘误表。勘误表上将注明其所适用的硅片版本和文件版本。
欲了解某一器件是否存在勘误表,请通过以下方式之一查询:
• Microchip 网站 http://www.microchip.com
当地 Microchip 销售办事处 (见最后一页)
在联络销售办事处时,请说明您所使用的器件型号、硅片版本和数据手册版本 (包括文献编号)。
客户通知系统
欲及时获知 Microchip 产品的最新信息,请到我公司网站 www.microchip.com 上注册。
例如:DS30000A是DS30000
2007 Microchip Technology Inc. DS70139E_CN 7
dsPIC30F2011/2012/3012/3013
注:
DS70139E_CN 8 2007 Microchip Technology Inc.
dsPIC30F2011/2012/3012/3013

1.0 器件概述

注: 本数据手册总结了 dsPIC30F 系列器件的功能,但是不 应把本手册当作无所不包的参考手册来使用。有关 CPU、外 设、寄存器说明和一般器件功能的更多信息,请参见
dsPIC30F 系列参考手册》(DS70046E_CN)。有关器件
指令集和编程的更多信息,请参见 《dsPIC30F/33F 程序员 参考手册》(DS70157B_CN)。
该数据手册包含 dsPIC30F2011dsPIC30F2012dsPIC30F3012 dsPIC30F3013 数字信号控制器
Digital Signal ControllerDSC)的特定信息。
dsPIC30F 系列器件在高性能 16 位单片机 (MCU)架 构中融合了大量数字信号处理器 (Digital Signal ProcessorDSP)功能。
下列框图给出了 dsPIC30F 系列器件的架构:
图 1-1 说明 dsPIC30F2011
图 1-2 说明 dsPIC30F2012
图 1-3 说明 dsPIC30F3012
图 1-4 说明 dsPIC30F3013 在框图后,表 1-1 给出了引脚功能信息。
2007 Microchip Technology Inc. DS70139E_CN 第 9
dsPIC30F2011/2012/3012/3013

1-1 dsPIC30F2011 框图

Y
中断
控制器
地址锁存器
程序存储器
12 KB
数据锁存器
数据总线
16
PSV
和表 数据访问 控制模块
24
24
24
24
16
PCU
程序计数器
堆栈
控制 逻辑
8
PCH PCL
ROM
锁存器
16
循环 控制 逻辑
Y数据
512
Y AGU
16
RAM
字节)
地址
锁存器
16
有效地址
16
16 X RAGU
X WAGU
16
X
数据总线
数据锁存器数据锁存器
X
512
锁存器
16
数据
RAM
地址
字节)
16
16
PORTB
EMUD3/AN0/V EMUC3/AN1/V AN2/SS1/LVDIN/CN4/RB2 AN3/CN5/RB3 PGD/EMUD/AN4/U1TX/SDO1/SCL/CN6/RB4 PGC/EMUC/AN5/U1RX/SDI1/SDA/CN7/R AN6/SCK1/INT0/OCFA/RB6 EMUD2/AN7/OC2/IC2/INT2/RB7
REF
+/CN2/RB0
REF
-/CN3/RB1
B5
OSC1/CLKI
16
指令
译码和
控制
时序 发生
MCLR
VDD, V
AVDD, AV
SS
SS
12位ADC
IR
上电延时
定时器 振荡器
起振定时器
POR/BOR
复位
看门狗 定时器
低电压
检测
定时器
输入 捕捉 模块
EMUD1/SOSCI/T2CK/U1ATX/CN1/RC13
16
16 x 16
W
输出 比较 模块
SPI1
16
寄存器阵列
16
ALU<16>
16
除法
单元
I2C™
UART1
PORTC
PORTD
译码
DSP
引擎
16
EMUC1/SOSCO/T1CK/U1ARX/CN0/RC14 OSC2/CLKO/RC15
EMUC2/OC1/IC1/INT1/RD0
DS70139E_CN 10  2007 Microchip Technology Inc.
dsPIC30F2011/2012/3012/3013

1-2 dsPIC30F2012 框图

Y
数据总线
中断
控制器
地址锁存器
程序存储器
12 KB
数据锁存器
24
24
24
PSV
数据访问 控制模块
24
和表
16
PCU
程序计数器
堆栈 控制 逻辑
8
PCH PCL
ROM
锁存器
16
循环 控制 逻辑
16
Y 数据
RAM
512
锁存器
Y AGU
16
字节)
地址
16
有效地址
X
16
16 X RAGU
X WAGU
16
数据总线
数据锁存器数据锁存器
X
RAM
512
地址
锁存器
16
数据
字节)
16
16
PORTB
REF
EMUD3/AN0/V EMUC3/AN1/V
AN2/SS1/LVDIN/CN4/RB2
AN3/CN5/RB3
AN4/CN6/RB4 AN5/CN7/RB5 AN6/OCFA/RB6 EMUD2/AN7/RB7 AN8/OC1/RB8 AN9/OC2/RB9
+/CN2/RB0
REF
-/CN3/RB1
OSC1/CLKI
16
指令
译码和
控制
时序 发生
VDD, V
AV
MCLR
DD
, AV
SS
SS
12位ADC
IR
上电
延时定时器
振荡器
起振定时器
POR/BOR
复位
看门狗 定时器
低电压
检测
定时器
输入 捕捉 模块
译码
DSP
引擎
16
输出 比较 模块
SPI1
16
16 x 16
W
寄存器阵列
16
ALU<16>
除法
单元
16
UART1
I2C™
EMUD1/SOSCI/T2CK/U1ATX/CN1/RC13
16
PORTC
PORTD
PORTF
EMUC1/SOSCO/T1CK/U1ARX/CN0/RC14
OSC2/CLKO/RC15
EMUC2/IC1/INT1/RD8 IC2/INT2/RD9
PGC/EMUC/U1RX/SDI1/SDA/RF2 PGD/EMUD/U1TX/SDO1/SCL/RF3 CN17/RF4 CN18/RF5 SCK1/INT0/RF6
2007 Microchip Technology Inc. DS70139E_CN 第 11
dsPIC30F2011/2012/3012/3013

1-3 dsPIC30F3012 框图

Y
中断
控制器
地址锁存器
程序存储器
24 KB
数据
EEPROM
1 KB
数据锁存器
数据总线
16
PSV
和表
数据访问
24
控制模块
24
24
24
16
PCU
堆栈
控制
逻辑
8
16
PCH PCL
程序计数器
循环 控制 逻辑
ROM
锁存器
Y AGU
16
Y 数据
RAM 1 KB
地址
锁存器
16
有效地址
16
16
X
数据总线
数据锁存器数据锁存器
X
RAM
(1 KB
地址
锁存器
16 X RAGU
X WAGU
16
数据
16
16
PORTB
EMUD3/AN0/V EMUC3/AN1/V AN2/SS1/LVDIN/CN4/RB2 AN3/CN5/RB3 PGD/EMUD/AN4/U1TX/SDO1/SCL/CN6/RB4 PGC/EMUC/AN5/U1RX/SDI1/SDA/CN7/R AN6/SCK1/INT0/OCFA/RB6 EMUD2/AN7/OC2/IC2/INT2/RB7
REF
+/CN2/RB0
REF
-/CN3/RB1
B5
OSC1/CLKI
16
指令
译码和
控制
时序 发生
MCLR
VDD, V
AVDD, AV
SS
SS
12位ADC
IR
上电
延时定时器
振荡器
起振定时器
POR/BOR
复位
看门狗 定时器
低电压
检测
定时器
输入 捕捉 模块
译码
DSP
引擎
16
输出 比较
模块
SPI1
16
16 x 16
W
寄存器阵列
16
ALU<16>
除法 单元
16
I2C™
UART1
EMUD1/SOSCI/T2CK/U1ATX/CN1/RC13
16
PORTC
PORTD
EMUC1/SOSCO/T1CK/U1ARX/CN0/RC14 OSC2/CLKO/RC15
EMUC2/OC1/IC1/INT1/RD0
DS70139E_CN 12  2007 Microchip Technology Inc.
dsPIC30F2011/2012/3012/3013

1-4 dsPIC30F3013 框图

Y
数据总线
中断
控制器
地址锁存器
程序存储器
24 KB
数据
EEPROM
1 KB
数据锁存器
24
24
24
PSV
数据访问 控制模块
24
和表
16
8
PCU
程序计数器
堆栈 控制 逻辑
ROM
16
PCH PCL
循环
控制
逻辑
锁存器
16
16
Y 数据
RAM
1 KB
地址
锁存器
Y AGU
16
16
16
X RAGU X WAGU
有效地址
16
X
数据总线
数据锁存器数据锁存器
X
锁存器
16
数据
RAM
1 KB
地址
16
16
PORTB
REF
EMUD3/AN0/V EMUC3/AN1/V
AN2/SS1/LVDIN/CN4/RB2 AN3/CN5/RB3 AN4/CN6/RB4 AN5/CN7/RB5 AN6/OCFA/RB6 EMUD2/AN7/RB7 AN8/OC1/RB8 AN9/OC2/RB9
+/CN2/RB0
REF
-/CN3/RB1
OSC1/CLKI
16
指令
译码和
控制
时序 产生
VDD, V
AV
MCLR
DD
, AV
SS
SS
12位ADC
IR
上电
延时定时器
振荡器
起振定时器
POR/BOR
复位
看门狗 定时器
低电压
检测
定时器
输入 捕捉 模块
译码
DSP
引擎
16
输出 比较 模块
SPI1
16
16 x 16
W
寄存器阵列
16
ALU<16>
除法
单元
16
I2C™
UART1,
UART2
EMUD1/SOSCI/T2CK/U1ATX/CN1/RC13
16
PORTC
PORTD
PORTF
EMUC1/SOSCO/T1CK/U1ARX/CN0/RC14 OSC2/CLKO/RC15
EMUC2/IC1/INT1/RD8 IC2/INT2/RD9
PGC/EMUC/U1RX/SDI1/SDA/RF2
PGD/EMUD/U1TX/SDO1/SCL/RF3 U2RX/CN17/RF4
U2TX/CN18/RF5 SCK1/INT0/RF6
2007 Microchip Technology Inc. DS70139E_CN 第 13
dsPIC30F2011/2012/3012/3013
1-1 对器件的引脚配置和端口引脚的复用功能进行了 简要描述。端口引脚可具有多种功能。当发生复用时, 外设模块的功能要求可强制改写端口引脚的数据方向。

1-1 引脚说明

引脚名称
AN0 - AN9 I Analog
DD PP
AV
AVSS PP
CLKI
CLKO
CN0 - CN7 I ST
EMUD EMUC EMUD1 EMUC1 EMUD2 EMUC2 EMUD3 EMUC3
IC1 - IC2 I ST
INT0 INT1 INT2
LVDI N I Anal og
MCLR
OC1-OC2 OCFA
OSC1
OSC2
PGD PGC
RB0 - RB9 I/O ST
RC13 - RC15 I/O ST
RD0, RD8 - RD9 I/O ST
RF2 - RF5 I/O ST
SCK1 SDI1 SDO1 SS1
引脚 类型
I
O
I/O I/O I/O I/O I/O I/O I/O I/O
I I I
I/P ST
O
I
I
I/O
I/O
I
I/O
I
O
I
图注: CMOS = CMOS 兼容输入或输出 Analog = 模拟输入
ST = CMOS 电平的施密特触发器输入 O=输出 I=输入 P=电源
缓冲器
类型
ST/CMOS
ST ST ST ST ST ST ST ST
ST ST ST
ST
ST/CMOS
ST ST
ST ST
ST
模拟输入通道。
模拟模块正电源。
模拟模块的参考地。
外部时钟源输入。总是与 OSC1 引脚功能相关联。 振荡器晶振输出。在晶振模式下,连接到晶振或谐振器。在 RCEC 模式下,可选择作为 CLKO。总是与 OSC2 引脚功能相关 联。
输入电平变化通知输入。 可通过软件编程设定所有输入为内部弱上拉。
ICD 主通信通道数据输入 / 输出引脚。 ICD 主通信通道时钟输入 / 输出引脚。 ICD 第二通信通道数据输入 / 输出引脚。 ICD 第二通信通道时钟输入 / 输出引脚。 ICD 第三通信通道数据输入 / 输出引脚。 ICD 第三通信通道时钟输入 / 输出引脚。 ICD 第四通信通道数据输入 / 输出引脚。 ICD 第四通信通道时钟输入 / 输出引脚。
捕捉输入 1 和 2
外部中断 0 外部中断 1 外部中断 2
低电压检测参考电压输入引脚。
主复位输入或编程电压输入。本引脚为低电平有效的器件复位输 入端。
比较输出 1 和 2。 比较故障 A 输入。
振荡器晶振输入。配置为 RC 模式时,为 ST 缓冲器;否则为 CMOS。 振荡器晶振输出。在晶振模式下,连接到晶振或谐振器。在 RCEC 模式下,可选择作为 CLKO
在线串行编程数据输入/输出引脚。 在线串行编程时钟输入引脚。
PORTB 为双向 I/O 口。
PORTC 为双向 I/O 口。
PORTD 为双向 I/O 口。
PORTF 为双向 I/O 口。
SPI1 的同步串行时钟输入 / 输出。 SPI1 数据输入。 SPI1 数据输出。 SPI1 从同步。
说明
DS70139E_CN 14 2007 Microchip Technology Inc.
dsPIC30F2011/2012/3012/3013
1-1 引脚说明 (续)
引脚名称
SCL SDA
SOSCO SOSCI
T1CK T2CK
U1RX U1TX U1ARX U1ATX U2RX U2TX
V
DD P
V
SS P
REF+IAnalog
V
REF-IAnalog
V
引脚 类型
I/O I/O
O
I
I I
I
O
I
O
I
O
图注: CMOS = CMOS 兼容输入或输出 Analog = 模拟输入
ST = CMOS 电平的施密特触发器输入 O=输出 I=输入 P=电源
缓冲器
类型
ST ST
ST/CMOS
ST ST
ST
ST
ST
逻辑电路和 I/O 引脚的正电源。
逻辑电路和 I/O 引脚的参考地。
2
用于 I
C 的同步串行时钟输入 / 输出。
2
用于 I
C 的同步串行数据输入 / 输出。
32 kHz 低功耗晶振输出。 32 kHz 低功耗晶振输入。配置为 RC 模式时,为 ST 缓冲器;否 则为 CMOS
Timer1 外部时钟输入。 Timer2 外部时钟输入。
UART1 接收。 UART1 发送。 UART1 备用接收。 UART1 备用发送。 UART2 接收。 UART2 发送。
模拟参考电压 (高电压)输入。
模拟参考电压 (低电压)输入。
说明
2007 Microchip Technology Inc. DS70139E_CN 15
dsPIC30F2011/2012/3012/3013
注:
DS70139E_CN 16 2007 Microchip Technology Inc.
dsPIC30F2011/2012/3012/3013

2.0 CPU 架构概述

注: 本数据手册总结了 dsPIC30F 系列器件的功能,但是不 应把本手册当作无所不包的参考手册来使用。有关 CPU、外 设、寄存器说明和一般器件功能的更多信息,请参见
dsPIC30F 系列参考手册》(DS70046E_CN)。有关器件
指令集和编程的更多信息,请参见 《dsPIC30F/33F 程序员 参考手册》(DS70157B_CN)。
本章概述了 dsPIC30F CPU 架构,其内核具有 24
指令字。 程序计数器(PC)为 23 位宽,且最低有效位Least Significant bitLSb)总是处于清零状态 (见第 3.1 节 “程序地址空间”)。 除某些专用指令
外,在正常程序执行期间,忽略最高有效位 (Most
Significant bitMSb)。 鉴于此,PC 最多可寻址 4M
令字的用户程序空间。 它使用指令预取机制来帮助维持
吞吐量。 使用 DO REPEAT 指令支持无需循环计数管
理开销的程序循环结构,这两条指令在任何时候都可被
中断。

2.1 内核概述

工作寄存器阵列由 16 16 位寄存器组成,每个工作寄
存器都可以充当数据、地址或地址偏移量寄存器。 工作
寄存器 (W15)用作中断和调用操作的软件堆栈指针。
数据空间为 64 KB 32K 字),它被分成两块,分别称
X 数据存储区和 Y 数据存储区。 每个存储区都有各自
独立的地址发生单元 (Address Generation Unit
AGU)。 大部分指令只通过 X 存储区 AGU 进行操作,
这样对外界而言数据空间就是单独而统一的。 乘-累加MAC)类双源操作数 DSP 指令通过 X Y AGU
行操作,将数据地址空间分成两个部分 (见第 3.2 节 “数据地址空间”)。 X 和 Y 数据空间的边界视具体器件
而定,不能由用户修改。 每个数据字由 2 个字节组成,
大部分指令可以按字或字节对数据进行寻址。
访问程序存储器中的数据的方法有两种:
数据存储空间的高 32 KB 可以映射到程序空间的
下半部分 (用户空间),映射的边界可以是任何 16K 程序字边界,边界由 8 位的程序空间可视性页
Program Space Visibility PagePSVPAG)寄
存器定义。这种映射功能让任何指令都能像访问数 据空间一样访问程序空间。但访问需要额外占用一 个指令周期。 且使用此方法仅能访问每个指令字的16 位。
也可以通过表读 / 表写指令使用工作寄存器对程序 空间内大小为 32K 字的页进行线性间接寻址。 使用表读和表写指令访问一个指令字的所有 24 位。
XY 地址空间都支持无开销的循环缓冲区(模寻址)。 模寻址主要用于减少 DSP 算法的循环开销。
X AGU 还支持对目的有效地址的位反转寻址,从而大 幅简化了基 2 FFT 算法对输入或输出数据的重新排序。 欲知有关模寻址和位反转寻址的详细信息,请参见第
4.0 节 “地址发生器单元”。
内核支持固有 (无操作数)寻址、相对寻址、立即数寻 址、存储器直接寻址、寄存器直接和寄存器间接寻址, 以及寄存器偏移量和立即数偏移量寻址模式。 指令根据 其功能要求,与预定义的寻址模式相关。
对于大多数指令,在每个指令周期内,内核能执行一次 数据 (或程序数据)存储器读操作、一次工作寄存器
(数据)读操作、一次数据存储器写操作和一次程序(指
令)存储器读操作。 因此,可以支持 3 操作数的指令, 使 C=A + B操作能在单周期内执行。
内核包含一个 DSP 引擎,从而能够显著增强内核的运 算和吞吐能力。 DSP 引擎具备一个高速 17 位 x 17 位乘 法器、一个 40 ALU、两个 40 位饱和累加器和一个 40 位双向桶形移位寄存器。 在单个周期内,至多可将累 加器或工作寄存器中的数据右移 15 位或左移 16 位。 DSP 指令可以无缝地与所有其他指令一起操作,其设计 可实现最佳的实时性能。 MAC类指令可以同时从存储器 中取出两个数据操作数并将两个W寄存器相乘。 为了能 够同时取两个数据操作数,数据空间对于这些指令拆分 为两块,但对所有其他指令保持线性。对于 MAC 类指 令,这是通过将某些工作寄存器专用于每个地址空间, 以透明而灵活的方式实现的。
2007 Microchip Technology Inc. DS70139E_CN 17
dsPIC30F2011/2012/3012/3013
内核不支持多级指令流水线, 它采用的是单级指令预取 机制,该机制在执行指令的前一个周期取要执行的指令 并对其部分译码,从而使可用执行时间最长。除了某些 特例外,大部分指令都在一个指令周期内执行完毕。
内核具有用于处理陷阱和中断的向量异常处理结构,提 供 62 个独立向量。 异常由最多 8 个陷阱 (其中 4 个保 留)和 54 个中断组成。 根据用户指定的 1 到 7 之间的 优先级 (1 为最低优先级, 7 为最高优先级),以及预 定义的 “自然顺序”,决定每个中断的优先级。陷阱的
优先级是固定的,其优先级范围是从 8 15

2.2 编程模型

2-1 为编程模型,它包括 16 16 位工作寄存器(W0W15)、 2 40 位累加器 (ACCA ACCB)、 状 态寄存器 (SR)、数据表页寄存器 (TBLPAG)、程序 空间可视性页寄存器(PSVPAG)、 DO 和 REPEAT 存器(DOSTART、DOEND、 DCOUNT 和 RCOUNT 以及程序计数器(PC)。 工作寄存器可充当数据、地址 或偏移量寄存器。 所有寄存器均为存储器映射。 W0 用 作执行文件寄存器寻址的 W 寄存器。
其中的一些寄存器有与之关联的影子寄存器(见图2-1)。 影子寄存器被用作临时保存寄存器,它能够在事件发生 时将其主寄存器中的内容送入其中或将自身内容送回主 寄存器。 影子寄存器都是不可直接访问的。 如下指令适 用于寄存器与影子寄存器间的数据传递。
PUSH.S POP.S
W0W1W2W3 SR (仅限 DC、 N、 OV、 Z 和 C 位)与对应的影子寄存器之间进行数
据传递。
DO 指令
循环开始时, DOSTART、 DOEND 和 DCOUNT 寄存器的内容压入影子寄存器,在循环结束时其内
容从各自的影子寄存器中弹出。
当对一个工作寄存器执行字节操作时,仅目的寄存器的 低字节 (Least Significant ByteLSB)会受到影响。 但对于存储器映射的工作寄存器来说,可以通过对数据 存储空间进行字节宽度的访问来对工作寄存器的低字节 和高字节 (Most Significant ByteMSB)进行操作, 这一点是很有益的。

2.2.1 软件堆栈指针 / 帧指针

dsPIC® DSC 器件具有一个软件堆栈。W15 是专用的软
件堆栈指针(Stack Pointer SP)。它可被异常处理、 子程序调用和返回自动修改,并且也能够被任何指令引 用 (方法与引用其他工作寄存器相同)。这样就简化了 对堆栈指针的读、写和操作 (例如,创建堆栈帧)。
注: 为了防止出现不对齐的堆栈访问,
W15<0> 始终保持为零。
复位时 W15 被初始化为 0x0800 在初始化期间,用户 可以将 SP 重新编程以指向数据空间内的任何单元。
W14 是专用的堆栈帧指针,由 LNK ULNK 指令定义。 并且也能够被任何指令引用(方法与引用其他工作寄存 器相同)。

2.2.2 状态寄存器

dsPIC DSC 内核具有一个 16 位状态寄存器(SR), 它
的低字节 (LSB)被称为 SR 低字节 (SRL),它的高 字节 (MSB)被称为 SR 高字节 (SRH)。 有关 SR 的 组成请参见图 2-1
SRL 包含了所有的 MCU ALU 运算状态标志位(包括 Z 位),以 及 CPU中断优先级状态位IPL<2:0>REPEAT 有效状态位 RA 在异常处理期间,SRL 与 PC 的 MSB 连在一起形成一个完整的字值,然后将该字的值压入堆 栈。
状态寄存器的高字节包含 DSP 加法器 / 减法器状态位、
DO 循环有效位 (DA)以及半进位 (DC)状态位。

2.2.3 程序计数器

程序计数器为 23 位宽; bit 0 总是为零。因此,PC 可 寻址最多 4M 指令字。
DS70139E_CN 18 2007 Microchip Technology Inc.
2-1 编程模型
DSP 操作数 寄存器
DSP 地址 寄存器
dsPIC30F2011/2012/3012/3013
D0D15
W0/WREG
W1 W2
W3 W4 W5
W6 W7
W8 W9
W10 W11
W12/DSP 偏移量寄存器
W13/DSP 回写寄存器
W14/ 帧指针
W15/ 堆栈指针
工作寄存器
PUSH.S 影子寄存器
DO 影子寄存器
图注
DSP
累加器
PC22
7
22
22
TABPAG
TBLPAG
7
PSVPAG
PSVPAG
AD39 AD0AD31 ACCA ACCB
0
数据表页地址
0
程序空间可视性页地址
15
15
DOSTART
DOEND
SPLIM
RCOUNT
DCOUNT
PC0
堆栈指针限制寄存器
AD15
程序计数器
0
0
REPEAT 循环计数器
0
DO 循环计数器
0
DO 循环起始地址
DO 循环结束地址
15
CORCON
OA OB SA SB
2007 Microchip Technology Inc. DS70139E_CN 第 19
OAB SAB
SRH
DA DC
IPL2 IPL1
RA
IPL0 OV
SRL
0
内核配置寄存器
N
C
Z
状态寄存器
dsPIC30F2011/2012/3012/3013

2.3 除法支持

dsPIC DSC 器件支持16 位 /16 位有符号小数除法运算、 32 /16 位和 16 /16 位有符号和无符号整数除法运
算。所有除法运算都是单指令周期内的迭代操作。 支持 以下指令和数据长度:
1. DIVF 16/16 有符号小数除法
2. DIV.sd 32/16 有符号除法
3. DIV.ud 32/16 无符号除法
4. DIV.s 16/16 有符号除法
5. DIV.u 16/16 无符号除法 16/16 除法与 32/16 除法类似(迭代次数相同),区 别 在
于发生第一次迭代时,被除数要执行零扩展或是符号扩 展。

2-1 除法指令

指令 功能
DIVF DIV.sd
DIV.s DIV.ud DIV.u
有符号小数除法: Wm/Wn W0; Rem W1 有符号除法: (Wm+1:Wm)/Wn W0; Rem W1 有符号除法: Wm/Wn W0; Rem W1 无符号除法: (Wm+1:Wm)/Wn W0; Rem W1 无符号除法: Wm/Wn W0; Rem W1
必须在一个 REPEAT 循环周期内执行除法指令。 任何其 他执行方式(例如一系列不连续的除法指令)都无法得 到正确的结果,因为指令流取决于 RCOUNT 的值。 法指令本身无法自动设置 RCOUNT 值,因此必须在 REPEAT 指令中明确且正确给出该值,如表 2-1 所示
REPEAT 将执行目标指令 {操作数的值+ 1}次)DIV/
DIVF指令的REPEAT循环计数必须被设置为18次迭代。 因此,一个完整的除法运算需要 19 个指令周期。
注: 除法流是可中断的。但用户需要正确地保
护现场。
DS70139E_CN 20 2007 Microchip Technology Inc.
dsPIC30F2011/2012/3012/3013

2.4 DSP 引擎

DSP 引擎由一个高速 17 x 17 位乘法器、一个桶形移 位寄存器和一个 40 位加法器 / 减法器 (带有两个目标 累加器以及舍入和饱和逻辑)组成。
DSP 引擎能够执行固有的“累加器—累加器”操作,而 无需额外数据。 这些指令为 ADDSUB NEG。
dsPIC30F 采用单周期指令流架构,因此 DSP 引擎操作MCU指令流不能同时进行。 但某些MCU ALUDSP 引擎资源可被同一条指令同时使用 (如 ED EDAC)。
(有关 DSP 指令见表 2-2)。

2-2 DSP 指令汇总

指令 代数运算 ACC 回写 ?
CLR A = 0
ED A = (x – y)
EDAC A = A + (x – y)
MAC A = A + (x * y) MAC A = A + x
MOVSAC
MPY A = x * y
MPY.N A = – x * y
MSC A = A – x * y
通过 CPU 内核配置寄存器(CORCON)的不同位可以 选择 DSP 引擎的不同功能,如下所示:
1. 小数或整数 DSP 乘法 (IF)。
2. 有符号或无符号 DSP 乘法 (US)。
3. 常规或收敛舍入 (RND)。
4. ACCA 自动饱和使能 / 禁止 (SATA)。
5. ACCB 自动饱和使能 / 禁止 (SATB)。
6. 用于写数据存储器的自动饱和使能/禁止(SATDW)。
7. 累加器饱和模式选择 (ACCSAT)。
注: 请参见表 3-3 了解 CORCON 的组成。
2-1 给出了 DSP 引擎的框图。
2
2
2
A 的值不发生变化
是 否 否 是 否
否 否 是
2007 Microchip Technology Inc. DS70139E_CN 21
dsPIC30F2011/2012/3012/3013

2-2 DSP 引擎框图

40
进位 / 借位输出
进位 / 借位
输入
40 位累加器 A 40 位累加器 B
饱和
加法器
取补
40
舍入
逻辑
S
a
t
u
r
a
t
e
16
饱和
Y 数据总线
40
符号扩展
33
17
乘法器 / 定标器
16
40
40
16
桶形 移位
寄存器
32
32
40
16
X 数据总线
16
补零
/ 来自 W 阵列
DS70139E_CN 22  2007 Microchip Technology Inc.
dsPIC30F2011/2012/3012/3013

2.4.1 乘法器

17 x 17位的乘法器可以进行有符号或无符号的运算,
其输出经过定标器进行换算后可支持 1.31 小数(Q31) 或 32 位整数结果。无符号操作数经过零扩展后,送入 乘法器输入值的第 17 位。有符号操作数经过符号扩展, 送入乘法器输入值的第 17 位。17 位 x 17 位乘法器 / 标器的输出是 33 位值,它将被符号扩展为 40 位。 整型 数据的固有表示形式为有符号的二进制补码值,其中, MSb 定义为符号位。一般来说,N 位二进制补码整数的 范围为 -2
-32768 0x800032767 0x7FFF),包括 0 内。对于 32 位整数,数据范围是 -2,147,483,648
0x8000 0000 至 2,147,483,645 (0x7FFF FFFF)。
当乘法器配置为小数乘法时,数据表示为二进制补码小 数,其中 MSb 定义为符号位,小数点暗含在符号位之 后(QX 格式)。暗含小数点的 N 位二进制补码小数的 范围是 -1.0 至(1 – 2 范围是 -1.0 0x8000)至 0.999969482 0x7FFF), 包括 0 在内,其精度为 3.01518x10
16x16 乘法运算将产生 1.31 乘积,其精度为 4.65661 x 10
同一个乘法器还用来支持 MCU 乘法指令,包括整数的 16 位有符号、无符号和混和符号乘法。
MUL 指令可以使用字节或字长度的操作数。字节操作数 将产生 16 位结果,而字操作数将产生 32 位结果,结果
存放在 W 寄存器阵列的指定寄存器中。
-10
N-1
N-1
2
– 1。对于 16 位整数,数据范围是
1-N
)。对 于 16 位小数,Q15 数据
-5
。在小数方式下,

2.4.2 数据累加器和加法器 / 减法器

数据累加器具有一个带有自动符号扩展逻辑的 40 位加 法器 / 减法器。它可以选择两个累加器 (A B)之一 作为它累加前的源和累加后的目标。对于 ADD 和 LAC指 令,可选择通过桶形移位器在累加之前对将被累加或装 入的数据进行换算。
2.4.2.1 加法器 / 减法器、溢出和饱和
加法器 / 减法器为一个 40 位的加法器,一侧输入可以选 择为零,而另一侧的输入可以是数据的原码或补码。对 于加法, 进位 / 借位输入是高有效的,另一侧输入是数 据的原码 (没有求补的);对于减法,进位 / 借位 是低有效的, 另一侧输入是数据的补码。 由状态寄存器 中的 SA/SB OA/OB 提供加法器 / 减法器的溢出状态:
bit 39 溢出:这是一种灾难性的溢出,因为它破
坏了累加器的符号位。
溢出到警戒位 bit 32 bit 39:这是一种可恢复的 溢出。 这些警戒位不完全相同时,该位置 1。
加法器有一个额外的饱和模块,如果选用该模块将控制 累加器的数据饱和。 饱和模块使用加法器的结果、上一 段所述的溢出状态位以及 SATA/B (CORCON<7:6>ACCSAT CORCON<4>)模式控制位来决定何时 以及在何值达到饱和。
在状态寄存器中有 6 个支持饱和及溢出的位, 它们是:
1. OA
ACCA 溢出至警戒位
2. OB
ACCB 溢出至警戒位
3. SA
ACCA 已饱和 (bit 31 溢出并饱和)
输入
ACCA 溢出至警戒位并饱和(bit 39溢出并饱和)
4. SB
ACCB 已饱和 (bit 31 溢出并饱和)
ACCB 溢出至警戒位并饱和(bit 39溢出并饱和)
5. OAB
OA OB 的逻辑或 (OR
6. SAB
SA SB 的逻辑或 (OR
每次数据通过加法器 / 减法器,就会修改 OA 位和 OB 位。 置 1 时,它们表明最近的运算已经溢出到累加器警 戒位 (bit 32 bit 39)。 如果 OA 和 OB 位置 1 而且
INTCON1 寄存器中相应的溢出陷阱允许位(OVATE OVBTE)也 置 1 的话,还可以选择用 OA 和 OB 位产生
算术警告陷阱 (见第 8.0 节 “中断”)。 这使得用户能 够立即采取措施,例如校正系统增益。
2007 Microchip Technology Inc. DS70139E_CN 23
dsPIC30F2011/2012/3012/3013
每次数据通过加法器 / 减法器,就会修改 SA SB 位, 但它们只能由用户清零。 置 1 时,它们表明累加器已经 溢出其最大范围 (32 位饱和是 bit 31,而 40 位饱和是 bit 39),将发生饱和 (如果饱和使能的话)。 如果没有 使能饱和,SA 和 SB 置 1 默认为 bit 39 溢出,即表明发 生灾难性溢出。 如果 INTCON1 寄存器中的 COVTE 位1,当饱和被禁止时,SA SB 位将产生算术警告陷 阱。
可选择将状态寄存器中的溢出和饱和状态位分别视作 OA OB 的逻辑或 (OAB 位)以及 SA SB 的逻辑 或(SAB 位)。 这样,只需要检查状态寄存器中的一个 位,编程人员就能够判断出是否有累加器溢出;检查状 态寄存器中另一个位就能判断出是否有累加器饱和。 于通常需要使用两个累加器的复数运算而言,这很有 用。
器件支持三种饱和及溢出模式:
1. Bit 39 溢出和饱和: 当发生 bit 39 溢出和饱和时,饱和逻辑将最大的正 数 9.31 0x7FFFFFFFFF)或最小的负数 -9.31 值(0x8000000000)装入目标累加器。 SA 或 SB 位被置 1 且保持置 1 状态,直至被用户清零。 称为 “超饱和” ,为错误数据或不可预期的算法 问题 (例如,增益计算)提供了保护机制。
2. Bit 31 溢出和饱和: 当发生 bit 31 溢出和饱和时,饱和逻辑将最大的正 数 1.31 0x007FFFFFFF)或最小的负数 -1.31
0x0080000000)装入目标累加器。 SA 或 SB
被置 1 且保持置 1 状态,直至被用户清零。 当此 饱和模式生效时,不使用警戒位,因此 OAOBOAB 位永远不会置 1
3. Bit 39 灾难性溢出: 加法器的 bit 39 溢出会将 SA SB 位置 1 并保 持该状态直至被用户清零。 不执行饱和操作,允 许累加器溢出 (破坏累加器的符号位) 。 如果 INTCON1 寄存器中的 COVTE 位置 1,则灾难性 溢出可能引发陷阱异常。
2.4.2.2 累加器 “ 回写”
MAC 类指令(MPY、 MPY.N、 ED 和 EDAC 除外)可以 选择将累加器高位字 (bit 16 bit 31)的舍入形式写 入数据存储空间,前提是当前指令不对该累加器进行操 作。 通过 X 总线将数据写入组合的 X 和 Y 地址空间来 执行此回写操作。 支持下列寻址模式:
1. W13,寄存器直接寻址: 非目标累加器的舍入内容以 1.15 小数形式写入
W13
2. [W13] + = 2,带后递增的寄存器间接寻址: 非目标累加器的舍入内容以 1.15 小数形式写入 W13 指向的地址。 W13 的值递增 2 (对于字写
操作)。
2.4.2.3 舍入逻辑
舍入逻辑为一个组合的模块,在累加器写(存储)过程 中可以执行常规的 (有偏)或收敛的 (无偏)舍入功 能。 由 CORCON 寄存器的 RND 位的状态决定舍入模 式。 它会产生一个 16 位的 1.15 数据值,该值被送入到 数据空间写饱和逻辑。 如果指令没有明确指定舍入,那 么将会存储一个截取的 1.15 数据值而只丢弃低位字
lsw)。
常规舍入取累加器 bit 15 的值,对其进行零扩展并将扩 展值加到 ACCxH 字 (累加器的 bit 16 bit 31ACCxL 字(累加器的 bit 0 bit 15)的值在 0x80000xFFFF (含 0x8000)之间, ACCxH 的值递增 1。 如果 ACCxL 字的值在0x0000 0x7FFF 之间, ACCxH 的值不变。 此算法的结果经过一系列随机舍入操作,值 将稍稍偏大 (正偏)。
收敛 (或无偏)舍入操作与常规舍入操作相同,但
ACCxL 等于 0x8000 时例外。 在此种情况下,检查 ACCxH 的最低位 (累加器的 bit 16)。 如果该位为 1 ACCxH 的值增 1。 如果该位为 0ACCxH 的值不变。
假设 bit 16 本身就是一个随机数,那么此机制将消除任 何可能累加的舍入偏差。
SACSAC.R指令通过X 总线将目标累加器内容的截取 值(SAC)或舍入值 (SAC.R)存储到数据存储空间。
(受数据饱和的影响,见第 2.4.2.4 节 “数据空间写饱
和”)。 注意对于 MAC 类指令,累加器回写操作以相同 的方式工作,通过 X 总线访问组合的 MCU X Y) 数据空间。 对于此类指令,总是对数据进行舍入。
DS70139E_CN 24 2007 Microchip Technology Inc.
dsPIC30F2011/2012/3012/3013
2.4.2.4 数据空间写饱和
除加法器 / 减法器会饱和外,写数据空间也会饱和但不 影响源累加器的内容。 数据空间写饱和逻辑模块接受一 个来自舍入逻辑模块的 16 1.15 小数值作为其输入, 还接受来自源 (累加器)和 16 位舍入加法器的溢出状
态。 这些经过组合,用来选择恰当的 1.15 小数值作为输 出,写入至数据存储空间中。
如果 CORCON 寄存器的 SATDW 位置 1,则检测数据
(舍入和截取后的值)是否溢出并作相应调整。 针对大
0x007FFF 的输入数据,写入存储器的数据被强制为 最大的1.15值形式的正数0x7FFF 针对小于0xFF8000 的输入数据,写入存储器的数据被强制为最大的1.15 值 形式的负数 0x8000。源累加器的最高位(bit 39)用来
决定被检测的操作数的符号。
如果 CORCON 寄存器中的 SATDW 位没有置 1,则输 入数据都将通过,在任何情况下都不会被修改。

2.4.3 桶形移位器

桶形移位寄存器在单个周期内可将数据逻辑或算术右移 或左移最多 16 位。 源操作数可为两个 DSP 累加器之一X 总线(以支持对寄存器或存储器中的数据进行多位 移位)。
移位寄存器需要一个有符号二进制值来确定移位操作的 方向和幅度 (位的数量)。 正数将操作数右移。 负数将 操作数左移。 0 值不改变操作数。
桶形移位寄存器是 40 位宽的,于是,它为 DSP 移位操 作提供了 40 位的结果,而为 MCU 移位操作提供 16 位 的结果。来自 X 总线的数据在桶形移位寄存器中的存放
方式是:右移则数据存放在 bit 16 bit 31,左移则存 放在 bit 0 bit 15
2007 Microchip Technology Inc. DS70139E_CN 25
dsPIC30F2011/2012/3012/3013
注:
DS70139E_CN 26 2007 Microchip Technology Inc.
dsPIC30F2011/2012/3012/3013

3.0 存储器构成

注: 本数据手册总结了 dsPIC30F 系列器件的功能,但是不 应把本手册当作无所不包的参考手册来使用。 有关CPU、外 设、寄存器说明和一般器件功能的更多信息,请参见
dsPIC30F 系列参考手册》(DS70046E_CN)。 有关器件
指令集和编程的更多信息,请参见 《dsPIC30F/33F 程序员 参考手册》(DS70157B_CN)。

3.1 程序地址空间

程序地址空间为 4M 指令字。 dsPI30F2011/2012 的程 序存储空间映射如图 3-1 所示。 dsPI30F3012/3013 的 程序存储空间映射如图 3-2 所示。
当程序空间按表 3-1 中的定义映射到数据空间时,可由 来自 23 PC、表指令有效地址 (Effective AddressEA)或数据空间 EA 24 位值寻址。 注意在访问连续的 程序字时,程序空间地址应该增 2 以与数据空间寻址相 一致。
用户只能访问程序存储空间的低 4M 指令字(地址范围 为 0x000000 0x7FFFFE);使用 TBLRD/TBLWT 指 令时情况有所不同,这两条指令使用 TBLPAG<7> 来确 定访问用户空间还是配置空间。 在表 3-1 (程序空间地 址构成)中,bit 23 为 1 允许访问器件 ID、用 户 ID 和配 置位。 否则, bit 23 总是处于清零状态。
2007 Microchip Technology Inc. DS70139E_CN 27
dsPIC30F2011/2012/3012/3013
3-1 dsPIC30F2011/2012 程序存
储空间映射
空间
用户存储
复位 – GOTO 指令
复位 – 目的地址
中断向量表
保留
备用向量表
用户闪存
程序存储器
4K 指令字)
保留
(读为 0)
000000 000002 000004
00007E 000080
000084 0000FE 000100
001FFE 002000
7FFFFE 800000
向量表
3-2 dsPIC30F3012/3013 程序存
储空间映射
复位 – GOTO 指令
复位 – 目的地址
中断向量表
保留
备用向量表
空间
用户存储
用户闪存
程序存储器
8K 指令字)
保留
(读为 0
数据 EEPROM
1 KB
000000 000002 000004
00007E 000080
000084 0000FE
000100
003FFE 004000
7FFBFE
7FFC00
7FFFFE 800000
向量表
配置存储
空间
保留
部件 ID(32 指令字)
保留
器件配置
寄存器
保留
DEVID(2)
8005BE 8005C0
8005FE
800600
F7FFFE F80000
F8000E F80010
FEFFFE
FF0000 FFFFFE
空间
配置存储
保留
部件 ID(32 指令字)
保留
器件配置
寄存器
保留
DEVID(2)
8005BE 8005C0
8005FE 800600
F7FFFE
F80000 F8000E
F80010
FEFFFE FF0000
FFFFFE
DS70139E_CN 28 2007 Microchip Technology Inc.
Loading...
+ 174 hidden pages