




已阅读5页,还剩20页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
DSP实验报告Digital Signal Processing Experimental Report 实验一:TMS320VC5402定时器实验实验二:DSP 基于DSPLib的FFT程序设计实验三:DSP 基于DSPLib的滤波器程序设 指导老师: 班级:140703 姓名: 学号: 2016年5月 1、 TMS320VC5402定时器实验一 实验目的1. 了解DSP汇编程序与C语言程序的构成; 2. 了解DSP程序各段的含义; 3. 熟悉如何编写中断服务程序; 4. 掌握片内定时器的设置方法;5. 掌握长时间间隔的定时器的处理二 实验内容 1. DSP的初始设置; 2. DSP中断向量表的建立;3. 定时器的使用;设实验板时钟频率为20MHz,编程实现以下要求: 1、TMS320C5402的时钟频率为100 MHz2、TMS320C5402XF端输出一个周期为500ms的方波,周期性地点亮LED 3、采用定时中断方法实现4、用C语言编程,画出程序流程图并给出源代码。5、上机调试。三 实验背景知识 1 通用TIMER 简介TMS320VC5402 的定时器的说明:VC5416 中有两个可编程的片上定时器,总共包含有三个可由用户设置的寄存器,并可以申请主机的中断。这三个寄存器分别为TIM、PRD、TCR。这些寄存器与对应的存贮空间地址如下表所示: 时间寄存器(TIM)是一个16 位的存贮器映射寄存器,它的值由周期寄存器来进行装载,并且做减一操作。周期寄存器(PRD)是一个16 位的存贮器映射寄存器,它是用来重装时间寄存器(TIM)寄存器的值的。定时器控制寄存器(TCR)是一个16 位的存贮器映射寄存器,包含了定时器的控制与状态信息。2、CMD 文件简介cmd 文件用于DSP 代码的定位。由3 部分组成: 1、(1)输入输出定义:.obj 文件:链接器要链接的目标文件。.lib 文件:链接器要链接的库文件。 .map 文件:链接器生成的交叉索引文件。.out 文件:链接器生成的可执行代码;链接器选项。 (2) MEMORY 命令:描述系统实际的硬件资源。 (3) SECTIONS 命令:描述段如何定位。 下面例子则可说明其基本格式: -o sample.out (可缺省) -m sample.map (可缺省) -stack 100 (可缺省) sample.obj meminit.obj (可缺省) -l rts.lib (可缺省)MEMORY PAGE 0: RESEVE: org = 00h len = 0x80 PAGE 0: PROG1: org = 0x0100 len = 0x1200 PAGE 0: VECT: org = 0x0080, len = 0x80 PAGE 1: RESEVE1: org = 00h len = 0x1300 PAGE 1: DARAM2: org = 0x1300 len = 0x400 PAGE 1: DARAM1: org = 0x1700 len = 0x2900 SECTIONS .text : PROG1 PAGE 0 .cinit : PROG1 PAGE 0 .switch: PROG1 PAGE 0 .vectors: VECT PAGE 0 .const: DARAM1 PAGE 1 .bss : DARAM1 PAGE 1 .stack : DARAM2 PAGE 1 .system: DARAM2 PAGE 1 .data : DARAM2 PAGE 1 下面介绍一下CMD 文件中常用的程序段名与含义 .cinit 存放C 程序中的已初始化的变量初值和常数表; .const 存放C 程序中的字符常量和用const 声明的常量; .text 存放C 程序的代码;.bss 为C 程序中的未初始化的全局和静态变量保留存储空间;.far 为C 程序中用far 声明的全局和静态变量保留空间;.stack 为C 程序系统堆栈保留存储空间,用于保存返回地址、函数间的 参数传递、存储局部变量和保存中间结果;.sysmem 用于C 程序中malloc、calloc 和realloc 函数动态分配存储空 间 .vectors 用于自定义的“.vectors”段,这里是中断向量表 .switch 用于C程序中的switch语句 .data 已初始化的数据段 3 中断向量表文件中断服务程序的地址(中断向量)要装载到存储器的合适区域。一般用中断向量表文件编制中断向量表,中断向量表文件多采用汇编语言编写;在文件中一般用汇编指令.sect 来生成一个表,表中各中断占4个字。这个表包含中断向量的地址和跳转指令。因为中断跳转地址的标志符在汇编语言模块外部使用,所以标志符用.ref 或.global定义。4、GEL文件GEL文件有两大作用:(1)配置CCS工作环境。(2)直接访问目标处理器(包括软硬件访真器),在这是主要使用GEL文件的初始化DSP。以下面的例子介绍一下GEL 文件的构成#define PRD0 0x0025u #define TCR0 0x0026u#define PRD1 0x0031u #define TCR1 0x0032uStartUp() GEL_MapOn(); /*存储空间打开*/ GEL_MapReset(); /*存储空间复位*/GEL_MapAdd(0x80u,0,0x3F80u,1,1); /* 定义程序空间0x800x3FFF可读写 */ GEL_MapAdd(0x4000u,0,0xC000u,1,1);/* 定义程序空间0x40000xFFFF 可读写 */* 定义数据空间00xFFFF 可读写 */ GEL_MapAdd(0x0u,1,0x60u,1,1);/*MMRs*/ GEL_MapAdd(0x60u,1,0x3FA0u,1,1);/*DARAM*/ GEL_MapAdd(0x4000u,1,0xC000u,1,1); /* External */ 实验流程图: 四 、实验步骤1. 根据实验要求编写出周期500ms方波的汇编语言源代码,和C语言源代码(C语言中加入外部中断,通过按键改变方波频率)。2. 编译没有错误后下载到C5402开发板中,运行程序,观察LED是否周期性亮灭。3. 下载C程序到开发板上,通过按下链接在外部中段上的按键,观察能否改变LED灯的亮灭频率。五、程序源代码1、主函数:#include timer.h int t0_count;void main() CLKMD=0x00; /清零 while(CLKMD&01); CLKMD=0x47ff; /开启PLL方式且采用5倍频 PMST=0x00a0; /将片内数据RAM映射到程序空间和数据空间并从0080 地址开始 coeff=1; t0_count=250*coeff; asm( SSBX INTM); /关闭所有可屏蔽的中断 ST1=ST1|0x0800; /INTM=1 TCR=0x0010;/停止定时器,且当PSC减到0后,TIM减1;当调试程序断点时定时器立即停止工作 PRD=9999; /定时周期寄存器存放定时时间常数,将值赋给TIM TIM=9999; /定时寄存器 TCR=0x669; /定时控制寄存器,启动定时器,将PRD中的数加载到TIM中 IFR=0x108; /中断标志寄存器,启动外部中断INT3和定时器中断0 (TINT0)的标志位 IMR=0x108; /中断屏蔽寄存器,开放外部中断INT3和定时器中断0 (INT0)的屏蔽位asm( RSBX INTM); /开放全部可屏蔽中断 ST1=ST1&0xf7ff; while(1) while(t0_count0); t0_count=250*coeff; if(ST1&0x2000) ST1=ST1&0xdfff; /XF=0,即熄灭LED灯 else ST1=ST1|0x2000; /XF=1,即点亮LED灯 interrupt void timer() t0_count-; interrupt void change_frequency() coeff+; /改变XF引脚输出的信号的频率 if (coeff5) coeff=1; 2、 中断函数: .sect .vectors .ref _c_int00 .ref timer rs: BD _c_int00 ; Rest nop nopnmi: .space 4*16 ;NMI, SINT16 sint17:.space 4*16 ;SINT17 sint18: .space 4*16 ;SINT18 sint19: .space 4*16 ;SINT19 sint20: .space 4*16 ;SINT20 sint21: .space 4*16 ;SINT21 sint22: .space 4*16 ;SINT22 sint23: .space 4*16 ;SINT23 sint24: .space 4*16 ;SINT24 sint25: .space 4*16 ;SINT25 sint26: .space 4*16 ;SINT26 sint27: .space 4*16 ;SINT27 sint28: .space 4*16 ;SINT28 sint29: .space 4*16 ;SINT29 sint30: .space 4*16 ;SINT30int0: .space 4*16 ;INT0, SINT0 int1: .space 4*16 ;INT1, SINT1 int2: .space 4*16 ;INT2, SINT2 tint0: BD timer ;TINT0, SINT3 nop nopbrint0: .space 4*16 ;BRINT0, SINT4 bxint0: .space 4*16 ;BXINT0, SINT5dmac0: .space 4*16 ;DMAC0, brint2, SINT6dmac1: .space 4*16 ;DMAC1, bxint2, SINT7 int3: .space 4*16 ;INT3, SINT8hpint: .space 4*16 ;HPINT, SINT9brint1: .space 4*16 ;BRINT1 or DMAC2, SINT10 bxint1: .space 4*16 ;BXINT1 or DMAC3, SINT11 dmac4: .space 4*16 ;DMAC4, SINT12 dmac5: .space 4*16 ;DMAC5, SINT13 rsvd1: .space 4*16 ;reserved rsvd2: .space 4*16 ;reserved .end3、 链接文件: MEMORYPAGE 0: RESERVER: origin = 0x00, len = 0x80 INT_VECT: origin = 0x80, len = 0x80 PROG_RAM: origin = 0x100, len = 0x1000PAGE 1: DATA_1: origin = 0x1100, len = 0x0e00 DATA_2: origin = 0x2000, len = 0x2000 SECTIONS .vectors: INT_VECT PAGE 0 .text: PROG_RAM PAGE 0 .stack: DATA_1 PAGE 1 vars: DATA_1 PAGE 1 .data: DATA_2 PAGE 1 .bss: DATA_2 PAGE 1 六、实验结果及体会实验结果应该是每次按下按键,亮灭周期发生变化。第一次写入程序没成功,按按键亮灭周期也发生变化,但是出现这种情况是实验板内部已经因为上一个人在试验中写入了程序,所以会出现插电后,程序没写入也能够按键改变亮灭周期。因为第一次接触实验板,写入程序还是有难度,后来由于芯片配置出现错误,后来在老师的指导下,将程序成功写入。在实验中需要每一步都细心的去完成,还需要多与同学讨论,多向老师请教,这样才能在实验中学到更多的东西。而且控制流水灯让我对电子这个方面充满了向往的兴趣。调试程序需要花费大量的时间来专研。二、DSP 基于DSPLib的FFT程序设计一、 实验目的1、了解FFT的原理;2、了解在DSP中FFT 的设计及编程方法;3、熟悉对DSPLIB的调用方法;二 、实验内容编写256点的时序列FFT的DSP程序,利用数据文件对FFT程序进行调试。3、 实验要求1. 产生256点的数据文件,表示方波、正玄波等信号;2. 编写256点的时序列FFT的DSP程序对上述信号进行傅里叶变换;3. 利用CCS中VIEW菜单中的Graph调试工具观察信号时域波形及其频谱。四、实验原理1、时间抽选基2FFT算法的基本原理。 在xn为复数序列的情况下,完全可以直接运算N 点DFT 需要(N-1)2次复 数乘法和N(N-1)次复数加法。因此,对于一些相当大的N 值来说,直接 计算它的DFT 所需计算量很大。 FFT(快速傅立叶变换)的基本思想为:将原来的N点序列最终分成分成两 点为一组序列,并将这些序列的DFT 通过蝶形运算(见下图)组合起来得到 原序列的DFT。 N点FFT 仅需NNN次复数乘法和Nlog2次复数加法。2、 DSPLib的应用。 CCS提供DSPLib,其中包含了基本的数学计算和数字信 号处理常用算法模块的函数,可直接调用这些函数实现一些数字信号处理算法。本实验主要使用了DSPLib的cbrev,rfft两个函数实现数字序列的逆序和DFT的计算。dsplib位于C:tic5400dsplib 其用户手册为:TMS320C54x dsp library programersreference.pdf 3、CCS中的graph详细使用说明。CCS提供显示时频图(Time/Frequency),运算结果也可以通过CCS提供的图形功能经过一定处理显示出来,CCS提供的图形显示包括时频分析、星座图、眼图和图像显示。如表1所示,用户准备好需要显示的数据后,选择命令ViewGraph,设置相应的参数,即可按所选图形类型显示数据。程序流程图为: 五、实验步骤1、打开CCS,并设置好相对应的参数,采用软件仿真。2、编写主函数,包含必要的头文件,并设置好相对应的路径。完毕将支持的库函数加入工程中。3、接着编写中断向量表,中断向量表只要和主函数main中断一一对应就行。4、编译,看一下会产生哪些链接文件,然后编写链接文件。在这里注意字对齐的格式要求。5、编译通过后,用软件仿真,选择命令ViewGraphTime/Frequency对话框,验证是否有逻辑错误,然后进行修改。六、程序源代码1、主函数:#include #include #include #define Nx 1024 #define pi 3.1415924#define PMST (unsigned int*)0x1Dint i,j;int scale=1; int noscale=0;DATA xNx,x_temptNx; DATA yNx/2;#pragma DATA_SECTION(x,.input)#pragma DATA_SECTION(x_tempt,.input_tempt) #pragma DATA_SECTION(y,.output) static void dataio();void main() PMST=0x00a0; dataio();for(i=0;iNx;i+) x_tempti=xi; cbrev(x,x,Nx/2); rfft(x,Nx,scale); y0=x0;yNx/2-1=abs(x1);j=1;for(i=2;iFFT_VECTPAGE0 实验需要不断的测试,来验证自己心中的想法,从而不断地增加对于这门课程的专研与制作开发当中去。 三、DSP 基于DSPLib的滤波器程序设计一、 实验目的1、了解FIR、IIR数字滤波器的原理。 2、掌握FIR、IIR数字滤波器的设计方法。3、熟悉对DSPLib的调用方法以及数字滤波器在DSP系统中的实现。二 、实验内容(要求)现有连续时间信号,已基于采样频率fs=16000Hz对x(t)采样,获得离散数据x(n)。设计一个FIR(或IIR)数字低通滤波器,对数据x(n)滤波,滤除x(n)中2000Hz频率分量,保留1000Hz频率分量。 实验要求:1、设计FIR(或IIR)数字低通滤波器,得到滤波器的有关参数;2、基于DSPLib编制DSP的C语言程序,实现上述低通滤波,并对数据x(n)滤波。 3、利用CCS中VIEW菜单中的Graph调试工具观察信号时域波形及其频谱。三 、实验原理1、FIR、IIR数字滤波器的基本原理。IIR滤波器传递函数包括零点和极点两组可调因素,对极点的惟一限制是在单位圆内。因此可用较低的阶数获得高的选择性,所用的存储单元少,计算量小,效率高。但是这个高效率是以相位的非线性为代价的。选择性越好,则相位非线性越严重。FIR滤波器传递函数的极点固定在原点,是不能动的,它只能靠改变零点位置来改变它的性能。所以要达到高的选择性,必须用较高的阶数;对于同样的滤波器设计指标,FIR滤波器所要求的阶数可能比IIR滤波器高5-10倍,结果,成本较高,信号延时也较大;如果按线性相位要求来说,则IIR滤波器就必须加全通网络进行相位校正,同样要大大增加滤波器的阶数和复杂性。而FIR滤波器却可以得到严格的线性相位2、 MATLAB的数字滤波器设计工具FDAtool。 2.1 启动滤波器设计分析器在MATLAB的start菜单中选择Toolboxes-Filter Design-Filter Design & Analysis Tools(fdatool),或者在命令行中输入fdatool来启动滤波器设计分析器。启动后界面如图1所示: 2.2 滤波器设计在选项中选择或输入滤波器参数,然后点击“Design Filter”按钮完成滤波器设计。设计成功后的结果如图2所示。 2.3 导出FIR滤波器系数。在fdatool中,选择Targets-Code Composer Studio IDE。在出现的对话框中选择输出文件类型为C.header file,输出系数类型为signed 16-bit integer,如图2所示。点击OK按钮,选择路径,即可输出前一步设计出的FIR滤波器系数表。 3、DSPLib的应用CCS提供DSPLib,其中包含了基本的数学计算和数字信号处理常用算法模块的函数,可直接调用这些函数实现一些数字信号处理算法。本实验主要使用了fir、firs、firs2、iircas4、iircas5、iircas5I等函数实现数字滤波。实验程序流程图为: 四 、实验步骤1、打开CCS,并设置好相对应的参数,采用软件仿真。2、利用 Matlab 产生带通滤波信号用于滤波器测试。在 Matlab 中运行后将会生成 input.dat 文件。该数据文件中含有 1000Hz、2000Hz 两种频率的信号,用于滤波器滤波效果测试3、编写主函数,包含必要的头文件,并设置好相对应的路径。完毕将支持的库函数加入工程中。编译成功后会在”/debug”文件夹下产生*.out 文件,在 CCS 软件的 File-Load Program 里打开这个.out 文件。4、将滤波器设计文件载入到内存中。选择 File-Data-Load?打开之前 Matlab 生成的 input.dat 文件;运行程序,查看滤波器滤波效果;打开 View-Graph-Time/Frequency便可查看程序是否有逻辑错误。五、程序源代码1、主函数:#include #include #include #include “fd
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工程保修的处理方案(3篇)
- 安全教育年度培训计划课件
- 安全教育平台培训考核课件
- 农业废弃物资源化利用在2025年的技术创新动态报告
- 安全教育培训骗人课件
- 安全教育培训途径课件
- 农业产业园项目农产品质量安全监管体系可行性研究与2025年效益评估报告
- 农业产业园项目农业科技成果转化与2025年经济效益评估报告
- 安全教育培训课件案例
- 2025年新能源社区智能微电网技术创新与应用案例深度解析报告
- 封路店铺经营补偿方案
- 职业病危害事故救援应急预案
- 2025深入贯彻中央八项规定精神学习教育测试题和答案
- 医生进基层活动方案
- 2025-2030年中国蔬果保鲜剂行业市场深度调研及发展趋势与投资价值评估研究报告
- 云南省土地征收农用地转用审批管理细则 (2023年修订)
- 2024年长庆油田分公司招聘考试真题
- 药剂知识竞赛试题及答案
- 尊师重教主题班会教案
- 医院质量与安全管理委员会制度职责及工作流程
- 幼儿园获奖公开课:中班数学《2和3的组成和分解》课件
评论
0/150
提交评论