收藏 分销(赏)

dsp原理与应用课程设计--信号采集和滤波dsp程序设计.docx

上传人:快乐****生活 文档编号:2523016 上传时间:2024-05-31 格式:DOCX 页数:32 大小:2.20MB
下载 相关 举报
dsp原理与应用课程设计--信号采集和滤波dsp程序设计.docx_第1页
第1页 / 共32页
dsp原理与应用课程设计--信号采集和滤波dsp程序设计.docx_第2页
第2页 / 共32页
dsp原理与应用课程设计--信号采集和滤波dsp程序设计.docx_第3页
第3页 / 共32页
dsp原理与应用课程设计--信号采集和滤波dsp程序设计.docx_第4页
第4页 / 共32页
dsp原理与应用课程设计--信号采集和滤波dsp程序设计.docx_第5页
第5页 / 共32页
点击查看更多>>
资源描述

1、键入文字课 程 设 计 报 告名 称 DSP原理与应用课程设计 题 目 信号采集和滤波DSP程序设计 指导教师 设计起止日期 2016-11-21 至 2016-12-16 学 院 信息与通信工程学院 专 业 电子信息工程 班级/学号 学生姓名 成 绩 32目录第一章 概述31.1 课程设计目的和要求31.2课程设计所用设备3第二章 课程设计原理42.1 结构图42.2. 模数转换器的寄存器5第三章FIR数字低通滤波器的MATLAB设计9第四章 ADC信号采集和滤波DSP程序设计124.1 程序流图124.2 连结硬件134.3 信号采集144.4断点设置164.5定点滤波164.6 浮点滤波

2、214.7 问题26结束语27参考文献28附录 程序源代码29Main.c29block_fir.c32第一章 概述1.1 课程设计目的和要求 1. 掌握VC5509DSP的控制和使用方法2. 掌握TMS320VC5509A片内模数转换器(ADC)的控制方法3. 掌握TI DSP 系统的软件开发4. 设计TMS320VC5509A DSP系统的AD采集程序5. 采用MATLAB设计FIR滤波器6. 对采集的信号进行FIR滤波7. 掌握C语言和汇编语言的混合编程1.2课程设计所用设备1.计算机:安装软件开发工具CCStudio v3.3,完成系统的软件开发,进行硬件仿真调试,MATLAB。2.I

3、CETEKVC5509-AG-EDU 实验箱:包括1)信号源2)实现硬件仿真调试时与硬件系统的通信、控制和读取硬件系统状态和数据的开发系统(ICETEK 5100-USB 仿真器模块)3)提供软件运行和调试的平台和用户系统开发的参照的评估模块(ICETEK VC5509-A)第二章 课程设计原理2.1 结构图图2.1 ADC结构图 模数转换器采用连续逼近式结构,在模数转换器内部用了三个可编程分频器来灵活地产生用户需要的采样率。整个模数转换过程分为两个周期采样/保持周期及转换周期,如图2所示。(1)采样/保持周期是采样/保持电路采集模拟信号的时间,这个周期大于或等于40s;(2)转换周期是RC比

4、较网络在一次采样中完成逼近处理并输出A/D转换结果的时间,这需要13个转换时钟周期。ADC转换时钟的最大频率为2MHz。图2.2 转换时序图l 模数转换模块接到启动转换信号后,按照设置开始进行相应通道的数据采样转换。l 经过一个采样时间的延迟后,将采样结果放入AD 数据寄存器中保存。l 转换结束,设置标志。l 等待下一个启动信号。由于TMS320VC5509A DSP 片内的A/D 转换精度是10 位的,ADC数据寄存器(16 位)的最高位(第15 位)表示转换值是否有效(0 有效),第14-12 位表示转换的通道号,第11-10位为保留字段,低10 位为转换数值,所以在保留时应注意取出结果的

5、低10 位,再根据高4 位进行相应保存。2.2. 模数转换器的寄存器 模数转换器的寄存器包括ADC控制寄存器(ADCCTL)、ADC数据寄存器(ADCDATA)、ADC时钟分频寄存器(ADCCLKDIV)和ADC时钟控制寄存器(ADCCLKCTL)。表2.1 模数转换器 (ADC) 的寄存器WORD ADDRESSREGISTER NAMEDESCRIPTION RESETVALUE0x6800ADCCTL15:12ADC Control Register0111 0000 0000 00000x6801ADCDATA15:0ADC Data Register0111 0000 0000 00

6、000x6802ADCCLKDIV15:0ADC Function Clock Divider Register0000 0000 0000 11110x6803ADCCLKCTL8:0ADC Clock Control Register0000 0000 0000 0111 Hardware reset; x denotes a “dont care.”l ADC控制寄存器(ADCCTL):发送转换通道号和启动命令,然后循环等待转换结果,最后将结果保存。表2.2 ADC控制寄存器ADCCTL位字段数值说明15ADCSTART01转换开始位无效转换开始。在转换结束后,如果ADCSTART位不为

7、高,模数转换器自动进入关电模式14-12CHSELECT000001010011100-111选择模拟输入通道选择AIN0通道选择AIN1通道选择AIN2通道(BGA封装)选择AIN3通道(BGA封装)所有通道关闭11-0Reserved保留,读时总为0l ADC数据寄存器(ADCDATA):只读寄存器,显示AD转换是否正在进行中以及通道号,存放采样数据。表2.3 ADC数据寄存器ADCDATA位字段数值说明15ADCBUSY01模数转换标志位:采样数据已存在正在转换之中,在ADCSTART置为1后,ADCBUSY变为1,直到转换结束14-12CHSELECT000001010011100-1

8、11标志采集数据的通道AIN0通道AIN1通道AIN2通道(BGA封装)AIN3通道(BGA封装)保留11-10Reserved保留,读时总为09-0ADCDATA模数转换数据字段。存放模拟信号的10位转换结果l ADC时钟分频寄存器(ADCCLKDIV):显示转换时钟的分频值和采样保持时间。表2.4 ADC时钟分频寄存器ADCCLKDIV位字段数值说明15-8SAMPTIMEDIV0-255采样和保持时间分频字段。该字段同CONRATEDIV字段一起决定采样和保持周期ADC Sample and Hold Period =(ADC Clock Period) (2( CONVRATEDIV

9、+ 1 + SAMPTIMEDIV)7-4Reserved保留3-0CONRATEDIV0000-1111转换时钟分频字段,该字段同SAMPTIMEDIV字段一起决定采样和保持周期ADC Conversion Clock = (ADC Clock) / (2 (CONVRATEDIV + 1)l ADC时钟控制寄存器(ADCCLKCTL):存放CPU时钟分频数,并确定是否将ADC置于低功耗状态。表2.5 ADC时钟控制寄存器ADCCLKCTL 位字段数值说明15-9Reserved保留8IDLEEN01模数转换器时钟使能位时钟使能在运行休眠指令时时钟停止7-0CPUCLKDIV0-255系统时

10、钟分频字段ADC Clock = (CPU Clock) / (CPUCLKDIV + 1)下面是本次课程设计采样率的计算(1)首先对CPU时钟分频,产生模数转换器时钟(ADC Clock),该时钟应尽量运行在较低频率下,以降低功率消耗,在本例中模数转换器时钟是通过对系统主时钟36分频产生的,则此时模数转换器时钟=144MHz/18=8MHz,根据公式 ADC Clock = (CPU Clock) / (CPUCLKDIV + 1) 得出CPUCLKDIV =17;(2)对模数转换器时钟分频产生模数转换器转换时钟(ADC Conversion Clock),该时钟最大值为2MHz,为了获得2

11、MHz的模数转换器转换时钟,则需要对模数转换器时钟4分频,由 ADC Conversion Clock = (ADC Clock) / (2 (CONVRATEDIV + 1) 得出CONVRATEDIV=1 ADC 转换时间 = 13 (1 / ADC Conversion Clock) ADC 转换时间 = 13 (1 / (2 MHz) = 6.5s;(3)对采样和保持周期进行设置,这个值必须大于或等于40s ADC Sample and Hold Period = (1 / (ADC Clock) (2 (CONVRATEDIV + 1 + SAMPTIMEDIV) = (1 / (8

12、 MHz) (2 (1 + 1 + SAMPTIMEDIV) = 125 ns (2 (1 + 1 + 158) = 40s SAMPTIMEDIV =158;(4)ADC整个转换时间(ADC Total Conversion Time)为40s的采样和保持时间加上6.5s的转换时间等于46.5s,采样率=1000000/46.5=21.5 kHz。 图2.3 手写计算第三章FIR数字低通滤波器的MATLAB设计 用MATLAB的fdatool来设计FIR数字低通滤波器,其图形设计界面如图3.1所示。图3.1 MATLAB数字低通滤波器设计由两路信号采集得到的数据可以分析出存在量个频率分量一个

13、位于300Hz左右,一个位于2500Hz左右所以通带截止频率定为600Hz,阻带截止频率定为1500Hz,它的采样率由手写计算得出是21500Hz。/* * Filter Coefficients (C Source) generated by the Filter Design and Analysis Tool * Generated by MATLAB(R) 8.1 and the Signal Processing Toolbox 6.19. * Generated on: 05-Dec-2016 10:41:37 */* * Discrete-Time FIR Filter (rea

14、l) * - * Filter Structure : Direct-Form FIR * Filter Length : 44 * Stable : Yes * Linear Phase : Yes (Type 2) */* General type conversion for MATLAB generated C-code */#include tmwtypes.h/* * Expected path to tmwtypes.h * C:Program FilesMATLABR2013aexternincludetmwtypes.h */* * Warning - Filter coef

15、ficients were truncated to fit specified data type. * The resulting response may not match generated theoretical response. * Use the Filter Design & Analysis Tool to design accurate * single-precision filter coefficients. */const int BL = 44;const real32_T B44 = -0.001677224645,-0.001628549886,-0.00

16、2184624784,-0.002628086135,-0.002816999098, -0.002582591493,-0.001741325366,-0.0001099038491, 0.0024696826, 0.006122667342, 0.01090978552, 0.01682292856, 0.02376719378, 0.03155950829, 0.03993314505, 0.04855003208, 0.05701942742, 0.06492584944, 0.07185543329, 0.07742982358, 0.08133494109, 0.083345822

17、99, 0.08334582299, 0.08133494109, 0.07742982358, 0.07185543329, 0.06492584944, 0.05701942742, 0.04855003208, 0.03993314505, 0.03155950829, 0.02376719378, 0.01682292856, 0.01090978552, 0.006122667342, 0.0024696826,-0.0001099038491,-0.001741325366,-0.002582591493,-0.002816999098, -0.002628086135,-0.00

18、2184624784,-0.001628549886,-0.001677224645;/* * Filter Coefficients (C Source) generated by the Filter Design and Analysis Tool * Generated by MATLAB(R) 8.1 and the Signal Processing Toolbox 6.19. * Generated on: 05-Dec-2016 10:41:46 */* * Discrete-Time FIR Filter (real) * - * Filter Structure : Dir

19、ect-Form FIR * Filter Length : 44 * Stable : Yes * Linear Phase : Yes (Type 2) */* General type conversion for MATLAB generated C-code */#include tmwtypes.h/* * Expected path to tmwtypes.h * C:Program FilesMATLABR2013aexternincludetmwtypes.h */* * Warning - Filter coefficients were truncated to fit

20、specified data type. * The resulting response may not match generated theoretical response. * Use the Filter Design & Analysis Tool to design accurate * int16 filter coefficients. */const int BL = 44;const int16_T B44 = -55, -53, -72, -86, -92, -85, -57, -4, 81, 201, 357, 551, 779, 1034, 1309, 1591,

21、 1868, 2127, 2355, 2537, 2665, 2731, 2731, 2665, 2537, 2355, 2127, 1868, 1591, 1309, 1034, 779, 551, 357, 201, 81, -4, -57, -85, -92, -86, -72, -53, -55;第四章 ADC信号采集和滤波DSP程序设计4.1 程序流图整个程序流程图如下开始对采集信号进行滤波结束对信号进行AD转换图4.1 总程序流图AD采样流图如下开始使能外部I/O口,初始化AD转换器结束设定采样率然后选定通道,开始采样,转换数据类型图4.2 AD采样流图滤波程序流图如下输入信号与系

22、统函数卷积(反折,移位,相乘,相加)开始结束设定系统函数(滤波器)图4.3 滤波程序流图4.2 连结硬件准备信号源进行AD输入。取出2根实验箱附带的信号线(如右图,两端均为单声道语音插头)。 用1根信号线连接实验箱左侧信号源的波形输出A端口和“A/D输入”模块的“ADCIN2”插座注意插头要插牢、到底。这样,信号源波形输出A的输出波形即可送到ICETEK-VC5416-AR板的AD输入通道0。 用1根信号线连接实验箱左侧信号源的波形输出B端口和“A/D输入”模块的“ADCIN3”插座注意插头要插牢、到底。这样,信号源波形输出B的输出波形即可送到ICETEK-VC5416-AR板的AD输入通道1

23、。 设置波形输出A:- 向内侧按波形频率选择旋钮,直到标有正弦波的指示灯点亮。 - 上下调节波形频率选择旋钮,直到标有100-1KHz的指示灯点亮。 - 调节幅值调整旋钮,将波形输出A的幅值调到最大。 设置波形输出B:- 向内侧按波形频率选择旋钮,直到标有正弦波的指示灯点亮。 - 上下调节波形频率选择旋钮,直到标有1K-10KHz的指示灯点亮。 - 调节幅值调整旋钮,将波形输出B的幅值调到最大。 正弦波波形输出A波形频率选择100-1KHz幅值调整正弦波波形输出B1K-10KHz波形频率选择幅值调整 图4.4 信号源设置Code Composer Studio 3.3在硬件仿真(Emulato

24、r)方式下运行4.3 信号采集对信号需要先进行AD采样,需要先设定系统的采样率void InitADC()ADCCLKCTL=0x11; / 8MHz ADCLKADCCLKDIV=0x9e01;/采样率设为21.5kHz在对输入信号采256个点for ( i=0;i256;i+ ) ADCCTL=0x8000;/ 启动AD转换,通道0douWork=ADCDATA; while ( uWork&0x8000 );nADC0i=uWork&0x0fff; /一共采256个点for ( i=0;i256;i+ ) ADCCTL=0x9000;/ 启动AD转换,通道1douWork=ADCDATA

25、; while ( uWork&0x8000 );nADC1i=uWork&0x0fff;由于ADCDATA存放信号的10位转换结果只有10个位即210=1024图4.5两路信号图形显示属性对话框属性值设置 图4.6 两路信号4.4断点设置断点设置与两个滤波函数(fir2,firc)前4.5定点滤波 在采集到两路信号后,对信号进行叠加得到待滤波信号.Ai=(nADC0i+nADC1i-1023)*32;将02046转为-1023到1023再乘以32变为定点的精确度接近Q15图4.15混合波时域图图形显示属性对话框属性值设置图4.16 混合波时域图图4.17混合波频域图图形显示属性对话框属性值设

26、置图4.18 混合波频域图在滤波部分与浮点不同的是这里采用用汇编语言编写的fir2函数实现卷积过程ushort oflag = fir2 (DATA *x, DATA *h, DATA *r, DATA *dbuffer, ushort nx, ushort nh)/x是指向输入信号指针变量/h是指向滤波器数组的指针变量/r是指向输出信号(滤波信号)指针变量/dbuffer是指向缓冲数组的指针变量/oflag是溢出标志位/ nx是输入信号采样点数/nh是滤波器系数个数图4.19混合波频域图图形显示属性对话框属性值设置图4.20定点滤波后的信号的时域图图4.21定点滤波后的信号的频域图图形显示属

27、性对话框属性值设置图4.22定点滤波后的信号的频域图4.6 浮点滤波在采集到两路信号后,对信号进行叠加得到待滤波信号.Afloati=(float)Ainti/32768;/需要对采集信号做一个精度转换 由于浮点型和定点型之间的关系为32768,所以浮点乘以32768即得定点数据图4.7混合波时域图图形显示属性对话框属性值设置图4.8 混合波时域图图4.9混合波频域图图形显示属性对话框属性值设置图4.10 混合波频域图将MATLAB设计得到的滤波器系数放入滤波数组中,并对于混合信号做卷积void firc(float *in, int M, float *h, int L, float *ou

28、t, float *x) float yn; int i,j; for (j=0; jM; j+) x0 = inj; for(yn=0.0,i=0;i0; i-) xi = xi-1; /xL-1=xL-2, , x1=x0 反折,移位 return;这里将整个卷积过程做成函数,在程序运行过程中再调用这个函数图4.11浮点滤波后的信号的时域图图形显示属性对话框属性值设置图4.12 浮点滤波后的信号的时域图图4.13浮点滤波后信号的频域图图形显示属性对话框属性值设置图4.14 浮点滤波后信号的频域图图4.23 profile 剖析图4.7 问题 问题一:在调用fir2函数时,会出现无法找到数组

29、地址的情况 分析:这是由于堆栈开的太小导致数据溢出的结果 解决:将我们使用的所有数组除去未赋值的数组,将所有赋值数组定义为全局变量,注意不要将其定义为静态变量,定义为静态变量后无法向内写值。问题二:在混合两个波形时,会出现波形不正确,或者只出现一点分析:可能是显示属性框未配置正确,或者硬件连接不稳导致解决:按照其应有属性严格配置,并多采几次样,多混合几次。结束语这是我第一次系统的进行DSP编程,对寄存器有了更多的认识,DSP设计基本上就是寄存器值的计算与赋值,再加上一部分C语言。实验初期遇到了很多难题,但通过查阅参考文献和网上资料后解决了大部分问题。在遇到大困难时老师也给予了我很多帮助。总体来

30、说三周的课程设计我收获很大,并使我对DSP产生了浓厚的学习兴趣。我相信在以后我会对DSP有更多的学习心得。参考文献1 汪春梅, 孙洪波. 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 Incorpo

31、rated. TMS320VC5509A Fixed-Point Digital Signal Processor. Texas 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. 北京:瑞泰创新

32、公司, 2013.8 谭浩强. C程序设计(第三版)M. 北京: 清华大学出版社, 2005.9 Texas Instruments 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

33、Users Guide OL. Texas Instruments Incorporated, SPRU281F, 2003. .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 Instrument

34、s, SPRU422J, 2000, Revised 2013. .14 Sen M. Kuo, Bob H. Lee. 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.hv

35、oid InitADC();void wait( unsigned int cycles );void EnableAPLL( );int nADC0256,nADC1256;float Afloat256; int Aint256; int out1256; int dbuffer46;static int LP_hint44=-55, -53, -72, -86, -92, -85, -57, -4, 81, 201, 357, 551, 779, 1034, 1309, 1591, 1868, 2127, 2355, 2537, 2665, 2731, 2731, 2665, 2537,

36、 2355, 2127, 1868, 1591, 1309, 1034, 779, 551, 357, 201, 81, -4, -57, -85, -92, -86, -72, -53, -55;static float LP_hfloat44= -0.001677224645,-0.001628549886,-0.002184624784,-0.002628086135,-0.002816999098, -0.002582591493,-0.001741325366,-0.0001099038491, 0.0024696826, 0.006122667342, 0.01090978552,

37、 0.01682292856, 0.02376719378, 0.03155950829, 0.03993314505, 0.04855003208, 0.05701942742, 0.06492584944, 0.07185543329, 0.07742982358, 0.08133494109, 0.08334582299, 0.08334582299, 0.08133494109, 0.07742982358, 0.07185543329, 0.06492584944, 0.05701942742, 0.04855003208, 0.03993314505, 0.03155950829,

38、 0.02376719378, 0.01682292856, 0.01090978552, 0.006122667342, 0.0024696826,-0.0001099038491,-0.001741325366,-0.002582591493,-0.002816999098, -0.002628086135,-0.002184624784,-0.001628549886,-0.001677224645; / 低通,通带的范围是0Hz到600Hz, 阻带截止频率是1500 Hzfloat out2256;float infloat256;float xfloat44;unsigned int

39、 k;int yn;void main(void)int i,j; unsigned short M=256; /* Input sample size */ unsigned short L=44; /* Number of FIR filter coefficients */unsigned short oflag; unsigned int uWork; EnableAPLL();SDRAM_init();InitADC(); PLL_Init(132);while ( 1 ) for ( i=0;i256;i+ ) ADCCTL=0x8000;/ 启动AD转换,通道0douWork=ADCDATA; while ( uWork&0x8000 );nADC0i=uWork&0x0fff; for ( i=0;i256;i+ ) ADCCTL=0x9000;/ 启动AD转换,通道1douWork=ADCDATA; while ( uWork&0x8000 );nADC1i=uWork&0x0fff; Ainti=(nADC0i+nADC1i-1023)*32;Afloati=(float)Ainti/32768; /滤波 for (i=0; iL+2;i+)

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服