第1章 绪论 1
1.1 TMS320系列DSP简介 1
1.1.1 TMS320系列DSP的历史、发展和优势 1
1.1.2 TMS320系列DSP的典型应用 2
1.2 TMS320C54x DSP简介 3
1.3 TMS320C54x DSP的主要特征 4
第2章 TMS320C54x DSP体系结构总体介绍 7
2.1 总线结构 8
2.2 内部存储器组织 8
2.2.1 片内ROM 9
2.2.2 片内双存取RAM(DARAM) 9
2.2.3 片内单存取RAM(SARAM) 10
2.2.4 片内双向共享RAM 10
2.2.5 片内存储器保护 10
2.2.6 存储器映射寄存器 10
2.3 中央处理单元(CPU) 10
2.3.1 算术逻辑运算单元(ALU) 11
2.3.2 累加器 11
2.3.3 桶形移位器 11
2.3.4 乘法器/加法器单元 12
2.3.5 比较、选择和存储单元(CSSU) 12
2.4 数据寻址 12
2.5 程序存储器寻址 13
2.6 流水线操作 13
2.7 片内外设 13
2.7.1 通用的I/O引脚 14
2.7.2 软件可编程等待状态产生器 14
2.7.3 可编程的块切换逻辑 15
2.7.4 硬件定时器 15
2.7.5 时钟产生器 15
2.7.6 直接存储器访问(DMA)控制器 15
2.7.7 主机接口(HPI) 15
2.8 串行口 16
2.8.1 同步串口 16
2.8.2 缓冲串口(BSP) 16
2.8.3 多通道缓冲串口(McBSP) 17
2.8.4 时分复用(TDM)串口 17
2.9 外部总线接口 17
2.10 IEEE 1149.1扫描逻辑标准 17
第3章 存储器 18
3.1 存储器空间 18
3.2 程序存储器 25
3.2.1 程序存储器配置 25
3.2.2 片内ROM组织 25
3.2.3 程序存储器地址映射和片内ROM内容 26
3.2.4 片内ROM代码内容和映射 26
3.2.5 扩展程序存储器 27
3.3 数据存储器 29
3.3.1 数据存储器配置 29
3.3.2 片内RAM组织 30
3.3.3 存储器映射寄存器 31
3.3.4 CPU存储器映射寄存器 31
3.4 I/O存储器 34
3.5 程序和数据安全保护 34
第4章 中央处理器(CPU) 36
4.1 CPU状态与控制寄存器 36
4.1.1 状态寄存器(ST0与ST1) 36
4.1.2 处理器模式状态寄存器(PMST) 39
4.2 算术逻辑单元(ALU) 41
4.2.1 算术逻辑单元(ALU)的输入 42
4.2.2 溢出处理 43
4.2.3 进位位 43
4.2.4 双16位模式 44
4.3 累加器 44
4.3.1 存储累加器的内容 45
4.3.2 累加器移位和循环移位操作 45
4.3.3 累加器存储的饱和处理 46
4.3.4 专用指令 46
4.4 桶形移位器 47
4.5 乘/累加单元 48
4.5.1 乘法器输入来源 49
4.5.2 乘/累加(MAC)指令 50
4.5.3 MAC和MAS的乘法饱和处理 51
4.6 比较、选择和存储单元(CSSU) 51
4.7 指数编码器 53
第5章 数据寻址 54
5.1 立即寻址 54
5.2 绝对寻址 55
5.2.1 数据存储器地址(dmad)寻址 56
5.2.2 程序存储器地址(pmad)寻址 56
5.2.3 口地址(PA)寻址 56
5.2.4 *(lk)寻址 56
5.3 累加器寻址 57
5.4 直接寻址 57
5.4.1 以数据页指针(DP)为基准的直接寻址 58
5.4.2 以堆栈指针(SP)为基准的直接寻址 59
5.5 间接寻址 59
5.5.1 单操作数寻址 60
5.5.2 辅助寄存器算术单元(ARAU)和地址产生操作 60
5.5.3 单操作数地址的修改 61
5.5.4 双操作数地址修改 66
5.5.5 兼容(ARP)模式 69
5.6 存储器映射寄存器寻址 70
5.7 堆栈寻址 71
5.8 存储器访问的数据类型 72
第6章 程序存储器寻址 74
6.1 程序存储器地址产生 74
6.2 程序计数器(PC) 75
6.3 跳转 76
6.3.1 无条件跳转 76
6.3.2 条件跳转 77
6.3.3 远程跳转 78
6.4 调用 78
6.4.1 无条件调用 78
6.4.2 条件调用 79
6.4.3 远程调用 80
6.5 返回 80
6.5.1 无条件返回 80
6.5.2 条件返回 81
6.5.3 远程返回 82
6.6 条件操作 82
6.6.1 多个条件的使用 83
6.6.2 条件执行指令(XC) 84
6.6.3 条件存储指令 84
6.7 单指令重复操作 85
6.8 指令块重复操作 87
6.9 复位操作 88
6.10 中断 89
6.10.1 中断标志寄存器(IFR) 90
6.10.2 中断屏蔽寄存器(IMR) 92
6.10.3 阶段1:接收中断请求 93
6.10.4 阶段2:确认中断 94
6.10.5 阶段3:执行中断服务程序(ISR) 94
6.10.6 中断现场保护 95
6.10.7 中断延迟 95
6.10.8 中断操作总结 96
6.10.9 重新映射中断向量地址 96
6.10.10 中断表 98
6.11 节电模式(Power-Down) 106
6.11.1 IDLE1模式 107
6.11.2 IDLE2模式 107
6.11.3 IDLE3模式 108
6.11.4 保持(HOLD)模式 108
6.11.5 其他降低功耗的性能 109
第7章 直接存储器访问(DMA)控制器 110
7.1 DMA概述 110
7.2 DMA操作和配置 111
7.2.1 寄存器子寻址方式 111
7.2.2 DMA通道优先级和使能控制寄存器 114
7.2.3 通道现场(channel-context)寄存器 117
7.3 扩展寻址 131
7.4 DMA存储器映射 132
7.4.1 C5402 DMA存储器映射 132
7.4.2 C5410 DMA存储器映射 132
7.4.3 C5420 DMA存储器映射 134
7.5 DMA传送延迟 135
7.6 通过DMA控制器的增强型主机接口的访问 137
7.7 C5420中处理器之间的FIFO通信 137
7.8 节电模式下的DMA操作 138
7.9 编程实例 138
第8章 流水线 149
8.1 流水线操作 149
8.1.1 流水线中的跳转指令 152
8.1.2 流水线中的调用指令 153
8.1.3 流水线中的返回指令 156
8.1.4 流水线中的条件执行指令 160
8.1.5 流水线中的条件调用指令和条件跳转指令 161
8.2 中断和流水线 164
8.3 双存取存储器和流水线 165
8.3.1 解决取指令和读操作数之间的冲突 167
8.3.2 写操作数和读双操作数之间的冲突 167
8.3.3 解决写操作数和读双操作数之间的冲突 168
8.4 单存取存储器和流水线 169
8.5 流水线延迟 170
8.5.1 访问存储器映射寄存器的推荐指令 170
8.5.2 修改ARx、BK或SP——一个可以自动解决的冲突 172
8.5.3 确定DAGEN寄存器访问冲突的规则 175
8.5.4 ARx和BK的延迟 176
8.5.5 堆栈指针的延迟 180
8.5.6 暂存器T的延迟 186
8.5.7 访问状态寄存器的延迟 188
8.5.8 块重复循环的延迟 196
8.5.9 PMST的延迟 200
8.5.10 对累加器进行存储器映射访问的延迟 202
第9章 片内外设 205
9.1 有效的片内外设 205
9.2 外设中的存储器映射寄存器 205
9.3 通用的I/O引脚 216
9.3.1 跳转控制输入引脚( ) 216
9.3.2 外部标志输出引脚(XF) 216
9.4 定时器 217
9.4.1 定时器寄存器 217
9.4.2 定时器的操作 218
9.5 时钟产生器 220
9.5.1 硬件配置的PLL 220
9.5.2 软件可编程PLL 221
第10章 主机接口 228
10.1 标准主机接口概述 228
10.1.1 标准主机接口基本功能描述 229
10.1.2 标准主机接口的操作 231
10.1.3 主机对HPI的读/写访问 235
10.1.4 DSPINT和HINT功能操作 239
10.1.5 改变HPI存储器访问模式(SAM/HOM)和使用IDLE2/3的考虑 240
10.1.6 在复位过程中的HPI存储器访问 241
10.2 增强型8位主机接口(HPI-8) 242
10.2.1 增强型8位主机接口(HPI-8)简介 242
10.2.2 HPI-8的基本功能描述 243
10.2.3 HPI-8操作的详细描述 244
10.2.4 主机对HPI-8的读/写访问 250
10.2.5 DSPINT和HINT操作 255
10.2.6 改变时钟模式时HPI-8传送的注意事项 256
10.2.7 使用IDLE时的注意事项 257
10.2.8 复位对HPI操作的影响 258
10.2.9 用作通用输入/输出引脚的HPI-8数据引脚(不适用于C5410) 259
10.3 增强型16位主机接口(HPI-16) 263
10.3.1 HPI-16操作概述 264
10.3.2 复用模式 266
10.3.3 非复用模式 272
10.3.4 HPI-16的存储器映射 272
10.3.5 HPI-16与DMA的相互作用 274
10.3.6 复位时HPI-16的操作 275
10.3.7 IDLEn期间的HPI-16操作 275
10.3.8 影响HPI-16的DSP时钟模式变化 276
第11章 串行口 277
11.1 串行口简介 277
11.2 串行接口 278
11.2.1 串行口寄存器 278
11.2.2 串行口操作 280
11.2.3 串行口配置 281
11.2.4 突发模式下的发送和接收操作 288
11.2.5 连续模式下的发送和接收操作 293
11.2.6 串行口故障条件 294
11.2.7 串口操作的实例 298
11.3 缓冲串口(BSP) 299
11.3.1 标准模式下的BSP操作 300
11.3.2 自动缓冲单元(ABU)操作 304
11.3.3 BSP操作的系统考虑 310
11.3.4 缓冲区未对准中断(BMINT)(仅适用于C549) 313
11.3.5 节电(power-down)模式的BSP操作 313
11.4 时分复用(TDM)串行接口 314
11.4.1 基本的时分复用操作 314
11.4.2 TDM串行接口寄存器 315
11.4.3 TDM串行口操作 316
11.4.4 TDM模式发送和接收操作 319
11.4.5 TDM串行口的故障条件 320
11.4.6 TDM串口操作实例 320
第12章 多通道缓冲串行口 324
12.1 McBSP特征 324
12.2 McBSP概述 325
12.2.1 串行口结构 327
12.2.2 接收和发送控制寄存器:RCR[1,2]和XCR[1,2] 332
12.3 数据的发送和接收流程 335
12.3.1 串口复位:(R/X) 和 336
12.3.2 确定准备就绪状态 338
12.3.3 CPU中断:(R/X)INT 339
12.3.4 帧和时钟的配置 339
12.3.5 McBSP标准操作 347
12.3.6 帧同步忽略 349
12.3.7 串口错误条件 351
12.3.8 接收数据调整和符号扩展:RJUST 357
12.4 μ律/A律压扩硬件操作:(R/X)COMPAND 358
12.4.1 压扩内部数据 359
12.4.2 位排序 360
12.5 可编程的时钟和帧信号 360
12.5.1 采样率产生器的时钟与帧信号 361
12.5.2 数据时钟的产生 363
12.5.3 帧同步信号的产生 366
12.5.4 定时举例 368
12.6 多通道选择操作 370
12.6.1 多通道操作控制寄存器 371
12.6.2 使能多通道选择 373
12.6.3 通道的使能和屏蔽 373
12.6.4 A-bis接口功能(仅适用于C5410) 378
12.7 SPI协议:McBSP时钟停止模式 379
12.7.1 时钟停止模式配置和信号描述 381
12.7.2 作为SPI主设备的McBSP操作 382
12.7.3 作为SPI从设备的McBSP操作 383
12.7.4 SPI模式的McBSP初始化 384
12.8 仿真Free和Soft位 385
12.9 McBSP引脚用作通用I/O 385
12.10 节电模式下McBSP的操作 386
12.11 McBSP编程代码实例 387
第13章 外部总线操作 388
13.1 外部总线接口 388
13.2 外部总线优先级 389
13.3 外部总线控制 390
13.3.1 等待状态产生器 390
13.3.2 块切换逻辑 392
13.4 外部总线接口时序 395
13.4.1 存储器存取时序 396
13.4.2 I/O存取时序 398
13.4.3 存储器和I/O存取时序 398
13.5 启动存取时序 402
13.5.1 复位 402
13.5.2 IDLE3 402
13.6 保持模式 404
13.6.1 保持模式期间的中断 405
13.6.2 保持模式和复位 406
13.7 增强型外部总线接口 407
13.7.1 增强型外部并行接口(XIO2)简介 407
13.7.2 总线时序 408
第14章 处理器之间的通信 410
14.1 多核DSP内部的通信 410
14.2 双向FIFO 411
14.3 从外部存储器空间访问HPI-16 413
14.4 使用McBSP的子系统通信 415
14.5 处理器之间的中断 416
附录A 使用XDS510仿真器时的设计考虑 417
附录B 开发支持和零件订购信息 434
附录C 向TI提交ROM代码 439
参考文献 441