基于dsp的fir滤波器的实现内容摘要:

波信号。 „„„„„„„„„„ „„ C语言程序 „„„„„„„„„„„„„„ include “” main() { FILE *fw。 Int I, j, t。 fw= fopen(“d:”,”wt”)。 fprintf( fw,”1651 1 0 0 0\n”)。 for(i=0。 i512。 i++) { j=i+1%20。 if(j10) t=9000。 else t=9000。 fprintf(fw,”0x%04x\n” ,t)。 } fclose(fw)。 } 6 在 C环境下运行上述程序可得 512 个数据,其方波为了 10 个点低电平信号,10 个点的高电平信号,如此循环交替进行就得到方波,其输出数据文件见附录,图中只截取了 512 点一个周期的数据。 将 fir_ 文件另存为 ,打开该文件,删除所有数据便得到空的输出数据文件。 .编写 , 程序。 本设计中编写 y(n)=a0x (n)+ a1x( n1) +a2x( n2)+ a3x( n3)+ a4x ( n4)+ a5 x( n5)+ a6x( n6)的程序, N=7。 其中,存放 a0~~a6的系数表以及存放数据的循环缓冲区均设在 DARAM 中。 a0=,a 1=,a2=,a3=, a4=,a5=,a6= „„„„„„„„ 用循环缓冲区实现 FIR 滤波器 的源 程序清单 „„„„„„„ .title “” ;给汇编程序取名 .mmregs ;定义存储器映像寄存器 .def start ;定义标号 start 的起始位置 . bss y, 1 ;滤波器输出单元 xn .usect “xn”,7 ;自定义 7 个单元空间的数据段 xn b0 .usect “a0”,7 ;自定义 7 个单元空间的数据段 a0 PA0 .set 0。 设置数据输出端口 I/O, PA0=0 PA1 .set 1。 设置数据输入端口 I/O, PA1=1 .data table: .word 1*32768/10 ; a1= .word 2*32768/10。 a2= .word 3*32768/10。 a3= .word 4*32768/10。 a4= .word 5*32768/10 ; a5= .word 6*32768/10 ; a6= .word 7*32768/10 ; a7= .text start: SSBX FRCT。 小数乘法 STM a0, AR1 ; AR1 指向 a0 RPT 6 ;从程序存储器 table 开始的地址传送 MVPD table, *AR1+ ; 7 个系数至数据空间 a0 开始的数据段 STM xn+6, AR2 ; AR2 指向 x( n6) STM a0+6, AR3 ; AR3 指向 a6 STM 7,BK ;设置循环缓冲区长度 BK=7 STM 1, AR0 ; AR0=1,双操作数减量 LD xn , DP ;设置数据存储器页指针的起始位置 PORTR PA1,@xn ;从 I/O 输入端口 PA1 输入数据到 xn FIR2: R。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。