DSP十天速成6.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
DSP十天速成(六) 滤波器,?系数,?matlab,?存储器,?缓冲区 【实验6.1 FIR】 ;============================================================= ; fir4.asm ;用用循环缓冲区和双操作数寻址方法实现FIR滤波器 ;先用matlab,选择80点汉明窗设计一个截止频率为0.2π的低通滤波器 ; 本例与前不同的是系数直接引用程序存储器的系数表 ;N=5 y(n)=h0*x(n)+h1*x(n-1)+h2*x(n-2)+h3*x(n-3)+h4*x(n-4) ;============================================================= .title fir4.asm .mmregs? .def start ;分配数据存储区 .bss y,1 ;y xn .usect xn,80 ;xn h .usect h,80 ;h PA0 .set 0000H ;数据输出端口 PA1 .set 0001H ;数据输入端口 ;参数表 .data table: .word -7,-18,-24,-22,-9,11,33,48? ;已在Matlab中转成十六进制的小数 .word 46,20,-24,-73,-104,-97,-43,49 .word 146,204,187,81,-91,-268,-371,-337 .word -144,162,476,661,603,261,-297,-894 .word -1283,-1222,-562,697,2373,4142,5618,6456 .word 6456,5618,4142,2373,697,-562,-1222,-1283 .word -894,-297,261,603,661,476,162,-144 .word -337,-371,-268,-91,81,187,204,146 .word 49,-43,-97,-104,-73,-24,20,46 .word 48,33,11,-9,-22,-24,-18,-7? start: SSBX FRCT ;小数乘法 ;把参数表复制到数据存储区 STM #h,AR1? RPT #79 MVPD #table,*AR1+ ;把x(n)-x(n-79)赋始值0 STM #xn,AR1 RPT #79 ST #0,*AR1+ STM #xn+79,AR3 ;x(n-79)---AR3 STM #h+79,AR4 ;h(n-79)---AR4 STM #80,BK ;循环缓冲区大小80? STM #-1,AR0 ;指针调整值-1 LD #xn,DP ;DP指向xn所在页 PORTR PA1,@xn ;输入数据 LD #y,DP ;DP指向y所在页 FIR: RPTZ A,#79 ;进行一次FIR运算 MAC *AR3+0%,*AR4+0%,A;A=(AR3)*(AR4)+A,? AR3=AR3+AR0,AR4=AR4+AR0? STH A,@y ;保存计算结果 PORTW @y,PA0 ;输出结果 BD FIR ;读入下一个数据并进行下一次计算 PORTR PA1,*AR3+0% ;新数据覆盖了最旧的数据 .end 【实验6.2 IIR】 .mmregs .global codestart? K_DATA_SIZE .set 256 ;输入数据个数 K_BUFFER_SIZE .set 8 ;缓冲大小,需是2的整数次幂,并大于a、b的个数 K_STACK_SIZE .set 256 ;堆栈大小 K_A .set 3 ;a向量个数 K_B .set 4 ;b向量的个数 K_CIR .set 4 ;=a、b的长度,也可以设为K_BUFFER_SIZE-1?? STACK .usect stack,K_STACK_SIZE SYSTEM_STACK .set K_STACK_SIZE+STACK .data DATA_DP:? .align K_BUFFER_SIZE bufferdatax: .space K_BUFFER_SIZE*16 ;size in bits bufferdatay: .space K_BUFFER_SIZE*16 ;size in bits? inputdata: .word 0 filterdata: .word 0? .text .asg AR2, ORIGIN .asg AR3, INPUT .asg AR4, FILTER .asg AR5, OUTPUT codestart: SSBX FRCT SSBX INTM LD #DATA_DP,DP STM #SYSTEM_STACK, SP

文档评论(0)

ww90055 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档