您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 酒店餐饮 > TMS-C-DSP结构-原理及应用的大作业
南京航空航天大学DSP原理与应用实验报告学生姓名:蔡静学生学号:SX1401111上机地点:12号楼509室2015年6月一、已知一低通滤波器的采样率为2KHz,通带为500Hz,阻带为600Hz,带内波动3dB,带外衰减-50dB,滤波器的相位具有线性特性,具体幅频特性见下图。要求用等波纹方法设计出该FIR滤波器,然后用TMS320C54x汇编语言编程实现该FIR滤波器。FIR滤波器系数为:0.0073-0.0009-0.0395-0.0609-0.01490.0340-0.0014-0.04570.01250.0641-0.0375-0.10800.12540.47170.47170.1254-0.1080-0.03750.06410.0125-0.0457-0.00140.0340-0.0149-0.0609-0.0395-0.00090.00731.matlab设计FIR滤波器:0200400600800100012001400160018002000-120-100-80-60-40-20020FrequencyMagnitude(dB)滤波器的幅频响应2.C54x汇编语言设计FIR滤波器:⑴输入100点的冲激响应信号impluse.dat,输出存到y_impluse.dat文件中00.10.20.30.40.50.60.70.80.91-30-25-20-15-10-50FrequencyPhase(degree)滤波器的相频响应⑵输入100点的正弦信号y_sin200.dat,输出存到out_sin200.dat文件中⑶输入100点的正弦信号y_sin800.dat,输出存到out_sin800.dat文件中二、认真阅读课本中P182~P186上基于时间抽取的8~1024点FFT的程序及输入、输出说明,然后调试出该程序,并对输入方波信号进行FFT变换,检验输出信号是否是一sinc波形。同时更改程序,使其能进行2048点FFT运算。⑴8点fft,输入FFTIN.DAT,输出存到out.dat文件中⑵2048点fft,输入FFTIN.dat,输出存到out.dat文件中。三、编写TMS320C54x汇编语言程序,计算下列矩阵乘法:3C56A4783247886428386C501E2950345A83486236413427654654354324321CCBA要求:①两个矩阵的数据由DATA段输入(可放在源程序中,也可单独建立一个数据文件);②两个矩阵的数据从0口以数据文件IN.DAT输入,计算结果从1口以数据文件OUT.DAT输出。1.程序说明本程序由Matrix_Mul.asm,Matrix_Mul.cmd,input_B.dat,input_C.dat,output_A.dat组成。通过两种不同的方式输入矩阵B和矩阵C:①矩阵B保存在input_B.dat文件中,由data段输入,通过.copy命令加载到程序中;②矩阵C保存在input_C.dat文件中,利用I/O端口从PA1口输入。矩阵相乘时,利用RPTZ,RPTB,BANZ实现三层循环嵌套,并通过MAR指令实现对辅助寄存器的修改。2.测试结果①矩阵B保存在input_B.dat文件中,由data段输入到MatrixB(0x0070);②矩阵C保存在input_C.dat文件中,通过PA1口输入到MatrixC(0x0080);③通过计算,结果矩阵A保存到MatrixA(0x0090)中,并通过PA0口输出到output_A.dat文件中。四、附录实验一:matlab程序:clc;clearall;[n,fo,mo,w]=remezord([500600],[10],[0.180.003],2000);b=remez(n,fo,mo,w);[h,w]=freqz(b);figure(1);plot(w*2000/pi,20*log10(abs(h)));gridon;xlabel('Frequency');ylabel('Magnitude(dB)');title('滤波器的幅频响应');figure(2);plot(w/pi,unwrap(angle(h)));xlabel('Frequency');ylabel('Phase(degree)');gridontitle('滤波器的相频响应');CCS程序:FIR.asm.titleFIR.asm.mmregs.def_c_int00PA0.set0;0口输出PA1.set1;1口输入x.usectx,28;定义数据空间h.usecth,28.bssy,1.dataCOEF:.word32768*73/10000;H0----H27.word-32768*9/10000.word-32768*395/10000.word-32768*609/10000.word-32768*149/10000.word32768*340/10000.word-32768*14/10000.word-32768*457/10000.word32768*125/10000.word32768*641/10000.word-32768*375/10000.word-32768*1080/10000.word32768*1254/10000.word32768*4717/10000.word32768*4717/10000.word32768*1254/10000.word-32768*1080/10000.word-32768*375/10000.word32768*641/10000.word32768*125/10000.word-32768*457/10000.word-32768*14/10000.word-32768*149/10000.word-32768*609/10000.word-32768*395/10000.word-32768*9/10000.word32768*73/10000;H0----H27.text_c_int00:SSBXFRCT;状态寄存器st1置位,frct置为1,小数乘法STM#h,AR1;ar1指向hRPT#27;将28个系数传送到数据空间MVPDCOEF,*AR1+STM#x+27,AR3;ar3指向x(n-27)STM#h+27,AR4;ar4指向h27STM#28,bk;循环缓冲区长度bk=28STM#-1,AR0;ar0=-1LD#x,DPPORTRPA1,@x;输入x(n)STM#00BEh,AR6;输出数据缓冲区首地址#00BEhSTM#0064h-1,AR7;循环计算100个样点FIR:RPTZA,#27;A清零,迭代28次MAC*AR3+0%,*AR4+0%,A;乘法累加STHA,@y;保存y(n)STHA,*AR6+;保存y(n)到DM空间,方便画图PORTW@y,PA0;输出y(n)PORTRPA1,*AR3+0%;输入新数据BANZFIR,*AR7-end:Bend.ENDFIR.cmd-x.\Debug\FIR.obj-x.\Debug\FIR_V.obj-oFIR.out-mFIR.objMEMORY{PAGE0:EPROM:org=0xE000,len=0x1000VECS:org=0xFF80,len=0x0080PAGE1:SPRAM:org=0x0060,len=0x0020DARAM:org=0x0080,len=0x1380}SECTIONS{.text:EPROMPAGE0.data:EPROMPAGE0.bss:SPRAMPAGE1x:align(16){}DARAMPAGE1h:align(16){}DARAMPAGE1.vectors:VECSPAGE0}FIR_V.asm.titleFIR_V.asm.ref_c_int00.sect.vectorsB_c_int00.end实验二:2048点fftFFT.ASM*********************************************************************N(8-1024)pointsFFTProgram*********************************************************************.titlefft.asm.mmregs.copycoeff.inc.copyfftin.dat*.copyfftin64.dat.defstartsine:.usectsine,512cosine:.usectcosine,512d_input:.usectd_input,2048fft_data:.usectfft_data,2048fft_out:.usectfft_out,1024STACK.usectSTACK,10K_DATA_IDX_1.set2K_DATA_IDX_2.set4K_DATA_IDX_3.set8K_TWID_TBL_SIZE.set512K_TWID_IDX_3.set128K_FLY_COUNT_3.set4K_FFT_SIZE.set2048;N=2048(8)K_LOGN.set11;LOG(N)=LOG(2048)=11(3)PA0.set0PA1.set1.bssd_twid_idx,1.bssd_data_idx,1.bssd_grps_cnt,1.sectfft_prg***BitReversalRoutine***.asgAR2,REORDERED.asgAR3,ORIGINAL_INPUT.asgAR7,DATA_PROC_BUF.textstart:SSBXFRCTSTM#STACK+10,SPSTM#d_input,AR1;inputthe2Ndata*STM#fft_data,AR1;inputthe2NdataRPT#2*K_FFT_SIZE-1;fromPA1MVPDd_input1,*AR1+*PORTRPA1,*AR1+STM#sine,AR1;movecoeftofsinRPT#1024;fromprogramtodataMVPDsine1,*AR1+STM#cosine,AR1;movecoeffofcosRPT#1024;fromprogramtodataMVPDcosine1,*AR1+STM#d_input,ORIGINAL_INPUTSTM#fft_data,DATA_PROC_BUFMVMMDATA_PROC_BUF,REORDEREDSTM#K_FFT_SIZE-1,BRCRPTBDbit_rev_end-1STM#K_FFT_SIZE,AR0MVDD*ORIGINAL_INPUT+,*REORDERED+MVDD*ORIGINAL_INPUT-,*REORDERED+MAR*ORIGINAL_INPUT+0Bbit_rev_end:****FFTCode*****.asgAR1,GROUP_COUNTER.asgAR2,PX.asgAR3,QX.asgAR4,WR.asgAR5,WI.asgAR6,BUTTERFLY_COUNTER.asgAR7,STAGE_COUNTER***stage1***STM#0,BKLD#0,ASMSTM#fft_data,PXLD*PX,16,ASTM#fft_data+K_DATA_IDX_1,QXSTM#K_FFT_SIZE/2-1,BRCRPTBDstage1end-1STM#K_DATA_IDX_1+1,AR0SUB*QX,16,A,BADD*QX,16,ASTHA,ASM,*PX+STB,*QX+||LD*PX,ASUB*QX,16,A,BADD*QX,16,ASTHA,ASM,*PX+0STB,*QX+0%||LD*PX,Astage1end:***Stage2***STM#
本文标题:TMS-C-DSP结构-原理及应用的大作业
链接地址:https://www.777doc.com/doc-6155469 .html