滤波器的性能指标及MATLAB仿真_第1页
滤波器的性能指标及MATLAB仿真_第2页
滤波器的性能指标及MATLAB仿真_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、FIR数字滤波器的DS咬现TMS320C5402在指令集和硬件结构上对滤波器算法的实现有专门的考虑。首先是在指令中设置了MACD指令,他的功能是将数据区的两个数相乘以后,再与累加器中的值累加,运算结果仍保留丁累加器中,而为下一次操作准备; 其次,在硬件上设计了间接寻址时的循环寻址功能,即将滤波器系数保存丁一个可循环寻址的数据缓冲区,寻址指针由低地址自动增长,当达到缓冲区顶部 时,自动返回低地址重新寻址,这样,配合单指令重复指令RPT,就可以快速 实现卷积操作。在FIR数字滤波器的设计中,一个必须注意的问题是计算的精度和结果溢 出问题。由丁在滤波器设计时,滤波器的系数都是小数,为了获得较高的精度

2、和 整数化系数,一般都要对求出来的系数乘一个较大的数,然后再调整。这样导致 在计算中有可能累加器溢出;另一个问题是计算后累加器中的结果数值为32位,而物理的存储器位数是16位,在存储处理结果时,通常的做法是将低16位结果直接丢弃不用,只取高16位作为计算结果,但这样做带来的后果是精度 降低。因而在考虑滤波器设计时,必须综合考虑输入信号的幅度,并仔细分析中 问值的大小,调整滤波器的系数,在不影响计算速度的情况下,提高计算精度。TMS320C5402在指令集和硬件结构上对滤波器算法的实现有专门的考虑。首先是在指令中设置了MACD指令,他的功能是将数据区的两个数相乘以后,再与累加器中的值累加,运算结

3、果仍保留丁累加器中,而为下一次操作准备; 其次,在硬件上设计了间接寻址时的循环寻址功能,即将滤波器系数保存丁一个可循环寻址的数据缓冲区,寻址指针由低地址自动增长,当达到缓冲区顶部 时,自动返回低地址重新寻址,这样,配合单指令重复指令RPT,就可以快速 实现卷积操作。在FIR数字滤波器的设计中,一个必须注意的问题是计算的精度和结果溢 出问题。由丁在滤波器设计时,滤波器的系数都是小数,为了获得较高的精度和 整数化系数,一般都要对求出来的系数乘一个较大的数,然后再调整。这样导致 在计算中有可能累加器溢出;另一个问题是计算后累加器中的结果数值为32位,而物理的存储器位数是16位,在存储处理结果时,通常

4、的做法是将低16位结果直接丢弃不用,只取高16位作为计算结果,但这样做带来的后果是精 度降低。因而在考虑滤波器设计时,必须综合考虑输入信号的幅度,并仔细分析 中问值的大小,调整滤波器的系数,在不影响计算速度的情况下,提高计算精 度。利用数字信号处理器处理语音时,除了在语音输入端加上硬件滤波电路外, 还需进行数字滤波。因为硬件滤波电路的阻带衰减不好,在滤波时无用的频率成 分不可能滤干净。该数字滤波器的技术指标为:通带截止频率与p=0.N ,阻带截p止频率为切s=。加,实际通带波动Rp=0.25dB,最小阻带衰减As= 50dB,抽样频率Fs=10000Hz ,窗函数的选用用凯塞窗可以满足设计需求

5、。上述FIR数字滤波器的源程序如下:.mm regs.global begink_fir_index.set1k_fir_bffr.set82 ;FIR数字滤波器的阶数k_frame_size.set256.dataoutput.space k_frame_size*16 ;输出数据缓冲区的大小input.copy firinput ;输入信号(c语言编程生成的文件) coff_fir_start .copy coff_fir;FIR滤波器的系数fir_dp.usect “fir_vars ” ,0d_filin.usect“fir_vars ” ,1d_filout.usect “fir_v

6、ars ” ,1fir_coff_table .usect “fir_var0 ” ,2d_data_buffer .usect “fir_bfr ”,40bo s.usect “stack ” ,0fhto s.usect “stack ” ,1.text.def inilite_dsp.def fir_init.def fir_task.asg ar0,fir_index_p.asg ar4,fir_data_p.asg ar5,fir_coff_pinilite_dsp:;初始化DSPLD#0.DPSTM#0X4007,058H;SET C5402DSP CLOCK TO 50MHzST

7、M#0X2000,028H;SWWSR=28HSTM#0X0000,29H;BSCR=29HSTM#0X1800,06H;ST0=06HSTM#0X2900,07H;ST1=07HSTM#0Xffc0,1DH;PMST=1DHSTM#0X0010,26H;TCR=26HSTM#0X0010,32H;TCR1=32Hfir_init;stm#fir_coff_table,fir_coff_prpt#k_fir_bffr- 1;将FIR系数从程序存储器移动到数据存储器mvpd#coff_fir_start,*fir_coff_p+stm#k_fir_index,fir_index_pstm#d_d

8、ata_buffer,fir_data_p;装载最新的米样地址rptza,#k_fir_bffrst1a,*fir_data_p+;使缓冲器复位stm#(d_data_buffer+ k_fir_bffr- 1),fir_data_p.asg ar6, inbuf_p.asg ar7, outbuf_p.asg ar4, fir_data_p.asg ar5, fir_coff_pfir_task:;设定循环块的大小stm#input, inbuf_pstm#output, outbuf_ps tm#k_frame_size- 1,brcrptbdfir_filter_loop- 1stm#k

9、_fir_bffr,bk;FIR循环缓冲器大小ld*inbuf p+, a;装载输入数据fir_filter.;开始滤波stla, *fir_data_p+ ;用最新的采样值取代最旧的采样值rptz a,(k_fir_bffr- 1)mac *fir_data_p+ 0%, *fir_coff_p+ 0%, a ; FIR滤波sth a,*outbuf_p+ ;代替最旧的缓冲器的值fir_filter_loopeend:b eend.endAltera公司提供了类似Unix的命令行界面来开发软件,即Nios SDK Shell。SDK中包含的头文件和库文件,提供了硬件映象地址和一些基本的硬件访问子 程序。在软件设计过程中主要完成网络协议栈设计、应用级代码的编写。用C和C+来对Nios编写应用程序的源代码,在写网络协议栈时,可用到由SoPCBuilder生成的SDK包里面的src/plugs文件的程序,他支持以下一些网络协议:IP, ARP, ICMP, UDP,TCP。然后程序经充分调试后下载到FLASH中。软硬件都 完成后在开发板上进行调试,看是否符合系统的要求。将设计中所需要的模块通过

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论