MICROCHIP dsPIC30F6012A, dsPIC30F6013A, dsPIC30F6014A Technical data

dsPIC30F6011A/6012A/6013A/6014A
数据手册
高性能
数字信号控制器
2006 Microchip Technology Inc. 初稿 DS70143B_CN
请注意以下有关 Microchip 器件代码保护功能的要点:
Microchip 的产品均达到 Microchip 数据手册中所述的技术指标。
Microchip 确信:在正常使用的情况下, Microchip 系列产品是当今市场上同类产品中最安全的产品之一。
目前,仍存在着恶意、甚至是非法破坏代码保护功能的行为。就我们所知,所有这些行为都不是以 Microchip 数据手册中规定的 操作规范来使用 Microchip 产品的。这样做的人极可能侵犯了知识产权。
Microchip 愿与那些注重代码完整性的客户合作。
Microchip 或任何其他半导体厂商均无法保证其代码的安全性。代码保护并不意味着我们保证产品是 “牢不可破”的。
代码保护功能处于持续发展中。 Microchip 承诺将不断改进产品的代码保护功能。任何试图破坏 Microchip 代码保护功能的行为均可视 为违反了 《数字器件千年版权法案 (Digital Millennium Copyright Act)》。如果这种行为导致他人在未经授权的情况下,能访问您的 软件或其他受版权保护的成果,您有权依据该法案提起诉讼,从而制止这种行为。
提供本文档的中文版本仅为了便于理解。请勿忽视文档中包含 的英文部分,因为其中提供了有关 Microchip 产品性能和使用
情况的有用信息。Microchip Technology Inc. 及其分公司和相 关公司、各级主管与员工及事务代理机构对译文中可能存在的 任何差错不承担任何责任。建议参考 Microchip Technology Inc. 的英文原版文档。
本出版物中所述的器件应用信息及其他类似内容仅为您提供便 利,它们可能由更新之信息所替代。确保应用符合技术规范, 是您自身应负的责任。Microchip 对这些信息不作任何明示或 暗示、书面或口头、法定或其他形式的声明或担保,包括但不 限于针对其使用情况、质量、性能、适销性或特定用途的适用 性的声明或担保。 Microchip 对因这些信息及使用这些信息而 引起的后果不承担任何责任。如果将 Microchip 器件用于生命 维持和 / 或生命安全应用,一切风险由买方自负。买方同意在 由此引发任何一切伤害、索赔、诉讼或费用时,会维护和保障 Microchip 免于承担法律责任,并加以赔偿。在 Microchip 知识 产权保护下,不得暗中或以其他方式转让任何许可证。
商标
Microchip 的名称和徽标组合、 Microchip 徽标、 Accuron dsPIC、 K
EELOQ、 microID、 MPLAB、 PIC、 PICmicro、
PICSTARTPRO MATEPowerSmart、 rfPIC 和 SmartShunt 均为 Microchip Technology Inc. 在美国和其他国
家或地区的注册商标。
AmpLabFilterLabMigratable MemoryMXDEV MXLABSEEVALSmartSensor The Embedded Control Solutions Company 均为 Microchip Technology Inc.在美国的
注册商标。
Analog-for-the-Digital AgeApplication Maestro dsPICDEMdsPICDEM.netdsPICworksECAN ECONOMONITORFanSenseFlexROMfuzzyLAB In-Circuit Serial Programming、 ICSP、 ICEPIC、 Linear
Active Thermistor、 MPASM、 MPLIB、 MPLINK、 MPSIM、 PICkitPICDEMPICDEM.netPICLABPICtail
PowerCalPowerInfoPowerMatePowerToolREAL ICErfLABrfPICDEMSelect ModeSmart Serial
SmartTelTotal EnduranceUNI/OWiperLock Zena
均为 Microchip Technology Inc. 在美国和其他国家或地区的 商标。
SQTP Microchip Technology Inc. 在美国的服务标记。
在此提及的所有其他商标均为各持有公司所有。 © 2006, Microchip Technology Inc.版权所有。
Microchip
10
位单片机、 性存储器和模拟产品方面的质量体系流程均符合
16949:2002
系也已通过了
位于美国亚利桑那州
Mountain View
月通过了
ISO/TS-16949:2002
KEELOQ
。此外 ,
ISO 9001:2000
的全球总部、设计中心和晶圆生产厂均于
®
跳码器件、串行
Microchip
Chandler和Tem p e
质量体系认证。公司在
EEPROM
在开发系统的设计和生产方面的质量体
认证。
及位于加利福尼亚
、单片机 外设、非易失
ISO/TS-
2003
PICmicro
®
DS70143B_CN ii 初稿 2006 Microchip Technology Inc.
8
dsPIC30F6011A/6012A/6013A/6014A
dsPIC30F6011A/6012A/6013A/6014A
高性能数字信号控制器
注:本数据手册总结了 dsPIC30F 系列器件的功能,但是不 应把本手册当作无所不包的参考手册来使用。有关 CPU、外 设、寄存器说明和一般器件功能的更多信息,请参阅
dsPIC30F
指令集和编程的更多信息,请参阅 《dsPIC30F/33F
参考手册》
系列参考手册》
DS70157B_CN)。
DS70046D_CN)。有关器件
程序员
高性能改进型 RISC CPU
改进型哈佛架构
•C编译器优化指令集
零活的寻址模式
•84条基本指令
•24位宽指令, 16 位宽数据总线
最多 144 K 字节的片内闪存程序空间
最多 48K 的指令字
最多 8 K 字节的片内数据 RAM
最多 4 K 字节的非易失性数据 EEPROM
• 16 x 16 位工作寄存器阵列
高达 30 MIPS 的工作速度:
-DC至 40 MHz 外部时钟输入
- 4 MHz-10 MHz振荡器输入,带 PLL(4 倍频、 8 倍频和 16 倍频)
多达 41 个中断源:
-8个用户可选择的中断优先级
-5个外部中断源
-4个处理器陷阱
外设功能:
高灌 / 拉电流 I/O 引脚:25 mA/25 mA
•5个 16 位定时器/ 计数器;可以把 16 位定时器配对 形成 32 位定时器模块
•16位捕捉输入功能
•16位比较 /PWM 输出功能
数据转换器接口 (DCI)支持常见的音频编解码器 协议,包括 I
•3线 SPI 模块 (支持 4 帧模式)
2
•I
C™模块支持多主器件/从模式,支持 7 位 /10位寻
两个可寻址的、备具 FIFO 缓冲器的 UART 模块
两个 CAN 总线模块,与 CAN 2.0B 标准兼容
2
S AC’97
模拟功能:
•12位模数转换器 (Analog-to-Digital Converter, ADC),具有:
- 200 Ksps 转换速率
- 多达 16 个输入通道
- 在休眠和空闲期间进行转换
可编程低压检测 (Programmable Low-Voltage DetectionPLVD
可编程欠压检测和复位产生
特殊单片机功能:
DSP 功能:
双数据取
模寻址和位反转寻址模式
两个 40 位宽累加器,具有可选的饱和逻辑
•17位 x17 位单周期硬件小数 / 整数乘法器
所有 DSP 指令都是单周期的
- 乘法 - 累加 (MAC)运算
单周期 ±16 位移位
2006 Microchip Technology Inc. 初稿 DS70143B_CN 第 1
增强型闪存程序存储器:
- 对于工业级温度范围,最少擦写次数 1 万次,
典型擦写次数 10 万次。
数据 EEPROM 存储器:
- 对于工业级温度范围,最少擦写次数 10 万次,
典型擦写次数 100 万次。
软件控制下,可自行再编程
上电复位 (Power-on ResetPOR)、上电延时
定时器 (Power-up TimerPWRT)以及振荡器 起振定时器 (Oscillator Start-up Timer, OST
零活的看门狗定时器 (Watchdog Timer WDT),片内带有低功耗 RC 振荡器,以便可靠地
工作
dsPIC30F6011A/6012A/6013A/6014A
特殊单片机功能 (续):
故障保护时钟监控器:
- 检测时钟故障,可切换至片上低功耗 RC 振荡
可编程代码保护
CMOS 技术:
低功耗高速闪存技术
宽广的工作电压范围 (2.5V 5.5V
工业级和扩展级温度范围
低功耗
在线串行编程 (In-Circuit Serial Programming™ ICSP™
可选择的功耗管理模式:
- 休眠、空闲和备用时钟模式
dsPIC30F6011A/6012A/6013A/6014A 控制器系列
器件 引脚
程序存储器
字节 指令
dsPIC30F6011A 64 132K 44K 6144 2048 5 8 8 16 ch 2 2 1 2
dsPIC30F6012A 64 144K 48K 8192 4096 5 8 8 AC’97, I
dsPIC30F6013A 80 132K 44K 6144 2048 5 8 8 16 ch 2 2 1 2
dsPIC30F6014A 80 144K 48K 8192 4096 5 8 8 AC’97, I
SRAM 字节EEPROM字节定时器
16 输入捕捉
输出比较 / 标准 PWM
编解码器
接口
ADC
12
100 Ksps
2
S 16 ch 2 2 1 2
2
S 16 ch 2 2 1 2
UART
SPI
2
C I
CAN
DS70143B_CN2 初稿 2006 Microchip Technology Inc.
引脚排列图
64 引脚 TQFP
dsPIC30F6011A/6012A/6013A/6014A
SS
RG13
RG12
RG14
C2TX/RG1
C1TX/RF1
C2RX/RG0
OC8/CN16/RD7
V
VDD
C1RX/RF0
OC7/CN15/RD6
OC6/IC6/CN14/RD5
EMUD2/OC2/RD1
OC3/RD2
OC4/RD3
OC5/IC5/CN13/RD4
AN5/IC8/CN7/RB5 AN4/IC7/CN6/RB4
AN2/SS1
AN1/V
AN0/V
RG15 T2CK/RC1 T3CK/RC2
SCK2/CN8/RG6
SDI2/CN9/RG7
SDO2/CN10/RG8
/LVDIN/CN4/RB2
MCLR
/CN11/RG9
SS2
AN3/CN5/RB3
REF-/CN3/RB1
REF+/CN2/RB0
VSS VDD
646362616059585756
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
171819202122232425
PGC/EMUC/AN6/OCFA/RB6
PGD/EMUD//AN7/RB7
DD
AV
AVSS
AN8/RB8
dsPIC30F6011A
AN9/RB9
545352
55
27
26
SS
V
VDD
AN11/RB11
AN10/RB10
AN12/RB12
504951
48
EMUC1/SOSCO/T1CK/CN0/RC14
47
EMUD1/SOSCI/T4CK/CN1/RC13
46
EMUC2/OC1/RD0 IC4/INT4/RD11
45 44
IC3/INT3/RD10 IC2/INT2/RD9
43
IC1/INT1/RD8
42
V
41
SS
40
OSC2/CLKO/RC15
39
OSC1/CLKI
38
V
DD
37
SCL/RG2
36
SDA/RG3
35
EMUC3/SCK1/INT0/RF6
34
U1RX/SDI1/RF2
33
EMUD3/U1TX/SDO1/RF3
32
31
30
29
28
AN13/RB13
AN14/RB14
U2TX/CN18/RF5
U2RX/CN17/RF4
AN15/OCFB/CN12/RB15
注: 每个引脚的说明,参见第 1.0 节 “器件概述”。
2006 Microchip Technology Inc. 初稿 DS70143B_CN3
dsPIC30F6011A/6012A/6013A/6014A
引脚排列图 (续)
64 引脚 TQFP
SS
CSDO/RG13
CSDI/RG12
CSCK/RG14
C2TX/RG1
C1TX/RF1
C2RX/RG0
OC8/CN16/RD7
V
VDD
C1RX/RF0
OC7/CN15/RD6
OC6/IC6/CN14/RD5
EMUD2/OC2/RD1
OC3/RD2
OC4/RD3
OC5/IC5/CN13/RD4
AN5/IC8/CN7/RB5 AN4/IC7/CN6/RB4
AN2/SS1
AN1/V
AN0/V
COFS/RG15
T2CK/RC1 T3CK/RC2
SCK2/CN8/RG6
SDI2/CN9/RG7
SDO2/CN10/RG8
/LVDIN/CN4/RB2
MCLR
/CN11/RG9
SS2
VDD
AN3/CN5/RB3
REF-/CN3/RB1
REF+/CN2/RB0
VSS
646362616059585756
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
171819202122232425
PGC/EMUC/AN6/OCFA/RB6
dsPIC30F6012A
DD
AVSS
AV
AN8/RB8
PGD/EMUD/AN7/RB7
AN9/RB9
545352
55
27
26
SS
V
VDD
AN11/RB11
AN10/RB10
AN12/RB12
504951
48
EMUC1/SOSCO/T1CK/CN0/RC14
47
EMUD1/SOSCI/T4CK/CN1/RC13
46
EMUC2/OC1/RD0 IC4/INT4/RD11
45 44
IC3/INT3/RD10 IC2/INT2/RD9
43
IC1/INT1/RD8
42
V
41 40 39 38 37 36 35 34 33
32
31
30
29
28
AN13/RB13
AN14/RB14
U2TX/CN18/RF5
U2RX/CN17/RF4
AN15/OCFB/CN12/RB15
SS
OSC2/CLKO/RC15 OSC1/CLKI V
DD
SCL/RG2 SDA/RG3 EMUC3/SCK1/INT0/RF6 U1RX/SDI1/RF2 EMUD3/U1TX/SDO1/RF3
注: 每个引脚的说明,参见第 1.0 节 “器件概述”。
DS70143B_CN4 初稿 2006 Microchip Technology Inc.
引脚排列图 (续)
80 引脚 TQFP
dsPIC30F6011A/6012A/6013A/6014A
RG15
T2CK/RC1
T3CK/RC2
T4CK/RC3 T5CK/RC4
SCK2/CN8/RG6
SDI2/CN9/RG7
SDO2/CN10/RG8
MCLR
SS2/CN11/RG9
V
VDD
INT1/RA12
INT2/RA13
AN5/CN7/RB5
AN4/CN6/RB4 AN3/CN5/RB3
AN2/SS1
/LVDIN/CN4/RB2
PGC/EMUC/AN1/CN3/RB1
PGD/EMUD/AN0/CN2/RB0
RG14
CN23/RA7
CN22/RA6
C2RX/RG0
RG13
RG12
80
79
1
2
3
4
5
6
7
8
9
10
SS
11
12
13
14
15
16
17
18
19
20
22
21
2324252627282930313233
C2TX/RG1
75
767877
dsPIC30F6013A
DD
C1TX/RF1
C1RX/RF0
727473
OC8/CN16/RD7
V
VSS
7170696867666564636261
OC7/CN15/RD6
OC6/CN14/RD5
34
OC5/CN13/RD4
35
IC5/RD12
OC4/RD3
OC3/RD2
IC6/CN19/RD13
37
36
EMUD2/OC2/RD1
60
59
58
57
56
55
54
53
52
51
50
49
48
47
46
45
44
43
42
41
39
38
EMUC1/SOSCO/T1CK/CN0/RC14
EMUD1/SOSCI/CN1/RC13
EMUC2/OC1/RD0
IC4/RD11
IC3/RD10
IC2/RD9
IC1/RD8
INT4/RA15
INT3/RA14
SS
V
OSC2/CLKO/RC15 OSC1/CLKI
DD
V
SCL/RG2
SDA/RG3
EMUC3/SCK1/INT0/RF6
SDI1/RF7
EMUD3/SDO1/RF8
U1RX/RF2
U1TX/RF3
40
DD
AVSS
AV
REF-/RA9
AN7/RB7
V
VREF+/RA10
AN6/OCFA/RB6
AN8/RB8
AN9/RB9
AN11/RB11
AN10/RB10
注: 每个引脚的说明,参见第 1.0 节 “器件概述”。
DD
VSS
V
AN12/RB12
AN13/RB13
AN14/RB14
IC8/CN21/RD15
IC7/CN20/RD14
AN15/OCFB/CN12/RB15
U2TX/CN18/RF5
U2RX/CN17/RF4
2006 Microchip Technology Inc. 初稿 DS70143B_CN 第 5
dsPIC30F6011A/6012A/6013A/6014A
引脚排列图 (续)
80 引脚 TQFP
DD
CSCK/RG14
CSDO/RG13
CSDI/RG12
CN23/RA7
CN22/RA6
C2RX/RG0
C2TX/RG1
C1TX/RF1
VSS
C1RX/RF0
OC8/CN16/RD7
V
OC5/CN13/RD4
IC6/CN19/RD13
OC7/CN15/RD6
IC5/RD12
OC4/RD3
OC3/RD2
OC6/CN14/RD5
EMUD2/OC2/RD1
COFS/RG15
T2CK/RC1
T3CK/RC2
T4CK/RC3 T5CK/RC4
SCK2/CN8/RG6
SDI2/CN9/RG7
SDO2/CN10/RG8
MCLR
SS2/CN11/RG9
V
VDD
INT1/RA12
INT2/RA13
AN5/CN7/RB5
AN4/CN6/RB4 AN3/CN5/RB3
/LVDIN/CN4/RB2
AN2/SS1
PGC/EMUC/AN1/CN3/RB1
PGD/EMUD/AN0/CN2/RB0
80
79
1
2
3
4
5
6
7
8
9
10
SS
11
12
13
14
15
16
17
18
19
20
22
21
2324252627282930313233
AN7/RB7
REF-/RA9
V
AN6/OCFA/RB6
75
767877
DD
AVSS
AV
VREF+/RA10
727473
7170696867666564636261
dsPIC30F6014A
DD
VSS
V
AN8/RB8
AN9/RB9
AN11/RB11
AN10/RB10
60
59
58
57
56
55
54
53
52
51
50
49
48
47
46
45
44
43
42
41
39
38
37
36
35
34
AN12/RB12
AN13/RB13
AN14/RB14
IC8/CN21/RD15
IC7/CN20/RD14
U2RX/CN17/RF4
EMUC1/SOSCO/T1CK/CN0/RC14
EMUD1/SOSCI/CN1/RC13
EMUC2/OC1/RD0
IC4/RD11
IC3/RD10
IC2/RD9
IC1/RD8
INT4/RA15
INT3/RA14
SS
V
OSC2/CLKO/RC15 OSC1/CLKI
DD
V
SCL/RG2
SDA/RG3
EMUC3/SCK1/INT0/RF6
SDI1/RF7
EMUD3/SDO1/RF8
U1RX/RF2
U1TX/RF3
40
U2TX/CN18/RF5
AN15/OCFB/CN12/RB15
注: 每个引脚的说明,参见第 1.0 节 “器件概述”。
DS70143B_CN6 初稿 2006 Microchip Technology Inc.
dsPIC30F6011A/6012A/6013A/6014A
目录
1.0 器件概述 ....................................................................................................................................................................................... 9
2.0 CPU 架构概述 ............................................................................................................................................................................ 15
3.0 存储器构成 ................................................................................................................................................................................ 25
4.0 地址发生器单元 .......................................................................................................................................................................... 39
5.0 中断 ............................................................................................................................................................................................ 45
6.0 闪存程序存储器 .......................................................................................................................................................................... 51
7.0 数据 EEPROM 存储器 ................................................................................................................................................................ 57
8.0 I/O 端口 ...................................................................................................................................................................................... 63
9.0 Timer1 模块 ................................................................................................................................................................................ 69
10.0 Timer2/3 模块 ............................................................................................................................................................................. 73
11.0 Timer4/5 模块 ............................................................................................................................................................................. 79
12.0 输入捕捉模块.............................................................................................................................................................................. 83
13.0 输出比较模块.............................................................................................................................................................................. 87
14.0 SPI 模块 ..................................................................................................................................................................................... 91
15.0 I2C 模块...................................................................................................................................................................................... 95
16.0 通用异步收发器 (UART)模块 ............................................................................................................................................... 103
17.0 CAN 模块.................................................................................................................................................................................. 111
18.0 数据转换器接口 (DCI)模块 ................................................................................................................................................... 123
19.0 12 位模数转换器 (ADC)模块 .............................................................................................................................................. 133
20.0 系统集成 ................................................................................................................................................................................... 143
21.0 指令集汇总 ............................................................................................................................................................................... 163
22.0 开发支持 ................................................................................................................................................................................... 171
23.0 电气特性 ................................................................................................................................................................................... 175
24.0 封装信息 ................................................................................................................................................................................... 215
附录 A 版本历史 ........................................................................................................................................................................ 221
附录 B 器件比较 ........................................................................................................................................................................ 223
附录 C:从dsPIC30F601x 移植到 dsPIC30F601xA 器件............................................................................................................ 225
索引 .................................................................................................................................................................................................... 227
Microchip 网站.................................................................................................................................................................................... 233
变更通知客户服务 .............................................................................................................................................................................. 233
客户支持............................................................................................................................................................................................. 233
读者反馈表 ......................................................................................................................................................................................... 234
产品标识体系 ..................................................................................................................................................................................... 235
2006 Microchip Technology Inc. 初稿 DS70143B_CN7
dsPIC30F6011A/6012A/6013A/6014A
致 客 户
我们旨在提供最佳文档供客户正确使用 Microchip 产品。 为此,我们将不断改进出版物的内容和质量,使之更好地满足您的要求。 出版物的质量将随新文档及更新版本的推出而得到提升。
如果您对本出版物有任何问题和建议,请通过电子邮件联系我公司 TRC 经理,电子邮件地址为 CTRC@microchip.com,或将本 数据手册后附的 《读者反馈表》传真到 86-21-5407 5066。我们期待您的反馈。
最新数据手册
欲获得本数据手册的最新版本,请查询我公司的网站:
http://www.microchip.com
查看数据手册中任意一页下边角处的文献编号即可确定其版本。文献编号中数字串后的字母是版本号 的 A 版本。
勘误表
现有器件可能带有一份勘误表,描述了实际运行与数据手册中记载内容之间存在的细微差异以及建议的变通方法。一旦我们了解到 器件 / 文档存在某些差异时,就会发布勘误表。勘误表上将注明其所适用的硅片版本和文件版本。
欲了解某一器件是否存在勘误表,请通过以下方式之一查询:
• Microchip 网站 http://www.microchip.com
当地 Microchip 销售办事处 (见最后一页)
在联络销售办事处时,请说明您所使用的器件型号、硅片版本和数据手册版本 (包括文献编号)。
例如:DS30000A是DS30000
客户通知系统
欲及时获知 Microchip 产品的最新信息,请到我公司网站 www.microchip.com 上注册。
DS70143B_CN8 初稿 2006 Microchip Technology Inc.
dsPIC30F6011A/6012A/6013A/6014A

1.0 器件概述

注:本数据手册总结了 dsPIC30F 系列器件的功能,但是不 应把本手册当作无所不包的参考手册来使用。有关 CPU、外 设、寄存器说明和一般器件功能的更多信息,请参阅
dsPIC30F
指令集和编程的更多信息,请参阅 《dsPIC30F/33F
参考手册》
系列参考手册》
DS70157B_CN)。
DS70046D_CN)。有关器件
程序员
本文档给出了 dsPIC30F6011A/6012A/6013A/6014A数 字信号控制器 (DSC)器件的特定信息。dsPIC30F 器 件在其高性能 16 位单片机 (MCU)架构中,融合了丰 富的数字信号处理器(Digital Signal Processor,DSP) 功能。图 1-1 和图 1-2 所示分别为 dsPIC30F6011A/ 6012A dsPIC30F6013A/6014A 的框图。
2006 Microchip Technology Inc. 初稿 DS70143B_CN9
dsPIC30F6011A/6012A/6013A/6014A

1-1 dsPIC30F6011A/6012A 框图

Y
中断
控制器
地址锁存
程序存储器
(至多
数据
EEPROM
(至多
数据锁存器
OSC1/CLKI
144 KB
4 KB
至各块的 控制信号
24
24
24
16
指令译码
& 控制
时序 发生
MCLR
VDD、
AVDD、
PSV &
数据存取
控制块
16
24
V
SS
AV
SS
数据总线
8
PCH PCL
PCU
程序计数器
堆栈控制
逻辑
ROM
IR
上电延时
定时器 振荡器
起振定时器
POR/BOR
复位
看门狗 定时器
低压
检测
16
循环控制
逻辑
锁存器
译码
16
Y
地址锁存器
Y AGU
有效地址
DSP
引擎
16
16
数据
RAM
16
16
16
16
X RAGU X WAGU
16
16 x 16
W
寄存器阵列
16
ALU<16>
X
数据总线
16
数据锁存器
数据锁存器
X
数据
RAM
地址锁存器
16
除法
单元
16
16
16
PORTB
PORTC
PORTD
AN0/CN2/RB0 AN1/CN3/RB1 AN2/SS1/LVDIN/CN4/RB2 AN3/CN5/RB3 AN4/CN6/RB4 AN5/CN7/RB5 PGC/EMUC/AN6/OCFA/RB6 PGD/EMUD/AN7/RB7 AN8/RB8 AN9/RB9 AN10/RB10
AN11/RB11 AN12/RB12 AN13/RB13 AN14/RB14 AN15/OCFB/CN12/RB15
T2CK/RC1 T3CK/RC2 EMUD1/SOSCI/CN1/RC13 EMUC1/SOSCO/T1CK/CN0/RC14 OSC2/CLKO/RC15
EMUC2/OC1/RD0 EMUD2/OC2/RD1 OC3/RD2 OC4/RD3 OC5/CN13/RD4 OC6/CN14/RD5 OC7/CN15/RD6
OC8/CN16/RD7
IC1/RD8 IC2/RD9 IC3/RD10 IC4/RD11
CAN1
CAN2
12位ADC
定时器
输入捕捉
模块
DCI
输出比较
模块
SPI1 SPI2
I2C™
UART1
UART2
PORTF
PORTG
C1RX/RF0
C1TX/RF1
U1RX/SDI1/RF2
EMUD3/U1TX/SDI1/RF3
U2RX/CN17/RF4
U2TX/CN18/RF5
EMUC3/SCK1/INT0/RF6
C2RX/RG0
C2TX/RG1
SCL/RG2
SDA/RG3
SCK2/CN8/RG6
SDI2/CN9/RG7
SDO2/CN10/RG8
/CN11/RG9
SS2
CSDI/RG12
CSDO/RG13
CSCK/RG14
COFS/RG15
DS70143B_CN10 初稿 2006 Microchip Technology Inc.
dsPIC30F6011A/6012A/6013A/6014A

1-2 dsPIC30F6013A/6014A 框图

中断
控制器
地址锁存器
程序存储器
144 KB
(至多
数据
EEPROM
(至多4 KB)
数据锁存
至各块的 控制信号
OSC1/CLKI
24
指令译码
16
&控制
时序 发生
VDD、
DD
AV
数据存取
24
控制块
24
24
MCLR
V
SS
AV
PSV &
16
SS
Y
数据总线
8
PCU
程序计数器
堆栈控制
逻辑
ROM
IR
上电延时
定时器 振荡器
起振定时器
POR/BOR
复位
看门狗 定时器
低压
检测
16
PCH PCL
循环控制
逻辑
锁存器
译码
16
16
16
数据锁存器
Y
数据
RAM
16
16
X RAGU X WAGU
有效地址
16
16 x 16
W
寄存器阵列
16
16
ALU<16>
DSP
引擎
16
Y AGU
X
数据总线
数据锁存器
X
地址锁存器地址锁存器
除法
单元
16
16
数据
RAM
CN22/RA6 CN23/RA7 V
REF
-/RA9
V
REF
+/RA10 INT1/RA12 INT2/RA13 INT3/RA14
PORTA
16
16
PORTB
16
PORTC
PORTD
INT4/RA15
PGD/EMUD/AN0/CN2/RB0 PGC/EMUC/AN1/CN3/RB1 AN2/SS1/LVDIN/CN4/RB2 AN3/CN5/RB3 AN4/CN6/RB4 AN5/CN7/RB5 AN6/OCFA/RB6 AN7/RB7
AN8/RB8 AN9/RB9
AN10/RB10 AN11/RB11 AN12/RB12
AN13/RB13
AN14/RB14 AN15/OCFB/CN12/RB15
T2CK/RC1 T3CK/RC2 T4CK/RC3 T5CK/RC4 EMUD1/SOSCI/CN1/RC13 EMUC1/SOSCO/T1CK/CN0/RC14 OSC2/CLKO/RC15
EMUC2/OC1/RD0 EMUD2/OC2/RD1 OC3/RD2 OC4/RD3 OC5/CN13/RD4 OC6/CN14/RD5 OC7/CN15/RD6 OC8/CN16/RD7 IC1/RD8 IC2/RD9 IC3/RD10 IC4/RD11 IC5/RD12 IC6/CN19/RD13 IC7/CN20/RD14 IC8/CN21/RD15
CAN1
CAN2
12位ADC
定时器
输入捕捉
模块
DCI
输出比较
模块
SPI1 SPI2
I2C™
UART1
UART2
PORTF
PORTG
C1RX/RF0 C1TX/RF1
U1RX/RF2 U1TX/RF3 U2RX/CN17/RF4 U2TX/CN18/RF5 EMUC3/SCK1/INT0/RF6 SDI1/RF7 EMUD3/SDO1/RF8
C2RX/RG0 C2TX/RG1 SCL/RG2 SDA/RG3 SCK2/CN8/RG6 SDI2/CN9/RG7 SDO2/CN10/RG8
/CN11/RG9
SS2 CSDI/RG12 CSDO/RG13 CSCK/RG14 COFS/RG15
2006 Microchip Technology Inc. 初稿 DS70143B_CN 第11
dsPIC30F6011A/6012A/6013A/6014A
1-1 简要说明了器件的 I/O 引脚排列以及端口引脚可 能的复用功能。一个端口引脚上可能存在多种功能。出 现复用时,外设模块的功能需求,可能会强制地取代端 口引脚的数据流向。

1-1 引脚排列 I/O 说明

引脚名称
AN0-AN15 I Analog 模拟输入通道。
AV
DD PP模拟模块的正电源。 SS PP模拟模块的参考地。
AV
CLKI CLKO
CN0-CN23 I ST
COFS CSCK CSDI CSDO
C1RX C1TX C2RX C2TX
EMUD EMUC EMUD1 EMUC1 EMUD2 EMUC2 EMUD3 EMUC3
IC1-IC8 I ST 捕捉输入 1 8
INT0 INT1 INT2 INT3 INT4
LVDIN I Analog 低压检测参考电压输入引脚。
MCLR
OCFA OCFB OC1-OC8
引脚 类型
I
O
I/O I/O
I
O
I
O
I
O
I/O I/O I/O I/O I/O I/O I/O I/O
I I I I I
I/P ST 主复位输入或编程电压输入。此引脚是器件的复位引脚,低电平
I I
O
图注: CMOS = CMOS 兼容输入或输出 Analog = 模拟输入
ST = CMOS 电平的施密特触发器输入 O= 输出 I=输入 P= 电源
缓冲器
类型
AN0 AN1 也分别用于器件编程数据和时钟输入。
ST/CMOS—外部时钟源输入,总是与 OSC1 引脚功能关联。
晶振输出。在晶振模式下,连接到晶体或谐振器。也可在 RC EC 模式下用作 CLKO。始终与 OSC2 引脚功能关联。
输入电平变化通知输入。 在所有引脚上,均可用软件设置内部弱上拉。
ST ST ST
ST
ST
ST ST ST ST ST ST ST ST
ST ST ST ST ST
ST ST
数据转换器接口帧同步引脚。 数据转换器接口串行时钟输入 / 输出引脚。 数据转换器接口串行数据输入引脚。 数据转换器接口串行数据输出引脚。
CAN1 总线接收引脚。 CAN1 总线发送引脚。 CAN2 总线接收引脚。 CAN2 总线发送引脚。
ICD 主通信通道数据输入 / 输出引脚。 ICD 主通信通道时钟输入 / 输出引脚。 ICD 辅助通信通道数据输入 / 输出引脚。 ICD 辅助通信通道时钟输入 / 输出引脚。 ICD 第三通信通道数据输入 / 输出引脚。 ICD 第三通信通道时钟输入 / 输出引脚。 ICD 第四通信通道数据输入 / 输出引脚。 ICD 第四通信通道时钟输入 / 输出引脚。
外部中断 0。 外部中断 1。 外部中断 2。 外部中断 3。 外部中断 4。
有效。 比较故障保护 A 输入 (对于比较通道 1、 2、 3 和 4)。
比较故障保护 B 输入 (对于比较通道 5、 6、 7 和 8)。 比较输出 1 至 8
说明
DS70143B_CN12 初稿 2006 Microchip Technology Inc.
dsPIC30F6011A/6012A/6013A/6014A
1-1 引脚排列 I/O 说明 (续)
引脚名称
OSC1
OSC2
PGD PGC
RA6-RA7 RA9-RA10 RA12-RA15
RB0-RB15 I/O ST PORTB 是双向 I/O 端口。
RC1-RC4 RC13-RC15
RD0-RD15 I/O ST PORTD 是双向 I/O 端口。 RF0-RF8 I/O ST PORTF 是双向 I/O 端口。
RG0-RG3 RG6-RG9 RG12-RG15
SCK1 SDI1 SDO1 SS1 SCK2 SDI2 SDO2 SS2
SCL SDA
SOSCO SOSCI
T1CK T2CK T3CK T4CK T5CK
U1RX U1TX U1ARX U1ATX U2RX U2TX
DD P—逻辑和 I/O 引脚的正电源。
V VSS P—逻辑和 I/O 引脚的参考地。
REF+ I Analog 模拟参考电压 (高)输入。
V VREF- I Analog 模拟参考电压 (低)输入。
引脚 类型
I
I/O
I/O
I
I/O I/O I/O
I/O I/O
I/O I/O I/O
I/O
I
O
I
I/O
I
O
I
I/O I/O
O
I
I I I I I
I
O
I
O
I
O
图注: CMOS = CMOS 兼容输入或输出 Analog = 模拟输入
ST = CMOS 电平的施密特触发器输入 O= 输出 I=输入 P= 电源
缓冲器
类型
ST/CMOS—晶振输入。配置在 RC 模式时,为 ST 缓冲器输入;否则为
CMOS 输入。 晶振输出。在晶振模式下,连接到晶体或谐振器。 也可在 RC EC 模式下用作 CLKO
ST ST
ST ST ST
ST ST
ST ST ST
ST ST
— ST ST ST
— ST
ST ST
ST/CMOS
ST ST ST ST ST
ST
— ST
— ST
在线串行编程数据输入 / 输出引脚。 在线串行编程时钟输入引脚。
PORTA 是双向 I/O 端口。
PORTC 是双向 I/O 端口。
PORTG 是双向 I/O 端口。
SPI1 的同步串行时钟输入 / 输出。 SPI1 数据输入。 SPI1 数据输出。 SPI1 同步从动模式。 SPI2 的同步串行时钟输入 / 输出。 SPI2 数据输入。 SPI2 数据输出。 SPI2 同步从动模式。
2
C™ 的同步串行时钟输入 / 输出。
I
2
C 的同步串行数据输入 / 输出。
I 32 kHz 低功耗晶振输出。
32 kHz 低功耗晶振输入。配置在 RC 模式时, ST 缓冲器输入;否则为 CMOS 输入。
Timer1 外部时钟输入。 Timer2 外部时钟输入。 Timer3 外部时钟输入。 Timer4 外部时钟输入。 Timer5 外部时钟输入。
UART1 接收。 UART1 发送。 UART1 备用接收。 UART1 备用发送。 UART2 接收。 UART2 发送。
说明
2006 Microchip Technology Inc. 初稿 DS70143B_CN13
dsPIC30F6011A/6012A/6013A/6014A
注:
DS70143B_CN14 初稿 2006 Microchip Technology Inc.
dsPIC30F6011A/6012A/6013A/6014A

2.0 CPU 架构概述

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

2.1 内核概述

本节简单地概述了 dsPIC30F CPU 的架构。其他更多 的硬件及编程信息,请分别参阅
手册》
内核的指令字长为 24 位。程序计数器 (PC)为 23 位 宽,其最低有效位 (LSb)始终为 0 (见第 3.1 节“程 序地址空间”),最高有效位 (MSb)在正常的程序执 行期间被忽略,某些专用指令除外。因此, PC 能够寻 址最大为 4M 指令字的用户程序空间。 使用指令预取机 制来帮助维持吞吐量。使用 DO REPEAT 指令,支持 无循环计数管理开销的程序循环结构,而 DO REPEAT 这两条指令在任何时候都可被中断。
工作寄存器阵列由 16 16 位寄存器组成,每个寄存器 均可作为数据、地址或偏移量寄存器。 一个工作寄存器
W15)用作中断和调用时的软件堆栈指针。
数据空间为 64K 字节 (32K 字),被分成两块,称为 XY 数据存储空间。每个存储块有各自独立的地址发生 单元(Address Generation UnitAGU)。大多数指令 只通过 X 存储空间 AGU 进行操作,这样对外界而言数 据空间就是单独而统一的。乘法-累加(Multiply-
AccumulateMAC)类双源操作数 DSP 指令,通过 X 和 Y AGU 进行操作,这将数据地址空间分成两个部分
(见第 3.2 节“数据地址空间”)。 X Y 数据空间边界
视具体器件而定,用户不能改变它们。每个数据字由 2 个字节构成,大多数指令可以把数据当作字或字节来进 行寻址。
系列参考手册》
DS70157B_CN)。
和《dsPIC30F/33F
DS70046D_CN)。有关器件
dsPIC30F
程序员
系列参考
程序员参考手册》。
对于存储在程序存储空间中的数据,有两种存取方法:
数据存储空间的高 32 K 字节可以映射到程序空间 的下半部分 (用户空间),映射的边界可以是任何 16K 程序字边界,边界由 8 位的程序空间可视性页
Program Space Visibility Page, PSVPAG)寄
存器定义。这使得任何指令都能象存取数据存储空 间那样存取程序存储空间,但存取需要一个额外的 周期。此外,使用这个方法,只能存取每个指令字 的低 16 位。
使用任何工作寄存器,经由表读及表写指令,可以 对程序空间内的 32K 字页进行线性间接存取。表 读和表写指令能够用来存取一个指令字的全部 24 位。
X Y 地址空间都支持无开销循环缓冲区 (模寻址)。 模寻址的主要目的是要消除 DSP 算法的循环开销。
X AGU 还支持对目的有效地址进行位反转寻址,对于 基-2 FFT 算法,这极大地简化了输入或输出数据的重 新排序。关于模寻址和位反转寻址的详细信息,参见第
4.0 节 “地址发生器单元”。
内核支持固有(无操作数)寻址、 相对寻址、立即数寻 址、存储器直接寻址、寄存器直接寻址、寄存器间接寻 址、寄存器偏移量寻址以及立即数偏移量寻址模式。指 令与预定义的寻址模式相关联,这取决于其功能需求。
对于大多数指令, 内核能够在每个指令周期内执行数据
(或程序数据)存储器读取、工作寄存器(数据)读取、
数据存储器写入以及程序(指令)存储器读取操作。 此,支持3操作数指令,允许在单个周期内执行C=A+B 这样的操作。
内核包含 DSP 引擎,这极大地提高了内核的运算能力 和吞吐能力。它具有一个高速 17 位× 17 位乘法器、一 个 40 ALU、两 个 40 位饱和累加器和一个 40 位双向 桶形移位寄存器。累加器或任何工作寄存器中的数据, 可以在单个周期内右移 16 位或左移 16 位。 DSP 指令 可以无缝地与所有其他指令一起操作,且设计为能获得 最佳实时性能。在把两个 W 寄存器相乘时, MAC 类指 令能够从存储器中同时取出两个操作数。为了能够同时 取数据操作数,对于 MAC 类指令,数据空间拆分为两 块,对所有其他指令数据空间则是线性的。对于 MAC 类 指令,这是通过将某些工作寄存器专用于每个地址空 间,以透明而灵活的方式实现的。
2006 Microchip Technology Inc. 初稿 DS70143B_CN15
dsPIC30F6011A/6012A/6013A/6014A
内核不支持多级指令流水线。不过,为了最大限度地获 得可用的执行时间,使用了单级指令预取机制,在指令 执行的前一个周期,存取并部分译码指令。除了一些特 例外,大部分指令都在单个周期内执行。
内核具有用于陷阱和中断的向量异常处理结构,具有 62 个独立的向量。异常包括最多 8 个陷阱(其中有 4 个是 保留的)和 54 个中断。根据用户指定的 1 7 之间的 优先级 (1 为最低优先级, 7 为最高优先级),以及预 定义的 “自然顺序”,决定每个中断的优先级。陷阱的 优先级是固定的,其优先级范围是从 8 15

2.2 编程模型

编程模型如图 2-1 所示,它包括 16 x 16 位工作寄存器
W0 W15)、 2 x 40 位累加器 (AccA AccB)、
状态寄存器 (SR)、数据表页寄存器 (TBLPAG)、程 序空间可视性页寄存器 (PSVPAG)、 DO REPEAT 寄存器(DOSTARTDOEND、DCOUNT和RCOUNT) 以及程序计数器(PC)。工作寄存器可作为数据、地址 或偏移量寄存器。全部寄存器都是存储器映射的。 W0 用作文件寄存器寻址的 W 寄存器。
这些寄存器中,一些寄存器有与之关联的影子寄存器, 如图 2-1 所示。影子寄存器用作临时保存寄存器,事件 发生时可在影子寄存器和主寄存器之间传递内容。所有 影子寄存器均不能直接存取。寄存器与其影子寄存器之 间的数据传递遵守下列规则:
PUSH.S POP.S W0W1W2W3 SR (仅限 DC、 N、 OV、 Z 和 C 位)与对应的影子寄存器之间进行内
容传递。
DO 指令 循环开始时, DOSTART、 DOEND 和 DCOUNT 寄存器的内容压入影子寄存器,在循环结束时其内 容从各自的影子寄存器中弹出。
对工作寄存器进行字节操作时,只影响目标寄存器的最 低有效字节 (LSB)。不过,存储器映射工作寄存器的 一个好处是,可以通过字节宽数据存储空间存取来处理 最低和最高有效字节。
2.2.1 软件堆栈指针 / 帧指针
dsPIC® DSC 器件具备一个软件堆栈。W15 被指定用作
软件堆栈指针(software Stack PointerSP),异常处 理、子程序调用与返回将自动修改 W15。但是,W15 可 以被任何指令所引用,引用方式与引用所有其他 W 寄存 器相同。这简化了堆栈指针的读、写和处理 (例如,创 建堆栈帧)。
注: 为了防止出现不对齐的堆栈访问,
W15<0> 始终清零。
复位时 W15 初始化为 0x0800 在初始化过程中,用户 可以重新设定 SP,使它指向数据空间内的任何单元。
W14 被指定用作 LNK ULNK 指令中所定义的堆栈帧 指针。但是,W14 可以被任何指令所引用,引用方式与 引用所有其他 W 寄存器相同。
2.2.2 状态寄存器
dsPIC DSC 内核有一个 16 位状态寄存器 (STATUS register SR),其低有效字节 (LSB) 称为 SR 低字
节(SRL),其高有效字节 (MSB) 称为 SR 高字节
SRH), SR 寄存器组成见图 2-1
SRL 包含全部的 MCU ALU 运算状态标志位 (包括 Z 位),以及 CPU 中断优先级状态位 IPL<2:0> 和重复有 效状态位 RA。在异常处理期间, SRL PC MSB 连接起来形成一个完整的字值,然后被压入堆栈。
状态寄存器的高字节包含 DSP 加法器 / 减法器状态位、
DO 循环有效位 (DA)和半进位 (DC)状态位。
2.2.3 程序计数器
程序计数器为 23 位宽; bit 0 始终为零。因此, PC 能 够最多寻址 4M 指令字。
DS70143B_CN16 初稿 2006 Microchip Technology Inc.
dsPIC30F6011A/6012A/6013A/6014A

