基础篇 2
第1章 导言和内容结构 2
1.1 为什么需要本书 2
1.1.1 另外一些关于数字信号处理的书籍 2
1.1.2 演示范例和DSP硬件 3
1.1.3 本书的理念 3
1.2 实时DSP 3
1.3 如何使用本书 4
1.3.1 转换到实时 7
1.3.2 各章的内容 7
1.3.3 硬件和软件的安装 8
1.3.4 阅读代码注意事项 8
1.4 开始学习 9
第2章 采样与重构 10
2.1 理论 10
2.1.1 选择采样频率 10
2.1.2 输入/输出问题:采样或帧 10
2.1.3 Talk-Through概念精讲 11
2.2 winDSK6示例 11
2.2.1 winDSK6的启动 11
2.2.2 Talk-Thru应用 11
2.3 Talk-Through使用窗口 14
2.4 Talk-Through使用Matlab和Windows 15
2.4.1 只使用Matlab的Talk-Through 18
2.4.2 使用Matlab的流程详解 20
2.5 使用C语言的DSK实现 21
2.6 接下来的挑战 22
第3章 FIR数字滤波器 24
3.1 理论 24
3.1.1 传统符号 24
3.1.2 FIR滤波器和IIR滤波器比较 25
3.1.3 计算滤波器的输出 25
3.2 winDSK6示例 27
3.2.1 图形均衡器应用 28
3.2.2 陷波滤波器应用 29
3.2.3 音效应用 31
3.3 Matlab应用 32
3.3.1 内建方法 32
3.3.2 生成自己的滤波器算法 36
3.4 使用C语言的DSK实现 38
3.4.1 使用C语言的平滑FIR滤波:第1部分 38
3.4.2 使用C语言的平滑FIR滤波:第2部分 40
3.4.3 环形缓冲FIR滤波 42
3.5 接下来的挑战 44
第4章 IIR数字滤波器 46
4.1 理论 46
4.2 winDSK6示例:陷波器的应用 49
4.3 Matlab应用 51
4.3.1 数字滤波器的设计和分析 51
4.3.2 IIR滤波器描述 57
4.3.3 框图 59
4.3.4 内建的方法 63
4.3.5 创建自己的滤波器算法 65
4.4 使用C语言的DSK实现 66
4.4.1 平滑(倒L形)IIR滤波器 66
4.5 接下来的挑战 68
第5章 周期信号产生 69
5.1 理论 69
5.1.1 在DSP中的周期信号 69
5.1.2 信号产生 70
5.2 winDSK6范例 78
5.2.1 任意波形 78
5.2.2 双音多频 79
5.3 Matlab应用 81
5.3.1 直接数字合成器方法 81
5.3.2 查表方法 82
5.4 使用C语言的DSK实现 83
5.4.1 直接数字合成方法 83
5.4.2 查表方法 84
5.4.3 带有表格创建程序的查表方法 86
5.4.4 数字式谐振器方法 87
5.5 接下来的挑战 89
第6章 基于DSP的帧结构 90
6.1 理论 90
6.1.1 基于采样数字信号处理的缺点 90
6.1.2 什么是帧结构 91
6.2 winDSK6范例 93
6.3 Matlab应用 94
6.4 C语言在DSK上的应用 94
6.4.1 三重缓冲存储器 95
6.4.2 基于帧的DSP例程 96
6.4.3 直接存储器存取应用 101
6.5 基于帧处理的总结 110
6.6 接下来的挑战 111
第7章 使用帧的数字滤波器 112
7.1 理论 112
7.2 winDSK6范例 112
7.3 Matlab应用 112
7.4 使用C语言的DSK实现 112
7.4.1 理解FIR对帧的处理 113
7.4.2 怎样避免“边缘”问题 114
7.4.3 该C语言程序代码的解释 114
7.5 接下来的挑战 117
第8章 快速傅里叶变换 118
8.1 理论 118
8.1.1 快速傅里叶变换定义 118
8.1.2 旋转因子 118
8.1.3 FFT处理 119
8.1.4 位码倒置 120
8.1.5 使用FFT滤波 122
8.1.6 避免循环卷积 123
8.1.7 实时快速卷积 125
8.2 winDSK6范例 128
8.3 Matlab应用 128
8.4 使用C语言的DSK实现 128
8.5 接下来的挑战 131
第9章 谱分析和加窗 133
9.1 基础理论 133
9.1.1 信号的功率谱 133
9.1.2 对加窗的需求 135
9.1.3 窗函数特征 137
9.2 winDSK6范例 140
9.3 Matlab应用 142
9.4 基于C语言的DSK应用 143
9.5 结论 144
9.6 接下来的挑战 144
工程篇 146
第10章 工程1:吉他的特殊效果 146
10.1 项目介绍 146
10.2 理论 146
10.2.1 背景 146
10.2.2 这些效果如何工作 147
10.3 winDSK6范例 159
10.4 Matlab实现 159
10.4.1 FIR梳状滤波器 159
10.4.2 IIR梳状滤波器 161
10.4.3 陷波滤波器 162
10.d.4 镶边 163
10.4.5 颤音 165
10.5 DSK的C语言实现 165
10.5.1 实时梳状滤波器 166
10.5.2 其他实时特效 170
10.6 接下来的挑战 171
第11 章工程2:图形化均衡器 172
11.1 理论 172
11.2 winDSK6范例 173
11.2.1 图形均衡器应用 174
11.2.2 图形均衡器的效果 174
11.3 Matlab的实现方法 175
11.4 DSK的C语言实现 178
11.4.1 设定滤波器带宽增益 178
11.4.2 GEL文件的滑轮控制 180
11.5 接下来的挑战 181
第12章 工程3:峰值音量表 183
12.1 理论 183
12.2 winDSK6描述:commDSK 183
12.3 Matlab实现 185
12.4 DSK的C语言实现 185
12.4.1 PPM编码的例子 185
12.4.2 DSK LED控制 187
12.4.3 另一个PPM的代码版本 187
12.5 接下来的挑战 189
第13章 工程4:AM发射机 190
13.1 理论 190
13.2 winDSK6描述 192
13.3 Matlab实现 193
13.4 使用C语言的DSK实现 195
13.5 接下来的挑战 197
第14章 工程5:AM接收机 198
14.1 理论 198
14.1.1 包络检波器 199
14.1.2 基于Hilbert的AM接收机 204
14.2 winDSK6描述 209
14.3 Maflab实现 209
14.4 DSK的C语言实现 211
14.5 接下来的挑战 212
第15章 工程6:锁相环 214
15.1 理论 214
15.2 winDSK6描述 215
15.3 Matlab实现 215
15.3.1 PLL仿真 215
15.3.2 Matlab实现的一些更新 221
15.4 使用C语言的DSK实现 224
15.4.1 PLL的组成部分 224
15.4.2 系统测试 226
15.5 接下来的挑战 227
第16章 工程7:数字通信发射机 230
16.1 理论 230
16.1.1 随机数和符号发生器 230
16.1.2 使用双极矩形脉冲比特位BPSK 232
16.1.3 使用脉冲调制的升余弦形态的比特位BPSK 232
16.2 winDSK6说明 233
16.2.1 commDSK:未滤波的BPSK 234
16.2.2 commDSK:升余弦滤波的BPSK 236
16.3 Matlab实现 238
16.3.1 矩形BPSK信号发生器 238
16.3.2 脉冲调制的升余弦BPSK信号发生器 240
16.4 C语言实现DSK 243
16.4.1 一个矩形脉冲型BPSK发射机 243
16.4.2 一个升余弦脉冲型BPSK发射机 245
16.4.3 实时代码总结 247
16.5 接下来的挑战 247
第17章 工程8:数字通信接收机 248
17.1 理论 248
17.1.1 匹配滤波器的输出 250
17.1.2 眼图 251
17.1.3 最大似然同步恢复 252
17.2 winDSK6说明 254
17.3 Matlab实现 254
17.4 使用C语言的DSK实现 258
17.4.1 数字接收机元件 258
17.4.2 系统测试 263
17.5 接下来的挑战 265
附录 268
附录A 代码设计套件:简要指南 268
A.1 介绍 268
A.2 启动代码设计套件 268
A.3 必要的文件 272
A.4 创建一个新的工程 273
A.5 打开存在的工程 275
A.6 添加文件到一个工程中 276
A.7 工程选项 280
A.8 构建工程 281
A.9 加载程序到DSK板 282
A.10 在DSK板上运行程序 284
A.11 开始了解CCS 286
A.12 CCS工程的典型文件 286
附录B DSP/BIOS 288
B.1 介绍 288
B.1.1 DSP/BIOS主要特征 288
B.1.2 DSP/BIOS线程 288
B.2 使用DSP/BIOS调度程序 289
B.2.1 添加一个周期函数PRD 290
B.2.2 添加一个HWl函数 291
B.2.3 添加一个SWl函数 292
B.2.4 添加一个TSK函数 293
B.2.5 实时分析工具 293
B.3 在6711 DSK板上的一个DSP/BIOS Talk-Through应用程序 294
B.3.1 主函数main.c 295
B.3.2 hwi.c 295
B.3.3 DSP/BIOS的硬件配置 296
B.3.4 DSP/BIOS串口配置 296
B.3.5 源代码 296
B.4 对立体声编解码器来说需要做的更改 297
B.4.1 主函数main.c 298
B.4.2 hwi.c 298
B.4.3 DSP/BIOS HWI配置 299
B.4.4 DSP/BIOS串口配置 299
B.5 一个DSP/BIOS的Talk-Through应用基于6713 DSK板 299
B.5.1 main.c 300
B.5.2 hwi.c 301
B.5.3 DSP/BIOS HWI配置 301
B.5.4 DSP/BIOS串口配置 302
B.5.5 源代码 303
附录C 数值表示 305
C.1 字节顺序 305
C.2 整型表示 306
C.3 整数除法和取整 307
C.4 浮点表示法 308
C.5 定点表示法 310
C.6 数值表示方法总结 312
附录D TMS320C6x结构 313
D.1 计算机结构基础 313
D.1.1 指令集架构 314
D.1.2 寄存器结构 314
D.1.3 内存结构 314
D.1.4 取指-执行模式 316
D.1.5 流水线操作 316
D.1.6 单线程与多线程 318
D.1.7 调度 318
D.2 TMS320C671x结构 319
D.2.1 存储器系统 321
D.2.2 流水线和程序调度 322
D.2.3 外设 322
D.2.4 主机接口 323
附录E DSK的相关工具 324
E.1 介绍 324
E.2 Windows控制应用程序 324
E.2.1 基本的Windows控制应用程序 325
E.2.2 产生一个示波器应用程序 326
E.2.3 创建一个频谱分析应用程序 331
E.3 Matlab输出 333
E.3.1 输出直接Ⅱ型 333
E.3.2 输出2阶环节实现 334
E.4 Matlab实时接口 335
附录F 编程风险和陷阱 336
F.1 Debug对Release Builds 336
F.2 易变性关键词 336
F.3 函数原型和返回类型 337
F.4 算术问题 338
F.5 控制变量在存储器中的位置 339
F.6 实时调度故障 340
附录G 文字符号说明 342
参考文献 347