医学数字信号处理实验指导书.docx
《医学数字信号处理实验指导书.docx》由会员分享,可在线阅读,更多相关《医学数字信号处理实验指导书.docx(28页珍藏版)》请在冰豆网上搜索。
医学数字信号处理实验指导书
《医学数字信号处理》
实验指导书
学生实验须知
一实验要求
1认真进行实验预习和准备,应教师要求于实验前完成实验准备报告;
2按照安排的时间、地点和分组签到和参加实验。
因故调换应提交调换申请并经教师批准;
3在指定实验台(位置)进行实验,不得随意调换,不得动用非实验设备;
4实验时,主动参与,认真细致,互助合作,注意安全。
有问题主动向教师请教。
5实验结束,整理好实验设备,报告指导教师检查实验结果,经认可后方可离开。
6损坏设备,应予以赔偿。
二实验报告基本要求
1在院统一印制的实验报告用纸上书写报告;
2书写整洁,符号、表格和曲线规范;
3实验记录数据真实客观,实验结果分析认真正确;
4按时呈交,实验报告作为教学档案由院留存。
三实验成绩评定
1每项实验的成绩综合学生出勤、实验过程(参与程度,实验结果,设备安全和人身安全)情况和实验报告质量(内容和规范性)给出。
不参加实验或参加实验不提交报告者,该项实验成绩为0分。
2实验成绩计入课程平时成绩表;
3不参加实验及不提交报告达三分之一者,将被取消该课程考核资格。
目录
实验一卷积(Convolve)算法实验....................4
实验二FFT分析实验..............................9
实验三有限冲击响应滤波器(FIR)算法实验............8
实验四无限冲击响应滤波器(IIR)算法实验.............12
预习要求:
对指导书中所附程序实验前要先预习、分析,达到基本理解,实验中再进一步认识、全部理解。
实验一卷积(Convolve)算法实验
一、实验目的
1.掌握卷积算法的原理;
2.掌握在CCS环境下,TMS320程序编写、编译和调试程序的方法。
二、实验设备
计算机、CCS2.0版软件、DSP仿真器、实验箱
三、实验原理及步骤
A.实验前准备
1)正确完成计算机、DSP仿真器和实验箱的连接后,系统上电;
2)设置模数转换单元的拨动开关,1、5置“ON”,其它置“OFF”;
B.实验
打开PC机界面下的CCS2.软件,用Project/Open打开C:
\ti\mypjts\DSP54X-1目录下的“ExpConv.pjt”工程文件;
双击“expConv.pjt”及“Source”可查看各源程序;并编译加载;在主程序中的两个K++处,设置断点;单击“Run”运行程序,程序运行到第一个断点处停止。
用View/Graph/Time/Frequency打开图形观察窗口;设置观察窗口变量及参数;采用双踪观察两路输入变量Input及Impulse的波形,波形长度为128,数组类型为32位浮点型;
再打开一个图形窗口,以观察卷积结果波形;该观察窗口的参数设置为:
变量为Output,长度为256,数据类型为32位浮点数;
调整观察窗口,观察两路输入波形和卷积结果波形;这两路输入波形是由程序产生,并对两个信号进行卷积;
单击“Run”,程序运行至第二个断点处停止,调整图形观察窗口,该部分实验用实验箱的信号源产生的信号作为卷积的两个输入信号,观察卷积结果;
单击“Animate”运行程序,或按F10运行程序;调整观察窗口,并观察卷积结果;改变输入信号的波形、频率、幅值,观察卷积卷结果。
四、实验报告要求
1.主要实验步骤。
2.描绘出输入、输出数组的曲线。
3.简述卷积理论。
五、Convolve子程序
时域表达式:
程序参数说明:
VoidConvolveok(Input,Impulse,Output,Length)
ExternvoidREADAD7822(void)
两序列卷积子程序:
Input:
原始输入数据序列,浮点型,长度128;
Impulse:
冲击响应序列,浮点型,长度128;
Output:
卷积输出结果序列,浮点型,长度256;
Length:
参与卷积运算的两输入序列长度;
子程序流程图:
externvoidInitC5402(void);
externvoidREADAD7822(void);
#include"stdlib.h"
#include"stdio.h"
#include"typedef.h"
#include"Convolve.h"
#include"math.h"
#defineLength128
#defineLength32*Length
voidmain()
{
inti,k=0;
doubleInput[Length];
doubleImpulse[Length];
doubleOutput[Length3];
intxm;
int*px=(int*)0x3000;
InitC5402();
//产生随机输入数据以及冲击响应
Input[0]=200;
Impulse[0]=100;
for(i=1;i{if(i{Input[i]=200;}else{Input[i]=0;}}for(i=1;i{if(i{Impulse[i]=100;}else{Impulse[i]=0;}}Convolveok(Input,Impulse,Output,Length);k++;for(;;){READAD7822();px=(int*)0x3000;for(i=0;i{xm=*px;Input[i]=xm;Impulse[i]=xm;px++;}Convolveok(Input,Impulse,Output,Length);k++;}}/*********************************************************************EndofFile––ExpConv.c*******************************************************************/#include"Convolve.h"voidConvolveok(double*Input,//原始输入数据double*Impulse,//冲击响应double*Output,//卷积输出结果Word16length//卷积序列长度){inti,k,p;doubler;p=0;for(k=0;k<=length-1;k++){Output[k]=0;r=0;for(i=0;i<=p;i++){r=Input[k-i]*Impulse[i];Output[k]=Output[k]+r;}p=p+1;if(p>length-1)p=length-1;elsep=p;}p=length-2;for(k=length;k<=length+length-1;k++){Output[k]=0;r=0;for(i=0;i<=p;i++){r=Input[length-1-i]*Impulse[length-1-p+i];Output[k]=Output[k]+r;}p=p-1;}return;}实验二FFT分析实验一、实验目的1.加深对DFT算法原理和基本性质的理解;2.熟悉FFT算法原理和FFT子程序的应用;3.学习用FFT对连续信号和时域信号进行谱分析的方法,了解可能出现的分析误差及其原因,以便在实际中正确应用FFT。二、实验设备计算机、CCS2.0版软件、实验箱、DSP仿真器三、基本原理1.DFT的定义:将时域的采样变换成频域的周期性离散函数,频域的采样也可以变换成时域的周期性离散函数,这样的变换称为离散傅立叶变换,简称DFT。2.FFT是DFT的一种快速算法,将DFT的N2步减少为(N/2)log2N步,极大地提高了运算的速度。四、实验步骤A.实验前准备1)正确完成计算机、DSP仿真器和实验箱的连接后,系统上电;2)设置模数转换单元的拨动开关,1、5、6置“ON”,其它置“OFF”;B.实验打开PC机界面下的CCS2.软件,Project/Open打开C:\ti\mypjts\DSP54X-2目录下的“ExpFFT.pjt”工程文件;双击“ExpFFT.pjt”及“Source”可查看各源程序;并编译加载;在主程序”k++”处设置断点;单击“Run”运行程序,程序将运行到断点处停止;用View/Graph/Time/Frequency打开一个图形观察窗口;设置该观察图形及参数;采用双踪观察启始地址分别为0x3000H和0x3080h,长度为128单元中数模变化,数值类型为16位有符号整型变量,这两段存储单元中分别存放的是经过AD782转换的混叠信号(信号源单元产生)和对该信号进行FFT变换的结果;单击“Animate”运行程序,或按F10运行;调整观察窗口并观察输入信号波形及其FFT变换结果;调节信号源单元中两路信号的波形选择调节、频率调节、幅值调节,观察混叠信号以及其FFT变换结果如何变化;单击“Halt”暂停程序运行,关闭窗口,本实验结束。五、思考题1.对于不同的N,幅频特性会相同吗?为什么?六、实验报告要求1.简述FFT理论。2.主要实验步骤。3.描绘出输入、输出数组的曲线。4.回答思考题。程序参数说明Externvoidinitial(void);ExternvoidREADAD7822(void);Voidkfft(pr,pi,n,k,fr,fi,l,il);基2快速傅立叶变换子程序,n为变换点数,应满足2的整数次幂,k为幂次(正整数);数组x:输入信号数组,A/D转换数据存放于地址为3000H~307FH存储器中,转为浮点型后,生成x数组,长度128;数组mo:FFT变换数组,长度28,浮点型,整型后,写入3080h~30FFH存储器中。实验三有限冲击响应滤波器(FIR)算法实验一、实验目的1.掌握用窗函数法设计FIR数字滤波器的原理和方法;2.熟悉线性相位FIR数字滤波器特性;3.了解各种窗函数对滤波特性的影响。二、实验设备计算机、CCS2.0版软件、实验箱、DSP仿真器三、实验原理1.有限冲击响应数字滤波器的基础理论;2.模拟滤波器原理(巴特沃斯滤波器、切比雪夫滤波器、贝塞尔滤波器);3.数字滤波器系数的确定方法。四、实验步骤A.实验前准备1)正确完成计算机、DSP仿真器和实验箱的连接后,系统上电;2)设置模数转换单元的拨动开关,1、5置“ON”,其它置“OFF”;3)用示波器分别观测信号源单元的S1和S2输出的模拟信号,分别调节信号波形选择、信号频率、信号输出幅值等旋钮,直到满意为止;建议:采用两路正弦波信号的混叠信号作为输入信号;S1输出:低频正弦波信号:峰峰值11V,频率<4KHz;S2输出:高频正弦波信号:峰峰值5V,频率>40KHz;4)设置模数转换单元的拨动开关,1、5、6置“ON”,其它置“OFF”,即采样频率选择181KHz,两路信号混叠输入,可在“A/DIN”点用示波器观察混叠信号。B.实验打开PC机界面下的CCS2.软件,用Project/Open打开C:\ti\mypjts\DSP54X-3目录下的“ExpFIR.pjt”工程文件;双击“ExpFIR.pjt”及“Source”可查看各源程序;并编译加载;在主程序中,K++处,设置断点;单击“Run”运行程序,程序将运行至断点处停止。用View/Graph/Time/Frequency打开一个图形观察窗口;设置观察图形窗口变量及参数为:采用双踪观察在启动地址分别为0x3000H和0x3100H,长度为256的单元中数值的变化,数值类型为16位有符号整型变量,这两段存储单元中分别存放的是经A/D转换后的输入混叠信号(输入信号)和对该信号进行FIR滤波的结果。单击“Animate”运行程序,或按F10运行程序;调整观察窗口并观察滤波结果,单击“Halt”暂停程序运行,激活“ExpFIR.c”的编辑窗口;实验程序说明:该程序为51阶FIR低通滤波器算法程序,采用矩形窗函数实现,数组和xmid长度均为51,fs为采样频率,fstop为滤波器截止频率,可以修改以上参数来变滤波器性能。重新“RebuildAll”后,重新加载,单击“Animate”,可得到不同的实验结果。五、思考题1.如果给定通带截止频率和阻带截止频率以及阻带最小衰减,如何用窗函数法设计线性相位低通滤波器?写出设计步骤。2.定性说明本实验中,3dB截止频率的理论值在什么位置?是否等于理想低通的截止频率?六、实验报告要求1.简述FIR理论。2.主要实验步骤。3.描绘出输入、输出数组的曲线。4.回答思考题。七、FIR程序参数说明系统函数对应常系数线性差分方程:程序参数说明:ExternvoidInitC5402(void)ExternvoidREADAD7822(void)voidfirdes(intm,doublenpass);输入信号:输入信号经A/D转换后,写入地址为3000H~30FFH存储器,16位整型;输出信号:FIR低通滤波器输出,写入地址为3100H~31FFH存储,16位整型。八、程序流程图externvoidInitC5402(void);externvoidREADAD7822(void);/******************************************MainFunctionProgram****************************************/#include"stdio.h"#include"math.h"#definepi3.1415927doublenpass,h[51],x,y,xmid[51];intm=50;intn=256;voidfirdes(intm,doublenpass);main(){intxm,ym;int*px=(int*)0x3000;int*py=(int*)0x3100;doublefs,fstop,r,rm;inti,j,p,k;k=0;fs=181000;fstop=10000;npass=fstop/fs;for(i=0;i<=m;i++){xmid[i]=0;}InitC5402();/*initializeC5402DSP*/firdes(m,npass);for(;;){READAD7822();for(i=0;i<=n-1;i++){px=(int*)(0x3000+i);xm=*px;x=xm;for(p=0;p<=m;p++){xmid[m-p]=xmid[m-p-1];}xmid[0]=x;r=0;rm=0;for(j=0;j<=m;j++){r=xmid[j]*h[j];rm=rm+r;}y=rm;py=(int*)(0x3100+i);ym=(int)y;*py=ym;}k++;}}voidfirdes(intm,doublenpass){intt;for(t=0;t<=m;t++){h[t]=sin((t-m/2.0)*npass*pi)/(pi*(t-m/2.0));}if(t=m/2)h[t]=npass;}/*****EndofFile––ExpFIR.c**********************************************/实验四无限冲击响应滤波器(IIR)算法实验一、实验目的1.熟悉设计IIR数字滤波器的原理与方法;2.掌握数字滤波器的计算机仿真方法;3.通过观察对实际信号的滤波作用,获得对数字滤波的感性认识。二、实验设备计算机、CCS2.0版软件、实验箱、DSP仿真器三、实验原理1.无限冲击响数字滤波器的基础理论;2.模拟滤波器原理(巴特沃斯滤波器、切比雪夫滤波器、贝塞尔滤波器);3.双线性变换的设计原理。四、实验步骤A.实验前准备1)正确完成计算机、DSP仿真器和实验箱的连接后,系统上电;2)设置模数转换单元的拨动开关,1、5置“ON”,其它置“OFF”;3)用示波器分别观测信号源单元的S1和S2输出的模拟信号,分别调节信号波形选择、信号频率、信号输出幅值等旋钮,直到满意为止;建议:采用两路正弦波信号的混叠信号为输入信号;S1输出低频正弦波信号:峰峰值11V,频率<4KHz;S2输出高频正弦波信号:峰峰值5V,频率>40KHz;4)设置模数转换单元的拨动开关,1、5、6置“ON”,其它置“OFF”,即采样频率选择181KHz,两路信号混叠输入,可在引出点“A/DIN”处(模数转换单元)用示波器观察混叠信号。B.实验打开PC机界面下的CCS2.软件,用Project/Open打开C:\ti\mypjts\DSP54X-4目录下的“ExpIIR.pjt”工程文件;双击“ExpIIR.pjt”,双击“Source”可查看各源程序;并加载“ExpIIR.out”;在主程序中,K++处,设置断点;单击“Run”运行程序,程序将运行至断点处停止。用View/Graph/Time/Frequency打开一个图形观察窗口;采用双踪示波器在启动地址分别为0X3000H和0X3100H,长度为256的单元中数值的变化,数值类型为16位有符号整型变量,这两段存储单元中分别存放的是经A/D转换后的混叠信号和对该信号进行低通IIR滤波后的输出信号;参数设置:双踪观察输入的叠加波形与滤波后的输出波形:单击“Animate”运行程序,或按F10运行程序;调整观察窗口,并观察滤波结果;单击“Halt”暂停程序运行,激活“ExpIIR.c”的编辑窗口;该IIR低通滤波器性能参数为:采样频率为181KHz,通带内最大允许衰减3dB,阻带内最小衰减大于30dB,过渡带宽度约为36KHz;通带上限频率:4KHz;阻带下限截止频率:40KHz。可以修改以上参数归一化参数“nlpass”和“nlstop”来改变滤波器性能。修改“ExpIIR.c”程序中“nlpass”和“nlstop”参数可改变IIR低通滤波器的滤波性能。重新“RebuildALL”后,加载,单击“Animate”,可得到不同的结果。五、思考题1.简试述用双线性变换法设计数字滤波器的过程?2.实验中,计算每个二阶滤波器的输出序列时,如何确定计算点数?3.对滤波前后的信号波形,说明数字滤波器的滤波过程与滤波作用。六、实验报告要求1.简述IIR理论。2.主要实验步骤。3.描绘出输入、输出数组的曲线。4.对比FIR滤波器与IIR滤波器的异同;5.回答思考题。七、IIR程序参数说明系统函数: 对应的常系数线性差分方程是:实验流程图程序参数说明:ExternvoidInitC5402(void)voidREADAD7822(void)voidbiir2lpdes(doublefs,doublenlpass,doublenlstop,doublea[],doubleb[])IIR低通滤波器参数设计子程序参数说明:fs:采样频率;nlpass:通带上限频率归一化参数;nlstop:阻带下限截止频率归一化参数;设置时,采样频率对应为1,应使“nlpass”和“nlstop”两参数均要小于0.5,且“nlpass”要比“nlstop”小0.2,否则将不能满足阻带的最大衰减大于30dB。数组a:存放IIR低通滤波器传递函数的极点计算结果,浮点型;数组b:存放IIR低通滤波器传递函数的零点计算结果,浮点型;输入信号:输入信号经A/D转换后,写入地址3000H~30FFH单元,16位整型;输出信号:滤波后信号,写入地址3100H~31FFH单元,16位整型。externvoidInitC5402(void);externvoidREADAD7822(void);/*************************************************************************MainFunctionProgram***********************************************************************/#include"stdio.h"#include"math.h"#definepi3.1415926doublefs,nlpass,nlstop,nhpass,nhstop,a[3],b[3],x,y;voidbiir2lpdes(doublefs,doublenlpass,doublenlstop,doublea[],doubleb[]);voidbiir2lpdes(doublefs,doublenlpass,doublenlstop,doublea[],doubleb[]){inti,u,v;doublewp,omp,gsa,t;wp=nlpass*2*pi;o
if(i{Input[i]=200;}else{Input[i]=0;}}for(i=1;i{if(i{Impulse[i]=100;}else{Impulse[i]=0;}}Convolveok(Input,Impulse,Output,Length);k++;for(;;){READAD7822();px=(int*)0x3000;for(i=0;i{xm=*px;Input[i]=xm;Impulse[i]=xm;px++;}Convolveok(Input,Impulse,Output,Length);k++;}}/*********************************************************************EndofFile––ExpConv.c*******************************************************************/#include"Convolve.h"voidConvolveok(double*Input,//原始输入数据double*Impulse,//冲击响应double*Output,//卷积输出结果Word16length//卷积序列长度){inti,k,p;doubler;p=0;for(k=0;k<=length-1;k++){Output[k]=0;r=0;for(i=0;i<=p;i++){r=Input[k-i]*Impulse[i];Output[k]=Output[k]+r;}p=p+1;if(p>length-1)p=length-1;elsep=p;}p=length-2;for(k=length;k<=length+length-1;k++){Output[k]=0;r=0;for(i=0;i<=p;i++){r=Input[length-1-i]*Impulse[length-1-p+i];Output[k]=Output[k]+r;}p=p-1;}return;}实验二FFT分析实验一、实验目的1.加深对DFT算法原理和基本性质的理解;2.熟悉FFT算法原理和FFT子程序的应用;3.学习用FFT对连续信号和时域信号进行谱分析的方法,了解可能出现的分析误差及其原因,以便在实际中正确应用FFT。二、实验设备计算机、CCS2.0版软件、实验箱、DSP仿真器三、基本原理1.DFT的定义:将时域的采样变换成频域的周期性离散函数,频域的采样也可以变换成时域的周期性离散函数,这样的变换称为离散傅立叶变换,简称DFT。2.FFT是DFT的一种快速算法,将DFT的N2步减少为(N/2)log2N步,极大地提高了运算的速度。四、实验步骤A.实验前准备1)正确完成计算机、DSP仿真器和实验箱的连接后,系统上电;2)设置模数转换单元的拨动开关,1、5、6置“ON”,其它置“OFF”;B.实验打开PC机界面下的CCS2.软件,Project/Open打开C:\ti\mypjts\DSP54X-2目录下的“ExpFFT.pjt”工程文件;双击“ExpFFT.pjt”及“Source”可查看各源程序;并编译加载;在主程序”k++”处设置断点;单击“Run”运行程序,程序将运行到断点处停止;用View/Graph/Time/Frequency打开一个图形观察窗口;设置该观察图形及参数;采用双踪观察启始地址分别为0x3000H和0x3080h,长度为128单元中数模变化,数值类型为16位有符号整型变量,这两段存储单元中分别存放的是经过AD782转换的混叠信号(信号源单元产生)和对该信号进行FFT变换的结果;单击“Animate”运行程序,或按F10运行;调整观察窗口并观察输入信号波形及其FFT变换结果;调节信号源单元中两路信号的波形选择调节、频率调节、幅值调节,观察混叠信号以及其FFT变换结果如何变化;单击“Halt”暂停程序运行,关闭窗口,本实验结束。五、思考题1.对于不同的N,幅频特性会相同吗?为什么?六、实验报告要求1.简述FFT理论。2.主要实验步骤。3.描绘出输入、输出数组的曲线。4.回答思考题。程序参数说明Externvoidinitial(void);ExternvoidREADAD7822(void);Voidkfft(pr,pi,n,k,fr,fi,l,il);基2快速傅立叶变换子程序,n为变换点数,应满足2的整数次幂,k为幂次(正整数);数组x:输入信号数组,A/D转换数据存放于地址为3000H~307FH存储器中,转为浮点型后,生成x数组,长度128;数组mo:FFT变换数组,长度28,浮点型,整型后,写入3080h~30FFH存储器中。实验三有限冲击响应滤波器(FIR)算法实验一、实验目的1.掌握用窗函数法设计FIR数字滤波器的原理和方法;2.熟悉线性相位FIR数字滤波器特性;3.了解各种窗函数对滤波特性的影响。二、实验设备计算机、CCS2.0版软件、实验箱、DSP仿真器三、实验原理1.有限冲击响应数字滤波器的基础理论;2.模拟滤波器原理(巴特沃斯滤波器、切比雪夫滤波器、贝塞尔滤波器);3.数字滤波器系数的确定方法。四、实验步骤A.实验前准备1)正确完成计算机、DSP仿真器和实验箱的连接后,系统上电;2)设置模数转换单元的拨动开关,1、5置“ON”,其它置“OFF”;3)用示波器分别观测信号源单元的S1和S2输出的模拟信号,分别调节信号波形选择、信号频率、信号输出幅值等旋钮,直到满意为止;建议:采用两路正弦波信号的混叠信号作为输入信号;S1输出:低频正弦波信号:峰峰值11V,频率<4KHz;S2输出:高频正弦波信号:峰峰值5V,频率>40KHz;4)设置模数转换单元的拨动开关,1、5、6置“ON”,其它置“OFF”,即采样频率选择181KHz,两路信号混叠输入,可在“A/DIN”点用示波器观察混叠信号。B.实验打开PC机界面下的CCS2.软件,用Project/Open打开C:\ti\mypjts\DSP54X-3目录下的“ExpFIR.pjt”工程文件;双击“ExpFIR.pjt”及“Source”可查看各源程序;并编译加载;在主程序中,K++处,设置断点;单击“Run”运行程序,程序将运行至断点处停止。用View/Graph/Time/Frequency打开一个图形观察窗口;设置观察图形窗口变量及参数为:采用双踪观察在启动地址分别为0x3000H和0x3100H,长度为256的单元中数值的变化,数值类型为16位有符号整型变量,这两段存储单元中分别存放的是经A/D转换后的输入混叠信号(输入信号)和对该信号进行FIR滤波的结果。单击“Animate”运行程序,或按F10运行程序;调整观察窗口并观察滤波结果,单击“Halt”暂停程序运行,激活“ExpFIR.c”的编辑窗口;实验程序说明:该程序为51阶FIR低通滤波器算法程序,采用矩形窗函数实现,数组和xmid长度均为51,fs为采样频率,fstop为滤波器截止频率,可以修改以上参数来变滤波器性能。重新“RebuildAll”后,重新加载,单击“Animate”,可得到不同的实验结果。五、思考题1.如果给定通带截止频率和阻带截止频率以及阻带最小衰减,如何用窗函数法设计线性相位低通滤波器?写出设计步骤。2.定性说明本实验中,3dB截止频率的理论值在什么位置?是否等于理想低通的截止频率?六、实验报告要求1.简述FIR理论。2.主要实验步骤。3.描绘出输入、输出数组的曲线。4.回答思考题。七、FIR程序参数说明系统函数对应常系数线性差分方程:程序参数说明:ExternvoidInitC5402(void)ExternvoidREADAD7822(void)voidfirdes(intm,doublenpass);输入信号:输入信号经A/D转换后,写入地址为3000H~30FFH存储器,16位整型;输出信号:FIR低通滤波器输出,写入地址为3100H~31FFH存储,16位整型。八、程序流程图externvoidInitC5402(void);externvoidREADAD7822(void);/******************************************MainFunctionProgram****************************************/#include"stdio.h"#include"math.h"#definepi3.1415927doublenpass,h[51],x,y,xmid[51];intm=50;intn=256;voidfirdes(intm,doublenpass);main(){intxm,ym;int*px=(int*)0x3000;int*py=(int*)0x3100;doublefs,fstop,r,rm;inti,j,p,k;k=0;fs=181000;fstop=10000;npass=fstop/fs;for(i=0;i<=m;i++){xmid[i]=0;}InitC5402();/*initializeC5402DSP*/firdes(m,npass);for(;;){READAD7822();for(i=0;i<=n-1;i++){px=(int*)(0x3000+i);xm=*px;x=xm;for(p=0;p<=m;p++){xmid[m-p]=xmid[m-p-1];}xmid[0]=x;r=0;rm=0;for(j=0;j<=m;j++){r=xmid[j]*h[j];rm=rm+r;}y=rm;py=(int*)(0x3100+i);ym=(int)y;*py=ym;}k++;}}voidfirdes(intm,doublenpass){intt;for(t=0;t<=m;t++){h[t]=sin((t-m/2.0)*npass*pi)/(pi*(t-m/2.0));}if(t=m/2)h[t]=npass;}/*****EndofFile––ExpFIR.c**********************************************/实验四无限冲击响应滤波器(IIR)算法实验一、实验目的1.熟悉设计IIR数字滤波器的原理与方法;2.掌握数字滤波器的计算机仿真方法;3.通过观察对实际信号的滤波作用,获得对数字滤波的感性认识。二、实验设备计算机、CCS2.0版软件、实验箱、DSP仿真器三、实验原理1.无限冲击响数字滤波器的基础理论;2.模拟滤波器原理(巴特沃斯滤波器、切比雪夫滤波器、贝塞尔滤波器);3.双线性变换的设计原理。四、实验步骤A.实验前准备1)正确完成计算机、DSP仿真器和实验箱的连接后,系统上电;2)设置模数转换单元的拨动开关,1、5置“ON”,其它置“OFF”;3)用示波器分别观测信号源单元的S1和S2输出的模拟信号,分别调节信号波形选择、信号频率、信号输出幅值等旋钮,直到满意为止;建议:采用两路正弦波信号的混叠信号为输入信号;S1输出低频正弦波信号:峰峰值11V,频率<4KHz;S2输出高频正弦波信号:峰峰值5V,频率>40KHz;4)设置模数转换单元的拨动开关,1、5、6置“ON”,其它置“OFF”,即采样频率选择181KHz,两路信号混叠输入,可在引出点“A/DIN”处(模数转换单元)用示波器观察混叠信号。B.实验打开PC机界面下的CCS2.软件,用Project/Open打开C:\ti\mypjts\DSP54X-4目录下的“ExpIIR.pjt”工程文件;双击“ExpIIR.pjt”,双击“Source”可查看各源程序;并加载“ExpIIR.out”;在主程序中,K++处,设置断点;单击“Run”运行程序,程序将运行至断点处停止。用View/Graph/Time/Frequency打开一个图形观察窗口;采用双踪示波器在启动地址分别为0X3000H和0X3100H,长度为256的单元中数值的变化,数值类型为16位有符号整型变量,这两段存储单元中分别存放的是经A/D转换后的混叠信号和对该信号进行低通IIR滤波后的输出信号;参数设置:双踪观察输入的叠加波形与滤波后的输出波形:单击“Animate”运行程序,或按F10运行程序;调整观察窗口,并观察滤波结果;单击“Halt”暂停程序运行,激活“ExpIIR.c”的编辑窗口;该IIR低通滤波器性能参数为:采样频率为181KHz,通带内最大允许衰减3dB,阻带内最小衰减大于30dB,过渡带宽度约为36KHz;通带上限频率:4KHz;阻带下限截止频率:40KHz。可以修改以上参数归一化参数“nlpass”和“nlstop”来改变滤波器性能。修改“ExpIIR.c”程序中“nlpass”和“nlstop”参数可改变IIR低通滤波器的滤波性能。重新“RebuildALL”后,加载,单击“Animate”,可得到不同的结果。五、思考题1.简试述用双线性变换法设计数字滤波器的过程?2.实验中,计算每个二阶滤波器的输出序列时,如何确定计算点数?3.对滤波前后的信号波形,说明数字滤波器的滤波过程与滤波作用。六、实验报告要求1.简述IIR理论。2.主要实验步骤。3.描绘出输入、输出数组的曲线。4.对比FIR滤波器与IIR滤波器的异同;5.回答思考题。七、IIR程序参数说明系统函数: 对应的常系数线性差分方程是:实验流程图程序参数说明:ExternvoidInitC5402(void)voidREADAD7822(void)voidbiir2lpdes(doublefs,doublenlpass,doublenlstop,doublea[],doubleb[])IIR低通滤波器参数设计子程序参数说明:fs:采样频率;nlpass:通带上限频率归一化参数;nlstop:阻带下限截止频率归一化参数;设置时,采样频率对应为1,应使“nlpass”和“nlstop”两参数均要小于0.5,且“nlpass”要比“nlstop”小0.2,否则将不能满足阻带的最大衰减大于30dB。数组a:存放IIR低通滤波器传递函数的极点计算结果,浮点型;数组b:存放IIR低通滤波器传递函数的零点计算结果,浮点型;输入信号:输入信号经A/D转换后,写入地址3000H~30FFH单元,16位整型;输出信号:滤波后信号,写入地址3100H~31FFH单元,16位整型。externvoidInitC5402(void);externvoidREADAD7822(void);/*************************************************************************MainFunctionProgram***********************************************************************/#include"stdio.h"#include"math.h"#definepi3.1415926doublefs,nlpass,nlstop,nhpass,nhstop,a[3],b[3],x,y;voidbiir2lpdes(doublefs,doublenlpass,doublenlstop,doublea[],doubleb[]);voidbiir2lpdes(doublefs,doublenlpass,doublenlstop,doublea[],doubleb[]){inti,u,v;doublewp,omp,gsa,t;wp=nlpass*2*pi;o
Input[i]=200;
}
else
Input[i]=0;
for(i=1;i{if(i{Impulse[i]=100;}else{Impulse[i]=0;}}Convolveok(Input,Impulse,Output,Length);k++;for(;;){READAD7822();px=(int*)0x3000;for(i=0;i{xm=*px;Input[i]=xm;Impulse[i]=xm;px++;}Convolveok(Input,Impulse,Output,Length);k++;}}/*********************************************************************EndofFile––ExpConv.c*******************************************************************/#include"Convolve.h"voidConvolveok(double*Input,//原始输入数据double*Impulse,//冲击响应double*Output,//卷积输出结果Word16length//卷积序列长度){inti,k,p;doubler;p=0;for(k=0;k<=length-1;k++){Output[k]=0;r=0;for(i=0;i<=p;i++){r=Input[k-i]*Impulse[i];Output[k]=Output[k]+r;}p=p+1;if(p>length-1)p=length-1;elsep=p;}p=length-2;for(k=length;k<=length+length-1;k++){Output[k]=0;r=0;for(i=0;i<=p;i++){r=Input[length-1-i]*Impulse[length-1-p+i];Output[k]=Output[k]+r;}p=p-1;}return;}实验二FFT分析实验一、实验目的1.加深对DFT算法原理和基本性质的理解;2.熟悉FFT算法原理和FFT子程序的应用;3.学习用FFT对连续信号和时域信号进行谱分析的方法,了解可能出现的分析误差及其原因,以便在实际中正确应用FFT。二、实验设备计算机、CCS2.0版软件、实验箱、DSP仿真器三、基本原理1.DFT的定义:将时域的采样变换成频域的周期性离散函数,频域的采样也可以变换成时域的周期性离散函数,这样的变换称为离散傅立叶变换,简称DFT。2.FFT是DFT的一种快速算法,将DFT的N2步减少为(N/2)log2N步,极大地提高了运算的速度。四、实验步骤A.实验前准备1)正确完成计算机、DSP仿真器和实验箱的连接后,系统上电;2)设置模数转换单元的拨动开关,1、5、6置“ON”,其它置“OFF”;B.实验打开PC机界面下的CCS2.软件,Project/Open打开C:\ti\mypjts\DSP54X-2目录下的“ExpFFT.pjt”工程文件;双击“ExpFFT.pjt”及“Source”可查看各源程序;并编译加载;在主程序”k++”处设置断点;单击“Run”运行程序,程序将运行到断点处停止;用View/Graph/Time/Frequency打开一个图形观察窗口;设置该观察图形及参数;采用双踪观察启始地址分别为0x3000H和0x3080h,长度为128单元中数模变化,数值类型为16位有符号整型变量,这两段存储单元中分别存放的是经过AD782转换的混叠信号(信号源单元产生)和对该信号进行FFT变换的结果;单击“Animate”运行程序,或按F10运行;调整观察窗口并观察输入信号波形及其FFT变换结果;调节信号源单元中两路信号的波形选择调节、频率调节、幅值调节,观察混叠信号以及其FFT变换结果如何变化;单击“Halt”暂停程序运行,关闭窗口,本实验结束。五、思考题1.对于不同的N,幅频特性会相同吗?为什么?六、实验报告要求1.简述FFT理论。2.主要实验步骤。3.描绘出输入、输出数组的曲线。4.回答思考题。程序参数说明Externvoidinitial(void);ExternvoidREADAD7822(void);Voidkfft(pr,pi,n,k,fr,fi,l,il);基2快速傅立叶变换子程序,n为变换点数,应满足2的整数次幂,k为幂次(正整数);数组x:输入信号数组,A/D转换数据存放于地址为3000H~307FH存储器中,转为浮点型后,生成x数组,长度128;数组mo:FFT变换数组,长度28,浮点型,整型后,写入3080h~30FFH存储器中。实验三有限冲击响应滤波器(FIR)算法实验一、实验目的1.掌握用窗函数法设计FIR数字滤波器的原理和方法;2.熟悉线性相位FIR数字滤波器特性;3.了解各种窗函数对滤波特性的影响。二、实验设备计算机、CCS2.0版软件、实验箱、DSP仿真器三、实验原理1.有限冲击响应数字滤波器的基础理论;2.模拟滤波器原理(巴特沃斯滤波器、切比雪夫滤波器、贝塞尔滤波器);3.数字滤波器系数的确定方法。四、实验步骤A.实验前准备1)正确完成计算机、DSP仿真器和实验箱的连接后,系统上电;2)设置模数转换单元的拨动开关,1、5置“ON”,其它置“OFF”;3)用示波器分别观测信号源单元的S1和S2输出的模拟信号,分别调节信号波形选择、信号频率、信号输出幅值等旋钮,直到满意为止;建议:采用两路正弦波信号的混叠信号作为输入信号;S1输出:低频正弦波信号:峰峰值11V,频率<4KHz;S2输出:高频正弦波信号:峰峰值5V,频率>40KHz;4)设置模数转换单元的拨动开关,1、5、6置“ON”,其它置“OFF”,即采样频率选择181KHz,两路信号混叠输入,可在“A/DIN”点用示波器观察混叠信号。B.实验打开PC机界面下的CCS2.软件,用Project/Open打开C:\ti\mypjts\DSP54X-3目录下的“ExpFIR.pjt”工程文件;双击“ExpFIR.pjt”及“Source”可查看各源程序;并编译加载;在主程序中,K++处,设置断点;单击“Run”运行程序,程序将运行至断点处停止。用View/Graph/Time/Frequency打开一个图形观察窗口;设置观察图形窗口变量及参数为:采用双踪观察在启动地址分别为0x3000H和0x3100H,长度为256的单元中数值的变化,数值类型为16位有符号整型变量,这两段存储单元中分别存放的是经A/D转换后的输入混叠信号(输入信号)和对该信号进行FIR滤波的结果。单击“Animate”运行程序,或按F10运行程序;调整观察窗口并观察滤波结果,单击“Halt”暂停程序运行,激活“ExpFIR.c”的编辑窗口;实验程序说明:该程序为51阶FIR低通滤波器算法程序,采用矩形窗函数实现,数组和xmid长度均为51,fs为采样频率,fstop为滤波器截止频率,可以修改以上参数来变滤波器性能。重新“RebuildAll”后,重新加载,单击“Animate”,可得到不同的实验结果。五、思考题1.如果给定通带截止频率和阻带截止频率以及阻带最小衰减,如何用窗函数法设计线性相位低通滤波器?写出设计步骤。2.定性说明本实验中,3dB截止频率的理论值在什么位置?是否等于理想低通的截止频率?六、实验报告要求1.简述FIR理论。2.主要实验步骤。3.描绘出输入、输出数组的曲线。4.回答思考题。七、FIR程序参数说明系统函数对应常系数线性差分方程:程序参数说明:ExternvoidInitC5402(void)ExternvoidREADAD7822(void)voidfirdes(intm,doublenpass);输入信号:输入信号经A/D转换后,写入地址为3000H~30FFH存储器,16位整型;输出信号:FIR低通滤波器输出,写入地址为3100H~31FFH存储,16位整型。八、程序流程图externvoidInitC5402(void);externvoidREADAD7822(void);/******************************************MainFunctionProgram****************************************/#include"stdio.h"#include"math.h"#definepi3.1415927doublenpass,h[51],x,y,xmid[51];intm=50;intn=256;voidfirdes(intm,doublenpass);main(){intxm,ym;int*px=(int*)0x3000;int*py=(int*)0x3100;doublefs,fstop,r,rm;inti,j,p,k;k=0;fs=181000;fstop=10000;npass=fstop/fs;for(i=0;i<=m;i++){xmid[i]=0;}InitC5402();/*initializeC5402DSP*/firdes(m,npass);for(;;){READAD7822();for(i=0;i<=n-1;i++){px=(int*)(0x3000+i);xm=*px;x=xm;for(p=0;p<=m;p++){xmid[m-p]=xmid[m-p-1];}xmid[0]=x;r=0;rm=0;for(j=0;j<=m;j++){r=xmid[j]*h[j];rm=rm+r;}y=rm;py=(int*)(0x3100+i);ym=(int)y;*py=ym;}k++;}}voidfirdes(intm,doublenpass){intt;for(t=0;t<=m;t++){h[t]=sin((t-m/2.0)*npass*pi)/(pi*(t-m/2.0));}if(t=m/2)h[t]=npass;}/*****EndofFile––ExpFIR.c**********************************************/实验四无限冲击响应滤波器(IIR)算法实验一、实验目的1.熟悉设计IIR数字滤波器的原理与方法;2.掌握数字滤波器的计算机仿真方法;3.通过观察对实际信号的滤波作用,获得对数字滤波的感性认识。二、实验设备计算机、CCS2.0版软件、实验箱、DSP仿真器三、实验原理1.无限冲击响数字滤波器的基础理论;2.模拟滤波器原理(巴特沃斯滤波器、切比雪夫滤波器、贝塞尔滤波器);3.双线性变换的设计原理。四、实验步骤A.实验前准备1)正确完成计算机、DSP仿真器和实验箱的连接后,系统上电;2)设置模数转换单元的拨动开关,1、5置“ON”,其它置“OFF”;3)用示波器分别观测信号源单元的S1和S2输出的模拟信号,分别调节信号波形选择、信号频率、信号输出幅值等旋钮,直到满意为止;建议:采用两路正弦波信号的混叠信号为输入信号;S1输出低频正弦波信号:峰峰值11V,频率<4KHz;S2输出高频正弦波信号:峰峰值5V,频率>40KHz;4)设置模数转换单元的拨动开关,1、5、6置“ON”,其它置“OFF”,即采样频率选择181KHz,两路信号混叠输入,可在引出点“A/DIN”处(模数转换单元)用示波器观察混叠信号。B.实验打开PC机界面下的CCS2.软件,用Project/Open打开C:\ti\mypjts\DSP54X-4目录下的“ExpIIR.pjt”工程文件;双击“ExpIIR.pjt”,双击“Source”可查看各源程序;并加载“ExpIIR.out”;在主程序中,K++处,设置断点;单击“Run”运行程序,程序将运行至断点处停止。用View/Graph/Time/Frequency打开一个图形观察窗口;采用双踪示波器在启动地址分别为0X3000H和0X3100H,长度为256的单元中数值的变化,数值类型为16位有符号整型变量,这两段存储单元中分别存放的是经A/D转换后的混叠信号和对该信号进行低通IIR滤波后的输出信号;参数设置:双踪观察输入的叠加波形与滤波后的输出波形:单击“Animate”运行程序,或按F10运行程序;调整观察窗口,并观察滤波结果;单击“Halt”暂停程序运行,激活“ExpIIR.c”的编辑窗口;该IIR低通滤波器性能参数为:采样频率为181KHz,通带内最大允许衰减3dB,阻带内最小衰减大于30dB,过渡带宽度约为36KHz;通带上限频率:4KHz;阻带下限截止频率:40KHz。可以修改以上参数归一化参数“nlpass”和“nlstop”来改变滤波器性能。修改“ExpIIR.c”程序中“nlpass”和“nlstop”参数可改变IIR低通滤波器的滤波性能。重新“RebuildALL”后,加载,单击“Animate”,可得到不同的结果。五、思考题1.简试述用双线性变换法设计数字滤波器的过程?2.实验中,计算每个二阶滤波器的输出序列时,如何确定计算点数?3.对滤波前后的信号波形,说明数字滤波器的滤波过程与滤波作用。六、实验报告要求1.简述IIR理论。2.主要实验步骤。3.描绘出输入、输出数组的曲线。4.对比FIR滤波器与IIR滤波器的异同;5.回答思考题。七、IIR程序参数说明系统函数: 对应的常系数线性差分方程是:实验流程图程序参数说明:ExternvoidInitC5402(void)voidREADAD7822(void)voidbiir2lpdes(doublefs,doublenlpass,doublenlstop,doublea[],doubleb[])IIR低通滤波器参数设计子程序参数说明:fs:采样频率;nlpass:通带上限频率归一化参数;nlstop:阻带下限截止频率归一化参数;设置时,采样频率对应为1,应使“nlpass”和“nlstop”两参数均要小于0.5,且“nlpass”要比“nlstop”小0.2,否则将不能满足阻带的最大衰减大于30dB。数组a:存放IIR低通滤波器传递函数的极点计算结果,浮点型;数组b:存放IIR低通滤波器传递函数的零点计算结果,浮点型;输入信号:输入信号经A/D转换后,写入地址3000H~30FFH单元,16位整型;输出信号:滤波后信号,写入地址3100H~31FFH单元,16位整型。externvoidInitC5402(void);externvoidREADAD7822(void);/*************************************************************************MainFunctionProgram***********************************************************************/#include"stdio.h"#include"math.h"#definepi3.1415926doublefs,nlpass,nlstop,nhpass,nhstop,a[3],b[3],x,y;voidbiir2lpdes(doublefs,doublenlpass,doublenlstop,doublea[],doubleb[]);voidbiir2lpdes(doublefs,doublenlpass,doublenlstop,doublea[],doubleb[]){inti,u,v;doublewp,omp,gsa,t;wp=nlpass*2*pi;o
if(i{Impulse[i]=100;}else{Impulse[i]=0;}}Convolveok(Input,Impulse,Output,Length);k++;for(;;){READAD7822();px=(int*)0x3000;for(i=0;i{xm=*px;Input[i]=xm;Impulse[i]=xm;px++;}Convolveok(Input,Impulse,Output,Length);k++;}}/*********************************************************************EndofFile––ExpConv.c*******************************************************************/#include"Convolve.h"voidConvolveok(double*Input,//原始输入数据double*Impulse,//冲击响应double*Output,//卷积输出结果Word16length//卷积序列长度){inti,k,p;doubler;p=0;for(k=0;k<=length-1;k++){Output[k]=0;r=0;for(i=0;i<=p;i++){r=Input[k-i]*Impulse[i];Output[k]=Output[k]+r;}p=p+1;if(p>length-1)p=length-1;elsep=p;}p=length-2;for(k=length;k<=length+length-1;k++){Output[k]=0;r=0;for(i=0;i<=p;i++){r=Input[length-1-i]*Impulse[length-1-p+i];Output[k]=Output[k]+r;}p=p-1;}return;}实验二FFT分析实验一、实验目的1.加深对DFT算法原理和基本性质的理解;2.熟悉FFT算法原理和FFT子程序的应用;3.学习用FFT对连续信号和时域信号进行谱分析的方法,了解可能出现的分析误差及其原因,以便在实际中正确应用FFT。二、实验设备计算机、CCS2.0版软件、实验箱、DSP仿真器三、基本原理1.DFT的定义:将时域的采样变换成频域的周期性离散函数,频域的采样也可以变换成时域的周期性离散函数,这样的变换称为离散傅立叶变换,简称DFT。2.FFT是DFT的一种快速算法,将DFT的N2步减少为(N/2)log2N步,极大地提高了运算的速度。四、实验步骤A.实验前准备1)正确完成计算机、DSP仿真器和实验箱的连接后,系统上电;2)设置模数转换单元的拨动开关,1、5、6置“ON”,其它置“OFF”;B.实验打开PC机界面下的CCS2.软件,Project/Open打开C:\ti\mypjts\DSP54X-2目录下的“ExpFFT.pjt”工程文件;双击“ExpFFT.pjt”及“Source”可查看各源程序;并编译加载;在主程序”k++”处设置断点;单击“Run”运行程序,程序将运行到断点处停止;用View/Graph/Time/Frequency打开一个图形观察窗口;设置该观察图形及参数;采用双踪观察启始地址分别为0x3000H和0x3080h,长度为128单元中数模变化,数值类型为16位有符号整型变量,这两段存储单元中分别存放的是经过AD782转换的混叠信号(信号源单元产生)和对该信号进行FFT变换的结果;单击“Animate”运行程序,或按F10运行;调整观察窗口并观察输入信号波形及其FFT变换结果;调节信号源单元中两路信号的波形选择调节、频率调节、幅值调节,观察混叠信号以及其FFT变换结果如何变化;单击“Halt”暂停程序运行,关闭窗口,本实验结束。五、思考题1.对于不同的N,幅频特性会相同吗?为什么?六、实验报告要求1.简述FFT理论。2.主要实验步骤。3.描绘出输入、输出数组的曲线。4.回答思考题。程序参数说明Externvoidinitial(void);ExternvoidREADAD7822(void);Voidkfft(pr,pi,n,k,fr,fi,l,il);基2快速傅立叶变换子程序,n为变换点数,应满足2的整数次幂,k为幂次(正整数);数组x:输入信号数组,A/D转换数据存放于地址为3000H~307FH存储器中,转为浮点型后,生成x数组,长度128;数组mo:FFT变换数组,长度28,浮点型,整型后,写入3080h~30FFH存储器中。实验三有限冲击响应滤波器(FIR)算法实验一、实验目的1.掌握用窗函数法设计FIR数字滤波器的原理和方法;2.熟悉线性相位FIR数字滤波器特性;3.了解各种窗函数对滤波特性的影响。二、实验设备计算机、CCS2.0版软件、实验箱、DSP仿真器三、实验原理1.有限冲击响应数字滤波器的基础理论;2.模拟滤波器原理(巴特沃斯滤波器、切比雪夫滤波器、贝塞尔滤波器);3.数字滤波器系数的确定方法。四、实验步骤A.实验前准备1)正确完成计算机、DSP仿真器和实验箱的连接后,系统上电;2)设置模数转换单元的拨动开关,1、5置“ON”,其它置“OFF”;3)用示波器分别观测信号源单元的S1和S2输出的模拟信号,分别调节信号波形选择、信号频率、信号输出幅值等旋钮,直到满意为止;建议:采用两路正弦波信号的混叠信号作为输入信号;S1输出:低频正弦波信号:峰峰值11V,频率<4KHz;S2输出:高频正弦波信号:峰峰值5V,频率>40KHz;4)设置模数转换单元的拨动开关,1、5、6置“ON”,其它置“OFF”,即采样频率选择181KHz,两路信号混叠输入,可在“A/DIN”点用示波器观察混叠信号。B.实验打开PC机界面下的CCS2.软件,用Project/Open打开C:\ti\mypjts\DSP54X-3目录下的“ExpFIR.pjt”工程文件;双击“ExpFIR.pjt”及“Source”可查看各源程序;并编译加载;在主程序中,K++处,设置断点;单击“Run”运行程序,程序将运行至断点处停止。用View/Graph/Time/Frequency打开一个图形观察窗口;设置观察图形窗口变量及参数为:采用双踪观察在启动地址分别为0x3000H和0x3100H,长度为256的单元中数值的变化,数值类型为16位有符号整型变量,这两段存储单元中分别存放的是经A/D转换后的输入混叠信号(输入信号)和对该信号进行FIR滤波的结果。单击“Animate”运行程序,或按F10运行程序;调整观察窗口并观察滤波结果,单击“Halt”暂停程序运行,激活“ExpFIR.c”的编辑窗口;实验程序说明:该程序为51阶FIR低通滤波器算法程序,采用矩形窗函数实现,数组和xmid长度均为51,fs为采样频率,fstop为滤波器截止频率,可以修改以上参数来变滤波器性能。重新“RebuildAll”后,重新加载,单击“Animate”,可得到不同的实验结果。五、思考题1.如果给定通带截止频率和阻带截止频率以及阻带最小衰减,如何用窗函数法设计线性相位低通滤波器?写出设计步骤。2.定性说明本实验中,3dB截止频率的理论值在什么位置?是否等于理想低通的截止频率?六、实验报告要求1.简述FIR理论。2.主要实验步骤。3.描绘出输入、输出数组的曲线。4.回答思考题。七、FIR程序参数说明系统函数对应常系数线性差分方程:程序参数说明:ExternvoidInitC5402(void)ExternvoidREADAD7822(void)voidfirdes(intm,doublenpass);输入信号:输入信号经A/D转换后,写入地址为3000H~30FFH存储器,16位整型;输出信号:FIR低通滤波器输出,写入地址为3100H~31FFH存储,16位整型。八、程序流程图externvoidInitC5402(void);externvoidREADAD7822(void);/******************************************MainFunctionProgram****************************************/#include"stdio.h"#include"math.h"#definepi3.1415927doublenpass,h[51],x,y,xmid[51];intm=50;intn=256;voidfirdes(intm,doublenpass);main(){intxm,ym;int*px=(int*)0x3000;int*py=(int*)0x3100;doublefs,fstop,r,rm;inti,j,p,k;k=0;fs=181000;fstop=10000;npass=fstop/fs;for(i=0;i<=m;i++){xmid[i]=0;}InitC5402();/*initializeC5402DSP*/firdes(m,npass);for(;;){READAD7822();for(i=0;i<=n-1;i++){px=(int*)(0x3000+i);xm=*px;x=xm;for(p=0;p<=m;p++){xmid[m-p]=xmid[m-p-1];}xmid[0]=x;r=0;rm=0;for(j=0;j<=m;j++){r=xmid[j]*h[j];rm=rm+r;}y=rm;py=(int*)(0x3100+i);ym=(int)y;*py=ym;}k++;}}voidfirdes(intm,doublenpass){intt;for(t=0;t<=m;t++){h[t]=sin((t-m/2.0)*npass*pi)/(pi*(t-m/2.0));}if(t=m/2)h[t]=npass;}/*****EndofFile––ExpFIR.c**********************************************/实验四无限冲击响应滤波器(IIR)算法实验一、实验目的1.熟悉设计IIR数字滤波器的原理与方法;2.掌握数字滤波器的计算机仿真方法;3.通过观察对实际信号的滤波作用,获得对数字滤波的感性认识。二、实验设备计算机、CCS2.0版软件、实验箱、DSP仿真器三、实验原理1.无限冲击响数字滤波器的基础理论;2.模拟滤波器原理(巴特沃斯滤波器、切比雪夫滤波器、贝塞尔滤波器);3.双线性变换的设计原理。四、实验步骤A.实验前准备1)正确完成计算机、DSP仿真器和实验箱的连接后,系统上电;2)设置模数转换单元的拨动开关,1、5置“ON”,其它置“OFF”;3)用示波器分别观测信号源单元的S1和S2输出的模拟信号,分别调节信号波形选择、信号频率、信号输出幅值等旋钮,直到满意为止;建议:采用两路正弦波信号的混叠信号为输入信号;S1输出低频正弦波信号:峰峰值11V,频率<4KHz;S2输出高频正弦波信号:峰峰值5V,频率>40KHz;4)设置模数转换单元的拨动开关,1、5、6置“ON”,其它置“OFF”,即采样频率选择181KHz,两路信号混叠输入,可在引出点“A/DIN”处(模数转换单元)用示波器观察混叠信号。B.实验打开PC机界面下的CCS2.软件,用Project/Open打开C:\ti\mypjts\DSP54X-4目录下的“ExpIIR.pjt”工程文件;双击“ExpIIR.pjt”,双击“Source”可查看各源程序;并加载“ExpIIR.out”;在主程序中,K++处,设置断点;单击“Run”运行程序,程序将运行至断点处停止。用View/Graph/Time/Frequency打开一个图形观察窗口;采用双踪示波器在启动地址分别为0X3000H和0X3100H,长度为256的单元中数值的变化,数值类型为16位有符号整型变量,这两段存储单元中分别存放的是经A/D转换后的混叠信号和对该信号进行低通IIR滤波后的输出信号;参数设置:双踪观察输入的叠加波形与滤波后的输出波形:单击“Animate”运行程序,或按F10运行程序;调整观察窗口,并观察滤波结果;单击“Halt”暂停程序运行,激活“ExpIIR.c”的编辑窗口;该IIR低通滤波器性能参数为:采样频率为181KHz,通带内最大允许衰减3dB,阻带内最小衰减大于30dB,过渡带宽度约为36KHz;通带上限频率:4KHz;阻带下限截止频率:40KHz。可以修改以上参数归一化参数“nlpass”和“nlstop”来改变滤波器性能。修改“ExpIIR.c”程序中“nlpass”和“nlstop”参数可改变IIR低通滤波器的滤波性能。重新“RebuildALL”后,加载,单击“Animate”,可得到不同的结果。五、思考题1.简试述用双线性变换法设计数字滤波器的过程?2.实验中,计算每个二阶滤波器的输出序列时,如何确定计算点数?3.对滤波前后的信号波形,说明数字滤波器的滤波过程与滤波作用。六、实验报告要求1.简述IIR理论。2.主要实验步骤。3.描绘出输入、输出数组的曲线。4.对比FIR滤波器与IIR滤波器的异同;5.回答思考题。七、IIR程序参数说明系统函数: 对应的常系数线性差分方程是:实验流程图程序参数说明:ExternvoidInitC5402(void)voidREADAD7822(void)voidbiir2lpdes(doublefs,doublenlpass,doublenlstop,doublea[],doubleb[])IIR低通滤波器参数设计子程序参数说明:fs:采样频率;nlpass:通带上限频率归一化参数;nlstop:阻带下限截止频率归一化参数;设置时,采样频率对应为1,应使“nlpass”和“nlstop”两参数均要小于0.5,且“nlpass”要比“nlstop”小0.2,否则将不能满足阻带的最大衰减大于30dB。数组a:存放IIR低通滤波器传递函数的极点计算结果,浮点型;数组b:存放IIR低通滤波器传递函数的零点计算结果,浮点型;输入信号:输入信号经A/D转换后,写入地址3000H~30FFH单元,16位整型;输出信号:滤波后信号,写入地址3100H~31FFH单元,16位整型。externvoidInitC5402(void);externvoidREADAD7822(void);/*************************************************************************MainFunctionProgram***********************************************************************/#include"stdio.h"#include"math.h"#definepi3.1415926doublefs,nlpass,nlstop,nhpass,nhstop,a[3],b[3],x,y;voidbiir2lpdes(doublefs,doublenlpass,doublenlstop,doublea[],doubleb[]);voidbiir2lpdes(doublefs,doublenlpass,doublenlstop,doublea[],doubleb[]){inti,u,v;doublewp,omp,gsa,t;wp=nlpass*2*pi;o
Impulse[i]=100;
Impulse[i]=0;
Convolveok(Input,Impulse,Output,Length);
k++;
for(;;)
READAD7822();
px=(int*)0x3000;
for(i=0;i{xm=*px;Input[i]=xm;Impulse[i]=xm;px++;}Convolveok(Input,Impulse,Output,Length);k++;}}/*********************************************************************EndofFile––ExpConv.c*******************************************************************/#include"Convolve.h"voidConvolveok(double*Input,//原始输入数据double*Impulse,//冲击响应double*Output,//卷积输出结果Word16length//卷积序列长度){inti,k,p;doubler;p=0;for(k=0;k<=length-1;k++){Output[k]=0;r=0;for(i=0;i<=p;i++){r=Input[k-i]*Impulse[i];Output[k]=Output[k]+r;}p=p+1;if(p>length-1)p=length-1;elsep=p;}p=length-2;for(k=length;k<=length+length-1;k++){Output[k]=0;r=0;for(i=0;i<=p;i++){r=Input[length-1-i]*Impulse[length-1-p+i];Output[k]=Output[k]+r;}p=p-1;}return;}实验二FFT分析实验一、实验目的1.加深对DFT算法原理和基本性质的理解;2.熟悉FFT算法原理和FFT子程序的应用;3.学习用FFT对连续信号和时域信号进行谱分析的方法,了解可能出现的分析误差及其原因,以便在实际中正确应用FFT。二、实验设备计算机、CCS2.0版软件、实验箱、DSP仿真器三、基本原理1.DFT的定义:将时域的采样变换成频域的周期性离散函数,频域的采样也可以变换成时域的周期性离散函数,这样的变换称为离散傅立叶变换,简称DFT。2.FFT是DFT的一种快速算法,将DFT的N2步减少为(N/2)log2N步,极大地提高了运算的速度。四、实验步骤A.实验前准备1)正确完成计算机、DSP仿真器和实验箱的连接后,系统上电;2)设置模数转换单元的拨动开关,1、5、6置“ON”,其它置“OFF”;B.实验打开PC机界面下的CCS2.软件,Project/Open打开C:\ti\mypjts\DSP54X-2目录下的“ExpFFT.pjt”工程文件;双击“ExpFFT.pjt”及“Source”可查看各源程序;并编译加载;在主程序”k++”处设置断点;单击“Run”运行程序,程序将运行到断点处停止;用View/Graph/Time/Frequency打开一个图形观察窗口;设置该观察图形及参数;采用双踪观察启始地址分别为0x3000H和0x3080h,长度为128单元中数模变化,数值类型为16位有符号整型变量,这两段存储单元中分别存放的是经过AD782转换的混叠信号(信号源单元产生)和对该信号进行FFT变换的结果;单击“Animate”运行程序,或按F10运行;调整观察窗口并观察输入信号波形及其FFT变换结果;调节信号源单元中两路信号的波形选择调节、频率调节、幅值调节,观察混叠信号以及其FFT变换结果如何变化;单击“Halt”暂停程序运行,关闭窗口,本实验结束。五、思考题1.对于不同的N,幅频特性会相同吗?为什么?六、实验报告要求1.简述FFT理论。2.主要实验步骤。3.描绘出输入、输出数组的曲线。4.回答思考题。程序参数说明Externvoidinitial(void);ExternvoidREADAD7822(void);Voidkfft(pr,pi,n,k,fr,fi,l,il);基2快速傅立叶变换子程序,n为变换点数,应满足2的整数次幂,k为幂次(正整数);数组x:输入信号数组,A/D转换数据存放于地址为3000H~307FH存储器中,转为浮点型后,生成x数组,长度128;数组mo:FFT变换数组,长度28,浮点型,整型后,写入3080h~30FFH存储器中。实验三有限冲击响应滤波器(FIR)算法实验一、实验目的1.掌握用窗函数法设计FIR数字滤波器的原理和方法;2.熟悉线性相位FIR数字滤波器特性;3.了解各种窗函数对滤波特性的影响。二、实验设备计算机、CCS2.0版软件、实验箱、DSP仿真器三、实验原理1.有限冲击响应数字滤波器的基础理论;2.模拟滤波器原理(巴特沃斯滤波器、切比雪夫滤波器、贝塞尔滤波器);3.数字滤波器系数的确定方法。四、实验步骤A.实验前准备1)正确完成计算机、DSP仿真器和实验箱的连接后,系统上电;2)设置模数转换单元的拨动开关,1、5置“ON”,其它置“OFF”;3)用示波器分别观测信号源单元的S1和S2输出的模拟信号,分别调节信号波形选择、信号频率、信号输出幅值等旋钮,直到满意为止;建议:采用两路正弦波信号的混叠信号作为输入信号;S1输出:低频正弦波信号:峰峰值11V,频率<4KHz;S2输出:高频正弦波信号:峰峰值5V,频率>40KHz;4)设置模数转换单元的拨动开关,1、5、6置“ON”,其它置“OFF”,即采样频率选择181KHz,两路信号混叠输入,可在“A/DIN”点用示波器观察混叠信号。B.实验打开PC机界面下的CCS2.软件,用Project/Open打开C:\ti\mypjts\DSP54X-3目录下的“ExpFIR.pjt”工程文件;双击“ExpFIR.pjt”及“Source”可查看各源程序;并编译加载;在主程序中,K++处,设置断点;单击“Run”运行程序,程序将运行至断点处停止。用View/Graph/Time/Frequency打开一个图形观察窗口;设置观察图形窗口变量及参数为:采用双踪观察在启动地址分别为0x3000H和0x3100H,长度为256的单元中数值的变化,数值类型为16位有符号整型变量,这两段存储单元中分别存放的是经A/D转换后的输入混叠信号(输入信号)和对该信号进行FIR滤波的结果。单击“Animate”运行程序,或按F10运行程序;调整观察窗口并观察滤波结果,单击“Halt”暂停程序运行,激活“ExpFIR.c”的编辑窗口;实验程序说明:该程序为51阶FIR低通滤波器算法程序,采用矩形窗函数实现,数组和xmid长度均为51,fs为采样频率,fstop为滤波器截止频率,可以修改以上参数来变滤波器性能。重新“RebuildAll”后,重新加载,单击“Animate”,可得到不同的实验结果。五、思考题1.如果给定通带截止频率和阻带截止频率以及阻带最小衰减,如何用窗函数法设计线性相位低通滤波器?写出设计步骤。2.定性说明本实验中,3dB截止频率的理论值在什么位置?是否等于理想低通的截止频率?六、实验报告要求1.简述FIR理论。2.主要实验步骤。3.描绘出输入、输出数组的曲线。4.回答思考题。七、FIR程序参数说明系统函数对应常系数线性差分方程:程序参数说明:ExternvoidInitC5402(void)ExternvoidREADAD7822(void)voidfirdes(intm,doublenpass);输入信号:输入信号经A/D转换后,写入地址为3000H~30FFH存储器,16位整型;输出信号:FIR低通滤波器输出,写入地址为3100H~31FFH存储,16位整型。八、程序流程图externvoidInitC5402(void);externvoidREADAD7822(void);/******************************************MainFunctionProgram****************************************/#include"stdio.h"#include"math.h"#definepi3.1415927doublenpass,h[51],x,y,xmid[51];intm=50;intn=256;voidfirdes(intm,doublenpass);main(){intxm,ym;int*px=(int*)0x3000;int*py=(int*)0x3100;doublefs,fstop,r,rm;inti,j,p,k;k=0;fs=181000;fstop=10000;npass=fstop/fs;for(i=0;i<=m;i++){xmid[i]=0;}InitC5402();/*initializeC5402DSP*/firdes(m,npass);for(;;){READAD7822();for(i=0;i<=n-1;i++){px=(int*)(0x3000+i);xm=*px;x=xm;for(p=0;p<=m;p++){xmid[m-p]=xmid[m-p-1];}xmid[0]=x;r=0;rm=0;for(j=0;j<=m;j++){r=xmid[j]*h[j];rm=rm+r;}y=rm;py=(int*)(0x3100+i);ym=(int)y;*py=ym;}k++;}}voidfirdes(intm,doublenpass){intt;for(t=0;t<=m;t++){h[t]=sin((t-m/2.0)*npass*pi)/(pi*(t-m/2.0));}if(t=m/2)h[t]=npass;}/*****EndofFile––ExpFIR.c**********************************************/实验四无限冲击响应滤波器(IIR)算法实验一、实验目的1.熟悉设计IIR数字滤波器的原理与方法;2.掌握数字滤波器的计算机仿真方法;3.通过观察对实际信号的滤波作用,获得对数字滤波的感性认识。二、实验设备计算机、CCS2.0版软件、实验箱、DSP仿真器三、实验原理1.无限冲击响数字滤波器的基础理论;2.模拟滤波器原理(巴特沃斯滤波器、切比雪夫滤波器、贝塞尔滤波器);3.双线性变换的设计原理。四、实验步骤A.实验前准备1)正确完成计算机、DSP仿真器和实验箱的连接后,系统上电;2)设置模数转换单元的拨动开关,1、5置“ON”,其它置“OFF”;3)用示波器分别观测信号源单元的S1和S2输出的模拟信号,分别调节信号波形选择、信号频率、信号输出幅值等旋钮,直到满意为止;建议:采用两路正弦波信号的混叠信号为输入信号;S1输出低频正弦波信号:峰峰值11V,频率<4KHz;S2输出高频正弦波信号:峰峰值5V,频率>40KHz;4)设置模数转换单元的拨动开关,1、5、6置“ON”,其它置“OFF”,即采样频率选择181KHz,两路信号混叠输入,可在引出点“A/DIN”处(模数转换单元)用示波器观察混叠信号。B.实验打开PC机界面下的CCS2.软件,用Project/Open打开C:\ti\mypjts\DSP54X-4目录下的“ExpIIR.pjt”工程文件;双击“ExpIIR.pjt”,双击“Source”可查看各源程序;并加载“ExpIIR.out”;在主程序中,K++处,设置断点;单击“Run”运行程序,程序将运行至断点处停止。用View/Graph/Time/Frequency打开一个图形观察窗口;采用双踪示波器在启动地址分别为0X3000H和0X3100H,长度为256的单元中数值的变化,数值类型为16位有符号整型变量,这两段存储单元中分别存放的是经A/D转换后的混叠信号和对该信号进行低通IIR滤波后的输出信号;参数设置:双踪观察输入的叠加波形与滤波后的输出波形:单击“Animate”运行程序,或按F10运行程序;调整观察窗口,并观察滤波结果;单击“Halt”暂停程序运行,激活“ExpIIR.c”的编辑窗口;该IIR低通滤波器性能参数为:采样频率为181KHz,通带内最大允许衰减3dB,阻带内最小衰减大于30dB,过渡带宽度约为36KHz;通带上限频率:4KHz;阻带下限截止频率:40KHz。可以修改以上参数归一化参数“nlpass”和“nlstop”来改变滤波器性能。修改“ExpIIR.c”程序中“nlpass”和“nlstop”参数可改变IIR低通滤波器的滤波性能。重新“RebuildALL”后,加载,单击“Animate”,可得到不同的结果。五、思考题1.简试述用双线性变换法设计数字滤波器的过程?2.实验中,计算每个二阶滤波器的输出序列时,如何确定计算点数?3.对滤波前后的信号波形,说明数字滤波器的滤波过程与滤波作用。六、实验报告要求1.简述IIR理论。2.主要实验步骤。3.描绘出输入、输出数组的曲线。4.对比FIR滤波器与IIR滤波器的异同;5.回答思考题。七、IIR程序参数说明系统函数: 对应的常系数线性差分方程是:实验流程图程序参数说明:ExternvoidInitC5402(void)voidREADAD7822(void)voidbiir2lpdes(doublefs,doublenlpass,doublenlstop,doublea[],doubleb[])IIR低通滤波器参数设计子程序参数说明:fs:采样频率;nlpass:通带上限频率归一化参数;nlstop:阻带下限截止频率归一化参数;设置时,采样频率对应为1,应使“nlpass”和“nlstop”两参数均要小于0.5,且“nlpass”要比“nlstop”小0.2,否则将不能满足阻带的最大衰减大于30dB。数组a:存放IIR低通滤波器传递函数的极点计算结果,浮点型;数组b:存放IIR低通滤波器传递函数的零点计算结果,浮点型;输入信号:输入信号经A/D转换后,写入地址3000H~30FFH单元,16位整型;输出信号:滤波后信号,写入地址3100H~31FFH单元,16位整型。externvoidInitC5402(void);externvoidREADAD7822(void);/*************************************************************************MainFunctionProgram***********************************************************************/#include"stdio.h"#include"math.h"#definepi3.1415926doublefs,nlpass,nlstop,nhpass,nhstop,a[3],b[3],x,y;voidbiir2lpdes(doublefs,doublenlpass,doublenlstop,doublea[],doubleb[]);voidbiir2lpdes(doublefs,doublenlpass,doublenlstop,doublea[],doubleb[]){inti,u,v;doublewp,omp,gsa,t;wp=nlpass*2*pi;o
xm=*px;
Input[i]=xm;
Impulse[i]=xm;
px++;
/*******************************************************************
**EndofFile––ExpConv.c
*******************************************************************/
voidConvolveok(
double*Input,//原始输入数据
double*Impulse,//冲击响应
double*Output,//卷积输出结果
Word16length//卷积序列长度
)
inti,k,p;
doubler;
p=0;
for(k=0;k<=length-1;k++)
Output[k]=0;
r=0;
for(i=0;i<=p;i++)
r=Input[k-i]*Impulse[i];
Output[k]=Output[k]+r;
p=p+1;
if(p>length-1)p=length-1;
elsep=p;
p=length-2;
for(k=length;k<=length+length-1;k++)
r=Input[length-1-i]*Impulse[length-1-p+i];
p=p-1;
return;
实验二FFT分析实验
1.加深对DFT算法原理和基本性质的理解;
2.熟悉FFT算法原理和FFT子程序的应用;
3.学习用FFT对连续信号和时域信号进行谱分析的方法,了解可能出现的分析误差及其原因,以便在实际中正确应用FFT。
计算机、CCS2.0版软件、实验箱、DSP仿真器
三、基本原理
1.DFT的定义:
将时域的采样变换成频域的周期性离散函数,频域的采样也可以变换成时域的周期性离散函数,这样的变换称为离散傅立叶变换,简称DFT。
2.FFT是DFT的一种快速算法,将DFT的N2步减少为(N/2)log2N步,极大地提高了运算的速度。
四、实验步骤
2)设置模数转换单元的拨动开关,1、5、6置“ON”,其它置“OFF”;
打开PC机界面下的CCS2.软件,Project/Open打开C:
\ti\mypjts\DSP54X-2目录下的“ExpFFT.pjt”工程文件;双击“ExpFFT.pjt”及“Source”可查看各源程序;并编译加载;在主程序”k++”处设置断点;单击“Run”运行程序,程序将运行到断点处停止;
用View/Graph/Time/Frequency打开一个图形观察窗口;设置该观察图形及参数;采用双踪观察启始地址分别为0x3000H和0x3080h,长度为128单元中数模变化,数值类型为16位有符号整型变量,这两段存储单元中分别存放的是经过AD782转换的混叠信号(信号源单元产生)和对该信号进行FFT变换的结果;
单击“Animate”运行程序,或按F10运行;调整观察窗口并观察输入信号波形及其FFT变换结果;调节信号源单元中两路信号的波形选择调节、频率调节、幅值调节,观察混叠信号以及其FFT变换结果如何变化;
单击“Halt”暂停程序运行,关闭窗口,本实验结束。
五、思考题
1.对于不同的N,幅频特性会相同吗?
为什么?
六、实验报告要求
1.简述FFT理论。
2.主要实验步骤。
3.描绘出输入、输出数组的曲线。
4.回答思考题。
程序参数说明
Externvoidinitial(void);
ExternvoidREADAD7822(void);
Voidkfft(pr,pi,n,k,fr,fi,l,il);基2快速傅立叶变换子程序,n为变换点数,应满足2的整数次幂,k为幂次(正整数);
数组x:
输入信号数组,A/D转换数据存放于地址为3000H~307FH存储器中,转为浮点型后,生成x数组,长度128;
数组mo:
FFT变换数组,长度28,浮点型,整型后,写入3080h~30FFH存储器中。
实验三有限冲击响应滤波器(FIR)算法实验
1.掌握用窗函数法设计FIR数字滤波器的原理和方法;
2.熟悉线性相位FIR数字滤波器特性;
3.了解各种窗函数对滤波特性的影响。
三、实验原理
1.有限冲击响应数字滤波器的基础理论;
2.模拟滤波器原理(巴特沃斯滤波器、切比雪夫滤波器、贝塞尔滤波器);
3.数字滤波器系数的确定方法。
3)用示波器分别观测信号源单元的S1和S2输出的模拟信号,分别调节信号波形选择、信号频率、信号输出幅值等旋钮,直到满意为止;
建议:
采用两路正弦波信号的混叠信号作为输入信号;
S1输出:
低频正弦波信号:
峰峰值11V,频率<4KHz;
S2输出:
高频正弦波信号:
峰峰值5V,频率>40KHz;
4)设置模数转换单元的拨动开关,1、5、6置“ON”,其它置“OFF”,即采样频率选择181KHz,两路信号混叠输入,可在“A/DIN”点用示波器观察混叠信号。
\ti\mypjts\DSP54X-3目录下的“ExpFIR.pjt”
工程文件;双击“ExpFIR.pjt”及“Source”可查看各源程序;并编译加载;在主程序中,K++处,设置断点;单击“Run”运行程序,程序将运行至断点处停止。
用View/Graph/Time/Frequency打开一个图形观察窗口;设置观察图形窗口变量及参数为:
采用双踪观察在启动地址分别为0x3000H和0x3100H,长度为256的单元中数值的变化,数值类型为16位有符号整型变量,这两段存储单元中分别存放的是经A/D转换后的输入混叠信号(输入信号)和对该信号进行FIR滤波的结果。
单击“Animate”运行程序,或按F10运行程序;调整观察窗口并观察滤波结果,单击“Halt”暂停程序运行,激活“ExpFIR.c”的编辑窗口;
实验程序说明:
该程序为51阶FIR低通滤波器算法程序,采用矩形窗
函数实现,数组和xmid长度均为51,fs为采样频率,fstop为滤波器截止频率,可以修改以上参数来变滤波器性能。
重新“RebuildAll”后,重新加载,单击“Animate”,可得到不同的实验结果。
1.如果给定通带截止频率和阻带截止频率以及阻带最小衰减,如何用窗函数法设计线性相位低通滤波器?
写出设计步骤。
2.定性说明本实验中,3dB截止频率的理论值在什么位置?
是否等于理想低通的截止频率?
1.简述FIR理论。
七、FIR程序参数说明
系统函数
对应常系数线性差分方程:
ExternvoidInitC5402(void)
voidfirdes(intm,doublenpass);
输入信号:
输入信号经A/D转换后,写入地址为3000H~30FFH存储器,16位整型;
输出信号:
FIR低通滤波器输出,写入地址为3100H~31FFH存储,16位整型。
八、程序流程图
/****************************************
**MainFunctionProgram
****************************************/
#definepi3.1415927
doublenpass,h[51],x,y,xmid[51];
intm=50;
intn=256;
voidfirdes(intm,doublenpass);
main()
intxm,ym;
int*py=(int*)0x3100;
doublefs,fstop,r,rm;
inti,j,p,k;
k=0;
fs=181000;
fstop=10000;
npass=fstop/fs;
for(i=0;i<=m;i++)
xmid[i]=0;
InitC5402();/*initializeC5402DSP*/
firdes(m,npass);
for(i=0;i<=n-1;i++)
px=(int*)(0x3000+i);
x=xm;
for(p=0;p<=m;p++)
xmid[m-p]=xmid[m-p-1];
xmid[0]=x;
rm=0;
for(j=0;j<=m;j++)
r=xmid[j]*h[j];
rm=rm+r;
y=rm;
py=(int*)(0x3100+i);
ym=(int)y;
*py=ym;
voidfirdes(intm,doublenpass)
intt;
for(t=0;t<=m;t++)
h[t]=sin((t-m/2.0)*npass*pi)/(pi*(t-m/2.0));
if(t=m/2)h[t]=npass;
/*****EndofFile––ExpFIR.c**********************************************/
实验四无限冲击响应滤波器(IIR)算法实验
1.熟悉设计IIR数字滤波器的原理与方法;
2.掌握数字滤波器的计算机仿真方法;
3.通过观察对实际信号的滤波作用,获得对数字滤波的感性认识。
1.无限冲击响数字滤波器的基础理论;
3.双线性变换的设计原理。
采用两路正弦波信号的混叠信号为输入信号;
S1输出低频正弦波信号:
S2输出高频正弦波信号:
4)设置模数转换单元的拨动开关,1、5、6置“ON”,其它置“OFF”,即采样频率选择181KHz,两路信号混叠输入,可在引出点“A/DIN”处(模数转换单元)用示波器观察混叠信号。
\ti\mypjts\DSP54X-4目录下的“ExpIIR.pjt”工程文件;双击“ExpIIR.pjt”,双击“Source”可查看各源程序;并加载“Exp
IIR.out”;在主程序中,K++处,设置断点;单击“Run”运行程序,程序将运行至断点处停止。
用View/Graph/Time/Frequency打开一个图形观察窗口;采用双踪示波器在启动地址分别为0X3000H和0X3100H,长度为256的单元中数值的变化,数值类型为16位有符号整型变量,这两段存储单元中分别存放的是经A/D转换后的混叠信号和对该信号进行低通IIR滤波后的输出信号;
参数设置:
双踪观察输入的叠加波形与滤波后的输出波形:
单击“Animate”运行程序,或按F10运行程序;调整观察窗口,并观察滤波结果;单击“Halt”暂停程序运行,激活“ExpIIR.c”的编辑窗口;该IIR低通滤波器性能参数为:
采样频率为181KHz,通带内最大允许衰减3dB,阻带内最小衰减大于
30dB,过渡带宽度约为36KHz;通带上限频率:
4KHz;阻带下限截止频率:
40KHz。
可以修改以上参数归一化参数“nlpass”和“nlstop”来改变滤波器性能。
修改“ExpIIR.c”程序中“nlpass”和“nlstop”参数可改变IIR低通滤波器的滤波性能。
重新“RebuildALL”后,加载,单击“Animate”,可得到不同的结果。
1.简试述用双线性变换法设计数字滤波器的过程?
2.实验中,计算每个二阶滤波器的输出序列时,如何确定计算点数?
3.对滤波前后的信号波形,说明数字滤波器的滤波过程与滤波作用。
1.简述IIR理论。
4.对比FIR滤波器与IIR滤波器的异同;
5.回答思考题。
七、IIR程序参数说明
系统函数:
对应的常系数线性差分方程是:
实验流程图
voidREADAD7822(void)
voidbiir2lpdes(doublefs,doublenlpass,doublenlstop,doublea[],doubleb[])
IIR低通滤波器参数设计子程序参数说明:
fs:
采样频率;
nlpass:
通带上限频率归一化参数;
nlstop:
阻带下限截止频率归一化参数;
设置时,采样频率对应为1,应使“nlpass”和“nlstop”两参数均要小于0.5,且“nlpass”要比“nlstop”小0.2,否则将不能满足阻带的最大衰减大于30dB。
数组a:
存放IIR低通滤波器传递函数的极点计算结果,浮点型;
数组b:
存放IIR低通滤波器传递函数的零点计算结果,浮点型;
输入信号经A/D转换后,写入地址3000H~30FFH单元,16位整型;
滤波后信号,写入地址3100H~31FFH单元,16位整型。
/***********************************************************************
***********************************************************************/
#definepi3.1415926
doublefs,nlpass,nlstop,nhpass,nhstop,a[3],b[3],x,y;
voidbiir2lpdes(doublefs,doublenlpass,doublenlstop,doublea[],doubleb[]);
inti,u,v;
doublewp,omp,gsa,t;
wp=nlpass*2*pi;
o
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1