TMS320C54x的软硬件应用.ppt

上传人:小飞机 文档编号:6522022 上传时间:2023-11-08 格式:PPT 页数:40 大小:1.03MB
返回 下载 相关 举报
TMS320C54x的软硬件应用.ppt_第1页
第1页 / 共40页
TMS320C54x的软硬件应用.ppt_第2页
第2页 / 共40页
TMS320C54x的软硬件应用.ppt_第3页
第3页 / 共40页
TMS320C54x的软硬件应用.ppt_第4页
第4页 / 共40页
TMS320C54x的软硬件应用.ppt_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《TMS320C54x的软硬件应用.ppt》由会员分享,可在线阅读,更多相关《TMS320C54x的软硬件应用.ppt(40页珍藏版)》请在三一办公上搜索。

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

2、性缓冲区顶部,PORTR,PORTR,滑窗的N个单元的缓冲区,存放最新的N个输入样本从最老的样本开始,每读一个样本后,将此样本向下移位。,样本向下移位,用延时指令DELAY实现。DELAY:数据存储器单元中的内容向较高地址单元传送。DELAY Smen;SmenSmen+1DELAY*AR2-DELAY指令与其它指令相结合单周期指令LT+DELAYLTD MAC+DELAYMACD因为单周期内要进行一次读和一次写操作,故延迟操作只能在DARAM中进行,循环缓冲区法实现Z-1,特点如下对于N级FIR滤波器,在数据存储器中开辟一个也称之为滑窗的N个单元的缓冲区,存放最新的N个输入样本每次输入新样本

3、时,以新样本改写滑窗中最老的数据,而滑窗中其它数据不需要移动循环缓冲区首尾相接,循环寻址。,举例N=6的循环缓冲区存储图,数据存储器,数据存储器,数据存储器,循环缓冲区顶部,滑窗的N个单元的缓冲区,存放最新的N个输入样本以新样本改写滑窗中最老的数据,而滑窗中其它数据不需要移动,循环缓冲区底部,6,6,对设置循环缓冲区的要求,循环缓冲区的长度R小于2N,且地址从一个低N位为0的地址开始;步长小于或等于循环缓冲区的长度所使用的辅助寄存器必须指向缓冲区单元循环寻址算法规则:If 0index+stepBK index=index+stepElse if index+stepBKindex=index

4、+step-BKElse if index+step0index=index+step+BK,251,循环,1.用线性缓冲区和直接寻址方法实现FIR滤波器,直接寻址FIR滤波器程序如下:LD#XN,DPSSBX FRCTPORTR PA1,XNLOP:LD XNM4,TMPY A4,ALTD XNM3MAC A3,ALTD XNM2MAC A2,ALTD XNM1MAC A1,ALTD XNMAC A0,ASTH A,yPORTW y,PA0BD LOPPORTR PA1,XN,数据存储器,y,XN,XNM1,XNM2,XNM3,XNM4,数据存储器,A0,A1,A2,A3,A4,2.用线性缓

5、冲区和间接寻址方法实现FIR滤波器,数据存储器,y,X,AR1,数据存储器,a:,AR2,间接寻址FIR滤波器程序如下:STM#x+4,AR1STM#a+4,AR2STM#4,AR0SSBX FRCTLD#x,DPPORTR PA1,xLOP:LD*AR1-,TMPY*AR2-,ALTD*AR1-MAC*AR2-,ALTD*AR1-MAC*AR2-,ALTD*AR1-MAC*AR2-,ALTD*AR1MAC*AR2+0,ASTH A,yPORTW y,PA0BD LOPPORTR PA1,*AR1+0,数据存储器,数据存储器,y,X,AR1,a:,AR2,3.用线性缓冲区和带移位双操作是数寻址

6、方法实现FIR滤波器,数据存储器,x,AR1,程序存储器,COFF,双操作数、带移位FIR滤波器程序如下:STM#x+5,AR1STM#4,AR0SSBX FRCTLD#x+1,DPPORTR PA1,x+1LOP:RPTZ#4MACD*AR1-,COFF,APORTW*AR1+,PA0BD LOPPORTR PA1,*AR1+0.dataCOFF.word a4,a3,a2,a1,a0,数据存储器,程序存储器,x,AR1,COFF,4.用循环缓冲区和双操作数寻址方法实现FIR滤波器,数据存储器,y,xn,AR3,数据存储器,a0,AR4,60h,80h,81h,82h,83h,84h,88h

7、,89h,8Ah,8Bh,8Ch,循环缓冲区FIR滤波器的程序清单,FIR4.ASM源程序.title“FIR4.ASM”.mmregs.def _c_int00.bss y,1xn.usect“xn”,5a0.usect“a0”,5PA0.set 0PA1.set 1.datatable:.word 1*32768/10.word 2*32768/10.word 3*32768/10.word 4*32768/10.word 5*32768/10,.text_c_int00:SSBX FRCTSTM#a0,AR1RPT#4MVPD table,*AR1+STM#xn+4,AR3STM#a0+

8、4,AR4STM#5,BKSTM#-1,AR0LD#xn,DPPORTR PA1,xnFIR:RPTZ A,#4MAC*AR3+0%,*AR4+0%,ALD#y,DPSTH A,yBD FIRPORTR PA1,*AR3+0%.end,FIR4_V_.asm复位向量文件程序清单,.title“FIR4_V.asm”.ref _c_int00.sect“.vectors”B _c_int00.end,FIR4.cmd 链接命令文件清单,FIR4_V.objFIR4.obj-O FIR4.out-m FIR4.mapMEMORYPAGE 0:EPROM:o=0E000h,l=1000hVECS:o

