TMS320C54x的软硬件应用

上传人:宝路 文档编号:47790752 上传时间:2018-07-05 格式:PPT 页数:40 大小:1.46MB
返回 下载 相关 举报
TMS320C54x的软硬件应用_第1页
第1页 / 共40页
TMS320C54x的软硬件应用_第2页
第2页 / 共40页
TMS320C54x的软硬件应用_第3页
第3页 / 共40页
TMS320C54x的软硬件应用_第4页
第4页 / 共40页
TMS320C54x的软硬件应用_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《TMS320C54x的软硬件应用》由会员分享,可在线阅读,更多相关《TMS320C54x的软硬件应用(40页珍藏版)》请在金锄头文库上搜索。

1、第6章 TMS320C54x的软硬件 设计6.3 FIR滤波器的C54x实现方法FIR滤波器算法分析l乘法累加运算lZ-1操作:延时操作。有两种方法实现:线性缓冲区法 循环缓冲区法lI/O输入和输出操作指令: PORTR PA, Smen PORTW Smen, PA线性缓冲区法实现Z-1l又称延迟线法,特点如下 对于N级FIR滤波器,在数据存储器中开辟一个 称之为滑窗的N个单元的缓冲区,存放最新的N 个输入样本 从最老的样本开始,每读一个样本后,将此样本每读一个样本后,将此样本 向下移位。向下移位。读完最后一个样本后,输入最新样本 至缓冲区的顶部。举例N=6的线性缓冲区存储图x(n)x(n-

2、1)x(n-2)x(n-3)x(n-4)x(n-5)数据存储器ARx-x(n+1)x(n)x(n-1)x(n-2)x(n-3)x(n-4)数据存储器ARx-x(n+2)x(n+1)x(n)x(n-1)x(n-2)x(n-3)数据存储器ARx-线性缓冲区 顶部PORTRPORTR 滑窗的N个单元的缓冲区,存放最新的N个输入样本 从最老的样本开始,每读一个样本后,将此样本向下移位。每读一个样本后,将此样本向下移位。l样本向下移位,用延时指令DELAY实现。lDELAY:数据存储器单元中的内容向较高地址单 元传送。 DELAY Smen ;SmenSmen+1 DELAY *AR2- lDELAY指

3、令与其它指令相结合单周期指令 LT+DELAYLTD MAC+DELAYMACDl因为单周期内要进行一次读和一次写操作,故延 迟操作只能在DARAM中进行循环缓冲区法实现Z-1l特点如下 对于N级FIR滤波器,在数据存储器中开辟一个 也称之为滑窗的N个单元的缓冲区,存放最新 的N个输入样本 每次输入新样本时,以新样本改写滑窗中最老 的数据,而滑窗中其它数据不需要移动 循环缓冲区首尾相接,循环寻址。举例N=6的循环缓冲区存储图x(n)x(n-1)x(n-2)x(n-3)x(n-4)x(n-5)数据存储器ARxx(n)x(n-1)x(n-2)x(n-3)x(n-4)x(n+1)数据存储器x(n)x

4、(n-1)x(n-2)x(n-3)x(n+2)x(n+1)数据存储器循环缓冲区 顶部 滑窗的N个单元的缓冲区,存放最新的N个输入样本 以新样本改写滑窗中最老的数据,而滑窗中其它数据不需要移动循环缓冲区 底部ARxARx66对设置循环缓冲区的要求1.循环缓冲区的长度R小于2N,且地址从一个低N 位为0的地址开始; 2.步长小于或等于循环缓冲区的长度 3.所使用的辅助寄存器必须指向缓冲区单元循环寻址算法规则: If 0index+stepEPROM PAGE 0 .data:EPROM PAGE 0 .bss :SPRAM PAGE 1 xn :align(8) DARAM PAGE 1 a0 :

5、align(8) DARAM PAGE 1 .vectors:VECS PAGE 0 系数对称FIR滤波器实现的要点如下(N=8)x(n-1)x(n-2)x(n-3)x(n)a3a2a1a0数据存储器程序存储器COFFx(n-7)x(n-6)x(n-5)x(n-4)New循环缓冲区 Old循环缓冲区AR2AR380h81h82h83h88h89h8Ah8Bh 1、开辟2个循环缓冲区:New和Old,长度各为N/2。 2、AR2指向New缓冲区中最新的数据AR3指向Old缓冲区中最老的数据 3、在程序存储器中设置系数表4、(AR2)+(AR3)AH,(AR2)-1AR2, (AR3)-1AR35

6、、设置B=0,重复计算4次(i=0,1,2,3)(AH)*系数ai+(B)B 系数指针(PAR)+1(AR2)+(AR3)AH, AR2和AR3减16、保存和输出结果(结果在BH中)x(n-1)x(n-2)x(n-3)x(n)a3a2a1a0数据存储器程序存储器COFFx(n-7)x(n-6)x(n-5)x(n-4)New循环缓冲区 Old循环缓冲区AR2AR380h81h82h83h88h89h8Ah8Bhl7、修正数据指针,让AR2和AR3分别指向New缓冲区中 最新的数据和Old缓冲区中最老的数据l8、用用NewNew数据区中最老的数据替代数据区中最老的数据替代OldOld缓冲区中最老的

