DSP技术小报告Word格式.docx
《DSP技术小报告Word格式.docx》由会员分享,可在线阅读,更多相关《DSP技术小报告Word格式.docx(20页珍藏版)》请在冰豆网上搜索。
五.实验步骤……………………………………………………………………24
六.实验结果与分析……………………………………………………………25
无限冲激响应滤波器(IIR)算法实验……………………25
一.实验目的……………………………………………………………………25
二.实验设备……………………………………………………………………25
三.实验原理……………………………………………………………………25
四.试验程序……………………………………………………………………27
五.实验步骤……………………………………………………………………29
六.实验结果与分析……………………………………………………………29
实验一液晶显示器控制显示
一.实验目的
通过实验学习使用5509ADSP的扩展I/O端口控制外围设备的方法,了解液晶显示器的显示控制原理及编程方法。
二.实验设备
计算机,ICETEK-VC5509-A实验箱(或ICETEK仿真器+ICETEK-VC5509-A系统板+相关连线及电源)。
三.实验原理
1.EMIF接口:
TMS320C5509DSP的扩展存储器接口(EMIF)用来与大多数外围设备进行连接,典型应用如连接片外扩展存储器等。
这一接口提供地址连线、数据连线和一组控制线。
ICETEK-VC5509-A将这些扩展线引到了板上的扩展插座上供扩展使用。
2.液晶显示模块的访问、控制是由5509ADSP对扩展接口的操作完成。
控制口的寻址:
命令控制接口的地址为0x602800,数据控制接口的地址为0x602801和0x600802,辅助控制接口的地址为0x600801。
3.显示控制方法:
液晶显示模块中有两片显示缓冲存储器,分别对应屏幕显示的像素,向其中写入数值将改变显示,写入“1”则显示一点,写入“0”则不显示。
其地址与像素的对应方式如下:
左侧显示内存
右侧显示内存
Y=
1
·
62
63
行号
DB0
↓
X=0
DB7
7
8
55
X=7
56
-发送控制命令:
向液晶显示模块发送控制命令的方法是通过向命令控制接口写入命令控制字,然后再向辅助控制接口写入0。
下面给出的是基本命令字、解释和C语言控制语句举例:
.显示开关:
0x3f打开显示;
0x3e关闭显示;
.设置显示起始行:
0x0c0+起始行取值,其中起始行取值为0至63;
.设置操作页:
0x0b8+页号,其中页号取值为0-7;
.设置操作列:
0x40+列号,其中列号为取值为0-63;
-写显示数据:
在使用命令控制字选择操作位置(页数、列数)之后,可以将待显示的数据写入液晶显示模块的缓存。
将数据发送到相应数据控制I/O接口即可。
4.液晶显示器与DSP的连接:
5.数据信号的传送:
由于液晶显示模块相对运行在高主频下的DSP属于较为慢速设备,连接时需要考虑数据线上信号的等待问题;
电平转换:
由于DSP为设备,而液晶显示模块属于5V设备,所以在连接控制线、数据线时需要加电平隔离和转换设备,如:
ICETEK-CTR板上使用了74LS245。
6.实验程序流程图:
四.实验程序
#include"
"
unsignedintstr0[80]=
{
开始
初始化:
DSP时钟、EMIF、ICETEK-CTR
选通发光二极管显示阵列
有键盘输入?
显示字符
否
是
输入回车键?
将扫描码转换成字符
关闭打开的ICETEK-CTR设备
结束
验准备:
(1)连接实验设备。
(2)连接实验箱附带的键盘的PS2插头到ICETEK-CTR的“键盘接口”P8。
(3)将ICETEK-CTR板的供电电源开关拨动到“开”的位置。
2.设置CodeComposerStudio在硬件仿真(Emulator)方式下运行。
3.启动CodeComposerStudio:
选择菜单Debug→ResetCPU。
4.打开工程文件:
工程目录:
C:
\ICETEK\VC5509AS60\VC5509AS60\Lab0404-key\。
浏览文件的内容,理解各语句作用。
5.编译并下载程序。
6.运行程序观察结果:
运行程序后,按小键盘上的数字键,可以看到发光二极管显示阵列上显示相应的数字。
7.退出程序:
在小键盘上按“Enter”键,程序会退出并停止运行。
8.结束程序运行,退出CCS。
六.实验结果与分析
实验结果:
可以观察到发光二极管阵列显示键盘输入字符。
分析:
实现了按键控制指示灯的实验,每个按键对应的指示灯亮都符合要求;
在程序加入分支语句实现对不同键盘输入值的处理或支持控制型按键;
修改程序中
键值查找表可实现按键的重新布局或修改。
实验三蜂鸣器
一.实验目的
通过实验学习使用5509DSP的扩展端口控制外围设备信息的方法,掌握使用5509DSP通用计时器的控制原理及中断服务程序的编程方法;
了解蜂鸣器发声原理和音乐发生方法。
三.实验原理
1.EMIF接口:
2.蜂鸣器由DSP通用I/O管脚输出控制,可将此管脚上的频率输出转换成声音输出。
5509A的通用I/O口S13控制蜂鸣器的输出频率。
控制的方法是使用DSP通用定时器设置S13以一定的频率改变高低状态,输出方波。
对于通用定时器周期寄存器的设置,计数值为所需频率计数值的二分之一。
音乐的频率(C调):
CDEFGAB^C
1234567^1
264,297,330,352,396,440,495,528
3.蜂鸣器的连接:
由于选用的蜂鸣器所需电流较小,所以采用将DSP通用I/O引脚直接驱动的方式。
4.实验程序流程图:
中断服务程序开始
改变S13引脚的状态(通过不同的定时器周期设置产生不同频率)
中断服务程序结束
选通蜂鸣器
设置McBSP控制寄存器(S13输出)
初始化中断向量和定时器
初始化音长,音高等参数
根据预定的数据切换音符
//:
--DefineTimer0'
sRegisters---//
ioportunsignedint*tim0;
ioportunsignedint*prd0;
ioportunsignedint*tcr0;
ioportunsignedint*prsc0;
--EndofDefine-----------------//
#defineCTRSTATUS(*(unsignedint*)0x600800)//port8000
voidInitMcBSP();
main()
{
intnMusicCount;
intnWork;
PLL_Init(12);
SDRAM_init();
InitMcBSP();
CTRSTATUS=0x88;
CTRSTATUS=8;
CTRGR=8;
//BUZZE=1打开蜂鸣器,见ICETEK-CTR的全局控制寄存器描述
//设置合适的音长和音高
for(nWork=0;
nWork<
nMusicNumber;
nWork++)
{
music[nWork][0]*=10;
music[nWork][1]*=3;
music[nWork][1]/=12;
}
//设置DX0管脚为通用输出管脚以驱动蜂鸣器
//SPCR0&
=0x0fffeffff;
///XRST=0
//PCR0|=0x2000;
//RIOEN=1
InitInterrupt();
TIME_init();
nMusicCount=0;
while
(1)
nMusicCount++;
nMusicCount%=nMusicNumber;
if(music[nMusicCount][0]==0)
*tcr0&
=0x0fffffcff;
//静音
else
{
*prd0=music[nMusicCount][0];
//切换音符
*tcr0=0xe0;
}
Delay(music[nMusicCount][1]);
}
voidInitInterrupt(void)
//设置中断控制寄存器
IVPD=0x80;
IVPH=0x80;
IER0=0x10;
DBIER0=0x10;
IFR0=0xffff;
asm("
BCLRINTM"
);
voidinterruptTimer()//中断响应函数
PCR0^=0x20;
voidInitMcBSP()
//IOPin:
S15
//=0,=1,=1,=0/1
SPCR2_1&
=0x0fffe;
PCR1|=0x2800;
voidTIME_init(void)
tim0=(unsignedint*)0x1000;
prd0=(unsignedint*)0x1001;
tcr0=(unsignedint*)0x1002;
prsc0=(unsignedint*)0x1003;
*tcr0=0x04f0;
*tim0=0;
*prd0=0xffff;
*prsc0=2;
*tcr0=0x00e0;
五.实验步骤
1.实验准备:
2.设置CodeComposerStudio在硬件仿真(Emulator)方式下运行。
3.启动CodeComposerStudio:
4.打开工程文件:
\ICETEK\VC5509AS60\VC5509AS60\Lab0405-Speaker\。
5.编译并下载程序。
6.运行程序观察结果。
7.结束程序运行,退出CCS。
六.实验结果
可以听到蜂鸣器发出的音乐声。
程序中使用循环延时的方法掌握节拍,可考虑使用定时器计数改变音符,更复杂的方法可以产生语音效果。
实验四DSP算法实验
实验有限冲激响应滤波器(FIR)算法实验
1.掌握用窗函数法设计FIR数字滤波器的原理和方法。
2.熟悉线性相位FIR数字滤波器特性。
3.了解各种窗函数对滤波器特性的影响。
PC兼容机一台,操作系统为Windows2000(或Windows98,WindowsXP,以下默认为Windows2000),安装CodeComposerStudio软件。
1.有限冲激响应数字滤波器的基础理论(请参考相关书籍)。
2.模拟滤波器原理(巴特沃斯滤波器、切比雪夫滤波器、椭圆滤波器、贝塞尔滤波器)。
3.数字滤波器系数的确定方法。
4.根据要求设计低通FIR滤波器。
要求:
通带边缘频率10kHz,阻带边缘频率22kHz,阻带衰减75dB,采样频率50kHz。
设计:
-过渡带宽度=阻带边缘频率-通带边缘频率=22-10=12kHz
-采样频率:
f1=通带边缘频率+(过渡带宽度)/2=10000+12000/2=16kHz
Ω1=2πf1/fs=π
-理想低通滤波器脉冲响应:
h1[n]=sin(nΩ1)/n/π=sinπn)/n/π
-根据要求,选择布莱克曼窗,窗函数长度为:
N=过渡带宽度=*50/12=
-选择N=25,窗函数为:
w[n]=+(2πn/24)+(4πn/24)
-滤波器脉冲响应为:
h[n]=h1[n]w[n]|n|≤12
h[n]=0|n|>12
-根据上面计算,各式计算出h[n],然后将脉冲响应值移位为因果序列。
-完成的滤波器的差分方程为:
y[n]=[n-2][n-3][n-4]+[n-5]
[n-6][n-7][n-8][n-9]
+[n-10]+[n-11]+[n-12]
+[n-13][n-14][n-15]
+[n-16][n-17][n-18]+[n-19]
[n-20][n-21]+[n-22]
4.程序流程图:
初始化工作变量
调用波形发生子程序产生混叠的波形(高频+低频)
调用FIR滤波子程序计算当前输出
波形发生
计算步长
用标准C的sin函数和cos函数计算当前波形值
返回波形值
FIR滤波
用滤波器系数乘以保存的N-1个输入值和当前输入值并求和
返回计算结果
#include<
>
#defineFIRNUMBER25
#defineSIGNAL1F1000
#defineSIGNAL2F4500
#defineSAMPLEF10000
#definePI
floatInputWave();
floatFIR();
floatfHn[FIRNUMBER]={,,,,,,,
,,,,,,
,,,,,
,,,
};
floatfXn[FIRNUMBER]={};
floatfInput,fOutput;
floatfSignal1,fSignal2;
floatfStepSignal1,fStepSignal2;
floatf2PI;
inti;
floatfIn[256],fOut[256];
intnIn,nOut;
nIn=0;
nOut=0;
f2PI=2*PI;
fSignal1=;
fSignal2=PI*;
fStepSignal1=2*PI/30;
fStepSignal2=2*PI*;
fInput=InputWave();
fIn[nIn]=fInput;
nIn++;
nIn%=256;
fOutput=FIR();
fOut[nOut]=fOutput;
nOut++;
/*breakpoint*/
if(nOut>
=256)
nOut=0;
floatInputWave()
for(i=FIRNUMBER-1;
i>
0;
i--)
fXn[i]=fXn[i-1];
fXn[0]=sin((double)fSignal1)+cos((double)fSignal2)/;
fSignal1+=fStepSignal1;
if(fSignal1>
=f2PI)fSignal1-=f2PI;
fSignal2+=fStepSignal2;
if(fSignal2>
=f2PI)fSignal2-=f2PI;
return(fXn[0]);
floatFIR()
floatfSum;
fSum=0;
for(i=0;
i<
FIRNUMBER;
i++)
fSum+=(fXn[i]*fHn[i]);
return(fSum);
-设置软件仿真模式。
-启动CCS。
2.打开工程,浏览程序:
工程目录为
\ICETEK\VC5509AES60\VC5509AES60\Lab0501-FIR\。
3.编译并下载程序。
4.打开观察窗口。
*选择菜单View->
Graph->
Time/Frequency…,进行如下设置:
在弹出的图形窗口中单击鼠标右键,选择“ClearDisplay”。
5.设置断点:
在有注释“breakpoint”的语句设置软件断点。
6.运行并观察结果:
(1)选择“Debug”菜单的“Animate”项,或按F12键运行程序。
(2)观察“Input”、“Output”窗口中时域图形;
观察滤波效果。
(3)鼠标右键单击“Input”和“Output”窗口,选择“Properties…”项,设置“DisplayType”为“FFTMagitude”,再单击“OK”按钮结束设置。
(4)观察“Input”、“Output”窗口中频域图形;
理解滤波效果。
7.退出CCS。
输入波形为一个低频率的正弦波与一个高频的正弦波叠加而成。
通过观察频域和时域图,得知:
输入波形中的低频波形通过了滤波器,而高频部分则大部分被滤除。
实验无限冲激响应滤波器(IIR)算法实验
1.掌握设计IIR数字滤波器的原理和方法。
2.熟悉IIR数字滤波器特性。
3.了解IIR数字滤波器的设计方法。
1.无限冲激响应数字滤波器的基础理论。
4.根据要求设计低通IIR滤波器:
低通巴特沃斯滤波器在其通带边缘1kHz处的增益为-3dB,12kHz处的阻带衰减为30dB,采样频率25kHz。
-确定待求通带边缘频率fp1Hz、待求阻带边缘频率fs1Hz和待求阻带衰减-20logδsdB。
模拟边缘频率为:
fp1=1000Hz,fs1=12000Hz
阻带边缘衰减为:
-20logδs=30dB
-用Ω=2πf/fs把由Hz表示的待求边缘频率转换成弧度表示的数字频率,得到Ωp1和Ωs1。
Ωp1=2πfp1/fs=2π1000/25000=π弧度
Ωs1=2πfs1/fs=2π12000/25000=π弧度
-计算预扭曲模拟频率以避免双线性变换带来的失真。
由w=2fstan(Ω/2)求得wp1和ws1,单位为弧度/秒。
wp1=2fstan(Ωp1/2)=弧度/秒
ws1=2fstan(Ωs1/2)=弧度/秒
-由已给定的阻带衰减-20logδs确定阻带边缘增益δs。
因为-20logδs=30,所以logδs=-30/20,δs=
-计算所需滤波器的阶数:
因此,一阶巴特沃斯滤波器就足以满足要求。
-一阶模拟巴特沃斯滤波器的传输函数为:
H(s)=wp1/(s+wp1)=(s+
由双线性变换定义s=2fs(z-1)/(z+1)得到数字滤波器的传输函数为: