DSP实验指导书
数字信号处理EXPIV教学实验系统
110
实验五离散余弦变换算法实验
一、实验目的
学习DCT算法的实现方法。二、实验设备
计算机,CCS 版软件,实验箱,DSP仿真器。三、实验原理
离散余弦变换与离散傅立叶变换紧密相关的,属于正弦类正交变换,于其优良的去冗余性能及高效快速算法的可实现性,被广泛用于语音及图象的有损和无损压缩。在开始实验之前,应了解以下基本原理。
1.语音或图象的压缩手段;
2. DCT变换在数据压缩中的作用与应用。四、实验步骤
1.阅读本实验所提供的样例子程序; 2.运行样例程序,分析结果; 3.样例程序实验操作说明A.实验前准备
1)正确完成计算机、DSP仿真器和实验箱连接后,开关K9拨到右边,即仿真器选择连接右边的CPU:CPU2;系统上电; 2)“A/D转换单元”的拨码开关设置: JP3拨码开关:
码位 1 2 3 4 5 6 备注 ON:将“模拟信号源”单元的信号输入到AD7822 OFF: OFF: OFF: OFF: OFF: SW2拨码开关: SW2 1 ON 2 ON 3 ON 4 备注码位 ON AD7822的采样时钟为250KHZ,且中断给CPU2的中断2 数字信号处理EXPIV教学实验系统
111
S23拨码开关: 码位 1、2 B.实验
启动CCS ,Project/Open打开“Algorithm”目录中“exp05_cpu2”子目录下“”工程文件;双击“”及“Source”可查看各源程序;加载“”;在主程序中,在flag = 0处设置断点;单击“Run”运备注 OFF,不混频行程序,程序将运行至断点处停止;
数字信号处理EXPIV教学实验系统
112
用View / Graph / Time/Frequency打开两个图形观察窗口;采用双踪观察在启始地址分别为x和y,长度为128的单元中数值的变化,数值类型为32位浮点型,这两个数组分别存放的是经A/D转换的输入信号和对该信号进行DCT 变换的结果;
再打开一个图形观察窗口,设置观察变量为z;变量z 为输入信号的DCT变换及逆DCT变换的结果,长度128,32位浮点型,即输入信号的重构信号;
调整各图形观察窗口,观察正变换与逆变换结果;
单击“Animate”运行程序,调整各图形观察窗口,动态观察变换结果;改变输入信号的波形、频率、幅值,动态观察变换结果;
数字信号处理EXPIV教学实验系统
113
单击“Halt”暂停程序运行,关闭窗口,实验结束;
实验结果:在环境,同步观察输入信号及其DCT变换结果。五、思考题
1.压缩的实质是什么?
2.实际压缩处理时,应该有那些流程?六、实验报告要求
1.简述DCT的基本原理。 2.说明DCT系数是如何确定的? 1.以8*8矩阵描述输入、输出。七、DCT子程序变换的核函数
Ck,n2NN1n0gkcos(2n1)k2Nk,n0,1,,N1
式中系数:
1gk12k0k0程序说明:
数字信号处理EXPIV教学实验系统
114
void dct1c2 (double x, double y, int n):DCT正变换子程序; void idct1c2 (double y, double z, int n):
逆DCT变换子程序;两子程序中,各参数为:
数组x :输入信号经A/D转换后,转为浮点型后,生成x数组,长度128;
数组y :DCT正变换输出信号数组,也是逆DCT变换输入数组,浮点型,长度128;数组z :逆DCT变换输出信号数组,即重构信号,浮点型,长度128。八、程序流程图
初始化调用DCT变换子程序计算DCT变换系数输出变换结果调用DCT逆变换子程序计算DCT逆变换系数输出重构信号
数字信号处理EXPIV教学实验系统
115
实验六相关(Correlation)算法
一、实验目的
1.学习相关的概念;
2.学习相关算法的实现方法。二、实验设备
计算机,CCS 版软件,实验箱、DSP仿真器。
三、实验原理
1.概率论中相关的概念; 2.随机信号相关函数的估计。四、实验步骤
1.熟悉基本原理;阅读实验提供的程序; 2.运行CCS,记录相关系数; 3.填写实验报告。 4.实验程序
操作说明A.实验前准备
1)正确完成计算机、DSP仿真器和实验箱连接后,开关K9拨到右边,即仿真器选择连接右边的CPU:CPU2;系统上电; 2)“A/D转换单元”的拨码开关设置:拨码开关设置:JP3拨码开关:码位 1 2 3 4 5 6 备注 ON:将“模拟信号源”单元的信号输入到AD7822 OFF: OFF: OFF: OFF:OFF: SW2拨码开关: SW2 1 ON 2 ON 3 ON 4 备注码位ON AD7822的采样时钟为250KHZ,且中断给CPU2的中断2 数字信号处理EXPIV教学实验系统
116
S23拨码开关: 码位 1、2 B.实验
启动CCS ,Project/Open打开“Algorithm”目录中“exp06_cpu2”子目录下“”工程文件;双击“”及“Source”可查看各源程序;加载“”;在主程序中,在i++及flag = 0处分别设置断点;单击“Run”运行程序,程序将运行至第一个断点处停止;
备注 OFF,不混频
用View / Graph / Time/Frequency打开一个图形观察窗口;采用双踪观察变量x及y的波形,长度为128,数值类型为32位浮点型;此时,这两个信号程序产生;
数字信号处理EXPIV教学实验系统
117
再打开一个图形观察窗口,以观察变量x与y相关运算的结果;该观察窗口的参数设置为:变量为cor,长度为255,数据类型为32位浮点数;
调整图形观察窗口,观察两路输入信号相关运算的结果;
单击“Run”,程序运行至第二个断点处停止,此时,两路输入信号信号源单元产生,并完成自相关运算;
数字信号处理EXPIV教学实验系统
118
单击“Animate”运行程序,调整各图形观察窗口,动态观察自相关运算的结果;改变输入信号的波形、频率、幅值,动态观察结果;
程序中,mode可赋0或1,赋0时,完成相关函数无偏估计的计算;赋1时,完成
相关函数有偏估计的计算;x和y为参与相关运算的两路信号,当x = y时,完成自相关
数字信号处理EXPIV教学实验系统
119
函数的计算,而当x y时,完成互相关函数的计算。修改以上参数,进行“Rebuild All”,并重新加载程序,运行程序可以得到不同的实验结果。关闭工程文件,关闭各窗口,实验结束。五、思考题
用其他数学工具计算相关系数,并与实验结果比较。
六、相关算法时域表达式:
七、程序参数说明
x[Length]//y[Length]// cor[Lengthcor]//Length// Lengthcor // mode = 0 // mode = 1 // 八、程序流程图:
N1lRls1nls2nnl原始输入数据A 原始输入数据B 相关估计数值输入数据长度相关计算结果长度无偏估计有偏估计
数字信号处理EXPIV教学实验系统
120
开始k=0k=0k 数字信号处理EXPIV教学实验系统 121 实验九语音信号的FFT分析 一、实验目的 1.加深对DFT算法原理和基本性质的理解; 2.熟悉FFT算法原理和FFT子程序的应用; 3.学习用FFT对连续信号和时域信号进行谱分析的方法,了解可能出现的分析误 差及其原因,以便在实际中正确应用FFT。 二、实验设备 计算机,CCS 版软件,实验箱,DSP仿真器,音频线,音源。三、基本原理 1、离散傅立叶变换DFT的定义:将时域的采样变换成频域的周期性离散函数,频域的采样也可以变换成时域的周期性离散函数,这样的变换称为离散傅立叶变换,简称DFT。 2、FFT是DFT的一种快速算法,将DFT的N2步运算减少为log2N步,极大的提高了运算的速度。 3、旋转因子的变化规律。 4.蝶形运算规律。 5.基2FFT算法。四、实验步骤 1、复习DFT的定义、性质和用DFT作谱分析的有关内容; 2、复习FFT算法原理与编程思想,并对照DIT-FFT运算流程图和程序框图,了解本实验提供的FFT子程序; 3、阅读本实验所提供的样例子程序; 4、运行CCS软件,对样例程序进行跟踪,分析结果;记录必要的参数。 5、填写实验报告。 6.提供样例程序实验操作说明A.实验前准备: 1利用自备的音频信号源,或把计算机当成音源,从实验 箱的“语音单元”的音频接口“麦克输入”输入音频信号,进行AD采集。 2开关K9拨到左边,即仿真器选择连接左边的CPU:CPU1; 3拨码开关设置说明 “语音接口”模块小板的拨码开关设置: 数字信号处理EXPIV教学实验系统 122 SW1拨码开关: 状态 1 2 3 4 SW2拨码开关:状态 1 2 3 4 备注 ON OFF ON ON 备注 ON ON ON 空脚用音频对录线,连接实验箱语音单元的麦克输入与外部音频源; 拨码开关S6: 1、2 OFF B.实验 启动CCS ,用Project/Open打开“Algorithm”目录中“exp09_cpu1”子目录下的“”工程文件;双击“”及“Source”可查看源程序;加载“”;在主程序中,k++处设置断点;单击“Run”运行程序,程序将运行至断点处停止; 数字信号处理EXPIV教学实验系统 123 用View / Graph / Time/Frequency打开一个图形观察窗口;设置该观察图形窗口变量及参数;采用双踪观察在启 始地址分别为px和pz,长度为128的单元中数值的变化,数值类型为16位有符号整型变量,这两段存储单元中分别存放的是经A/D转换后的语音信号和对该信号进行FFT变换的结果; 数字信号处理EXPIV教学实验系统 124 单击“Animate”运行程序,或按F10运行;调整观察窗口并观察输入信号波形及其FFT变换结果;单击“Halt”暂停程序运行,关闭窗口,本实验结束。实验结果:在环境,同步观察输入语音信号波形及其FFT变换结果。二.思考题 1.对于不同的N,幅频特性会相同吗?为什么?2. FFT进行谱分析,可以应用的什么方面?三.实验报告要求 1.简述实验原理及目的; 2.结合实验中所给定典型序列幅频特性曲线,与理论结果比较,并分析说明误差 产生的原因以及用FFT作谱分析时有关参数的选择方法。 3.总结实验所得主要结论。四.程序参数说明void kfft(pr,pi,n,k,fr,fi,l,il):基2快速傅立叶变换子程序,n为变换点数,应满足2的整数次幂,k 为幂次; 数组x :输入信号数组,A/D转换数据存放于地址为px 数组中,转为浮点型后,生成x数组,长度128; 数组mo:FFT变换数组,长度128,浮点型,整型后,写入pz数组中。 数字信号处理EXPIV教学实验系统 125 五.子程序流程图: 初始化输入数组排序计算第一层中间值计算层数计算对应层步长计算计算各层中间结果计算层数=0?Y计算结果输出 N 数字信号处理EXPIV教学实验系统 126 实验十 DTMF信号的产生和检测 一、实验目的 1. 了解DTMF信号的基本原理和用途; 2. 学习DTMF 信号产生和检测算法。二、实验设备 计算机,CCS 版软件,DSP仿真器,实验箱。 三、实验原理1.概述 DTMF(Dual-Tone Multifrequency)通信技术中的一种信号传输方法,这里的tone代表一个固定频率的声音片断,而dual-tone则是两个不同的tone产生的复频信号。数字 式电话的12个键分别代表了12种不同的复频组合,借助于对频率组合的侦测,计算机可分辨出所按的是哪一个键,从而达到与电话另一端的使用者互动控制的目的。通过这种技术可以使计算机将控制命令从复杂的声音讯号中判别出来,从而使我们能够通过电话按键控制计算机的运作。DTMF 信号发生器将按键或数字信号转化成双音信号,DTMF信号检测器检测双音信号中的信息。下图是一般双音多频电话的双音频率情况: 图1 双音频电话键盘 2.DTMF信号的产生正弦信号算法和频率控制 设有一系统:其传输函数H(z)没有零点,只有一对处在单位圆上的共扼极点,则单位冲击响应为恒幅度振荡,即产生了正弦信号。 数字信号处理EXPIV教学实验系统 127 H(z)b01a1z1a2z2 式中:b0Asin0,a12cos0,a21; 经离散变换后得: y(n)2cos0y(n1)y(n2) 式中:y(1)0,y(2)Asin0,02f0fs; A为正弦波幅值,fs为采样频率,f0为正弦波频率。 图2 正弦波振荡器原理图 对于DTMF所要产生的频率和采样频率为:ROW频率:697、770、852、941Hz COLUMN频率: 1209、1336、1477、1633Hz 采样频率:fs = 8kHz DTMF信号时序控制根据AT&T技术规范: 数字号码最大传输速度为每秒10个,即一个号码占100ms时间片。在100ms时间片内双音多频信号持续不少于45ms且不多于55ms的时间。一个数字按键有两个作业:Tone Task和Quiet Task。工作流程 键中断将启动一个作业 执行Quiet Task: o 插入双音信号间的间隔 o 置Tone Task的计数大小o Unpack New Digit 执行Tone Task: o 按规定时间片输出双音信号 数字信号处理EXPIV教学实验系统 128 o 置Quiet Task的计数大 3.DTMF信号的检测 双音频率信息获取算法:Goertzel算法 Goertzel算法用来从输入信号中提取出所需要信号,运算速度比DFT算法快。对N点采样计算表达式为:式中: DTMF信号的判别方法: 信号强度大于THR-SIG 双音信号功率差:THR-TWIREV~THR-TWISTD 比邻近双音信号强度大THR-ROWREL,THR-COLREL 二次谐波强度小于THR-ROW2nd,THR-COL2nd 运算量与存储需求 表1 产生DTM信号所需的运算速度和内存 表2 检测DTM信号所需的运算速度和内存 数字信号处理EXPIV教学实验系统 129 四、实验步骤 1.熟悉DTMF的基本原理和规范; 2.阅读实验提供的程序; 3.运行样例程序,观察DTMF信号的产生和检测过程;4.写实验报告。 5.样例程序实验操作说明A.实验前准备 1)开关K9拨到左边,即仿真器选择连接左边的CPU:CPU1; 2)正确完成计算机、DSP仿真器和实验箱的连接后,系统上电; B.实验 启动CCS ,用Project/Open打开“Exp10_cpu1”目录 下的“”工程文件;双击工程文件及“Source”可查看各源程序;并加载“”;在程序最后“i = 0”处,设置断点;单击“Run”运行程序,至断点处停止; 分别用View / Graph / Time/Frequency打开三个图形观察窗口,以观察产生的行频、列频、双音频信号以及X(k)信号;设置第一个图形观察窗口,观察起始地址分别为xr和xc ,长度为102、32位浮点型的两组数据,分别为行频和列频的产生信号; 2 数字信号处理EXPIV教学实验系统 130 设置第二个图形观察窗口,观察起始地址为x ,长度102、32位浮点型的一组数据,为双音频产生信号; 设置第三个图形观察窗口,观察起始地址为z ,长度为8、32位浮点型的一组数据,为X(k)的值; 2 数字信号处理EXPIV教学实验系统 131 打开程序变量观察窗口,观察以下变量的值; “inkey”为输入键值,整型,范围0~15;“outkey”为运算后输出键值,字符型,与实验介绍的键盘各键值对应,“outkeycol”为输出键值的行位置,“outkeyrow”为列 位置。范围均为1~4; 单击“Animate”,观察各窗口图形、变量变化; 在程序中,可以修改输入键值数组in的值,该数组长度为16,“Rebuild All”后、“加载”及“运行”,可观察不同的运行结果; 关闭工程文件,关闭各窗口,实验完毕。五、实验说明 数字信号处理EXPIV教学实验系统 132 1、程序分两部分,前半部分为DTMF 产生,后半部分为DTMF 检测。 2、DTMF 产生中用数组in设定键值,数组长度为16,范围0~15,可人工改写; 3、数组xr为产生的行频信号,长度为102,32位浮点型;数组xc为产生的列频信号,长度为102,32位浮点型;数组x为产生的双音频信号,长度102点,32位浮点型; 4、数组z为DTMF检测中能量模板X(k),以完成按键的行位置及列位置检测; 6、变量outkeycol 及变量outkeyrow 分别为按键行位置及列位置的检测结果,均为整型变量;变量outkey为最终键值检测结果,键值与本实验中介绍的键盘键值对应,为字符型变量。 子程序流程图 DTMF信号产生子程序流程图: 2 DTMF信号检测子程序流程图: 数字信号处理EXPIV教学实验系统 133 数字信号处理EXPIV教学实验系统 110 实验五离散余弦变换算法实验 一、实验目的 学习DCT算法的实现方法。二、实验设备 计算机,CCS 版软件,实验箱,DSP仿真器。三、实验原理 离散余弦变换与离散傅立叶变换紧密相关的,属于正弦类正交变换,于其优良的去冗余性能及高效快速算法的可实现性,被广泛用于语音及图象的有损和无损压缩。在开始实验之前,应了解以下基本原理。 1.语音或图象的压缩手段; 2. DCT变换在数据压缩中的作用与应用。四、实验步骤 1.阅读本实验所提供的样例子程序; 2.运行样例程序,分析结果; 3.样例程序实验操作说明A.实验前准备 1)正确完成计算机、DSP仿真器和实验箱连接后,开关K9拨到右边,即仿真器选择连接右边的CPU:CPU2;系统上电; 2)“A/D转换单元”的拨码开关设置: JP3拨码开关:码位 1 2 3 4 5 6 备注 ON:将“模拟信号源”单元的信号输入到AD7822 OFF: OFF: OFF: OFF: OFF: SW2拨码开关: SW2 1 ON 2 ON 3 ON 4 备注码位 ON AD7822的采样时钟为250KHZ,且中断给CPU2的中断2 数字信号处理EXPIV教学实验系统 111 S23拨码开关: 码位 1、2 B.实验 启动CCS ,Project/Open打开“Algorithm”目录中“exp05_cpu2”子目录下“”工程文件;双击“”及“Source”可查看各源程序;加载“”;在主程序中,在flag = 0处设置断点;单击“Run”运备注 OFF,不混频行程序,程序将运行至断点处停止; 数字信号处理EXPIV教学实验系统 112 用View / Graph / Time/Frequency打开两个图形观察窗口;采用双踪观察在启始地址分别为x和y,长度为128的单元中数值的变化,数值类型为32位浮点型,这两个数组分别存放的是经A/D转换的输入信号和对该信号进行DCT 变换的结果; 再打开一个图形观察窗口,设置观察变量为z;变量z 为输入信号的DCT变换及逆DCT变换的结果,长度128,32位浮点型,即输入信号的重构信号; 调整各图形观察窗口,观察正变换与逆变换结果; 单击“Animate”运行程序,调整各图形观察窗口,动态观察变换结果;改变输入信号的波形、频率、幅值,动态观察变换结果; 数字信号处理EXPIV教学实验系统 113 单击“Halt”暂停程序运行,关闭窗口,实验结束; 实验结果:在环境,同步观察输入信号及其DCT变换结果。五、思考题 1.压缩的实质是什么? 2.实际压缩处理时,应该有那些流程?六、实验报告要求 1.简述DCT的基本原理。 2.说明DCT系数是如何确定的? 1.以8*8矩阵描述输入、输出。七、DCT子程序变换的核函数 Ck,n2NN1n0gkcos(2n1)k2Nk,n0,1,,N1 式中系数: 1gk12k0k0程序说明: 数字信号处理EXPIV教学实验系统 114 void dct1c2 (double x, double y, int n):DCT正变换子程序; void idct1c2 (double y, double z, int n):逆DCT变换子程序;两子程序中,各参数为: 数组x :输入信号经A/D转换后,转为浮点型后,生成x数组,长度128; 数组y :DCT正变换输出信号数组,也是逆DCT变换输入数组,浮点型,长度128;数组z :逆DCT变换输出信号数组,即重构信号,浮点型,长度128。八、程序流程图 初始化调用DCT变换子程序计算DCT变换系数输出变换结果调用DCT逆变换子程序计算DCT逆变换系数输出重构信号