2-1:编模型

DSP 操作数 寄存器
DSP 地址 寄存器
W0/WREG
W1
W2
W3
W4
W5
W6
W7
W8
W9
W10
W11
W12/DSP 偏移量
W13/DSP 回写
W14/ 帧指针
W15/ 堆栈指针
D0D15
PUSH.S 影子寄存器
DO 影子寄存器
图注
工作寄存器
DSP
累加器
PC22
7
7
22
22
TABPAG
TBLPAG
PSVPAG
PSVPAG
AD39 AD0AD31
AccA
AccB
0
数据表页地址
0
DOSTART
程序空间可视性页地址
15
RCOUNT
15
DCOUNT
DOEND
SPLIM 堆栈指针限制寄存器
AD15
PC0
程序计数器
0
0
REPEAT 循环计数器
0
DO 循环计数器
0
DO 循环起始地址
DO 循环结束地址
15
CORCON
OA OB SA SB
2006 Microchip Technology Inc. 初稿 DS70143B_CN 第17
OAB SAB
SRH
DA DC
IPL2 IPL1
RA
IPL0 OV
SRL
N
0
Z
内核配置寄存器
C
状态寄存器
dsPIC30F6011A/6012A/6013A/6014A

2.3 除法支持

dsPIC DSC 器件具有这样的特性:支持 16/16 位有符号 小数除法运算,支持 32/16 位、 16/16 位有符号和无符 号整数除法运算,除法形式均为单指令迭代除法。支持 以下指令和数据长度:
1. DIVF16/16 有符号小数除法
2. DIV.sd — 32/16 有符号除法
3. DIV.ud — 32/16 无符号除法
4. DIV.sw — 16/16 有符号除法
5. DIV.uw — 16/16 无符号除法
16/16 除法类似于 32/16 除法(它们的迭代次数相同),
但在第一次迭代时,被除数要进行零扩展或符号扩展。
除法指令必须在一个 REPEAT循环中执行。任何其他执 行方式 (例如,一系列不连续的除法指令),将不会正 常运行,因为指令流取决于 RCOUNT。除法指令不会 自动设置 RCOUNT 值,于是 RCOUNT 必须显式地、正 确地在 REPEAT 指令中给定,如表 2-1 所示 (REPEAT 将执行目标指令 { 操作数的值 +1} 次)。必须为 DIV/ DIVF指令的18次迭代设置REPEAT循环计数。所以,完 整的除法操作需要 19 个周期。
注: 除法流可以被中断。然而,用户需要恰当地

