第8章应速用系统设计举例.pptVIP

  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文档。上传文档
查看更多
第8章应速用系统设计举例

第8章:应用系统设计举例—— FIR数字滤波器 .title FIR2.ASM .mmregs .def start .bss y , 1 X .usect x,7 ;定义数据存储器空间 b0 .usect b0,7 PA0 .set 0 PA1 .set 1 .data COEF: .word 1*32768/10 ;定义b6 .word 2*32768/10 ;定义b5 … .text 第8章:应用系统设计举例—— FIR数字滤波器 start: SSBX FRCT ;设置小数乘法 STM #b0, AR1 ;AR1指向b0 RPT #6 MVPD COEF, *AR1+ ;完成数据搬移 STM #x+6, AR2 ;AR2指向缓冲区底部x[n-6] STM #b0+6, AR3 ;AR3指向系数缓冲区底部b6 STM #7, BK ;BK=7 STM #-1, AR0 PORTR PA1,@x ;输入x[n] 第8章:应用系统设计举例—— FIR数字滤波器 FIR2: RPTZ A, #6 ;累加器A清0,迭代7次 MAC *AR2+0%, *AR3+0%, A;完成乘法-累加,循环 STH A, @y ;暂存y[n] PORTW @y,PA0 ;输出y[n] BD FIR2 PORTR PA1,*AR2+0% ;循环输入最新样本并修改 ;AR2=AR2+AR0 ;指向x[n-5] .end 第8章:应用系统设计举例—— FIR数字滤波器 3. 系数对称FIR滤波器的实现方法 长度为N 的线性相位FIR滤波器的输出表达式为: 优点:乘法的次数减少了一半。 第8章:应用系统设计举例—— FIR数字滤波器 实现方法: 使用专门用于系数对称FIR滤波器的指令。 FIRS Xmem,Ymem,Pmad 该指令的操作如下: 执行: Pmad→PAR 当(RC)≠0 (循环计数器) ((Xmem)+(Ymem))?16→A (B)+(A(32-16))×PAR→B (PAR+1)→PAR (RC)-1→RC 说明:FIRS指令在同一机器周期内,通过C和D总线读两次数据存储器,同时通过P总线读程序存储区的一个系数。 第8章:应用系统设计举例—— FIR数字滤波器 注意两点: (1) 在数据存储器中开辟两个循环缓冲区,如New和Old缓冲区,分别存放N/2个新数据和老数据,循环缓冲区的长度为N/2。再设置相应的循环缓冲区指针,如用AR2指向New缓冲区中最新的数据,AR3指向Old缓冲区中最老的数据; (2) 将系数表存放在程序缓冲区内。 第8章:应用系统设计举例—— FIR数字滤波器 .mmregs .def start .bss y, 1 x_new: .usect ″DATA1″,4 x_old: .usect ″DATA2″,4 size .set 4 PA0 .set 0 PA1 .set 1 .data COEF .word 1*32768/10, 2*32768/10 .word 3*32768/10, 4*32768/10 .text 第8章:应用系统设计举例—— FIR数字滤波器 start: SSBX FRCT STM #x_new,AR2 ;AR2指向新缓冲区第一个单元 STM #x_old+(size-1),AR3 ;AR3指向老缓冲区最后1个单元 STM #size, BK ;循环缓冲区长度 STM #-1,AR0 PORTR PA1,#x_new ;输入x[n] FIR: ADD * AR2+0%,* AR3+0%,A ;AH=x[n]+x[n-7](第一次) RPTZ B, # (size-1) ;B=0,下条指令执行size次 FIRS

文档评论(0)

181****7523 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档