1、dsp课设报告姚晗课 程 设 计 报 告名 称 DSP原理与应用课程设计 题 目 信号采集和滤波DSP程序设计 指导教师 潘建军/沈冰夏 设计起止日期 2015-11-16 至 2015-12-18 学 院 信息与通信工程学院 专 业 电子信息工程 学生姓名 姚晗 班级/学号 电信1303/2013011053 成 绩 目 录第一章 概述 3 1.1 课程设计目的和要求 3 1.2 课程设计所用设备 3第二章 课程设计原理7 2.1 A/D原理7 2.2 FIR滤波器设计原理8第三章 FIR数字低通滤波器的MATLAB设计9 3.1 采用MATLAB设计FIR滤波器9第四章 ADC信号采集和滤
2、波DSP程序设计 10 4.1 基本步骤10 4.2 实验结果10结束语13 参考文献14附录 程序源代码15第一章 概述1.1课程设计目的和要求1. 掌握TMS320VC5509A片内模数转换器(ADC)的控制方法2. 掌握TI DSP 系统的软件开发3. 设计TMS320VC5509A DSP系统的AD采集程序4. 采用MATLAB设计FIR滤波器5. 对采集的信号进行FIR滤波6. 掌握C语言和汇编语言的混合编程1.2课程设计所用设备 1. 计算机:安装软件开发工具CCStudio v3.3,完成系统的软件开发,进行硬件仿真调试,MATLAB。2. ICETEKVC5509-AG-EDU
3、 实验箱:包括a) 信号源b) 实现硬件仿真调试时与硬件系统的通信、控制和读取硬件系统状态和数据的开发系统(ICETEK 5100-USB 仿真器模块)c) 提供软件运行和调试的平台和用户系统开发的参照的评估模块(ICETEK VC5509-A)第二章 课程设计原理(一)A/D原理1模数转换器结构和时序在数字信号处理器的具体应用中往往需要采集一些模拟信号量,如电池电压、面板旋钮输入值等,模数转换器就是用来将这些模拟量转化为数字量来供DSP使用。TMS320VC5507/5509片内模拟-数字转换器(ADC)方框图如图1所示。TMS320VC5509A有三种封装,本次课程设计所用瑞泰创新公司生产
4、的TMS320VC5509A DSP系统的评估板上焊接了144管脚薄型四方扁平封装的TMS320VC5509A(PGE 后缀)。本课程设计所使用的TMS320VC5509A DSP只能同时支持两路的信号采集。TMS320VC5509APGE的片内模数转换器支持两路输入,管脚分别为AIN0和AIN1。片内ADC具有如下特性: 带内置采样和保持的10 位模数转换模块ADC 最小转换时间为500ns(最大ADC转换时钟为2MHz) 最大采样率为21.5kHz (最小采样周期:1000000/(21.5k)=46.51163s)图1 ADC方框图 模数转换器采用连续逼近式结构,在模数转换器内部用了三个
5、可编程分频器来灵活地产生用户需要的采样率。整个模数转换过程分为两个周期采样/保持周期及转换周期,如图2所示。(1)采样/保持周期是采样/保持电路采集模拟信号的时间,这个周期大于或等于40s;(2)转换周期是RC比较网络在一次采样中完成逼近处理并输出A/D转换结果的时间,这需要13个转换时钟周期。ADC转换时钟的最大频率为2MHz。图2 转换时序图 模数转换模块接到启动转换信号后,按照设置开始进行相应通道的数据采样转换。 经过一个采样时间的延迟后,将采样结果放入AD 数据寄存器中保存。 转换结束,设置标志。 等待下一个启动信号。由于TMS320VC5509A DSP 片内的A/D 转换精度是10
6、 位的,ADC数据寄存器(16 位)的最高位(第15 位)表示转换值是否有效(0 有效),第14-12 位表示转换的通道号,第11-10位为保留字段,低10 位为转换数值,所以在保留时应注意取出结果的低10 位,再根据高4 位进行相应保存。2. 模数转换器的寄存器 模数转换器的寄存器包括ADC控制寄存器(ADCCTL)、ADC数据寄存器(ADCDATA)、ADC时钟分频寄存器(ADCCLKDIV)和ADC时钟控制寄存器(ADCCLKCTL)。表1 模数转换器 (ADC) 的寄存器WORD ADDRESSREGISTER NAMEDESCRIPTION RESETVALUE0x6800ADCCT
7、L15:12ADC Control Register0111 0000 0000 00000x6801ADCDATA15:0ADC Data Register0111 0000 0000 00000x6802ADCCLKDIV15:0ADC Function Clock Divider Register0000 0000 0000 11110x6803ADCCLKCTL8:0ADC Clock Control Register0000 0000 0000 0111 Hardware reset; x denotes a “dont care.” ADC控制寄存器(ADCCTL):发送转换通道号
8、和启动命令,然后循环等待转换结果,最后将结果保存。表2 ADC控制寄存器ADCCTL位字段数值说明15ADCSTART01转换开始位无效转换开始。在转换结束后,如果ADCSTART位不为高,模数转换器自动进入关电模式14-12CHSELECT000001010011100-111选择模拟输入通道选择AIN0通道选择AIN1通道选择AIN2通道(BGA封装)选择AIN3通道(BGA封装)所有通道关闭11-0Reserved保留,读时总为0 ADC数据寄存器(ADCDATA):只读寄存器,显示AD转换是否正在进行中以及通道号,存放采样数据。表3 ADC数据寄存器ADCDATA位字段数值说明15AD
9、CBUSY01模数转换标志位:采样数据已存在正在转换之中,在ADCSTART置为1后,ADCBUSY变为1,直到转换结束14-12CHSELECT000001010011100-111标志采集数据的通道AIN0通道AIN1通道AIN2通道(BGA封装)AIN3通道(BGA封装)保留11-10Reserved保留,读时总为09-0ADCDATA模数转换数据字段。存放模拟信号的10位转换结果 ADC时钟分频寄存器(ADCCLKDIV):显示转换时钟的分频值和采样保持时间。表4 ADC时钟分频寄存器ADCCLKDIV位字段数值说明15-8SAMPTIMEDIV0-255采样和保持时间分频字段。该字段
10、同CONRATEDIV字段一起决定采样和保持周期ADC Sample and Hold Period =(ADC Clock Period) (2( CONVRATEDIV + 1 + SAMPTIMEDIV)7-4Reserved保留3-0CONRATEDIV0000-1111转换时钟分频字段,该字段同SAMPTIMEDIV字段一起决定采样和保持周期ADC Conversion Clock = (ADC Clock) / (2 (CONVRATEDIV + 1) ADC时钟控制寄存器(ADCCLKCTL):存放CPU时钟分频数,并确定是否将ADC置于低功耗状态。表5 ADC时钟控制寄存器AD
11、CCLKCTL 位字段数值说明15-9Reserved保留8IDLEEN01模数转换器时钟使能位时钟使能在运行休眠指令时时钟停止7-0CPUCLKDIV0-255系统时钟分频字段ADC Clock = (CPU Clock) / (CPUCLKDIV + 1)(二)FIR 滤波器设计原理本设计要求设计FIR低通或高通滤波器。低通滤波器的幅度响应和性能如图3所示。图3 低通滤波器的幅度响应和性能p为 通带截止频率,s为阻带截止频率,c为截止频率。p峰值通带波纹。s为最小阻带衰减。有限冲激响应数字滤波器设计详细的基础理论参考相关书籍。(三)FIR滤波的DSP程序设计FIR滤波器输出y(n)是输入数
12、据和系数的卷积和。任何时候进行计算,都需要把数据和相对应的系数相乘,再累加到输出结果中。 FIR滤波器中,输入信号在每个采样时间T过后都发生改变。也就是说,x(n)将在T时候过后,成为x(n-1),然后是x(n-2),直到该数据被抛弃。利用公式计算本次实验AD采样频率DSP的CPU周期选择为135MHz,采样/保持周期为45sADC Clock = (CPU Clock) / (CPUCLKDIV + 1)= 135MHz/36=3.75MHz,则CPUCLKDIV=35ADC Conversion Clock = (ADC Clock) / (2 (CONVRATEDIV + 1)=3.75
13、 MHz/2=1.875 MHzADC 转换时间 = 13 (1 / ADC Conversion Clock)= 13 (1 / (1.875 MHz) = 6.933sADC整个转换时间= 45s+6.933s=51.933s 采样率=1000000/51.933=19.255 kHz21.5kHz 满足设计要求第三章FIR数字低通滤波器的MATLAB设计1. 采用MATLAB设计FIR滤波器采用MATLAB设计FIR低通或高通滤波器并导出滤波器系数。技术指标按照1中的设计要求自行确定,应确定的设计指标包括:通带截止频率、阻带截止频率、峰值通带波纹、最小阻带衰减和采样频率。得到32位单精度
14、浮点和Q15格式的FIR滤波器系数。显示FIR滤波器的幅频响应,要求幅频响应满足设计指标。利用滤波器设计与分析工具设计滤波器,可以方便的得到所需的滤波器。该方法按照如下步骤来实现: 在MATLAB 的Command Window 下键入fdatool ,打开MATLAB的滤波器设计与分析工具。 在滤波器对话框中设置滤波器参数,Fs=19255Hz,Fpass=1000Hz,Fstop=2000Hz。 幅度规格分贝单位缺省Astop为80,相当于线性单位阻带波纹Dstop为0.0001,减小Astop可以减小滤波器的长度。 单击“Design Filter”按钮, 显示出滤波器的幅度响应。 在“
15、Targets”菜单,选择 “Generate C Header ”子菜单,在“Generate C Header” 对话框中设置变量名和数据类型,单击“Generate”按钮即可将滤波器参数输出到指定的文件中。 32位单精度浮点输出选择Single-precision float。 Q15定点格式输出选择Signed 16-bit interger。 图4 MATLAB设计出的低通滤波器的幅度响应第四章 ADC信号采集和滤波DSP程序设计1. 基本步骤将4中设计的32位单精度浮点FIR滤波器系数导入DSP程序。编写和调试DSP FIR 滤波的浮点实现C函数,对输入信号进行移位,通过卷积对输入
16、的信号。利用设计的滤波器系数,调用DSP FIR 滤波的浮点实现C函数,实现对输入的两路信号的滤波。加载程序,设置断点,选择菜单ViewGraphTime/Frequency显示采集信号和滤波后信号的时域和频域图形。将TI的DSPLIB fir2函数的汇编源代码文件fir2.asm添加到工程中。该函数为利用双MAC手工优化、Q15定点汇编实现FIR 滤波,效率大大提高。该函数输入信号、滤波器的系数均为Q15的定点,故需将4中设计的Q15定点格式FIR滤波器系数导入DSP程序。C语言程序调用fir2函数,实现对输入的两路信号的滤波。加载、调试程序,显示滤波结果。重新加载程序, 选择菜单命令Pro
17、fileSetup,开始新的剖析会话。鼠标点击“Enable/Disable Profiling” 按钮使能剖析,鼠标点击“Enable/Disable All Functions” 按钮使能所有函数。选择菜单ProfileViewer,按F5 运行程序,显示剖析结果,比较C语言的浮点实现。2. 实验结果 图5 AD信号采集两路正弦信号 图6 两路信号混叠时域图及32位单精度浮点输出频域图图7 两路信号混叠时域图及Q15定点格式输出频域图图8混叠信号低通滤波后时域图及Q15定点格式频域图图9混叠信号低通滤波后时域图及32位单精度浮点频域图 图9 nADC0,nADC1时域图显示参数设置 图10
18、 混叠信号Q15定点格式输出频域时域图显示参数设置结束语通过本次实验我掌握了TMS320VC5509A片内模数转换器(ADC)的控制方法,也初步掌握了TI DSP 系统的软件开发,本次实验成功采用MATLAB设计出了FIR数字低通滤波器,并且成功对采集的信号进行了FIR滤波。本次实验运用了C语言和汇编语言的混合编程,也复习了c语言中的相关知识。本次实验也暴露出了我在学习上的一些问题,首先是数字信号处理这门课程的学习不够到位,有许多知识点还未学到位,有很多地方只是似懂非懂,在实验的过程中很多时候需要问老师同学得到解决。同时c语言掌握的也不好,以后的学习过程需要脚踏实地一步一个脚印。参考文献1 汪
19、春梅, 孙洪波. TMS320C55x DSP原理及应用(第 3 版). 北京: 电子工业出版社, 2011.2 Texas Instruments Incorporated. TMS320VC5507/5509 DSP Analog-to-Digital Converter (ADC) Reference GuideOL. Texas Instruments Incorporated, SPRU586B, 2004. .3 Texas Instruments Incorporated. TMS320VC5509A Fixed-Point Digital Signal Processor. T
20、exas Instruments Incorporated, SPRS205K, 2008. .4 DSP原理与应用课程讲义.5 瑞泰创新公司. ICETEKVC5509-A评估板硬件使用指导V3.1. 北京:瑞泰创新公司, 2013.6 瑞泰创新公司. ICETEK-VC5509-A-USB-EDU教学实验系统使用指导V3.1. 北京:瑞泰创新公司, 2013.7 瑞泰创新公司. ICETEKVC5509-A-USB-EDU教学实验系统软件实验指导V3.1. 北京:瑞泰创新公司, 2013.8 谭浩强. C程序设计(第三版)M. 北京: 清华大学出版社, 2005.9 Texas Instr
21、uments Incorporated. Code Composer Studio Help. 10 Texas Instruments Incorporated. TMS320C55x DSP Programmers GuideOL. Texas Instruments Incorporated, SPRU376A, 2001. . 11 Texas Instruments Incorporated. TMS320C55x Optimizing C/C+ Compiler Users Guide OL. Texas Instruments Incorporated, SPRU281F, 20
22、03. .12 Texas Instruments Incorporated. TMS320C55x DSP Peripherals Overview Reference Guide. Texas Instruments Incorporated. SPRU317K,2011. .13 Texas Instruments Incorporated. TMS320C55x DSP Library Programmers ReferenceOL. Texas Instruments, SPRU422J, 2000, Revised 2013. .14 Sen M. Kuo, Bob H. Lee.
23、 Real-Time Digital Signal Processing Implementations, Applications and Experiments With the TMS320C55x M. 北京: 清华大学出版社, 2003.15 焦瑞莉等编著. 数字信号处理M. 北京: 机械工业出版社. 2011.附录 程序源代码Main.c#include myapp.h#include ICETEK-VC5509-EDU.h#include scancode.hvoid InitADC();void wait( unsigned int cycles );void EnableAP
24、LL( );int nADC0256,nADC1256;int mixQ15256;float mixfloat256;int FIROUTQ15256;int DBBufferQ1550;float Bufferfloat50;float FIROUTfloat256;const int BhQ1550 = 9, 22, 42, 69, 96, 115, 116, 85, 13, -107, -268, -456, -640, -781, -833, -752, -505, -77, 524, 1258, 2064, 2862, 3561, 4082, 4360, 4360, 4082, 3
25、561, 2862, 2064, 1258, 524, -77, -505, -752, -833, -781, -640, -456, -268, -107, 13, 85, 116, 115, 96, 69, 42, 22, 9;const float Bhfloat50 = 0.000287458417,0.0006711401511, 0.001296777162, 0.002095081378, 0.002920241794, 0.003516058903, 0.00353578967, 0.002599096159, 0.000384017796,-0.003258500714,
26、-0.008192501962, -0.01391467359, -0.01953443512, -0.02383529581, -0.02542546391, -0.02296281047, -0.0154193975,-0.002337040845, 0.01598187536, 0.03839777783, 0.06300126761, 0.08732704073, 0.1086880341, 0.124574326, 0.133045882, 0.133045882, 0.124574326, 0.1086880341, 0.08732704073, 0.06300126761, 0.
27、03839777783, 0.01598187536,-0.002337040845, -0.0154193975, -0.02296281047, -0.02542546391, -0.02383529581, -0.01953443512, -0.01391467359,-0.008192501962, -0.003258500714, 0.000384017796, 0.002599096159, 0.00353578967, 0.003516058903, 0.002920241794, 0.002095081378, 0.001296777162,0.0006711401511, 0
28、.000287458417;main() int i; unsigned int uWork; EnableAPLL(); SDRAM_init(); InitADC(); PLL_Init(135); for (i=0;i51;i+) DBBufferQ15i=0; for (i=0;i51;i+) Bufferfloati=0; while ( 1 ) for ( i=0;i256;i+ ) ADCCTL=0x8000; / 启动AD转换,通道0 do uWork=ADCDATA; while ( uWork&0x8000 ); nADC0i=uWork&0x0fff; ADCCTL=0x9000; / 启动AD转换,通道1 do uWork=ADCDATA; while ( uWork&0x8000 ); nADC1i=uWork&0x0fff; mixQ15i=(nADC0i+nADC1i-1024)*32; mixfloati=(float)(nADC0i+nADC1i-1024)/1024;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1