DSP实验报告2.docx

上传人:b****7 文档编号:8691813 上传时间:2023-02-01 格式:DOCX 页数:12 大小:117.71KB
下载 相关 举报
DSP实验报告2.docx_第1页
第1页 / 共12页
DSP实验报告2.docx_第2页
第2页 / 共12页
DSP实验报告2.docx_第3页
第3页 / 共12页
DSP实验报告2.docx_第4页
第4页 / 共12页
DSP实验报告2.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

DSP实验报告2.docx

《DSP实验报告2.docx》由会员分享,可在线阅读,更多相关《DSP实验报告2.docx(12页珍藏版)》请在冰豆网上搜索。

DSP实验报告2.docx

DSP实验报告2

一、实验目的

1.1、掌握TMS320系列DSP的性能、结构原理、指令系统及编程方法;

2、熟练掌握CCS集成开发环境的常用开发、调试功能;

3、利用MATLAB语言与开发环境进行FIR滤波器的高级语言设计与仿真;

4、根据MATLAB仿真结果,进行基于CCS的高级语言和汇编语言仿真;

5、在DSP实验板上实时实现该滤波器。

二、试验设备

1、TMS320C5402DSP实验开发板1块,JTAG仿真探头1个,5V交流适配器1个;

2、音频信号源1个,耳机1对;

3、微型计算机1台。

三、试验内容

1、试验硬件简介:

本试验的板子采用南京航空航天大学DSP实验室自己开发的试验板子,它有以下几个特点:

1)试验板子的核心处理器是TMS320VC5402;

2)外部单5V电源供电;

3)提供了与计算机串行口的数据通信功能,可以与计算机交换数据;

4)提供了语音输入和语音输出的街口,可以进行语音信号的分析与处理;

5)提供了可与外部相连接的EHPI8、并口、McBSP口等VC5402片上外设接口。

通过这些接口,可以方便的对该试验板子进行功能扩展;

6)该试验板子提供大容量的外部程序和数据RAM以及FLASH存储空间,方便学生开发和使用;

7)试验板子集成了一块ALTERA公司CPLD(EPM7128S),可以通过该CPLD实现对试验板子上各种逻辑的控制管理;

8)试验板子提供了必要的复位,测试和开关插销,为用户调试和测试提供了方便。

本试验用到了试验板子辅助器件为语音处理部分的硬件SRAM、闪烁灯器件等等。

2、在Matlab实现算法仿真

试验目的是设计一个64阶FIR数字低通滤波器,其参数如下:

截至频率为3000Hz,采样频率为2000Hz。

利用Matlab工具箱设计FIR数字滤波器,其设计语言如下:

>>c=fir1(63,0.3);

>>freqz(c,1,4096);

>>plot(c);

得到数字滤波器系数如下:

-0.00079887,-0.00039007,0.0004368,0.0011085,0.00095091,

-0.00025572,-0.0017797,-0.002173,-0.00046388,0.0025341,

0.0042491,0.0023285,-0.0027578,-0.0070632,-0.005921,0.0015267,0.010096,0.011687,0.0023706,-0.012368,-0.019945,-0.010603,0.012305,0.031247,0.026339,-0.0069494,-0.048111,-0.060186,-0.01384,0.088797,0.20863,0.289,0.289,0.20863,

0.088797,-0.01384,-0.060186,-0.048111,-0.0069494,0.026339,

0.031247,0.012305,-0.010603,-0.019945,-0.012368,0.0023706,

0.011687,0.010096,0.0015267,-0.005921,-0.0070632,-0.0027578,

0.0023285,0.0042491,0.0025341,-0.00046388,-0.002173,-0.0017797,-0.00025572,0.00095091,0.0011085,0.0004368,-0.00039007,-0.00079887

得到数字滤波器的时域与频域图如下:

图一数字滤波器时域图

图二数字滤波器的幅频相频图

设计一正弦函数进行仿真:

sin(2*Pi*10000*t)+sin(2*Pi*3000*t)其中10000与3000为频率,仿真结果看能否过滤高频10000。

仿真的程序如下:

>>t=0:

0.00002:

0.012

>>a=sin(2*3.14*10000*t)+sin(2*3.14*3000*t);

>>plot(t,a)

>>figure

(2);

>>c=fir1(63,0.3);

>>freqz(c,1,4096);

>>figure(3)

>>y1=filter(c,1,a);

>>plot(t,y1);

>>figure(4);

>>freqz(y1,1,4096);

>>figure(5);

>>plot(c);

结果如图所示:

图三输入信号时域图

图四输入信号幅频和相频图

图五输出信号幅频和相频图

3、DSP程序设计:

1)存储器的选择

该试验板的存储分配为:

程序区(64K×8),0x00000h~0x1FFFFh片外SRAM;0x20000h~0x7FFFFh片外FLASH。

读数据区(16K+32K)0x0000h~0x3FFFh片内DRAM;0x8000h~0xFFFFh片外FLASH读。

试验选用SRAM、片内DARAM和片外FLASH。

2)片上外设的设计

该试验只用了(多通道缓冲串行口)McBSPs,5402有两个McBSPs,对它的设置和操作事通过设置相关的内存映射控制寄存器来完成,McBSPs寄存器的映射方法采用子地址区分的多地址映射一址的方法。

