本书按照“基础知识―开发环境―软件开发―硬件开发―综合开发”的顺序,由浅入深、全面系统地介绍了DSP芯片的基本原理、开发过程和应用方法。首先,介绍了DSP系统的设计、DSP芯片的特点、DSP芯片的软硬件开发环境及定点数据处理的运算基础;其次,在介绍DSP芯片存储资源管理的基础上,重点介绍了基于C语言和汇编语言的软件开发方法;接着,介绍了DSP系统的硬件设计和开发方法;最后,介绍了DSP多任务系统的开发方法,并通过实例介绍了DSP综合系统的开发过程和开发方法。
张雄伟,教授,博士生导师,全国优秀教师,国务院特殊津贴获得者。长期从事语音与图像处理、智能信息处理等领域的教学研究工作,主持国家自然科学基金、863计划项目多项,发表论文100余篇,培养研究生80余人,出版教材、译著10部。
第1章 概述\t1
1.1 引言\t1
1.2 DSP系统\t2
1.2.1 DSP系统的基本构成\t2
1.2.2 DSP系统的特点\t3
1.2.3 DSP系统的设计与开发\t3
1.2.4 DSP系统的开发工具\t4
1.2.5 实时DSP系统\t5
1.3 DSP芯片概述\t6
1.3.1 DSP芯片的定义\t6
1.3.2 DSP芯片的特点\t7
1.3.3 DSP芯片的发展\t8
1.3.4 DSP芯片的分类\t9
1.3.5 DSP芯片的选择\t10
1.3.6 DSP系统的运算量\t13
1.3.7 DSP芯片的应用\t14
1.4 常用的DSP芯片\t14
1.4.1 TI公司DSP芯片\t14
1.4.2 ADI公司DSP芯片\t20
1.5 内容组织与常用术语\t21
1.5.1 内容组织结构\t21
1.5.2 常用术语\t21
本章小结\t22
习题与思考题\t22
第2章 DSP芯片的基本结构和特征\t23
2.1 引言\t23
2.2 DSP芯片的基本结构\t23
2.2.1 概述\t23
2.2.2 总线结构\t23
2.2.3 流水线\t25
2.3 中央处理单元(CPU)\t25
2.3.1 算术逻辑单元(ALU)\t26
2.3.2 累加器\t27
2.3.3 桶形移位寄存器\t28
2.3.4 乘累加单元\t29
2.3.5 寻址单元\t30
2.4 存储单元\t31
2.4.1 片内存储器\t31
2.4.2 存储器映射寄存器\t32
2.4.3 Cache\t32
2.4.4 外部扩展存储器\t33
2.5 集成外设与接口\t33
2.5.1 通用类外设\t34
2.5.2 通信类外设\t35
2.5.3 存储类接口\t36
2.5.4 DMA控制器\t36
2.5.5 专用外设与接口\t37
2.6 中断\t37
2.6.1 中断源\t38
2.6.2 中断优先级\t38
2.6.3 中断处理过程\t40
2.6.4 中断矢量表\t40
本章小结\t42
习题与思考题\t42
第3章 DSP芯片的开发环境\t43
3.1 引言\t43
3.2 软件开发流程\t43
3.3 软件开发环境\t45
3.3.1 基本概念\t47
3.3.2 CCS开发环境\t48
3.3.3 软件开发功能\t54
3.4 硬件开发流程\t65
3.5 硬件开发环境\t65
3.5.1 DSP仿真器\t66
3.5.2 仿真器接口\t67
3.5.3 TI公司仿真器\t68
本章小结\t69
习题与思考题\t69
第4章 DSP的数值运算基础\t70
4.1 引言\t70
4.2 定点的基本概念\t70
4.2.1 数的定标\t70
4.2.2 数的转换\t72
4.2.3 溢出保护\t73
4.2.4 符号扩展\t74
4.2.5 舍入与截尾\t74
4.3 定点运算实现的基本原理\t75
4.3.1 加法/减法运算的C语言定点模拟\t75
4.3.2 乘法运算的C语言定点模拟\t77
4.3.3 除法运算的C语言定点模拟\t78
4.3.4 程序变量的Q值确定\t78
4.3.5 浮点至定点变换的C程序举例\t79
4.4 DSP定点算术运算实现的基本原理\t81
4.4.1 定点乘法\t81
4.4.2 定点加法\t82
4.4.3 定点除法\t83
4.5 非线性运算定点实现方法\t85
4.5.1 级数展开法\t85
4.5.2 查表法\t85
4.5.3 混合法\t87
4.6 基于数据规格化的定点运算精度提高\t88
4.6.1 数据规格化处理方法\t88
4.6.2 运算实例分析\t90
本章小结\t91
习题与思考题\t92
第5章 DSP芯片的存储资源管理\t93
5.1 引言\t93
5.2 TMS320C54x的存储区组织\t93
5.2.1 TMS320VC5416的存储资源\t93
5.2.2 程序空间\t95
5.2.3 数据空间\t95
5.2.4 I/O空间\t96
5.2.5 存储器映射寄存器\t96
5.3 TMS320C55x的存储区组织\t97
5.3.1 TMS320VC5509A的存储资源\t97
5.3.2 程序空间\t98
5.3.3 数据空间\t99
5.3.4 I/O空间\t100
5.4 TI KeyStone片上系统的存储区组织\t100
5.4.1 存储空间组织\t100
5.4.2 高速缓存器(Cache)\t102
5.4.3 存储器保护单元\t103
5.5 程序结构与COFF目标文件格式\t103
5.5.1 块(section)\t104
5.5.2 汇编器对块的处理\t105
5.5.3 COFF文件格式编程示例\t106
5.5.4 COFF文件中的符号\t107
5.5.5 链接器对块的处理\t108
5.6 存储区分配与CMD文件\t109
5.6.1 文件链接方法\t109
5.6.2 链接命令文件\t109
5.6.3 TMS320VC5509A的CMD文件\t110
本章小结\t113
习题与思考题\t113
第6章 基于C语言的DSP芯片软件开发\t114
6.1 引言\t114
6.2 TMS320C55x的C语言\t114
6.2.1 变量和常数\t116
6.2.2 函数\t119
6.2.3 预处理\t121
6.2.4 asm语句\t122
6.3 C语言程序代码的优化\t123
6.3.1 C语言程序代码编译分析\t123
6.3.2 C语言程序的优化方法\t128
本章小结\t139
习题与思考题\t139
第7章 基于C55x汇编语言的DSP芯片软件开发\t140
7.1 汇编语言源程序格式\t140
7.2 汇编源程序中常见符号和伪指令\t142
7.3 汇编指令系统\t145
7.4 寻址方式\t148
7.4.1 绝对寻址方式\t148
7.4.2 直接寻址方式\t149
7.4.3 间接寻址方式\t151
7.5 汇编代码的优化\t160
7.6 汇编语言和C的混合编程方法\t160
7.6.1 独立的C和汇编模块接口\t161
7.6.2 从C程序中访问汇编程序变量\t162
7.6.3 在汇编程序中访问C程序变量\t163
7.6.4 在C程序中直接嵌入汇编语句\t164
7.6.5 TMS320C55x混合编程举例\t164
本章小结\t165
习题与思考题\t165
第8章 DSP算法软件开发实例\t166
8.1 引言\t166
8.2 基于FFT的单音检测算法原理\t166
8.2.1 单音检测算法概述\t166
8.2.2 DFT的基本原理\t167
8.2.3 FFT算法的导出\t167
8.3 基于MATLAB的DSP算法仿真\t172
8.3.1 MATLAB简介\t172
8.3.2 单音检测算法的MATLAB仿真\t173
8.4 单音检测算法的浮点C语言实现\t175
8.5 单音检测算法的定点C语言实现\t180
8.5.1 FFT运算溢出及避免方法\t180
8.5.2 单音检测算法的定点C语言实现\t181
8.6 单音检测算法的定点DSP芯片实现\t187
8.7 多路单音检测算法的实现\t190
本章小结\t193
习题与思考题\t194
第9章 DSP系统的硬件设计\t195
9.1 引言\t195
9.2 DSP系统硬件设计的基本步骤\t195
9.3 最小DSP系统的硬件设计\t196
9.3.1 电源电路\t196
9.3.2 复位电路\t199
9.3.3 时钟电路\t200
9.3.4 JTAG电路\t201
9.3.5 引脚的电平转换与处理\t202
9.3.6 硬件系统的可靠性设计\t205
9.4 外部存储器接口设计\t207
9.4.1 TMS320C54x存储器接口设计\t208
9.4.2 TMS320C55x存储器接口设计\t211
9.4.3 KeyStone系列DSP存储器接口设计\t212
9.5 模数接口电路的设计\t213
9.5.1 与TLV320AIC23B接口的设计\t213
9.5.2 与MC145483接口的设计\t214
9.5.3 与多种音频器件接口的设计\t214
9.6 通信接口的设计\t215
9.6.1 通用串行接口\t215
9.6.2 同步串行通信接口电路设计\t216
9.6.3 异步串行通信接口电路设计\t216
9.7 主从式系统的设计\t217
9.7.1 共享存储器实现双机通信\t218
9.7.2 利用HPI实现双机通信\t219
9.7.3 OMAP5910芯片的双核通信\t220
本章小结\t221
习题与思考题\t221
第10章 DSP芯片外设驱动程序的开发\t222
10.1 引言\t222
10.2 基于CSL的外设程序设计\t223
10.2.1 CSL简介\t223
10.2.2 CSL的特点\t225
10.2.3 CSL程序开发基本步骤\t227
10.3 中断控制程序的开发\t236
10.3.1 中断初始化\t237
10.3.2 中断服务程序的开发\t240
10.3.3 中断控制程序实例\t241
10.4 典型接口功能的控制程序开发\t244
10.4.1 外部存储的控制程序\t244
10.4.2 串行A/D和D/A功能的控制程序\t247
10.4.3 外部主机通信功能的控制程序\t252
10.5 DMA的控制程序开发\t253
10.5.1 DSP芯片的DMA数据传输模式\t254
10.5.2 DSP芯片的DMA传输地址\t255
10.5.3 DSP芯片的DMA事件和中断\t255
10.5.4 DMA控制程序举例\t257
本章小结\t260
习题与思考题\t260
第11章 DSP脱机系统的开发\t261
11.1 联机系统和脱机系统\t261
11.2 DSP芯片的BOOT\t263
11.2.1 BOOT简介\t263
11.2.2 BOOT过程\t264
11.2.3 BOOT表\t269
11.2.4 二次BOOT\t270
11.3 DSP脱机系统实现\t271
11.3.1 硬件设计\t271
11.3.2 软件代码准备与烧录\t272
11.4 DSP脱机系统软件开发实例\t275
11.4.1 并口Flash脱机系统的软件开发\t275
11.4.2 串口Flash脱机系统的软件开发\t277
本章小结\t281
习题与思考题\t281
第12章 DSP多任务系统的开发\t282
12.1 引言\t282
12.2 多任务管理\t282
12.2.1 前后台系统\t282
12.2.2 操作系统\t283
12.2.3 实时操作系统\t285
12.3 TI RTOS\t286
12.3.1 TI RTOS的实时多任务内核\t286
12.3.2 SYS/BIOS的核心功能\t289
12.3.3 TI RTOS中的其他软件\t293
12.4 基于TI RTOS的软件开发\t294
12.4.1 单核DSP片上系统的RTOS软件开发\t294
12.4.2 多核DSP片上系统的RTOS软件开发\t303
12.4.3 基于OpenMP模型的并行代码设计\t306
12.5 DSP片上系统的RTOS工程示例\t309
本章小结\t311
习题与思考题\t311
第13章 DSP系统的开发实例\t312
13.1 引言\t312
13.2 基于TMS320VC5509A的DSP应用系统实例\t312
13.2.1 系统简介\t312
13.2.2 系统架构\t313
13.3 实例系统的硬件开发\t314
13.3.1 器件选型\t314
13.3.2 接口设计\t316
13.3.3 电路设计\t317
13.3.4 电路调试\t319
13.4 实例系统的软件开发\t320
13.4.1 算法仿真程序编写和测试\t321
13.4.2 接口控制程序编写和调试\t323
13.5 实例系统的软硬件集成\t330
本章小结\t340
习题与思考题\t341
附录A 缩略词的中英文对照\t342
附录B TMS320VC5509A PGE LQFP引脚图及定义\t346
附录C TMS320C55x 指令集\t348
附录D CSL库函数\t349
附录E 代码实例\t350
附录F CCS V5.5的安装\t351
附录G 8位μ律PCM/16位线性转换的C语言程序\t352
附录H μ律PCM到线性变换表\t354
参考文献\t355