2-1 除法指令

指令 功能
DIVF DIV.sd 有符号除法: (Wm + 1:Wm)/Wn W0 Rem W1
DIV.sw DIV.s 有符号除法:Wm/Wn W0 Rem W1 DIV.ud 无符号除法: (Wm + 1:Wm)/Wn W0 Rem W1 DIV.uw DIV.u 无符号除法:Wm/Wn W0 Rem W1
有符号小数除法:Wm/Wn W0 Rem W1
保存中断现场。
DS70143B_CN18 初稿 2006 Microchip Technology Inc.
dsPIC30F6011A/6012A/6013A/6014A

2.4 DSP 引擎

DSP 引擎的组成:一个高速 17 位× 17 位乘法器、一 个桶形移位寄存器和一个 40 位加法器 / 减法器 (两个 目标累加器、舍入逻辑和饱和逻辑)。
dsPIC30F 是单周期指令流架构,所以 DSP 引擎不能与 MCU 指令流进行并发操作。不过,一些 MCU ALU DSP 引擎资源,可以被同一条指令(例如,EDEDAC
并发地使用。
DSP 引擎能够执行固有的不需要其他数据的累加器至 累加器操作。这些指令是 ADDSUB NEG

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 A 无变化
MPY A = x * y
MPY A = x
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)。
注: CORCON 的构成,见表 3-3
DSP 引擎的框图,如图 2-2 所示。
2
2
2
2
否 否
2006 Microchip Technology Inc. 初稿 DS70143B_CN19
dsPIC30F6011A/6012A/6013A/6014A

