1实时数字信号处理导论 1
1.1实时DSP系统的基本要素 2
1.2模拟接口 2
1.2.1采样 3
1.2.2量化和编码 5
1.2.3平滑滤波器 7
1.2.4数据转换器 7
1.3 DSP硬件 8
1.3.1 DSP硬件选择 8
1.3.2 DSP处理器 11
1.3.3定点与浮点处理器 13
1.3.4实时约束 14
1.4 DSP系统设计 14
1.4.1算法开发 15
1.4.2 DSP处理器的选择 16
1.4.3软件开发 17
1.4.4高级软件开发工具 18
1.5 DSP开发工具介绍 19
1.5.1 C编译器 20
1.5.2汇编器 20
1.5.3链接器 20
1.5.4其他开发工具 22
1.6实验与程序示例 22
1.6.1使用CCS和DSK的实验 22
1.6.2使用CCS和DSK调试程序 25
1.6.3使用探点的文件I/O 28
1.6.4使用C文件系统功能的文件I/O 31
1.6.5使用分析器进行代码效率分析 33
1.6.6使用DSK的实时实验 34
1.6.7采样定理 37
1.6.8 ADC中的量化 39
参考文献 39
练习题 40
2 TMS320C55x数字信号处理器导论 43
2.1处理器家族简介 43
2.2 TMS320C55x体系结构 44
2.2.1体系结构概述 44
2.2.2总线 46
2.2.3片上存储器 46
2.2.4内存映射寄存器 48
2.2.5中断和中断向量 50
2.3 TMS320C55x外围电路 52
2.3.1外部存储器接口 52
2.3.2直接存储器存取 53
2.3.3增强主机接口 54
2.3.4多通道缓冲器串行口 55
2.3.5时钟产生器和定时器 57
2.3.6通用I/O口 57
2.4 TMS320C550x的寻址方式 58
2.4.1直接寻址方式 59
2.4.2间接寻址方式 60
2.4.3绝对寻址方式 61
2.4.4内存映射寄存器寻址方式 62
2.4.5寄存器位寻址方式 63
2.4.6循环寻址方式 63
2.5流水线和并行处理 64
2.5.1 TMS320C55x的流水线 64
2.5.2并行执行 65
2.6 TMS320C55x指令集 67
2.6.1算术指令 67
2.6.2逻辑和位操作指令 68
2.6.3移动指令 69
2.6.4程序流程控制指令 69
2.7 TMS320C55x汇编语言编程 73
2.7.1汇编伪指令 73
2.7.2汇编声明语法 75
2.8 TMS320C55x的C语言编程 77
2.8.1数据类型 77
2.8.2 C编译器生成的汇编代码 77
2.8.3编译器关键字和程序伪指令 80
2.9 C语言和汇编语言混合编程 81
2.10实验和程序示例 84
2.10.1 C与汇编代码接口 84
2.10.2汇编编程的地址模式 85
2.10.3锁相环和定时器 87
2.10.4 SDRAME的EMIF配置 93
2.10.5 Flash储存设备编程 95
2.10.6使用McBSP 96
2.10.7 AIC23配置 98
2.10.8直接内存访问 101
参考文献 104
练习题 104
3 DSP基础及应用要点 108
3.1数字信号和系统 108
3.1.1基本的数字信号 108
3.1.2数字系统的模块化框图表示 109
3.2系统概念 112
3.2.1线性时不变系统 112
3.2.2 z变换 115
3.2.3传输函数 116
3.2.4极点与零点 118
3.2.5频率响应 120
3.2.6离散傅里叶变换 122
3.3随机变量简介 124
3.3.1随机变量概述 124
3.3.2随机变量的计算 125
3.4定点化介绍与量化效应 127
3.4.1定点格式 127
3.4.2量化误差 129
3.4.3信号量化 130
3.4.4系数量化 131
3.4.5截断噪声 131
3.4.6定点化工具箱 132
3.5溢出及解决方法 134
3.5.1饱和算法 135
3.5.2溢出处理 135
3.5.3信号缩放 135
3.5.4预留位 136
3.6实验和程序示例 136
3.6.1正弦信号的量化 136
3.6.2语音信号量化 138
3.6.3系数量化 138
3.6.4溢出与饱和算法 141
3.6.5函数逼近 143
3.6.6使用DSK产生实时数字信号 151
参考文献 155
练习题 156
4 FIR滤波器的设计与实现 159
4.1 FIR滤波器的介绍 159
4.1.1滤波器的特性 159
4.1.2滤波器类型 160
4.1.3滤波器特性 162
4.1.4线性相位FIR滤波器 163
4.1.5 FIR滤波器实现 165
4.2 FIR滤波器设计 168
4.2.1傅里叶序列方法 168
4.2.2吉伯斯现象 169
4.2.3窗函数 171
4.2.4用MATLAB设计FIR滤波器 174
4.2.5用FDA工具设计FIR滤波器 176
4.3执行需要考虑的问题 182
4.3.1 FIR滤波器的量化效应 182
4.3.2执行MATLAB 183
4.3.3浮点数C的执行 184
4.3.4定点C的执行 185
4.4应用:内插和抽取滤波器 186
4.4.1内插 186
4.4.2抽取 188
4.4.3采样率变换 188
4.4.4 MATLAB应用 190
4.5实验和程序示例 191
4.5.1利用定点C的FIR滤波器的应用 191
4.5.2利用C55x汇编语言实现FIR滤波器 192
4.5.3优化对称FIR滤波器 194
4.5.4利用双MAC结构进行优化 195
4.5.5抽取的实现 197
4.5.6内插实现 198
4.5.7采样率变换 199
4.5.8用DSP/BIOS和DSK实现实时采样率变换 200
参考文献 209
练习题 210
5无限长单位冲激响应(IIR)滤波器的设计和实现 213
5.1引言 213
5.1.1模拟系统 213
5.1.2映射性质 215
5.1.3模拟滤波器的特性 215
5.1.4频率转换 217
5.2 IIR滤波器的设计 217
5.2.1双线性变换 218
5.2.2双线性变换设计数字滤波器 219
5.3 IIR滤波器的实现 220
5.3.1直接型 220
5.3.2级联型 221
5.3.3并联形式 222
5.3.4用MATLAB实现IIR滤波器 223
5.4用MATLAB设计IIR滤波器 224
5.4.1用MATLAB设计滤波器 224
5.4.2用MATLAB进行频率转换 226
5.4.3用FDAtool设计和实现滤波器 227
5.5实现考虑 230
5.5.1稳定性 230
5.5.2有限精度效应和解决办法 231
5.5.3 MATLAB实现 232
5.6实际应用 236
5.6.1循环振荡器 236
5.6.2递归正交振荡器 238
5.6.3参数均衡器 239
5.7实验和程序示例 240
5.7.1浮点直接Ⅰ型IIR滤波器 240
5.7.2定点直接Ⅰ型滤波器 241
5.7.3定点直接Ⅱ型级联IIR滤波器 242
5.7.4用DSP intrinsics实现 244
5.7.5用汇编语言实现 247
5.7.6用DSP/BIOS实时实验 249
5.7.7参数均衡器的实现 250
5.7.8用DSP/BIOS的实时双带均衡器 251
参考文献 252
练习题 253
6频谱分析和快速傅里叶变换 256
6.1傅里叶序列和转化 256
6.1.1傅里叶序列 256
6.1.2傅里叶变换 257
6.2离散傅里叶变换 258
6.2.1离散时间傅里叶变换 258
6.2.2离散傅里叶变换 259
6.2.3重要性质 261
6.3快速傅里叶变换 263
6.3.1时间抽取 263
6.3.2频率抽取 265
6.3.3快速傅里叶逆变换 266
6.4实现考虑 266
6.4.1计算问题 266
6.4.2有限精度效应 267
6.4.3 MATLAB实现 267
6.4.4用MATLAB实现定点FFT 268
6.5实际应用 270
6.5.1频谱分析 270
6.5.2频谱泄漏和精度 271
6.5.3功率谱密度 274
6.5.4快速卷积 276
6.6实验和程序实例 278
6.6.1 DFT的浮点C实现 278
6.6.2 DFT的C55x汇编实现 280
6.6.3 FFT的浮点C实现 282
6.6.4 FFT的C55x实现 284
6.6.5 FFT和IFFT的汇编实现 285
6.6.6快速卷积实现 289
6.6.7用DSP/BIOS实现的实时FFT 291
6.6.8实时快速卷积 291
参考文献 293
练习题 294
7自适应滤波 296
7.1随机过程简介 296
7.2自适应滤波器 298
7.2.1自适应滤波器简介 298
7.2.2代价函数 299
7.2.3最陡下降法 301
7.2.4 LMS算法 302
7.2.5改进的LMS算法 303
7.3性能分析 304
7.3.1稳定性约束条件 304
7.3.2收敛速度 305
7.3.3额外均方误差 305
7.3.4归一化LMS算法 306
7.4移植注意事项 306
7.4.1计算量问题 306
7.4.2有限字长效应 307
7.4.3 MATLAB实现 308
7.5应用 309
7.5.1自适应系统辨识 309
7.5.2自适应线性预测 310
7.5.3自适应噪声消除 312
7.5.4自适应陷波滤波器 313
7.5.5自适应信道均衡 314
7.6实验与程序实例 316
7.6.1浮点C实现 316
7.6.2泄露LMS算法的定点C实现 317
7.6.3归一化LMS算法的ETSI实现 320
7.6.4汇编语言实现延时LMS算法 321
7.6.5自适应系统辨识 325
7.6.6自适应预测和噪声消除 327
7.6.7自适应信道均衡器 329
7.6.8基于DSK的实时自适应谱线增强器 332
参考文献 333
练习题 333
8数字信号发生器 336
8.1正弦波发生器 336
8.1.1查找表方法 336
8.1.2线性调频脉冲信号 338
8.2噪声发生器 339
8.2.1线性同余序列生成器 339
8.2.2伪随机二进制序列发生器 341
8.3实际应用 342
8.3.1警报发生器 342
8.3.2高斯白噪声 343
8.3.3双音多频音频发生器 344
8.3.4舒适噪声语音通信系统 344
8.4实验和工程例子 345
8.4.1使用C5510 DSK的正弦波发生器 345
8.4.2使用C5510 DSK的白噪声发生器 346
8.4.3使用C5510 DSK哀号型警报发生器 346
8.4.4使用C5510 DSK的DTMF发生器 348
8.4.5使用MATLAB图形用户界面的DTMF发生器 349
参考文献 350
练习题 351
9双音多频检测 353
9.1引言 353
9.2 DTMF音频检测 354
9.2.1 DTMF解码指标 354
9.2.2 Goertzel算法 355
9.2.3其他DTMF检测方法 357
9.2.4实现考虑 359
9.3网络应用问题与解决方案 361
9.4实验与项目举例 362
9.4.1 Goertzel算法的定点C实现 362
9.4.2 Goertzel算法的C55x汇编语言实现 364
9.4.3利用C5510 DSK的DTMF检测 365
9.4.4应用全极点建模进行DTMF检测 368
参考文献 371
练习题 372
10自适应回声消除 373
10.1线路回声简介 373
10.2自适应回声消除器 374
10.2.1自适应回声消除的原理 374
10.2.2性能评价 376
10.3实际考虑 376
10.3.1信号预白化 376
10.3.2延迟检测 377
10.4双端检测影响与解决方法 379
10.5非线性处理器 380
10.5.1中心削波 380
10.5.2舒适噪声 381
10.6声学回声消除 381
10.6.1声学回声 382
10.6.2声学回声消除器 383
10.6.3子带实现 383
10.6.4无延迟结构 385
10.6.5实现考虑 386
10.6.6测试标准 386
10.7实验和程序实例 387
10.7.1 AEC的MATLAB实现 387
10.7.2浮点C声学回声消除 390
10.7.3 C55x Intrinsics上的声学回声消除器 393
10.7.4延迟估计实验 395
参考文献 396
练习题 397
11语音编码技术 398
11.1语音编码介绍 398
11.2码激励线性预测(CELP)声码器概述 399
11.2.1合成滤波器 400
11.2.2长时预测滤波器 403
11.2.3基于感知的最小过程 403
11.2.4激励信号 404
11.2.5代数CELP 405
11.3常用CODEC概述 405
11.3.1 G.723.1概述 406
11.3.2 G.729概述 409
11.3.3 GSM AMR概述 411
11.4因特网协议声音运用 412
11.4.1.VoIP概述 413
11.4.2实时传输协议和有效负荷类型 415
11.4.3举例:包装G.729 415
11.4.4用Ethereal轨迹分析RTP数据 417
11.4.5影响声音质量的因素 417
11.5实验和程序例子 418
11.5.1用浮点C程序计算LPC系数 418
11.5.2用C55x关联函数计算LPC系数 420
11.5.3共振峰感知加权滤波器的MATLAB执行 423
11.5.4用 C55x关联函数执行感知加权滤波器 425
参考文献 426
练习题 427
12语音增强技术 429
12.1噪声抑制技术简介 429
12.2谱减技术 430
12.2.1短时谱估计 430
12.2.2幅度相减 430
12.3语音断点检测 432
12.4实际应用情况 433
12.4.1谱平均 433
12.4.2半波校正 433
12.4.3剩余噪声消除 434
12.5回声消除和噪声抑制的结合 434
12.6声音增强与自动电平控制 435
12.6.1声音增强装置 436
12.6.2自动电平控制 436
12.7实验和程序举例 436
12.7.1语音端点检测 436
12.7.2 NR算法的MATLAB实现 438
12.7.3 NR的浮点C实现 441
12.7.4在C55x上VAD的汇编实现 442
12.7.5 AEC与NR的结合 443
参考文献 445
练习题 445
13音频信号处理 446
13.1引言 446
13.2音频编码的基本原理 446
13.2.1用于感知编码的人耳听觉掩蔽效应 448
13.2.2频域编码 450
13.2.3无损音频编码 452
13.3多声道音频编码 453
13.3.1 MP3 453
13.3.2杜比AC-3 455
13.3.3 MPEG-2 AAC 456
13.4连通性处理 457
13.5实验和程序例子 457
13.5.1 MDCT浮点的实现 457
13.5.2用C55x Intrinsics实现MDCT 459
13.5.3预回声效应实验 461
13.5.4浮点C语言实现MP3解码过程 463
参考文献 465
练习题 465
14信道编码技术 467
14.1引言 467
14.2分组码 468
14.2.1 Reed-Solomon编码 470
14.2.2 Reed-Solomon码的应用 473
14.2.3循环冗余码 474
14.3卷积码 474
14.3.1卷积码编码器 474
14.3.2 Viterbi解码器 475
14.3.3.Viterbi解码的应用 477
14.4实验和程序例子 479
14.4.1用MATLAB实现Reed-Solomen编码 479
14.4.2 Reed-Solomon编码仿真 480
14.4.3 RS(255,239)生成多项式的验证 481
14.4.4卷积码 482
14.4.5使用C程序实现卷积码 483
14.4.6实现CRC-32 485
参考文献 486
练习题 486
15数字图像处理导论 487
15.1数字图像和系统 487
15.1.1数字图像 487
15.1.2数字图像系统 488
15.2 RGB颜色空间和彩色滤波数组插值 489
15.3颜色空间 491
15.3.1 YCbCr和YUV颜色空间 491
15.3.2 CYMK颜色空间 492
15.3.3 YIQ颜色空间 492
15.3.4 HSV颜色空间 492
15.4 YCbCr子采样颜色空间 493
15.5色彩平衡和校正 494
15.5.1色彩平衡 494
15.5.2颜色调整 495
15.5.3伽玛校正 495
15.6图像直方图 496
15.7图像滤波 498
15.8用快速卷积进行图像滤波 501
15.9实际应用 503
15.9.1 JPEG标准 503
15.9.2二维离散余弦变换 503
15.10实验和程序实例 505
15.10.1 YCbCr到RGB转换 505
15.10.2用CCS连接DSK和仿真器 508
15.10.3白平衡 510
15.10.4伽玛校正和对比度调整 513
15.10.5直方图和直方图均衡化 515
15.10.6二维图像滤波 517
15.10.7 DCT和IDCT的实现 520
15.10.8用以DCT和IDCT的TMS320C55x图像处理加速器 524
15.10.9 TMS320C55x硬件加速器图像/视频处理库 526
参考文献 527
练习题 527
附录A一些有用的公式和定义 529
A.1三角恒等式 529
A.2几何级数 530
A.3复数变量 530
A.4功率单位 531
参考文献 532
附录B软件组织结构和实验清单 533