- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
5.5.2画相关性图图5-15是IIR滤波器的相关性图,从存yi+1到取yi之间形成了一个循环传递路径,由于存取指令使用相同的存储器流水线。5.5.3确定最小迭代间隔画新的相关性图图5-16中所示是一个循环传递路径为4(2+1+1)的新的相关性图,因为MPYp2指令能够直接从寄存器中读取yi+1,因此循环传递路径可以减少6个周期,2.新的TMS320C6x指令(内核循环)5.5.3确定最小迭代间隔2.新的TMS320C6x指令(内核循环)【例5.38】循环传递路径较小的IIR内核循环的线性汇编。LDH *xptr++,xi ;xi+1MPY c1,xi,p0 ;c1*xiLDH *xptr,xi+1 ;xi+1MPY c2,xi+1,p1 ;c2*xi+1ADD p0,p1,s0 ;c1*xi+c2*xi+1MPY c3,y,p2 ;c3*yiADD s0,p2,s1 ;c1*xi+c2*xi+1+c3*yiSHR s1,15,y ;yi+1STH y,*yptr++ ;存储yi+1[cntr]SUB cntr,1,cntr ;循环计数器递减[cntr]B LOOP ;跳转至loop5.5.4线性汇编资源分配【例5.39】带分配资源的IIR内核循环线性汇编。LDH .D1*A4++,A2 ;xi+1MPY .M1A6,A2,A5 ;c1*xiLDH .D1*A4,A3 ;xi+1MPY .M1XB6,A3,A7 ;c2*xi+1ADD .L1A5,A7,A9 ;c1*xi+c2*xi+1MPY .M2XA8,B2,B3 ;c3*yiADD .L2XB3,A9,B5 ;c1*xi+c2*xi+1+c3*yiSHR .S2B5,15,B2 ;yi+1STH .D2B2,*B4++ ;存储yi+1[A1]SUB .L1A1,1,A1 ;循环计数器递减[A1]B .S1LOOP ;跳转至loop5.5.5线模迭代间隔安排表5-14是IIR滤波器的模迭代间隔表,表中SHR指令及时在周期10结束,以便下次迭代的MPYp2在周期11读取其结果。5.5.6使用汇编优化器处理IIR滤波器【例5.40】IIR滤波器的线性汇编。.global_iir_iir:.cprocx,y,c1,c2,c3.regxi,xi1,yi1.regp0,p1,p2,s0,s1,cntrMVK 100,cntr ;cntr=100LDH .D2*y++,yi1 ;yi+1LOOP: .trip100LDH .D1*x++,xi ;xiMPY .M1c1,xi,p0 ;c1*xiLDH .D1*x,xi1 ;xi+1MPY .M1Xc2,xi1,p1 ;c2*xi+1ADD .L1p0,p1,s0 ;c1*xi+c2*xi+1MPY .M2Xc3,yi1,p2 ;c3*yiADD .L2Xs0,p2,s1 ;c1*xi+c2*xi+1+c3*yiSHR .S2s1,15,yi1 ;yi+1STH .D2yi1,*y++ ;存储yi+1[cntr]SUB .L1cntr,1,cntr ;循环计数器递减[cntr]B .S1LOOP ;跳转至loop.endproc例5.41是IIR滤波器的最后汇编代码,代码中,循环外有一个取y[0]指令,除此之外没有取y数组指令,执行该代码需要408个周期((4×100)+8)。【例5.41】IIR滤波器的汇编代码。5.5.7最后汇编5.6循环中的IF-Then-Else语句5.6.1IF-Then-Else的C代码【例5.42】IF-Then-Else的C代码。intif_then(shorta[],intcodeword,intmask,shorttheta){ inti,sum,cond; sum=0; for(i=0;i32;i++) { cond=codewordmask; if(theta==
文档评论(0)