2-2 DSP 引擎框图

40
进位 / 借位输出
进位 / 借位输入
40 位累加器 A 40 位累加器 B
饱和
加法器
40
符号扩展
取补
40
40
桶形 移位
寄存器
40
16
40
舍入
逻辑
16
X 数据总线
Y 数据总线
33
17 位乘法器
/ 定标器
16
/ 来自 W 阵列
16
32
32
补零
16
DS70143B_CN20 初稿 2006 Microchip Technology Inc.
dsPIC30F6011A/6012A/6013A/6014A
2.4.1 乘法器
17位×17位的乘法器可以进行有符号或无符号的运算,
其输出经过定标器进行换算后可支持 1.31 小数(Q31) 或 32 位整数结果。无符号操作数经过零扩展后,送入 乘法器输入值的第 17 位。有符号操作数经过符号扩展, 送入乘法器输入值的第 17 位。17 位× 17 位乘法器 / 标器的输出是 33 位值,它将被符号扩展为 40 位。 整型 数据的固有表示形式为有符号的二进制补码值,其中, MSB 定义为符号位。一般来说,N 位二进制补码整数的 范围为 -2
-32768 0x800032767 0x7FFF),包括 0 内。对于 32 位整数,数据范围是 2,147,483,648
0x8000 0000 至 2,147,483,647 (0x7FFF FFFF)。
当乘法器配置为小数乘法时,数据表示为二进制补码小 数,其中 MSB 定义为符号位,小数点暗含在符号位之 后(QX 格式)。暗含小数点的 N 位二进制补码小数的 范围是 -1.0 至(1 – 2 范围是 -1.0 0x8000)至 0.999969482 0x7FFF), 包括 0 在内,其精度为 3.01518x10-5。在小数方式下,
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 数据
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 32bit 39)。如果OA OB 位置 1 而且 INTCON1
寄存器中相应的溢出陷阱标志使能位 (OVATEN 和 OVBTEN)置 1 的话,还可以选择用 OA OB 位产生算 术警告陷阱 (见第 5.0 节 “中断”)。这使得用户能够 立即采取措施,例如,改正系统增益。
2006 Microchip Technology Inc. 初稿 DS70143B_CN21
dsPIC30F6011A/6012A/6013A/6014A
每次数据通过加法器 / 减法器,就会修改 SA SB 位, 但用户只能对它们进行清零。置 1 时,它们表明累加器 已经溢出其最大范围 (对于 32 位饱和是 bit 31,而 40 位饱和是 bit 39),将发生饱和 (如果饱和使能的话)。 如果没有使能饱和,SA 和 SB 置 1 默认为 bit 39 溢出, 于是表明产生了灾难性溢出。如果 INTCON1 寄存器中 的 COVTE 位置 1,当饱和被禁止时,SA SB 位将产 生算术警告陷阱。
在状态寄存器中,对于溢出和饱和状态位,可以将 OAOB 的逻辑或形成 OAB 位,将 SA SB 的逻辑或形 成 SAB 位。这样,只需检查状态寄存器中的一个位,程 序就能判断累加器是否已溢出,或者累加器是否已饱 和。对于通常要使用两个累加器的复杂数值算术而言, 这很有用。
器件支持三种饱和及溢出模式:
1. bit 39 溢出和饱和: 当发生 bit 39 溢出和饱和时,饱和逻辑将最大的 正 9.31 值(0x7FFFFFFFFF)或最大的负 9.31 值(0x8000000000)装入目标累加器。 SA SB 位置 1 并保持置 1 直到被用户清零。这称为
“超饱和”(super saturation),为错误数据或不
可预期的算法问题 (例如,增益计算)提供了保 护机制。
2. bit 31 溢出和饱和: 当发生 bit 31 溢出和饱和时,饱和逻辑将最大的 正 1.31 值(0x007FFFFFFF)或最大的负 1.31 值(0xFF80000000)装入目标累加器。 SA 或 SB 位置 1 并保持置 1 直到被用户清零。当这种 饱和模式生效时,不使用警戒位(因此 OAOBOAB 位不会被置 1)。
3. bit 39 灾难性溢出: 来自加法器的 bit 39 溢出状态位,被用来将 SASB 位置 1 (置 1 后,这两位将保持置 1,除 非用户进行清零)。不进行饱和操作,允许累加 器溢出 (破坏其符号)。如果 INTCON1 寄存器 中的 COVTE 位置 1,灾难性溢出会导致一个陷 阱异常。
2.4.2.2 累加器 “回写”
MAC 类指令(MPYMPY.NED 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 31)。 如果 ACCxL 字 (累加器的 bit 0 bit 15)在 0x80000xFFFF 之间(包括 0x8000 ), 则 ACCxH 递增 1。 如果 ACCxL 0x0000 0x7FFF 之间,则 ACCxH 不 变。此算法的结果经过一系列随机舍入操作,值将稍稍 偏大 (正偏)。
除非 ACCxL 等于 0x8000,否则收敛的(或无偏)舍入 操作方式与常规舍入相同。ACCxL 等于 0x8000 时,要 对 ACCxH LSb (累加器的 bit 16)进行检测。 如果 它为 1ACCxH 递增 1 如果它为 0, ACCxH 不变。 假设 bit 16 本身是随机的,这样的机制将消除任何可能 累加的舍入偏移。
通过 X 总线, SAC SAC.R 指令将目标累加器内容的 截取 (SAC)或舍入 (SAC.R)形式存入数据存储空间
(这受数据饱和的影响,见第 2.4.2.4 节 “数据空间写
饱和”)。注意,对于 MAC 类指令,累加器回写操作将 以同样的方式进行,通过 X 总线寻址组合的 MCU XY)数据空间。对于 MAC 类指令,数据始终要进行舍 入。
DS70143B_CN22 初稿 2006 Microchip Technology Inc.
dsPIC30F6011A/6012A/6013A/6014A
2.4.2.4 数据空间写饱和
除了加法器 / 减法器饱和,对数据空间进行写操作也会 饱和,但不会影响源累加器的内容。数据空间写饱和逻 辑块接受来自舍入逻辑块的一个 16 位的 1.15 小数值作 为输入,还接受来自源 (累加器)和 16 位舍入加法器 的溢出状态。这些经过组合,用来选择恰当的 1.15 小数 值作为输出,写入至数据存储空间中。
如果 CORCON 寄存器中的 SATDW 位置 1,将检测(经 过舍入或截取后的)数据是否溢出,并相应地进行调 整。如果输入数据大于 0x007FFF,则写入数据存储器 中的数据被强制为最大的正 1.15 值, 0x7FFF。如果输 入数据小于 0xFF8000,则写入数据存储器中的数据被 强制为最大的负 1.15 值, 0x8000。源累加器的 MSb
bit 39)用来决定被检测的操作数的符号。
如果 CORCON 寄存器中的 SATDW 位没有置 1,则输 入数据都将通过,在任何情况下都不会被修改。
2.4.3 桶形移位寄存器
桶形移位寄存器在单个周期内最多可算术或逻辑右移 16 位或左移 16 位。源寄存器可以是两个 DSP 累加器 中的任何一个,或者是 X 总线(支持寄存器或存储器数 据的多位移位)。
移位寄存器需要一个有符号二进制值,用来确定移位操 作的幅度 (位数)和方向。正值将操作数右移。负值则 将操作数左移。值为 “0”则不改变操作数。
桶形移位寄存器是 40 位宽的,于是,它为 DSP 移位操 作提供了 40 位的结果,而为 MCU 移位操作提供 16 位 的结果。来自 X 总线的数据在桶形移位寄存器中的存放 方式是:右移则数据存放在 bit 16 bit 31,左移则存 放在 bit 0 bit 16
2006 Microchip Technology Inc. 初稿 DS70143B_CN23
dsPIC30F6011A/6012A/6013A/6014A
注:
DS70143B_CN24 初稿 2006 Microchip Technology Inc.
dsPIC30F6011A/6012A/6013A/6014A