9、=0FF80h,l=0080hPAGE 1:SPRAM:o=0060h,l=0020hDARAM:o=0080h,l=1380hSECTIONS.text:EPROM PAGE 0.data:EPROM PAGE 0.bss:SPRAM PAGE 1xn:align(8)DARAM PAGE 1a0:align(8)DARAM PAGE 1.vectors:VECS PAGE 0,系数对称FIR滤波器实现的要点如下(N=8),1、开辟2个循环缓冲区:New和Old,长度各为N/2。2、AR2指向New缓冲区中最新的数据 AR3指向Old缓冲区中最老的数据3、在程序存储器中设置系数表,4、(AR

10、2)+(AR3)AH,(AR2)-1AR2,(AR3)-1AR35、设置B=0,重复计算4次(i=0,1,2,3)(AH)*系数ai+(B)B 系数指针(PAR)+1(AR2)+(AR3)AH,AR2和AR3减16、保存和输出结果(结果在BH中),7、修正数据指针,让AR2和AR3分别指向New缓冲区中最新的数据和Old缓冲区中最老的数据8、用New数据区中最老的数据替代Old缓冲区中最老的数据。Old缓冲区指针减19、输入一个新数据替代New缓冲区中最老的数据重复执行49步,对称FIR滤波器(N=8)源程序清单.title“FIR5.asm”.mmregs.def _c_int00.bss

11、y,1x_new.usect“DATA1”,4x_old.usect“DATA2”,4Size.set 4PA0.set 0PA1.set 1.dataCOFF:.word 1*32768/10.word 2*32768/10.word 3*32768/10.word 4*32768/10,.text_c_int00:LD#y,DPSSBX FRCTSTM#x_new,AR2STM#x_old+(size-1),AR3STM#size,BKSTM#-1,AR0PORTR PA1,#x_newFIR:ADD*AR2+0%,*AR3+0%,ARPTZ B,#(size-1)FIRS*AR2+0%,

12、*AR3+0%,COFFSTH B,yPORTW y,PA0MAR*+AR2(2)%MAR*AR3+%MVDD*AR2,*AR3+0%BD FIRPORTR PA1,*AR2.end,/*有限冲击响应(FIR)滤波器算法实验参考源程序 fir.asm*/HIGHPASS.set0;if you want to use,please set the value to 1BANDPASS.set0LOWPASS.set1.globalstart,fir.mmregsCOFF_FIR_START.sect coff_fir.if LOWPASS.includelowpasslowpass.inc.e

13、lseif BANDPASS.includebandpassbandpass.inc.else.includehighpasshighpass.inc.endifK_FIR_BFFR.set32d_data_buffer.usectfir_bfr,64FIR_DP.usectfir_vars,0d_filin.usectfir_vars,1d_filout.usectfir_vars,100houtput.usectfir_vars,1.asgAR4,FIR_DATA_P.asgAR6,INBUF_P.asgAR7,OUTBUF_P.asgAR3,OUTBUF,.sectfir_prog no

14、pstart:LD#FIR_DP,DPSTM#d_data_buffer,FIR_DATA_PRPTZA,#K_FIR_BFFR-1STLA,*FIR_DATA_P+STM#d_filin,INBUF_PSTM#d_filout,OUTBUF_P STM#output,OUTBUFSTM#100h,BKfir_loop:NOP;Add Breakpoint&porbe pointLD*INBUF_P,ACALLfirSTHA,*OUTBUF_P+%STHA,*OUTBUFmain_end:bfir_loop,fir:SSBXSXM SSBXFRCT STM#d_data_buffer,FIR_

15、DATA_PSTLA,*FIR_DATA_PSTM#(d_data_buffer+K_FIR_BFFR-1),FIR_DATA_Pfir_task:RPTZ A,#K_FIR_BFFR-1MACD*FIR_DATA_P-,COFF_FIR_START,ARET.end,/*fir.cmd*/MEMORYPAGE 0:PROG:o=100h,l=2000h PAGE 1:DATA1:o=2600h,l=1000hDATA2:o=2100h,l=100hDATA3:o=2200h,l=100hDATA4:o=2300h,l=100hDATA5:o=2400h,l=100hDATA6:o=2500h

16、,l=100hSECTIONScoff_fir:PROGPAGE 0fir_prog:PROGPAGE 0fir_vars:DATA1PAGE 1 fir_coff:DATA2PAGE 1 fir_bfr:DATA3PAGE 1,问题:,MACD 什么意思?用什么方法实现FIR算法?3.填空:K_FIR_BFFR的值:_;_data_buffer的地址:_;d_filin的地址:_;d_filout的地址:_;output的地址:_;DP的值:_。4.循环寻址的运算法则?,断点的使用问题?Run和animate的区别?,MACD Smen,Pmad,src,src=src+Smen*PmadT

17、=Smen(Smen+1)=Smen,断点的使用问题,CCS3.3以后版本有多种类型断点:Halt target 断点:程序运行到断点时将停止运行,更新所有窗口,需认为干预才能继续运行。Read date from file/write date to file 探针(Probe Point)Refresh a window 等,除1外的所有所谓的“断点”功能都是暂停程序运行,做完action后继续运行程序,Run和Animate的使用,Run:运行程序,碰到halt target断点停止运行,除非认为干预。Animate:动画运行。碰到halt target断点暂停程序运行,更新窗口显示,然后继续运行。可理解为“运行中断继续”,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号