7、缓冲区中最老的 数据。数据。OldOld缓冲区指针减缓冲区指针减1 1l9、输入一个新数据替代输入一个新数据替代NewNew缓冲区中最老的数据缓冲区中最老的数据l重复执行49步x(n-1)x(n-2)x(n-3)x(n)a3a2a1a0数据存储器程序存储器COFFx(n-7)x(n-6)x(n-5)x(n-4)New循环缓冲区 Old循环缓冲区AR2AR380h81h82h83h88h89h8Ah8Bhl对称FIR滤波器(N=8)源程序 清单 .title “FIR5.asm” .mmregs .def _c_int00 .bss y,1 x_new .usect “DATA1” ,4 x_o

8、ld.usect “DATA2” ,4 Size .set 4 PA0 .set 0 PA1.set 1 .data COFF: .word 1*32768/10 .word 2*32768/10 .word 3*32768/10 .word 4*32768/10.text _c_int00:LD #y, DP SSBX FRCT STM #x_new, AR2 STM #x_old+(size-1), AR3 STM #size, BK STM # -1, AR0 PORTR PA1, #x_new FIR:ADD *AR2+0%,*AR3+0%, A RPTZ B ,#(size-1) F

9、IRS *AR2+0%, *AR3+0%, COFF STH B, y PORTW y, PA0 MAR *+AR2(2)% MAR *AR3+% MVDD *AR2, *AR3+0% BD FIR PORTR PA1, *AR2 .end/*有限冲击响应(FIR)滤波器算法实验参考源程序 fir.asm */ HIGHPASS.set0 ;if you want to use ,please set the value to 1 BANDPASS.set0 LOWPASS.set1 .globalstart,fir .mmregs COFF_FIR_START .sect “coff_fir

10、“ .if LOWPASS .include “lowpasslowpass.inc“ .elseif BANDPASS .include “bandpassbandpass.inc“ .else .include “highpasshighpass.inc“ .endif K_FIR_BFFR.set32 d_data_buffer.usect“fir_bfr“,64 FIR_DP.usect“fir_vars“,0 d_filin.usect“fir_vars“,1 d_filout .usect“fir_vars“,100h output.usect“fir_vars“,1 .asgAR

11、4,FIR_DATA_P .asgAR6,INBUF_P .asgAR7,OUTBUF_P .asgAR3,OUTBUF.sect“fir_prog“ nop start: LD#FIR_DP,DP STM#d_data_buffer,FIR_DATA_P RPTZA,#K_FIR_BFFR-1 STLA,*FIR_DATA_P+ STM#d_filin,INBUF_P STM#d_filout,OUTBUF_P STM#output,OUTBUF STM#100h,BK fir_loop: NOP ;Add Breakpoint & porbe point LD*INBUF_P,A CALL

12、fir STHA,*OUTBUF_P+% STHA,*OUTBUF main_end: bfir_loop fir: SSBX SXM SSBX FRCT STM#d_data_buffer,FIR_DATA_P STLA,*FIR_DATA_P STM#(d_data_buffer+K_FIR_BFFR-1), FIR_DATA_Pfir_task: RPTZ A, #K_FIR_BFFR-1 MACD *FIR_DATA_P-,COFF_FIR_START, ARET .end/* fir.cmd*/ MEMORY PAGE 0: PROG: o= 100h,l= 2000h PAGE 1

13、: DATA1:o= 2600h, l= 1000h DATA2:o= 2100h, l= 100h DATA3:o= 2200h,l= 100h DATA4:o= 2300h,l= 100h DATA5:o= 2400h,l= 100h DATA6:o= 2500h,l= 100h SECTIONS coff_fir : PROGPAGE 0 fir_prog : PROG PAGE 0 fir_vars : DATA1 PAGE 1fir_coff : DATA2 PAGE 1fir_bfr : DATA3PAGE 1 问题:1.MACD 什么意思?2.用什么方法实现FIR算法? 3.填空

14、:l K_FIR_BFFR的值:_;l_data_buffer的地址:_;ld_filin的地址:_;ld_filout的地址:_;loutput的地址: _;lDP的值:_。 4. 循环寻址的运算法则?4.断点的使用问题?5.Run和animate的区别?MACD Smen,Pmad,srcsrc=src+Smen*Pmad T=Smen (Smen+1)=Smen断点的使用问题lCCS3.3以后版本有多种类型断点: 1. Halt target 断点:程序运行到断点时将停止运行,更新所有 窗口,需认为干预才能继续运行。 2. Read date from file / write date to file 探针(Probe Point) 3. Refresh a window 等 除1外的所有所谓的“断点”功能都是暂停 程序运行,做完action后继续运行程序Run和Animate的使用lRun:运行程序,碰到halt target断点停止 运行,除非认为干预。lAnimate:动画运行。碰到halt target断点 暂停程序运行,更新窗口显示,然后继续 运行。可理解为“运行中断继续”

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号