3.0 存储器构成

注: 本数据手册总结了 dsPIC30F 系列器件的功能,

3.1 程序地址空间

程序地址空间为 4M 指令字,它可通过一个 24 位值来寻 址,这 24 位值或者是来自 23 PC,或者表指令有效 地址 (Effective AddressEA) ,或者来自数据空间 EA(当按照表 3-1 定义的那样,把程序空间映射到数据 空间时) 。注意,为了提供与数据空间寻址的兼容性, 在两个连续的程序字之间,程序空间地址递增量为 2
但是不应把本手册当作无所不包的参考手册来 使用。有关 CPU、外设、寄存器说明和一般器 件功能的更多信息,请参阅
考手册》
和编程的更多信息,请参阅 《dsPIC30F/33F
序员参考手册》
DS70046D_CN) 。有关器件指令集
DS70157B_CN)。
dsPIC30F
系列参
对于除 TBLRD/TBLWT 外的所有访问,用户程序空间访 问限制在低 4M 指令字地址范围(0x000000 至 0x7FFFFE);TBLRD/TBLWT使用TBLPAG<7>来决定 用户或配置空间访问。在表 3-1 “程序空间地址构成” 中,bit 23 允许访问器件 ID、用 户 ID 和配置位。对于其 他情形, bit 23 始终清零。
注: 3-1 和图 3-2 所示的地址映射是概念性
的,实 际的存储器配置取决于可用的存储 器大小,各器件的存储器配置可能会存在 差异。
2006 Microchip Technology Inc. 初稿 DS70143B_CN25
dsPIC30F6011A/6012A/6013A/6014A
3-1
空间
用户存储
dsPIC30F6011A/6013A
间映射
复位 – GOTO 指令
复位 – 目标地址
中断向量表
保留
备用向量表
用户闪存
程序存储器
44K 指令字)
保留
(读为 0)
数据 EEPROM
2 K 字节)
的程序存储空
000000 000002 000004
向量表
00007E 000080 000084 0000FE 000100
015FFE 016000
7FF7FE 7FF800
7FFFFE 800000
3-2
空间
用户存储
dsPIC30F6012A/6014A
间映射
复位 – GOTO 指令
复位 – 目标地址
中断向量表
保留
备用向量表
用户闪存
程序存储器
48K 指令字)
保留
(读为 0
数据 EEPROM
4 K 字节)
的程序存储空
000000 000002 000004
向量表
00007E 000080 000084 0000FE 000100
017FFE 018000
7FEFFE 7FF000
7FFFFE 800000
空间
配置存储
保留
UNITID32 指令字)
保留
器件配置寄存器
保留
DEVID (2)
8005BE 8005C0
8005FE 800600
F7FFFE F80000
F8000E F80010
FEFFFE FF0000 FFFFFE
保留
8005BE
空间
配置存储
UNITID 32 指令字)
保留
器件配置寄存器
保留
DEVID (2)
8005C0
8005FE 800600
F7FFFE F80000
F8000E F80010
FEFFFE FF0000 FFFFFE
DS70143B_CN26 初稿 2006 Microchip Technology Inc.
dsPIC30F6011A/6012A/6013A/6014A

