第1章 DSP系统概述 1
1.1 实时数字信号处理 1
1.1.1 什么是DSP 1
1.1.2 信号处理芯片的发展 2
1.2 DSP嵌入式系统介绍 3
1.2.1 为什么要使用DSP 3
1.2.2 DSP系统的构成 4
1.2.3 DSP系统应用领域 5
1.3 DSP器件的特点 6
1.3.1 DSP芯片的发展历史、现状和趋势 6
1.3.2 DSP芯片的特点 8
1.3.3 DSP芯片的分类 9
1.3.4 选择DSP芯片考虑的因素 10
1.3.5 DSP芯片的性能评价 11
1.4 DSP芯片产品简介 12
1.4.1 TI公司的DSP芯片概况 12
1.4.2 AD公司的DSP芯片 16
1.4.3 AT&T公司的DSP芯片 18
1.4.4 Motorola公司的DSP芯片 18
1.5 本章小结 19
1.6 为进一步深入学习推荐的参考书目 19
1.7 习题 20
第2章 TMS320C6000系列的硬件结构 21
2.1 C6000系列芯片中央处理器内核结构 21
2.1.1 基本结构 21
2.1.2 通用寄存器 30
2.1.3 控制寄存器 31
2.2 CPU数据通路和控制 33
2.2.1 数据通路的功能单元 33
2.2.2 寄存器交叉通路 34
2.2.3 存储器存取通路 36
2.2.4 数据地址通路 36
2.3 片内存储器 36
2.3.1 存储器空间分配 37
2.3.2 程序存储器控制器 38
2.3.3 内部程序存储器 38
2.3.4 数据存储器控制器 41
2.3.5 内部数据存储器 41
2.4 二级内部存储器 44
2.4.1 片内一级程序(L1P)高速缓存的结构 45
2.4.2 片内一级数据(L1D)高速缓存的结构 46
2.4.3 片内二级(L2)高速缓存的结构 47
2.4.4 片内高速缓存的控制 47
2.5 本章小结 50
2.6 为进一步深入学习推荐的参考书目 50
2.7 习题 50
第3章 TMS320C6000系列的指令系统 52
3.1 TMS320C6000公共指令集概述 52
3.1.1 指令和功能单元之间的映射 52
3.1.2 延迟间隙 52
3.1.3 指令操作码映射图 53
3.1.4 并行操作 53
3.1.5 条件操作 55
3.1.6 寻址方式 55
3.2 C6000公共指令集 57
3.2.1 读取/存储类指令 57
3.2.2 算术运算类指令 60
3.2.3 乘法运算指令 62
3.2.4 逻辑及位域操作指令 62
3.2.5 搬移类指令 64
3.2.6 程序转移类指令 64
3.2.7 资源对公共指令集的限制 65
3.2.8 浮点运算指令集 68
3.3 汇编、线性汇编和伪指令 68
3.3.1 汇编代码结构 68
3.3.2 线性汇编语言结构 70
3.3.3 汇编优化器伪指令 71
3.3.4 汇编优化器 73
3.4 C语言和线性汇编语言的混合编程 74
3.4.1 在C/C++代码中调用汇编语言模块 74
3.4.2 用内嵌函数访问汇编语言 76
3.4.3 C/C++语言中嵌入汇编语言 76
3.4.4 C/C++语言中访问汇编语言变量 77
3.5 本章小结 78
3.6 为进一步深入学习推荐的参考书目 78
3.7 习题 79
第4章 TMS320C6000系列流水线与中断 80
4.1 流水线概述 80
4.1.1 C6000流水线概念 80
4.1.2 流水线运行时序 82
4.1.3 VelociTI与标准VLIW 85
4.2 TMS320C6000流水线操作 86
4.2.1 C6000指令流水线执行级类型 86
4.2.2 C6000流水线运行的几个问题 90
4.3 中断控制系统 94
4.3.1 中断类型和中断信号 95
4.3.2 中断服务表 96
4.3.3 中断服务取指包 96
4.3.4 中断控制寄存器 99
4.3.5 中断选择器和外部中断 102
4.4 中断处理及其编程注意事项 103
4.4.1 中断捕获和处理 103
4.4.2 中断编程注意事项 105
4.5 本章小结 108
4.6 为进一步深入学习推荐的参考书目 108
4.7 习题 109
第5章 集成开发环境与软件开发过程 110
5.1 集成开发环境 110
5.1.1 概述 110
5.1.2 代码生成工具 112
5.1.3 CCS集成开发环境 116
5.1.4 DSP/BIOS插件 117
5.1.5 硬件仿真和实时数据交换 119
5.2 开发一个简单的应用程序 121
5.2.1 创建工程文件 121
5.2.2 向工程添加文件 121
5.2.3 查看源代码 122
5.2.4 编译和运行程序 122
5.2.5 修改程序选项和纠正语法错误 123
5.2.6 使用断点和观察窗口 124
5.2.7 使用观察窗口观察structure变量 125
5.2.8 测算源代码执行时间 126
5.3 C6000代码开发的基础知识 127
5.3.1 DSP程序仿真模式 127
5.3.2 C6000程序基本结构 128
5.3.3 连接器编写的3个基础 128
5.3.4 连接器命令文件 132
5.4 C语言编程常见问题 135
5.4.1 变量存取方式及far关键字 135
5.4.2 中断服务程序和interrupt关键字 136
5.4.3 优化级别和volatile关键字 137
5.4.4 软件流水对中断的影响 138
5.4.5 IST(中断服务表)的编写与devlib函数库 138
5.5 本章小结 141
5.6 为进一步深入学习推荐的参考书目 141
5.7 习题 142
第6章 DSP/BIOS实时操作系统 143
6.1 实时操作系统基本概念 143
6.2 DSP/BIOS概述 145
6.2.1 DSP/BIOS的特色和优势 145
6.2.2 DSP/BIOS的组成 146
6.3 DSP/BIOS程序开发 148
6.3.1 DSP/BIOS开发过程 148
6.3.2 使用配置工具 149
6.3.3 程序的编译和链接 153
6.3.4 在DSP/BIOS中使用运行支持库 153
6.3.5 DSP/BIOS启动序列 154
6.3.6 在DSP/BIOS中使用C+++ 155
6.3.7 在main函数中调用DSP/BIOS API 155
6.4 监测 155
6.4.1 实时分析 155
6.4.2 监测性能 156
6.4.3 监测API 156
6.4.4 隐式DSP/BIOS监测 160
6.4.5 内核/对象视图 161
6.4.6 实时数据交换 161
6.5 线程调度 164
6.5.1 线程概述和线程类型 164
6.5.2 硬件中断 167
6.5.3 软件中断 168
6.5.4 任务 173
6.5.5 空闲循环 176
6.5.6 信号灯和邮箱 176
6.5.7 定时器、中断和系统时钟 177
6.5.8 周期函数管理器(PRD)和系统时钟 178
6.5.9 用执行图观察程序的执行 178
6.6 输入输出和管道 179
6.6.1 I/O概述 179
6.6.2 管道与流的比较 180
6.6.3 数据管道管理器(PIP模块) 181
6.6.4 主机通道管理器(HST管理器) 181
6.6.5 I/O性能问题 182
6.7 本章小结 182
6.8 为进一步深入学习推荐的参考书目 182
6.9 习题 183
第7章 C6000系列编程及代码优化 184
7.1 概述 184
7.2 TMS320C6000系列C/C++语言特点 186
7.2.1 TMS320C6000系列C语言特点 186
7.2.2 C语言关键字 188
7.2.3 初始化静态和全局变量 192
7.2.4 TMS320C6000系列C语言与标准C+++的差别 192
7.3 C语言编程及程序优化 193
7.3.1 C程序的编写 193
7.3.2 C程序的编译 194
7.3.3 存储的相关性 196
7.3.4 优化C语言程序 197
7.3.5 理解编译器反馈的信息 204
7.4 汇编语言优化 204
7.4.1 使用并行指令优化 205
7.4.2 用有用的指令填充延迟间隙(取代NOP) 206
7.4.3 循环展开 206
7.4.4 字长优化(使用LDW) 207
7.4.5 软件流水 208
7.5 芯片支持库(CSL) 209
7.5.1 CSL简介 209
7.5.2 CSL命名规则 211
7.6 基于二级缓存的优化 213
7.6.1 应用级优化 213
7.6.2 程序级优化 214
7.7 本章小结 214
7.8 为进一步深入学习推荐的参考书目 215
7.9 习题 215
第8章 存储器接口及其访问控制器 217
8.1 外部存储器接口控制器 217
8.1.1 概述 217
8.1.2 接口信号和控制寄存器 218
8.1.3 接口设计 223
8.1.4 EMIF访问的仲裁 225
8.2 内存访问控制器 226
8.2.1 概述 226
8.2.2 DMA寄存器 227
8.2.3 DMA的初始化和启动 229
8.2.4 DMA的传输控制 230
8.2.5 地址的产生 232
8.2.6 通道的分裂操作 233
8.2.7 资源仲裁和优先级设置 234
8.2.8 DMA通道的状态 234
8.3 增强型直接存储器访问 235
8.3.1 概述 235
8.3.2 EDMA控制机制 236
8.3.3 EDMA的传输操作 239
8.3.4 快速DMA 243
8.4 本章小结 244
8.5 为进一步深入学习推荐的参考书目 244
8.6 习题 245
第9章 其他外设及芯片引导和程序烧写 247
9.1 多通道缓冲串口 247
9.1.1 概述 247
9.1.2 McBSP接口信号和控制寄存器 248
9.1.3 数据的传输和硬件操作 251
9.1.4 McBSP的标准操作 252
9.1.5 多通道传输接口 254
9.1.6 SPI协议的接口 254
9.1.7 McBSP引脚作为通用I/O 255
9.2 主机接口 255
9.2.1 概述 255
9.2.2 HPI信号与控制寄存器 256
9.2.3 主机口的存取操作 258
9.2.4 HPI的加载操作 259
9.3 定时器 260
9.3.1 概述 260
9.3.2 定时器的控制寄存器 260
9.3.3 定时器的工作模式控制 261
9.3.4 有关控制寄存器的边界条件 262
9.3.5 引脚配置为通用I/O口 262
9.4 芯片的配置、引导和程序固化 263
9.4.1 概述 263
9.4.2 芯片的设置 263
9.4.3 芯片的引导模式 269
9.4.4 boot loader和C6000的ROM启动模式分析 270
9.4.5 二级bootloader的编写 271
9.4.6 Flash的烧写 278
9.5 本章小结 280
9.6 为进一步深入学习推荐的参考书目 280
9.7 习题 281