1、卷积算法的实现DSP实习报告摘 要.3绪 论.3课程设计方案及原理.3课程设计步骤及过程.7总 结.14参考文献.14基于DSP的卷积算法的实现摘要:卷积和(简称卷积)是信号处理中常用的算法之一。数字卷积运算通常采用两种方法:线性卷积和圆卷积。为了能使卷积运算在C54x系列DSP上的实现方法,首先要对数字卷积的基本概念作深入了解。使大家从根本上掌握卷积的实现方法,我们以模拟信号的卷积和数字信号的卷积为主,以及他们在C54x系列DSP上的实现方法。绪论:在通信和信号处理中,常用的运算,如卷积,自相关,滤波和快速傅里叶交换等。都具有较高的密度性和复杂性,而这些运算中所用到的最基本的是乘法-累加运算
2、。C54x的硬件及软件设计使其具有快速的进行乘法-累加运算功能,并具有丰富的软件资源为这些算法的实施提供有力的条件。因此,这种芯片在通信及信号处理等领域得到广泛的应用。本节主要介绍卷积算法在DSP原理中的应用。课程设计方案及原理一、实验目的1掌握用窗函数法设计卷积算法的原理和方法;2熟悉卷积算法特性;3了解各种窗函数对卷积算法的影响。二、实验设备计算机,Code Composer Studio 2.0 for C5000系统。三、实验原理1卷积的基本原理和公式 卷集和:对离散系统“卷积和”也是求线性时不变系统输出响应(零状态响应)的主要方法。 卷积和的运算在图形表示上可分为四步: Y(n)=
3、X(m)h(nm)=X(n)*h(n) m= 1)翻褶 先在哑变量坐标M上作出x(m)和h(m),将m=0的垂直轴为轴翻褶成h(-m)。 2)移位 将h(-m)移位n,即得h(n-m)。当n为正整数时,右移n位。当n为负整数时,左移n位。 3)相乘 再将h(n-m)和x(m)的相同m值的对应点值相乘。 4)相加 把以上所有对应点的乘积叠加起来,即得y(n)值。依上法,取n=,-2,-1,0,1,2,3,各值,即可得全部y(n)值。 2.程序流程图3程序的自编函数及其功能 (1)processing1(int *input2, int *output2) 调用形式:processing1(int
4、 *input2, int *output2) 参数解释:intput2、output2为两个整型指针数组。 返回值解释:返回了一个“TREN”,让主函数的while循环保持连续。 功能说明:对输入的input2 buffer波形进行截取m点,再以零点的Y轴为对称轴进行翻褶,把生成的波形上的各点的值存入以OUTPUT2指针开始的一段地址空间中。 (2)processing2(int *output2, int *output3) 调用形式:processing2(int *output2, int *output3) 参数解释:output2、output3为两个整型指针数组。 返回值解释:返
5、回了一个“TREN”,让主函数的while循环保持连续。 功能说明:对输出的output2 buffer波形进行作n点移位,然后把生成的波形上的各点 的值存入以OUTPUT3指针开始的一段地址空间中。 (3)processing3(int *input1,int *output2,int *output4) 调用形式:processing3(int *input1,int *output2,int *output4) 参数解释:output2、output4、input1为三个整型指针数组。 返回值解释:返回了一个“TREN”,让主函数的while循环保持连续。 功能说明:对输入的input2
6、 buffer波形和输入的input1 buffer作卷积和运算,然后把 生成的波形上的各点的值存入以OUTPUT4指针开始的一段地址空间中。 (4)processing4(int *input2,int *output1) 调用形式:processing4(int *input2,int *output1) 参数解释:output1、input2为两个整型指针数组。 返回值解释:返回了一个“TREN”,让主函数的while循环保持连续。 功能说明:对输入的input2 buffer波形截取m点,然后把生成的波形上的各点的值存 入以OUTPUT1指针开始的一段地址空间中。源程序如下:#incl
7、ude #include volume.h/* Global declarations */int in1_bufferBUFSIZE; /BUFSIZE=100int in2_bufferBUFSIZE; /*处理数据缓冲器*/int out1_bufferBUFSIZE;int out2_bufferBUFSIZE;int out3_bufferBUFSIZE;int out4_bufferBUFSIZE*2;int size = BUFSIZE;int ain = MINGAIN;/ain=1int zhy=0;int sk=64; /*sk代表所开的bufsize的大小.输入文件sin
8、e.dat为32点,sine11.dat, sin22.dat,sin33.dat,sin44.dat为64点的输入波形.*/* Functions */static int step1(int *output1, int *output2);static int step2(int *output2, int *output3); static int step3(int *input1,int *output2,int *output4);static int step4(int *input2, int *output1);static void dataIO1(void);static
9、 void dataIO2(void);/*main void main() int *input1 = &in1_buffer0; int *input2 = &in2_buffer0; int *output1 = &out1_buffer0; int *output2 = &out2_buffer0; int *output3 = &out3_buffer0; int *output4 = &out4_buffer0; puts(volume example startedn); /* loop forever */ while(TRUE) /* 读输入数据使用一个probe-point
10、使与一个连接主机文件。 写输出数据一个图形连通过一个probe-point。 dataIO1(); / break point dataIO2(); / break point step4(input2,output1); step1(output1, output2); step2(output2, output3); step3(input1,output2,output4) ;课程设计步骤及过程 1实验准备 (1)连接设备 关闭计算机和实验箱电源。 如使用PP型仿真器则用附带的并口连线连接计算机并口和仿真器相应接口。 检查ICETEK-VC5416-A板上DIP开关MP/MC的位置,应设
11、置在“OFF”位置(靠近 复位按钮),即设置DSP工作在MP方式。 关闭实验箱上三个开关。 (2)开启设备 打开计算机电源。 打开实验箱电源开关, 如使用USB型仿真器用附带的USB电缆连接计算机和仿真器相应接口,注意仿真器上 两个指示灯均亮。 (3)设置Code Composer Studio为Simulator方式: 参见“Code Composer Studio入门实验”之四.2。 (4)启动Code Composer Studio 2.02打开工程,浏览程序,工程目录为C:ICETEK-VC5416-EDULabLab20-Convolve3编译并下载程序 4设置输入数据文件 请在c程
12、序中的如下两行上设置probe point:dataIO1();1 dataIO2(); 设置方法是把光标指示到这一行上,按鼠标右键,从显示的菜单上分别选择probe point。 在c程序的“dataIO1();”行上设置break point。5打开观察窗口-选择菜单“View”、“Graph”、“Time/Frequency”进行如下设置: -选择菜单“View”、“Graph”、“Time/Frequency”进行如下设置: -在弹出的三个图形窗口中单击鼠标右键,选择“Clear Display”。6. 设置波形输入文件 -选择“File”菜单中的“File I/O”,打开“File
13、I/O”窗口;单击“Add File”按钮,在“FileInput”窗口中选择C:ICETEK-VC5416-EDULabLab20-Convolve目录下的sin.dat文件,单击“打开”按钮;在“Address”项中输入inp1_buffer,在“Length”项中输入32,在“Warp Around”项前加上选择标记,单击“Add Probe Point”按钮; -在“Break/Probe/Profile Points”窗口中单击“Probe Point”列表中的“Convolve.c line52 NoConnection”,再单击“Connect”项尾部的展开按钮,在显示的展开式列
14、表中选择列表末尾的“FILE IN:C:.SIN.DAT”,单击“Replace”按钮,单击“确定”按钮。 -在“File I/O”窗口中单击“确定”,完成设置。 -选择“File”菜单中的“File I/O”,打开“File I/O”窗口;单击“Add File”按钮,在“FileInput”窗口中选择C:ICETEK-VC5416-EDULabLab20-Convolve目录下的sin.dat文件,单击“打开”按钮;在“Address”项中输入inp2_buffer,在“Length”项中输入32,在“Warp Around”项前加上选择标记,单击“Add Probe Point”按钮;
15、-在“Break/Probe/Profile Points”窗口中单击“Probe Point”列表中的“Convolve.c line53 NoConnection”,再单击“Connect”项尾部的展开按钮,在显示的展开式列表中选择列表末尾的“FILE IN:C:.SIN.DAT”,单击“Replace”按钮,单击“确定”按钮。 -在“File I/O”窗口中单击“确定”,完成设置。7运行程序,观察结果 -按F5键运行程序,待程序停留在软件断点;观察刚才打开的三个图形窗口,其中显示的是输入和输出的时域波形; -观察频域波形:在各图形窗口中单击鼠标右键,选择“Properties”,在“Gr
16、aph Property Dialog”中的第1项“Display Type”项中选择“FFT Magnitude”,单击“OK”完成;这 时图形窗口中显示波形的频域图。(也可再打开显示频域图的窗口) -验算结果:在各频域窗口中的波形上单击鼠标左键,将光标停到统一的位置(通过观察窗口状态栏中的第1个浮点数表示其坐标值),读取状态栏中的第2个浮点数,为卷积计算的输入和输出结果,请验算:OutputInput1*Input2。 8将输入波形文件改成其他波形:选择“File”、“File I/O”,将2个文件删除,将第1个文件换成SIN11.DAT,讲第2个文件换成SIN22.DAT;输入“Leng
17、th”改为64,其他不变。再按F5运行,停止后观察波形。9将第2个输入波形改成SIN33.DAT,观察卷积运算后的波形。 10将第2个输入波形改成SIN44.DAT,观察卷积运算后的波形。.其波形如图AT,观察卷积运算后的波形。*图表分析输入图形频域图形采用通过频域采样取值比较,卷积后的结果与标准值只有很的误。所以说卷积实验结果正确,卷积程序正确无误。总 结:在本次DSP课程设计中,从查阅资料,到编写程序再到软件仿真,在这个过程中充分的利用了所学的知识,并在老师的指导下,按时按质完成了本次课程设计。通过本次课程设计充分的锻炼了自己的动手能力,并把课堂上所学的知识运用到了实际中,达到了预期的效果
18、,也为以后工作打下了一个好的前提。参考文献:1、DSP技术及应用.北京大学出版社. 董胜 刘柏生编著2、DSP实用技术. 西安电子科技大学出版社. 苏涛.卢光跃等编著3、数字信号处理. 西安电子科技大学出版社. 高西全.丁玉美编著4、TMS320C55X DSP原理及应用汪春梅 孙洪波 编著5、TMS320C55x DSP Reference Set, Volume 1: CPU TI Coperation6、TMS320C55x Code Composer Studio Tutorial7、TMS320C55x DSP Reference Set, Volume 3: Algebraic Instruction Set8、TMS320C55x Optimizing C Compiler Users Guide
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1