该试验McBSPs定义如下:

其定义在fir_face.h文件

#defineSPSA_ADDR(port)(port?

0x48:

0x38)

#defineSPSD_ADDR(port)(port?

0x49:

0x39)

 

#defineDRR2_ADDR(port)(port?

0x40:

0x20)

#defineDRR1_ADDR(port)(port?

0x41:

0x21)

#defineDXR2_ADDR(port)(port?

0x42:

0x22)

#defineDXR1_ADDR(port)(port?

0x43:

0x23)

 

#defineMCBSP_ACCSUB_ADDR(port)(port?

0x49:

0x39)

 

#defineSPCR1_SUBADDR0x00

#defineSPCR2_SUBADDR0x01

#defineRCR1_SUBADDR0x02

#defineRCR2_SUBADDR0x03

#defineXCR1_SUBADDR0x04

#defineXCR2_SUBADDR0x05

#defineSRGR1_SUBADDR0x06

#defineSRGR2_SUBADDR0x07

#defineMCR1_SUBADDR0x08

#defineMCR2_SUBADDR0x09

#defineRCERA_SUBADDR0x0A

#defineRCERB_SUBADDR0x0B

#defineXCERA_SUBADDR0x0C

#defineXCERB_SUBADDR0x0D

#definePCR_SUBADDR0x0E

//上面定义了McBSP个端口及子地址?

各个端口的初始化如下:

//各个端口的初始化值

#definebsp_SPCR110x0021

#definebsp_SPCR210x0201

#definebsp_PCR10x000C

#definebsp_RCR110x0040

#definebsp_RCR210x0000

#definebsp_XCR110x0040

#definebsp_XCR210x0000

#definebsp_SRGR110x0000

#definebsp_SRGR210x0000

#definebsp_MCR110x0000

#definebsp_MCR210x0000

3)CUP的参数设计

McBSP每接受1024个数据闪烁灯亮一次,由引脚XF激发。

则ST1的定义与初始化为:

#definereg_ST10x0007

其他的寄存器的定义及初始化如下:

#defineST10x07

#defineST0_ADDR0x06

#definePMST0x001D

#defineSWWSR0x0028

#defineSWCR0x002B

#defineBSCR0x0029

#defineCLKMD0x0058

#definePMST_VAL0x00A0

#defineSWWSR_VAL0x8fff

#defineSWCR_VAL0x0001

#defineBSCR_VAL0x8802

#defineCLKMD_VAL0x9FF7

初始化工作在函数init_board()完成。

4)FIR滤波器设计

采用直接寻址方式进行FIR滤波器设计,C语言实现如下:

doublefiro(M,h,w,x)

doubleh[64],w[64],x;

intM;

{

inti;

doubley;

w[0]=x;

for(y=0,i=0;i

y+=h[i]*w[i];

for(i=M-1;i>=1;i--)

w[i]=w[i-1];

returny;

}

参数说明:

h滤波器的系数

w计算时候所需的缓存

x输入的数据

y计算结果

5)算法设计

分两部分来完成两个功能。

第一部分:

输入信号为sin函数,用低通数字滤波器对它进行滤波。

在dsp上检测滤波器的性能。

此功能模块。

第二部分:

对McBSPs接口1接收到的语音信号进行滤波,然活由McBSPs接口2把信号送出去。

主要由54xdsp.lib的函数fir来完成。

6)中断程序的设计(见vectors.asm)

7)cmd文件的设计见fir.cmd

4、滤波器的验证

滤波器的验证主要是对sin信号的验证。

输入信号见下图:

图六输入信号幅频图

滤波器的图像见下图:

图七滤波器的幅频图

图八滤波器的时域图

输出信号的幅频图见下图

图九输出信号的幅频图

6、试验结论:

从对sin函数的滤波来看,基本上能满足滤波器的要求,通过对语音信号的验证,基本上达到效果。

由于FIR的阶数取64,有些太小,所以有些缺陷。

四、参考文献

1、戴明桢、周建江,TMS320C54x数字信号处理器结构、原理及应用,北航出版社,2001年

2、张雄伟等,DSP芯片的原理与开发应用(第二版),电子工业出版社,2000年

3、任丽香等,TMS320C6000系列DSPs的原理与应用,电子工业出版社,2000年

4、张勇,C/C++语言硬件程序设计,西安电子科技大学出版社,2004年

5、尹勇、欧关军、关荣锋,dsp集成开发环境ccs开发指南,北京航空航天大学出版社,2003年

6、苏金明、张莲花、刘波,matlab工具箱应用,电子工业出版社,2004年

五、附录

1、fir_face.h试验板的接口设计

2、fir_func.h子程序设计

3、fir.c主程序设计

4、vectors.asm中断程序设计

5、fir.cmd存储器配置文件

六、致谢

通过本次试验我对dsp的开发过程有更深刻的了解,也加深对dsp的理解。

感谢南京航空航天大学dsp试验室给了我这样一次的机会。

感谢周建江老师对我们一年来dsp知识的教导,也感谢李老师对我们dsp试验的指导。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 生物学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1