3-1 程序空间地址构成

访问类型
指令访问 用户 0 PC<22:1> 0 TBLRD/TBLWT 用户
TBLPAG<7> = 0)
TBLRD/TBLWT 配置
TBLPAG<7> = 1)
程序空间可视性 用户 0 PSVPAG<7:0> 数据 EA<14:0>
访问 空间
<23> <22:16> <15> <14:1> <0>
TBLPAG<7:0> 数据 EA<15:0>
TBLPAG<7:0> 数据 EA<15:0>

3-3 访问程序空间中数据的地址生成

23
使用 程序计数器
0
程序空间地址
0 程序计数器
选择
使用 程序空间 可视性
使用 表指令
用户 / 配置 空间选择
注: 程序空间可视性不能被用来访问程序存储器中任何字的 bit <23:16>
0
PSVPAG 寄存器
1/0
TBLPAG 寄存器
8
8
1
24 EA
EA
15
EA
16
字节
选择
2006 Microchip Technology Inc. 初稿 DS70143B_CN27
dsPIC30F6011A/6012A/6013A/6014A
3.1.1 使用表指令访问程序存储器中的数据
本器件架构取指令时是取 24 位宽的程序存储器。因此, 指令始终是对齐的。不过,由于器件架构是改进型哈佛 架构,数据也可以出现在程序空间中。
有两种方法可以访问程序空间:通过特殊的表指令,或 者通过把16K 字程序空间页重新映射到数据空间的上半 部分 (见第 3.1.2 节 “使用程序空间可视性访问程序存 储器中的数据”)。 TBLRDL 和 TBLWTL 指令,提供了读 或写程序空间内任何地址的 lsw 的直接方法,无需通过 数据空间。TBLRDHTBLWTH 指令是可以把一个程序 空间字的高 8 位作为数据存取的惟一方法。
对于每个连续的 24 位程序字,PC 的递增量为 2。这 使 得程序存储器地址能够直接映射到数据空间地址。于 是,程序存储器可以看作是两个 16 位字宽的地址空间, 它们并排放置,具有相同的地址范围。 TBLRDL TBLWTL 访问存有最低有效数据字的空间,TBLRDHTBLWTH 则访问存有最高有效数据字节的空间。
3-3说明了如何为表操作和数据空间访问(PSV = 1) 的创建 EA。这里, P<23:0> 指的是程序空间字,而 D<15:0> 指的是数据空间字。
3-4 表访问程序数据 (最低有效字)
器件提供了一组表指令,用来在程序空间和数据空间之 间传送字节或字大小的数据。
1. TBLRDL:表读低位
字:
读程序地址的lswP<15:0>映射到D<15:0>
字节:
读程序地址的 LSB 中的一个; 当字节选择 = 0 时, P<7:0> 映射到目的字节; 当字节选择 = 1 时, P<15:8> 映射到目的字节。
2. TBLWTL:表写低位字 (字节)(闪存编程的细 节,见第 6.0 节 “闪存程序存储器”)。
3. TBLRDH:表读高位
字:
读程序地址的最高有效字; P<23:16> 映射
D<7:0> D<15:8> 始终 = 0
字节:
读程序地址的 MSB 中的一个; 当字节选择= 0时,P<23:16>映射到目的字节; 当字节选择 = 1 时,目的字节始终 = 0
4. TBLWTH:表写高位字 (字节)(闪存编程的细 节,见第 6.0 节 “闪存程序存储器”)。
PC 地址
0x000000 0x000002 0x000004 0x000006
程序存储器
“虚拟”字节
(读为 0)
00000000
00000000 00000000
00000000
23
TBLRDL.W
16
8
TBLRDL.B(Wn<0> = 0)
TBLRDL.B(Wn<0> = 1)
0
DS70143B_CN28 初稿 2006 Microchip Technology Inc.
Loading...
+ 208 hidden pages