第0章 引言 1
0.1 TMS320系列DSP概述 1
0.1.1 TMS320系列DSP发展历史 1
0.1.2 TMS320系列DSP典型应用 1
0.2 TMS320C6000系列DSP的应用 2
0.3 TMS320C6000系列DSP的特点和性能 3
第1章 TMS320C6000系列DSP的CPU数据通路和控制 5
1.1 C6000系列DSP的基本结构 9
1.1.1 中央处理单元CPU 9
1.1.2 内部存储器 9
1.1.3 存储器和外设类别 9
1.2 CPU通用寄存器组 10
1.3 数据通路的功能单元 11
1.4 寄存器交叉通路 13
1.5 存储器存取通路 14
1.6 数据地址通路 14
1.7 TMS320C6000控制寄存器 15
1.7.1 控制寄存器访问的流水线/时序 15
1.7.2 寻址模式寄存器(AMR) 16
1.7.3 控制状态寄存器(CSR) 17
1.7.4 E1节拍程序计数器(PCE1) 18
1.8 TMS320C67x控制寄存器扩展 18
1.8.1 浮点加法器配置寄存器(FADCR) 19
1.8.2 浮点辅助配置寄存器(FAUCR) 20
1.8.3 浮点乘法器配置寄存器(FMCR) 21
1.9 TMS320C64x控制寄存器扩展 22
1.9.1 迦罗瓦(Galois)域 23
1.9.2 Galois域多项式发生器函数寄存器(GFPGFR) 24
1.10 TMS320C64x体系结构的扩展 25
第2章 TMS320C620x/C670x内部程序和数据存储器 27
2.1 程序存储器控制器 27
2.2 内部程序存储器 28
2.2.1 内部程序存储器模式 30
2.2.2 存储器映射 31
2.2.3 高速缓存(Cache) 32
2.2.4 Cache结构 32
2.2.5 引导操作 33
2.2.6 DMA对程序存储器的访问控制 34
2.3 数据存储器控制器 34
2.4 内部数据存储器 35
2.4.1 TMS320C6201/C6204/C6205 35
2.4.2 TMS320C6701 37
2.4.3 TMS320C6202(B) 38
2.4.4 TMS320C6203(B) 39
2.4.5 数据对齐 39
2.4.6 内部存储器的双CPU访问 40
2.4.7 内部存储器的DMA访问 41
2.4.8 数据端点模式 42
2.5 外围总线 44
2.5.1 字节和半字访问 44
2.5.2 CPU等待状态 45
2.5.3 CPU和DMA控制器仲裁 45
第3章 TMS320C621x/C671x/C64x二级内部存储器 46
3.1 概述 46
3.2 TMS320C621x/C671x/C64x高速缓存定义 49
3.3 TMS320C621x/C671x二级存储器 52
3.3.1 一级程序Cache(L1P) 52
3.3.2 一级数据Cache(L1D) 52
3.3.3 二级Cache(L2) 53
3.3.4 TMS320C621x/C671x数据对齐 54
3.3.5 控制寄存器 54
3.4 TMS320C64x二级存储器 55
3.4.1 一级程序Cache(L1P) 55
3.4.2 一级数据Cache(L1D) 56
3.4.3 Cache缺失的流水线处理机制 57
3.4.4 存储器分组结构 60
3.4.5 存储器排序 60
3.4.6 L1D-L2写缓冲 61
3.4.7 L2 61
3.4.8 TMS320C64x数据对齐 63
3.4.9 控制寄存器 63
3.5 L1P操作 67
3.6 L1D操作 68
3.6.1 读分配 68
3.6.2 L1D无效 69
3.7 L2操作 69
3.7.1 L2的接口 71
3.7.2 L2的组织 71
3.7.3 L2的读请求 72
3.7.4 L2的写请求 72
3.7.5 L2为全SRAM模式下的L1D 73
3.7.6 L1D与L2主处理器接口 73
3.7.7 L2寄存器主模式访问 73
3.7.8 外部一致性 74
3.7.9 EDMA服务 74
3.7.10 EDMA一致性 74
3.7.11 无效 77
3.8 应用级优化 83
3.8.1 选择正确的L2 Cache大小 83
3.8.2 DMA或L2 Cache的使用 83
3.8.3 信号处理与通用处理代码的对比 83
3.9 程序级优化 84
3.9.1 分析方法 85
3.9.2 通过选择适当的数据类型来降低存储器带宽需求 85
3.9.3 处理链 86
3.9.4 避免L1P冲突缺失 88
3.9.5 避免L1D冲突缺失 92
3.9.6 避免L1P逆操作 96
3.9.7 避免容量缺失 99
3.9.8 避免写缓冲阻塞 103
3.10 举例 109
第4章 直接存储器访问寄存器(DMA)控制器 113
4.1 概述 113
4.2 DMA寄存器 115
4.2.1 DMA通道控制寄存器(PRICTL和SECCTL) 116
4.2.2 寄存器寻址协议 121
4.3 存储器映射 121
4.4 初始化块传输器 121
4.4.1 DMA自动初始化 122
4.5 传输计数 123
4.6 同步:触发DMA传输 124
4.6.1 DMA通道事件标志的锁存 125
4.6.2 事件自动清除 125
4.6.3 同步控制 125
4.7 地址的产生 127
4.7.1 基本地址调整 127
4.7.2 通过全局索引寄存器进行地址调整 127
4.7.3 元素大小、对齐和字节顺序 128
4.7.4 使用一个帧索引寄存器重置地址 128
4.7.5 传输单个大数据块 129
4.7.6 分编 129
4.8 通道的分裂操作 130
4.8.1 DMA分裂操作 130
4.8.2 分裂地址产生 131
4.9 资源仲裁和优先级配置 131
4.9.1 DMA辅助控制寄存器(AUXCTL)和通道间的优先级 132
4.9.2 通道切换 133
4.10 DMA通道条件设定 133
4.10.1 DMA通道副控制寄存器(SECCTL) 134
4.11 DMA控制器结构 135
4.11.1 TMS320C6201/C6701/C6202(1.8V设备)DMA结构 135
4.11.2 TMS320C6202B/C6203(B)/C6204/C6205(1.5V设备)DMA结构 137
4.11.3 DMA操作方式 139
4.11.4 DMA性能 139
4.12 DMA完成管脚 140
4.13 仿真 140
第5章 DMA和CPU数据访问性能 141
5.1 概述 141
5.2 数据访问 141
5.2.1 内部数据存储器 141
5.2.2 外围总线 142
5.2.3 外部存储器接口(EMIF) 143
5.2.4 资源竞争 145
5.2.5 DMA同步 148
5.2.6 同源地址传入传出 148
5.3 带宽计算 149
5.3.1 简单计算实例 149
5.3.2 复杂带宽计算实例 150
5.4 带宽优化 153
5.4.1 DMA猝发最大化 153
5.4.2 CPU/DMA冲突最小化 154
第6章 EDMA控制器 155
6.1 概述 155
6.2 EDMA术语 157
6.3 事件处理和EDMA控制寄存器 157
6.3.1 事件寄存器(ER,ERL,ERH) 158
6.3.2 事件使能寄存器(EER,EERL,EERH) 159
6.3.3 事件清除寄存器(ECR,ECRL,ECRH) 160
6.3.4 事件设置寄存器(ESR,ESRL,ESRH) 161
6.3.5 事件极性寄存器(EPRL,EPRH)(C64x) 162
6.4 事件编码器 163
6.5 参数RAM(PaRAM) 163
6.5.1 EDMA传输参数入口 164
6.6 EDMA传输参数 165
6.6.1 选项参数(OPT) 167
6.6.2 SRC/DST地址(SRC/DST) 167
6.6.3 单元计数(ELECNT) 168
6.6.4 帧/阵列计数(FRMCNT) 168
6.6.5 单元索引(ELEIDX)和帧/阵列索引(FRMIDX) 168
6.6.6 单元计数重载(ELERLD) 168
6.6.7 链接地址(LINK) 168
6.7 初始化EDMA传输 169
6.7.1 EDMA传输的同步 169
6.8 EDMA传输分类 171
6.8.1 一维传输 171
6.8.2 二维传输 173
6.9 单元大小和对齐 174
6.9.1 固定地址模式传输 175
6.10 单元和帧/阵列计数更新 175
6.10.1 单元计数的重载(ELERLD) 176
6.11 源地址/目的地址的更新 176
6.12 EDMA传输的链接 177
6.13 EDMA传输的终止 179
6.14 EDMA中断的产生 179
6.14.1 CPU对EDMA的中断服务 182
6.14.2 TMS320C64x可选的传输完成码中断 182
6.15 事件链接EDMA通道 183
6.15.1 TMS320C621x/C671x EDMA传输链 183
6.15.2 TMS320C64x EDMA传输链 184
6.15.3 TMS320C64x可选的传输链 184
6.15.4 C64x可选传输链实例 185
6.16 外围设备传输(仅适用于C64x) 187
6.17 资源仲裁与优先级处理 187
6.17.1 优先级队列状态寄存器(PQSR) 188
6.18 EDMA性能 190
6.19 快速DMA(QDMA) 190
6.19.1 QDMA寄存器 190
6.10.2 QDMA寄存器访问 192
6.19.3 QDMA传输的发起 192
6.19.4 QDMA性能 192
6.19.5 QDMA阻塞与优先级 193
6.20 传输请求递交 193
6.20.1 请求链 193
6.20.2 传输交叉开关 195
6.20.3 地址产生/传输逻辑 195
6.21 传输实例 196
6.21.1 块搬移实例 196
6.21.2 子帧提取实例 198
6.21.3 数据分类实例 199
6.21.4 外设管理实例 200
6.21.5 非猝发外设 200
第7章 主机接口(HPI) 206
7.1 概述 206
7.2 HPI外部接口 208
7.2.1 TMS320C620x/C670x HPI 208
7.2.2 TMS320C621x/C671x HPI 209
7.2.3 TMS320C64x HPI16或HPI32 210
7.3 HPI信号 211
7.3.1 数据总线:HD[15:0]或HD[31:0] 211
7.3.2 访问控制选择:HCNTL[1:0] 211
7.3.3 半字标识选择:HHWIL 212
7.3.4 字节使能:?(只适用于C620x/C670x) 212
7.3.5 读/写选择:HR/? 213
7.3.6 就绪:? 211
7.3.7 选通:?,?,? 213
7.3.8 地址选通输入:? 214
7.3.9 对主机的中断:? 215
7.4 HPI总线访问 215
7.4.1 C620x/C670x HPI总线访问 215
7.4.2 C621x/C671x HPI总线访问 218
7.4.3 C64x HPI总线访问 220
7.5 HPI寄存器 222
7.5.1 HPI地址寄存器(HPIA) 222
7.5.2 HPI控制寄存器(HPIC) 223
7.5.3 使用?与FETCH的软件握手 223
7.5.4 主机设备使用DSPINT中断CPU 224
7.5.5 CPU使用?中断主机 224
7.6 主机访问顺序 224
7.6.1 初始化HPIC和HPIA 225
7.6.2 固定地址模式下的HPID读访问 226
7.6.3 地址自增模式的HPID读访问 228
7.6.4 非地址自增模式的主机数据写访问 229
7.6.5 地址自增模式的HPID写访问 231
7.6.6 单半字周期(只适用于C620x/C670x) 233
7.7 HPI传输优先级队列——TMS320C621x/C671x/C64x 234
7.8 复位时通过HPI的存储器访问 234
第8章 扩展总线 235
8.1 概述 235
8.2 扩展总线信号 237
8.3 扩展总线寄存器 238
8.3.1 扩展总线主机端口寄存器 238
8.3.2 扩展总线全局控制寄存器(XBGC) 239
8.3.3 XCE存储空间控制寄存器(XCExCTL) 240
8.4 扩展总线I/O端口 240
8.4.1 异步模式 242
8.4.2 同步FIFO模式 243
8.4.3 DMA传输实例 246
8.5 扩展总线主机端口操作 248
8.5.1 扩展总线主机端口寄存器描述 249
8.5.2 同步主机端口模式 251
8.5.3 异步主机端口模式 260
8.6 扩展总线仲裁 262
8.6.1 内部总线仲裁器使能 262
8.6.2 内部总线仲裁器禁止 263
8.6.3 扩展总线请求器优先级 265
8.7 通过扩展总线进行引导配置控制 265
第9章 PCI 266
9.1 概述 266
9.2 PCI接口结构 268
9.3 PCI寄存器 271
9.3.1 PCI配置寄存器(只能被外部PCI主机访问) 271
9.3.2 PCI I/O寄存器(只能外部PCI主机访问) 273
9.3.3 PCI内存映射外围寄存器 275
9.4 TMS320C6000/PCI存储器映射 276
9.5 字节寻址 277
9.6 PCI地址译码 277
9.7 PCI与程序存储器的数据传输(TMS320C62x/C67x) 277
9.8 从模式传输 278
9.8.1 DSP存储器从模式写 278
9.8.2 DSP存储器从模式读 278
9.8.3 PCI目标初始化终止 279
9.9 主机传输 280
9.9.1 DSP主机地址寄存器(DSPMA) 280
9.9.2 PCI主机地址寄存器(PCIMA) 280
9.9.3 PCI主机控制寄存器(PCIMC) 281
9.9.4 当前DSP地址寄存器(CDSPA) 281
9.9.5 当前PCI地址寄存器(CPCIA) 282
9.9.6 当前字节计数寄存器(CCNT) 282
9.9.7 PCI发送终止寄存器(HALT)——仅C62x/C67x 283
9.9.8 DSP主模式写 283
9.9.9 DSP主模式读 284
9.10 中断和状态通知 285
9.10.1 PCI中断源寄存器(PCIIS) 285
9.10.2 PCI中断使能寄存器(PCIIEN) 286
9.10.3 DSP复位源/状态寄存器(RSTSRC) 287
9.10.4 PCI中断 288
9.11 复位 289
9.11.1 DSP的PCI复位 289
9.11.2 FIFO复位 289
9.11.3 PCI配置寄存器复位 289
9.12 PCI端口的启动设置 289
9.12.1 PCI引导 289
9.13 EEPROM接口 290
9.13.1 PCI从EEPROM自动初始化 291
9.13.2 EEPROM内存映射 291
9.13.3 EEPROM校验 292
9.13.4 DSP EEPROM接口 292
9.14 错误处理 295
9.14.1 PCI奇偶错误处理 295
9.14.2 PCI系统错误处理 295
9.14.3 PCI宿主终止协议 296
9.14.4 PCI目标终止协议 296
9.15 电源管理(只适于TMS320C62x/C67x) 296
9.15.1 PCI电源管理 296
9.15.2 DSP电源管理策略 298
9.15.3 DSP复位 299
9.15.4 电源管理的DSP支持 299
9.16 PCI配置寄存器各位描述 302
第10章 外部存储器接口 308
10.1 概述 308
10.1.1 EMIF信号 311
10.2 EMIF寄存器 316
10.2.1 全局控制寄存器(GBLCTL) 317
10.2.2 EMIF CE空间控制寄存器 320
10.2.3 EMIF SDRAM控制寄存器 323
10.2.4 EMIF SDRAM时序寄存器(SDTIM) 325
10.2.5 TMS320C621x/C671x/C64x SDRAM扩展寄存器(SDEXT) 326
10.3 存储器宽度和字节对齐 328
10.3.1 C620x/C670x存储器宽度和字节对齐 328
10.3.2 C621x/C671x存储器宽度和字节对齐 328
10.3.3 TMS320c64x存储器宽度和字节对齐 329
10.4 命令间的转换(Turnaround)时间 331
10.5 SDRAM接口 331
10.5.1 SDRAM初始化 337
10.5.2 页面边界监测 338
10.5.3 地址移位 341
10.5.4 SDRAM刷新 344
10.5.5 SDRAM自刷新模式 345
10.5.6 模式寄存器的设置 346
10.5.7 时序要求 348
10.5.8 SDRAM休眠(DCAB和DEAC) 350
10.5.9 激活(ACTV) 350
10.5.10 SDRAM读 352
10.5.11 SDRAM写 353
10.6 SBSRAM接口 356
10.6.1 SBSRAM读 359
10.6.2 SBSARM的写 361
10.7 可编程同步接口 363
10.7.1 ZBT SRAM接口 364
10.7.2 同步FIFO接口 365
10.8 异步接口 369
10.8.1 TMS320C620x/C670xROM模式 371
10.8.2 可编程ASRAM参数 372
10.8.3 异步读操作 373
10.8.4 异步写操作 374
10.8.5 输入准备 375
10.9 外围设备数据传输(PDT)(TMC320C64x) 376
10.9.1 PDT写操作 377
10.9.2 PDT读操作 378
10.10 重置EMIF 380
10.11 HOLD接口 380
10.11.1 重置HOLD接口的注意事项 381
10.12 存储器请求优先级 381
10.12.1 TMS320C620x/C670x存储器请求优先级 381
10.12.2 TMS320C621x/C671x/C64x存储器请求优先级 382
10.13 写EMIF寄存器时的边界条件 382
10.14 时钟输出使能 383
10.15 仿真挂起操作 384
10.16 省电模式 384
第11章 引导模式和配置 385
11.1 概述 385
11.2 设备复位 385
11.3 存储器映射 385
11.3.1 TMS320C6201/C6204/C6205/C6701存储器映射 385
11.3.2 TMS320C6202(B)存储器映射 386
11.3.3 TMS320C6203(B)存储器映射 387
11.3.4 TMS320C621x/C671x存储器映射 388
11.3.5 TMS320C64x存储器映射 389
11.3.6 复位地址存储器 390
11.4 引导的配置 391
11.4.1 TMS320C6201/C6701/C6205引导和设备配置 392
11.4.2 TMS320C6202(B)/C6203(B)/C6204引导和设备配置 392
11.4.3 TMS320C6205引导和设备配置 393
11.4.4 TMS320C621x/C671x引导和设备配置 394
11.4.5 C64x引导和设备配置 395
11.5 引导过程 398
第12章 多通道缓冲串口 400
12.1 特点 400
12.2 McBSP接口信号和寄存器 401
12.2.1 串口配置 404
12.2.2 接收和发送控制寄存器:RCR和XCR 408
12.3 数据发送和接收 411
12.3.1 串口复位:(R/X)RST,GRST和RESET 412
12.3.2 确定就绪状态 413
12.3.3 CPU中断:(R/X)INT 413
12.3.4 帧和时钟配置 414
12.3.5 McBSP标准操作 420
12.3.6 帧同步忽略 423
12.3.7 串口异常情况 425
12.3.8 接收数据校正和符号扩展:RJUST 431
12.3.9 32位位反转:(R/X)WDREVRS 431
12.4 μ-律/A-律压扩硬件操作 431
12.4.1 内部数据的压扩处理 432
12.5 可编程时钟和帧同步 433
12.5.1 采样率发生器 433
12.5.2 数据时钟产生 436
12.5.3 帧同步信号产生 440
12.5.4 停止时钟 442
12.5.5 定时实例 442
12.6 多通道选择 444
12.6.1 多通道控制寄存器MCR 445
12.6.2 多通道选择使能 447
12.6.3 在多通道选择模式下的通道使能和屏蔽 447
12.6.4 增强型多通道选择模式(C64x) 451
12.6.5 DX使能器:DXENA 455
12.7 SPI协议:CLKSTP 455
12.7.1 McBSP配置为SPI主模式端的操作 457
12.7.2 McBSP配置为SPI从模式端的操作 458
12.7.3 McBSP初始化为SPI模式 459
12.8 McBSP管脚配置为通用I/O 459
第13章 定时器 461
13.1 概述 461
13.2 定时器寄存器 461
13.2.1 定时器控制寄存器(CTL) 462
13.2.2 定时器周期寄存器(PRD) 464
13.2.3 定时器计数寄存器(CNT) 464
13.3 定时器复位和计数使能:GO和? 464
13.4 定时器计数 465
13.5 定时器时钟源的选择:CLKSRC 465
13.6 定时器脉冲产生 465
13.7 控制寄存器中的边界情况 466
13.8 定时器中断 467
13.9 定时器管脚配置为通用I/O 467
13.10 仿真 468
第14章 中断选择器和外部中断 469
14.1 概述 469
14.2 可用中断源 469
14.3 外部中断信号时序 471
14.4 中断选择器寄存器 471
14.4.1 外部中断极性寄存器(EXTPOL) 472
14.4.2 中断复用寄存器 472
14.5 配置中断选择器 473
第15章 省电逻辑 474
15.1 概述 474
15.2 省电模式描述 474
15.3 触发,唤醒和效果 475
15.4 TMS320C6202(B)/C6203(B)的外设Power-Down模式 477
第16章 JTAG仿真设计 479
16.1 设计目标系统的仿真器连接头(14管脚) 479
16.2 总线协议 480
16.3 IEEE1149.1标准 480
16.4 JTAG仿真器电缆盒逻辑 480
16.5 JTAG仿真器电缆盒信号时序 481
16.6 仿真时序计算 482
16.7 仿真器和目标系统的连接 483
16.7.1 缓冲信号 484
16.7.2 目标系统时钟使用 485
16.7.3 多处理器的配置 486
16.8 14针仿真器连接头的机械尺寸 486
16.9 仿真设计 488
16.9.1 扫描路径连接器的使用 488
16.9.2 SPL仿真时序计算 489
16.9.3 仿真管脚使用 490
16.9.4 诊断应用的执行 493
第17章 通用输入/输出口(I/O) 495
17.1 概述 495
17.2 GPIO寄存器 496
17.2.1 GPIO使能寄存器(GPEN) 496
17.2.2 GPIO方向寄存器(GPDIR) 497
17.2.3 GPIO赋值寄存器(GPVAL) 498
17.2.4 GPIO Delta寄存器(GPDH,GPDL) 498
17.2.5 GPIO屏蔽寄存器(GPHM,GPLM) 499
17.2.6 GPIO全局控制寄存器(GPGC) 500
17.2.7 GPIO中断极性寄存器(GPPOL) 501
17.3 通用输入输出(I/O)端口功能 502
17.4 中断和事件产生 503
17.4.1 直通模式 503
17.4.2 逻辑模式 504
17.4.3 GPINT与GP0和/或GPINT0的复用 511
17.5 GPIO中断/事件 512