第1章 综述 1
1.1 DSP技术的发展历程 1
1.2 数字信号处理器(DSP)与通用微处理器(MPU) 2
1.2.1 总线结构不同 2
1.2.2 流水线 3
1.2.3 寻址方式 4
1.2.4 特殊的硬件结构 4
1.2.5 支持多处理器结构 4
1.3 DSP的选型和设计方案确定 5
1.4 DSP技术的发展方向 9
1.4.1 微处理器(MPU)和数字信号处理器(DSP)混合 9
1.4.2 DSP+RTOS 9
1.4.3 支持高级编程语言的DSP开发软件 10
1.4.4 并行处理结构 11
1.4.5 功耗越来越低 11
2.2 VLIW 和 VelociTI 13
2.1 概述 13
第2章 TMS320C6200处理器和指令系统 13
2.3 CPU结构 14
2.4 TMS320C6200数字信号处理器指令集 20
2.5 流水线 49
2.5.1 概述 49
2.5.2 取指 50
2.5.3 解码 51
2.5.4 执行 52
2.5.5 不同指令的执行流水 53
2.5.6 影响流水线效率的因素 56
第3章 TMS320C6200开发工具和开发过程 62
3.1 TMS320C6200开发流程 62
3.2 代码生成工具 63
3.2.1 工具描述 63
3.2.2 代码优化器 63
3.3 TMS320C6201 EVM 板 65
3.4 Coder Composer Studio的实时调测 67
3.5 使用CCS开发TMS320C6200应用举例 69
第4章 TMS320C6200系列DSP的硬件开发 75
4.1 综述 75
4.2 片内存储器 76
4.2.1 简介 76
4.2.2 片内程序区 76
4.2.3 片内数据区 79
4.2.4 C6211的两级内存储器 83
4.3 外部存储器接口的设计与应用 88
4.3.1 概述 88
4.3.2 EMIF 控制寄存器 90
4.3.3 异步接口设计 92
4.3.4 FIFO接口 102
4.3.5 SBSRAM接口设计 112
4.3.6 SDRAM/SGRAM接口 116
4.3.7 Hold接口 128
4.3.8 存储器申请的仲裁 129
4.3.9 C6200 EMIF配置操作举例 130
4.4 DMA控制器 133
4.4.1 概述 133
4.4.2 DMA的初始化和启动 134
4.4.3 传输控制:同步与地址产生 139
4.4.4 单一通道的分裂操作 146
4.4.5 资源仲裁和优先级设置 147
4.4.6 DMA通道的状态 148
4.5.1 概述 149
4.5 主机口(HPI) 149
4.4.7 DMA的性能、外管脚和调试控制 149
4.5.2 有关信号与控制寄存器 151
4.5.3 主机口的存取操作 154
4.5.4 HPI的自加载操作 157
4.6 TMS320C6200的引导 157
第5章 TMS320C6200系列DSP 的软件优化编程 159
5.1 概述 159
5.2.1 C/C++代码的编写 160
5.2 优化C/C++代码 160
5.2.2 编译C/C++代码 161
5.2.3 优化C代码 163
5.3 通过线性汇编优化汇编代码 167
5.3.1 写并行代码 167
5.3.2 使用字访问short型数据 170
5.3.3 软件流水 173
5.3.4 多循环周期的模安排 182
5.3.5 循环传递路径 194
5.3.6 循环中的If-Then-Else语句 199
5.3.7 循环展开 202
5.3.8 生命太长问题 206
5.3.9 消除冗余取 212
5.3.10 存储体 217
5.3.11 外环软件流水 226
5.3.12 与内环一起有条件地执行外环 229
5.4.1 寄存器使用规则 239
5.4 C语言和汇编的混合编程 239
5.4.2 函数结构及调用规则 240
5.4.3 在C/C++程序中插入汇编语言 242
第6章 DSP/BIOS功能与使用 246
6.1 DSP/BIOS的功能和组成 246
6.1.1 什么是DSP/BIOS 246
6.1.2 DSP/BIOS的组件 246
6.1.3 DSP/BIOS的特点和优点 248
6.1.4 DSP/BIOS中一些重要的命名规则 249
6.2 利用DSP/BIOS生成程序 250
6.2.1 开发步骤 250
6.2.2 使用DSP/BIOS配置工具(DSP/BIOS configuration tool) 251
6.2.3 创建DSP/BIOS程序所用的文件 251
6.2.4 程序的编译 252
6.2.5 DSP/BIOS程序的启动顺序 256
6.3 线程调度 257
6.3.1 线程的概念和类型 257
6.3.2 硬件中断 258
6.3.3 软件中断 261
6.3.4 任务(Task) 269
6.3.5 等待循环 272
6.3.6 旗语(Semaphores) 272
6.3.7 信箱 276
6.3.8 定时器和时钟 279
6.3.9 周期函数管理器(PRD)和系统时钟 280
6.3.10 使用运行图来观察程序的运行 281
6.4 内存和底层函数 282
6.4.1 存储器管理 283
6.4.2 系统服务 286
6.4.3 队列(QUE) 286
6.5 输入/输出 290
6.5.1 I/O综述 290
6.5.2 数据管道管理器(PIP模块) 291
6.5.3 主机通道管理器(HST模块) 293
6.5.4 管道和流的比较 294
6.5.5 一个使用 DSP/BIOS的音频例子 295
第7章 TMS320C6200系列DSP的应用开发举例 297
7.1 WCDMA RAKE接收机在TMS320C6200DSP器件上的实现 297
7.1.1 CDMA原理 297
7.1.2 基本系统 299
7.1.3 RAKE接收机的实现 304
7.1.4 载入TMS320C6200 DSP器件 310
7.1.5 结论 311
7.2 WCDMA Turbo译码器在TMS320C6200DSP器件上的实现 311
7.2.1 Turbo 编码器、译码器结构及译码算法 311
7.2.2 MAP译码器的实现 314
7.3 多通道声码器在TMS320C6200DSP器件上的实现 332
7.3.1 G.723.1语音编码算法 332
7.3.2 多通道声码器的设计 334
7.3.3 G.723.1多通道声码器的实现 339
附录 伪指令 354