欢迎来到课桌文档! | 帮助中心 课桌文档-建筑工程资料库
课桌文档
全部分类
  • 党建之窗>
  • 感悟体会>
  • 百家争鸣>
  • 教育整顿>
  • 文笔提升>
  • 热门分类>
  • 计划总结>
  • 致辞演讲>
  • 在线阅读>
  • ImageVerifierCode 换一换
    首页 课桌文档 > 资源分类 > DOCX文档下载  

    DSP原理课练习题通信参考答案.docx

    • 资源ID:990313       资源大小:55.63KB        全文页数:17页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    DSP原理课练习题通信参考答案.docx

    DSP原理与应用练习题参考答案24学时版本用于2010级通信工程1.在16位定点DSP中,一个16位二进制数在Q15表示法下的含义是第15位为符号位,第140位为小数位;在Q12表示法下的含义是第15位为符号位,第1412位为整数位,第110位为小数位:在Qll表示法下的含义是第15位为符号位,第1413位为整数位,第100位为小数位。由此类推。试写出下面问题的答案:根据教材P7的公式(1)16位二进制数IOAAH在Q15表示法下的十进制数值是多少?在Qll表示法下的十进制数值是多少?Q15表示法下的十进制数值是4266/32768=0.13018798828125Qll表示法下的十进制数值是4266/2048=2.083007812516位二进制数C650H在Q15表示法下的十进制数值是多少?在Q12表示法下的十进制数值是多少?QI5表示法下的十进制数值是-14768/32768=-0.45068359375Q12表示法下的十进制数值是-14768/4096=-3.60546875十进制正数0.625在Q15表示法下的二进制数是多少?在QIl表示方法下的二进制数是多少?Q15表示法下的二进制数是0.625x32768=500OHQll表示法下的二进制数是0.625x2048=050OH(4)十进制负数-6.375在Q12表示法下的二进制数是多少?在QIl表示方法下的二进制数是多少?-6.375x4096=-6600H=9A00H6375x2048=-3300H=CDooH2.在C54xDSP的C语言开发环境中,数据类型与通常的C语言开发环境的数据类型不同,主要数据类型如下表所示:数据类型位长char,unsignedchar16short,unsignedshort,signedshort16int,unsignedint,signedint16long,unsignedlong,signedlong32float32double32现在利用一个15阶Hamming低通滤波器对16位音频信号进行FlR滤波。在C54xDSP和CCS2.2上的C语言程序如下:constdoublecoef15=0,00482584,0.00804504,-0.00885584,-0.04291741,-0.02903702,0.09725365,0.28342322,0.37452503,0.28342322,0.09725365,-0.02903702,-0.04291741,-0.00885584,0.00804504,0.00482584);voidfir(int*x,int*y)(inti,j;for(i=0;i<1024;i+)(doubleaccumulator=0.0;for(j=OJ<15;j+)(accumulator+=xi-j*coefj;)yi=(int)accumulator;)以上表达式中,x,y分别是低通滤波输入、输出的16位整型数组变量。现在要求把以上过程优化为在C54x平台上运行的精度最高、执行效率最高的16位定点运算形式。试写出在C54xDSP和CCS2.2环境下完成16位相乘和32位累加的定点运算的C程序。第一步:把滤波器系数转化为Q15定点数第二步:把乘累加转化为整数乘法,Q15乘以整数的小数点位置在第14位和第15位之间,累加结果为32位整数,其中最高两位为符号位,接着15位为整数,低15位为小数第三步:舍去低15位小数,取一位符号位和15位整数位作为滤波输出结果constintcoef15=158,264,-290,-1406,-951,3187,9287,12272,9287,3187,-951,-1406,-290,264158;voidfir(int*x,int*y)(inti,j;for(i=0;i<1024;i+)(longaccumulator=0;ford=0J<15J+÷)(accumulator+=xi-j*coefj;)yi=(int)(accumulator>>15);)3.解决图像编码中常见的8x8离散余弦变换在VC5402DSP上定点运算问题。JT用C语言编写VC5402上用定点运算实现153xcos-+221xcos的程序,并且把最后结果存放48到16位整型变量i中。数据类型见前面题3的表格。COSq的Q15定点数是23170,5A82HCOS(的QI5定点数是30274,7642Hconstintx2=153,221);constinty2=23170,30274);longa;intr;a=x0*y0+xl*y1;r=(int)(a>>15);或者C程序也可写成:longa;intr;a=153*23170÷221*30274;r=(int)(a>>15);用C54x汇编指令写出用定点运算实现153XCoSX+221XCoSX的代码,并且把最后结果转换为4816位整数存放到1102H的地址中。IoOOH存放153,IoolH存放2211002H存放23170,1003H存放30274SSBXFRCTSTM#1000H,AR2STM#1002H,AR3STM#11O2H,AR1RPTZA,#1MAC*AR2+,*AR3+,ASTHA,*AR1现有一个8位无符号字符数216,对其执行浮点运算216XCOSXCOS。在VC5402上的汇编指48令代码段如下:SSBXFRCTMPY*(1000H),#216,AMPYA*(1001H)STHB,*(1002H)运算前数据页IOooH和IOolH的地址存放的数据是多少?运算后数据页1002H的地址存放的结果是多少?用CCS可以算出140,与笔算一致笔算方法:216*23170=5004720,取1位符号和15位得152,乘以30274后再取1位符号和15位得140运算前数据页IoOoH的地址存放的数据是CoSXX32768=23170=5A82H4运算前数据页100IH的地址存放的数据是CoSxX32768=30274=7642H8运算后数据页1002H的地址存放的结果是8CH=140(4)上面的运算精度偏低。如何在中插入移位指令提高运算精度?写出完整的指令代码。在第一次乘法后果把A左移8位,接着在第二次乘法后右移8位SSBXFRCTMPY*(1000H),#216,ASFTAA,#8MPYA*(1001H)SFTAB,#-8STHB,*(1002H)这样可得141在以上的基础上简述如何在VC5402上使用MAC指令通过双重循环嵌套的16位定点乘累加运算求出一个图像数据的8x8离散余弦变换系数?忽略常数项的8x8离散余弦变换为:F(u,v)=ZZf(x,y)cos<2:;*COS:*u,vixty/0,7,K=O)=O1616用COS号产X32768后取整的方法,求出8个余弦常数的Q15数,存放到内存。把FRCT置1在内循环用MAC指令计算f(x,y)与Q15余弦常数的乘累加,32位结果存放A累加器在外循环用MAC指令计算A的高16位与Q15余弦常数的乘累加,高16位为最后结果。4.在VC5402汇编语言程序中需要连续读取散布于数据页地址0A06H,0A27H,0A3AH,0A53H,0A65H,0A92H,OACAH,OAEoH中的8个数据。要求以最少指令和最快速度读入这8个地址的数据。写出执行指令。注意读入8个地址数据的次序不能改变。如全写成绝对寻址,得一半分1.D*(0A06H),A1.D*(0A27H),A1.D*(0A3AH),A1.D*(0A53H),A1.D*(0A65H),A1.D*(0A92H),A1.D*(OACAH),A1.D*(OAEOH),A满分答案:RSBXCPL或者CPL=O时1.D#14H,DP1.D06H,A1.D27H,A1.D3AH,A1.D53H,A1.D65H,A1.D#15H,DP1.D12H,A1.D4AH,A1.D60H,A5.当VC5402内部STI状态寄存器第14位CPL=I同时数据页指针寄存器DP=100OH,堆栈指针寄存器SP=0275H时,指令LD2AH,A和LD82H,A所读取的数据页地址是多少?当CPL=I同时DP=0480H,SP=1C22H时,指令LD40H,A和LD2A6H,A所读取的数据页地址又是多少?CPL=I,指令LD2AH,A和LD82H,A所读取的数据页地址分别是029FH和0277HCPL=I,指令LD40H,A和LD2A6H,A所读取的数据页地址分别是1C62H和1C48H注意,DP有效位数9位,直接寻址位数7位6.现在需要对16位整型音频信号数据执行512点FFT,待处理数据放在数据页首地址为OAOOH,长度为512的缓冲区内。在按时间抽取基2FFT碟形运算中输入数据倒序,输出数据顺序。写出在一个512次循环中以降序ARx-OB读入数据页OBFFFH0A00H的256个输入数据的汇编指令代码。STM#0BFFH,ARlSTM#256,AROSTM#511,AR2loop:1.D*AR1-OB.ABANZIOoD,*AR2-或者STM#OBFFH,ARlSTM#256,AROSTM#511,BRCRPTBend_loop-1LD*AR1-OB,Aend_loop:或者STM#OBFFH,ARlSTM#256,ARORPT#5111.D*AR1-OB,A在中已经读取0A65H地址的数据后,随后连续8次读取的输入数据的地址是多少?要求写出详细计算过程,光写对答案不能得满分。第1次:0(X)0,1010,0110,0101-1,0000,(X)OOB=OOOO,IOllJOlO,0101=0BA5H第2次:0000,1011,1010,0101-1,0000,0000B=0000,1010,1010,0101=0AA5H第3次:0000,1010,1010,0101-1,OOOO.OOOOB=(X)OO,101l,0010,0101=0B25H第4次:0000,1011,0010,0101-1,0000,0000B=0000,1010,0010,0101=0A25H第5次:OooO,1010,0010,0101-1,0000,0000B=0000,1011,1100,0101=0BC5H第6次:0000,1011,1100,0101-1,0000,0000B=0000,1010J100,0101=OAC5H第7次:0000,1010,1100,0101-1,0000,OOOOB=0000,1011,0100,0101=0B45H第8次:0000,1011,0100,0101-1,0000,OOOOB=0000,1010,0100,0101=0A45H7.现在需要对16位整型音频信号数据执行128点FFT,待处理数据放在数据页首地址为1200H,长度为128的缓冲区内。在按时间抽取基2FFT碟形运算中输入数据倒序,输出数据顺序。(1)写出在一个128次循环中以升序ARx÷0B读入数据页1200H127FH的128个输入数据的汇编指令代码。STM#1200H,ARlSTM#64,ARoSTM#127,AR2loop:1.D*AR1+OB.ABANZIoOD,*AR2-或者STM#1200H,ARlSTM#64,ARoSTM#127,BRCRPTBend_loop-11.D*AR1+0氏Aend_loop:或者STM#1200H,ARlSTM#64,ARORPT#1271.D*AR1+OB.A在中已经读取1239H地址的数据后,随后连续8次读取的输入数据的地址是多少?要求写出详细计算过程,光写对答案不能得满分。第1次:0001,0010,0011JOO1+O1OO,OOOOB=OOO1,OO1O,O111,1001=1279H第2次:0001.0010,0111,1001+0100,0000B=0001,0010,0000,0101=1205H第3次:O(X)1,0010,0000,0101+0100,OOOOB=(X)01,0010,0100,0101=1245H第4次:0001,0010,0100,0101+0100,0000B=0001,0010,0010,0101=1225H第5次:0001,0010,0010,010l+0100,0000B=0001,0010,0110,0101=1265H第6次:0001.0010,0110,0101+0100,0000B=0001,0010,000k0101=1215H第7次:O(X)1,0010,0001,0101÷O1OO,OOOOB=(X)01,0010,0101,0101=1255H第8次:0001,0010,0101,0101+0100,0000B=0001,0010,0011,0101=1235H8.使用VC5402DSP芯片对一无限长的16位整型音频信号序列执行103阶FlR带通滤波。需要分配滤波数据缓冲区FIR.DATA和流波系数缓冲区FIR_COEFo现有的在C54xDSP和CCS2.2环境下的C语言程序fir.c和相应的链接命令文件fir.cmd如下:fir.c文件:intfir-data103;intfir-coef103;main()(fir(fir_data,fir_coef,SignalJen,fp_in,fp_out);执行FIR滤波的汇编函数)fir.cmd文件:MEMORY(PAGE0:*programspace*/VECS:origin=0x0080,length=0x0080*vectortablespace*/PROG:origin=0x0100,length=0x2B00*programmemoryspace*/PAGEI:*dataspace*/DATl:origin=0x2C00,length=0x1400*applicationdata*/DAT2:origin=0x4000,length=0x4000*applicationdata*/)SECTIONS(.vectors:)>VECSPAGE0*interruptvectortable*/.text:()>PROGPAGE0*programcode*/.data:)>PROGPAGE0*initializeddata*/.coeffs:>PROGPAGE0*initializedparameters*/.stack:()>DAT1PAGE1*softwarestacksection*/.variable:)>DAT2PAGEI*uninitializedvarsforDSP&AIC10*/.bss:>DA2PAGE1*uninitializedvarsforapplications*/)于是流波数据缓冲区FIR_DATA和滤波系数缓冲区FIR_COEF都在片外SRAM中。现在为了提高执行效率尤其在汇编函数中使用双操作数寻址,需要令滤波数据缓冲区FIR_DATA和滤波系数缓冲区FIR_COEF在片内DARAM中。在上面的C语言程序fir.c和相应的链接命令文件fir.cmd中需要做出哪些改动?写出所有改动的地方。fir.cmd文件:SECTIONS(.internal:>DATlPAGE1fir.c文件:#pragmaDATA_SECTION(fir_data,".internal");#pragmaDATA_SECTION(fir_coef5".internal");9.使用VC5402芯片对一无限长的16位整型音频信号序列执行43阶Hamming低通滤波。每生成一个输出值,线性缓冲区法需要执行43次移动,而循环缓冲区法不需要这样的43次移动,省略43次数据搬移操作,执行效率更高。汇编代码如下:FIR_FILTERING:STM#FIRDATAPTR+FILTERLEN-1.STM#FlRCoEFPTR,STM#SIGNAL_LEN-1,AR2STM#TEMPBUFEARlSTM#1,AROloop2:STM.BKPORTRPA1,*AR4+%;PA1为输入端口号1.D#0,ASTM,AR3Ioopl:MAC.ABANZloopl,*AR3-STH,*AR1PORTW*ARI.PA2;PA2为输出端口号BANZloop2,*AR2-其中FIR_DATA_PTR指向输入缓冲区FIR_DATA,FIR_COEF_PTR指向滤波系数缓冲区FIR.COEFo试写出下面问题的答案:对上面汇编指令代码段中的7个空填入正确答案,使得程序完善并且正确运行。AR4,AR5,#43,#42,*AR4+0%,*AR5+0%,A为获得正确的滤波结果,对滤波数据缓冲区FIR-DATA和流波系数缓冲区FIR_COEF有何要求?要求滤波数据缓冲区fir.data和流波系数缓冲区fir_coef的首地址能被64整除,即首地址的低6位为0。C程序在VC5402片内DARAM中定义了一段连续内存空间。其它任务分配完后整型指针变量LoopBuiHead指向这段内存空间的未分配空间的顶部,具体数值不详。现使用LoopBufHead分配滤波数据缓冲区FIR_DATA和滤波系数缓冲区FIR_COEF。要求在循环缓冲区法的FIR滤波中取得正确滤波结果。写出设置FIR_DATA_PTR和FIR_COEF_PTR的C程序代码。fir_data_ptr=(LoopBufHead+63)&(-63);fir_coef_ptr=(LoopBufHead+63)&(-63)+64;注:对于任意地址AddreSS,(AddreSS+63)&(63)求得一个大于等于Address且满足低6位全零的地址(4)在上面的汇编指令代码段执行过程中,读出指向输入缓冲区的辅助寄存器在Ioopl标号前为I2A3H,执行完43次MAC指令后是多少?读出指向滤波系数缓冲区的辅助寄存器为12E8H,然后连续执行8次MAC指令所访问的8个内存地址分别是多少?执行完43次MAC指令后仍然是12A3H在模43的环内,任意数加上43仍然为原数连续执行8次MAC指令所访问的8个内存地址分别是12E9H,12EAH,12C0H.12CIH,12C2H,12C3H,12C4H,12C5H首地址是12E8H的最低6位全零的地址,即12COH10 .在上面题9标示为FIR_F1LTERING的使用循环缓冲区法完成FIR滤波的汇编指令代码段中存在两重循环嵌套。现有代码采用根据辅助寄存器进行条件跳转的方法实现循环。C54xDSP还提供另外一种执行效率更高的实现循环的方法,即重复和块重复。试写出下面问题的答案:重复指令RPT和RPTZ使用C54xDSP内核什么专门的寄存器或者标志位?把他们全部列举出来。重复指令RPT和RPTZ使用C54xDSP内核RC寄存器块重复指令RPTB使用C54xDSP内核什么专门的寄存器或者标志位?把他们全部列举出来。块重复指令RPTB使用C54xDSP内核BRC、RSA、REA寄存器和STl寄存器的BRAF位对上面题10标示为FIR-FIErERING的使用循环缓冲区法完成FlR流波的汇编指令代码段进行优化,用重复指令和块重复指令完全消除根据辅助寄存器进行条件跳转的指令。写出完整的FIR滤波的汇编指令代码段。FIR-FILTERING:STM#FIR_DATA_PTR+FILTER_LEN-1,AR4STM#HR_COEF_PTR,AR5STM#SIGNAL_LEN-1,BRCSTM#TEMPBUFEARlSTM#1,ARoSTM#43,BKRPTBend_loop-1PORTRPAI,*AR4+%;PAl为输入端口号RPTZA,#42MAC*AR4+0%,*AR5+0%,ASTHA,*AR1PORTW*AR1,PA2;PA2为输出端口号end_loop11 .上面10题由C语言主函数调用汇编子函数fir,形式如下:voidfir(int*fir_ptr,int*coefCptr,longlen,FILE*fp_in,FILE*fp_out)其中第一形参为指向输入缓冲区的16位整型指针变量fir_data,第二形参为指向滤波系数缓冲区的16位整型指针变量fijcoef,第三形参为32位的信号长度,第四、第五形参分别为16位的输入、输出磁盘文件指针。从C语言主函数进入汇编子函数时STl状态寄存器的CPL位为1。试写出下面问题的答案:C语言调用汇编子程序时C编译器规则:从C主程序一进入汇编子程序,SP指向返回地址,累加器A存放第一个形参,SP+1指向第二个形参,SP+2指向第三个形参由此类推在汇编子程序开头,用PShm保护现场,每条pshm指令使SP递减1。还使用frame指令为子程序内局部变量分配内存空间。子程序返同时通过累加器A向主程序输出返同值在跳入汇编子函数fir并且执行如下现场保护后,写出把这五个形参数值传输至累加器B的指令。其中16位形参传输至B的低16位,32位形参(在堆栈中已经偶地址对齐)传输至B的32位。PSHMARlPSHMAR6PSHMAR7PSHMAROPSHMSTlFRAME#-13注意FRAME#-13的操作数是负13。1.DMAL,B或者STLMA,B1.D19,BDLD20,B1.D22,B1.D23,B或者1.DMAL,B或者STLMA,B1.D*SP(19),BDLD*SP(20),B1.D*SP(22),B1.D*SP(23),B写出返回C语言主函数前执行现场恢复的汇编指令代码。FRAME#13POPMSTlPOPMAROPOPMAR7POPMAR6POPMARl12 .已知AR2和AR3分别指向内存的两个32位数a和b,试写出下面问题的答案:a=FFE3FF9AH,b=003D018CH,当STl状态寄存器第7位C16=0时依次执行DLD*AR2,A和DADD*AR3,A,A后,累加器A的数值是多少?当C16=l时完成同样的加法运算,累加器A的数值又是多少?C16=0时累加器A的数值是0x0000210126;C16=l时累加器A的数值是OXooOo200126a=0072FF6AH,b=FFB201B8H,当STl状态寄存器第1位C16=0时依次执行DLD*AR2,A和DSUB*AR3,A,A后,累加器A的数值是多少?当C16=l时完成同样的加减运算,累加器A的数值又是多少?C16=0时累加器A的数值是OxOOOOR)FDB2;C16=l时累加器A的数值是OxOOOOR)FDB213 .现在需要对信号缓冲区的256个16位有符号整数的音频信号数据减去其均值(直流分量),成为交流信号。信号缓冲区在数据页,首地址2C00H。均值存放于数据页2D00H地址中。去直流分量的汇编指令代码如下:STM#2C00H,ARl1.D*(2D00H),BSTM#255,AROloop:1.D*AR1,ASUBB,ASTLA,*ARl+BANZloop,*ARO-现在要求对上述代码进行优化以提高执行效率,措施包括双16位读写和减法运算、重复或者块重复等。其中仅改写为双16位操作便可使循环次数减半。写出在上述代码基础上经过优化达到最高执行效率的汇编指令代码。STM#2C00H,ARl1.D*(2D00H),TSTM#127,BRCSSBXC16RPTBLl-IDSUBT*ARI,ADSTA,*ARl÷1.I:14 .现在需要在q,xj(i=0J,27)共8个乘积中取最小值并且存放到数据页K)20H的内存中去。和无分别存放于首地址为100OH和IOlOH的长度为8的内存区中,十进制数值如下所示:aiXiaixi1000H-481010H12-576I001H57IOllH158551002H321012H-17-5441003H-941013HS-7521004H661014H3321781005H771015H-25-19251006H2701016H1437801007H-4510I7H23-1035在下面所出现的C54xDSP汇编指令中,LD*ar2+,T指令,MPY*AR3+,A/B指令,MlNA指令,STLA,*ARI+指令均是单字指令,MINA指令的操作是比较两个累加器A和B的数值然后取其中最小值送至累加器A。试写出下面问题的答案:(1)写出执行完以下汇编指令后,ARl-I(即ARI所指向的上一个地址)的地址是多少?其中十进制数值是多少?STM#1000H,AR2STM#1010H,AR3STM#1020H,ARlSTM#6,ARO1.D*AR2÷,TMPY*AR3+,Aloop:1.D*AR2+,TMPY*AR3+,BMINABANZloop,*AR0-STLA,*ARI+地址是1020H,其中十进制数值是-1925写出执行完以下汇编指令后,ARl-I(即ARl所指向的上一个地址)的地址是多少?其中十进制数值是多少?STM#1OOOH,AR2STM#1010H,AR3STM#1020H,ARlSTM#6,ARO1.D*AR2÷,TMPY*AR3+,Aloop:1.D*AR2+,TBANZDloop,*AR0-MPY*AR3+,BMINASTLA,*ARI+地址是1020H,其中十进制数值是-1925(3)写出执行完以下汇编指令后,ARI-I(即ARI所指向的上一个地址)的地址是多少?其中十进制数值是多少?STM#1000H,AR2STM#1010H,AR3STM#1020H,ARlSTM#6,ARO1.D*AR2÷,TMPY*AR3+,Aloop:1.D*AR2+,TBANZloop,*AR0-MPY*AR3+,BMINASTLA,*ARI+地址是1020H,其中十进制数值是-675(4)写出执行完以下汇编指令后,ARI-I(即ARI所指向的上一个地址)的地址是多少?其中十进制数值是多少?STM#1000H,AR2STM#1010H,AR3STM#1020H,ARlSTM#6,ARO1.D*AR2÷,TMPY*AR3+,Aloop:BANZDloop,*AR0-1.D*AR2÷,TMPY*AR3+,BMINASTLA,*ARI÷地址是1020H,其中十进制数值是-1035最后,上面哪段代码正确(与本题第一句话的要求一致)?哪段代码的执行效率最高?第和第(2)段代码正确。第(2)段代码执行效率最高。15 .延迟跳转指令利用跳转的2个时钟周期空隙执行指令,从而提高执行效率。试用延迟跳转指令改写以下代码,使其达到最高执行效率同时结果保持不变。在每条指令右侧已经注明指令周期数。把长度40、首地址为300OH的信号接收缓冲区的数据输出至MCBSP#1,同时将信号的最低有效位屏蔽。STM#39,AR3(2)STM3000H,AR2(2)1.D#0FFFEH,A(2)loop:CALLIfTxRDYl(4)1.DU*AR2+,BANDA,B(I)STLMB,MCBSPLDXRIBANZloop,*AR3-(4)改写为:STM#39,AR3(2)STM3000H,AR21.D#0FFFEH,A(2)loop:CALLIfTxRDYl(4)1.DU*AR2+,B(I)BANZDloop,*AR3-(4)ANDA,B(I)STLMB,McBSPl-DXRl(1)对长度为40、首地址为3000H的信号接收缓冲区内信号进行限幅处理,使其落在-28000,+28000的范围内。STM#39,BRC(2)STM#3000H,AR2(2)RPTBL3-1(2)1.D*AR2,B(I)SUB#28000,B,A(2)BCLI,AGT(4,AGT为累加器A大于0)SUB#-28000,B,A(2)BCL2,AGEQ(4,AGEQ为累加器A大于等于0)1.D#-28000,B(2)BL2(4)1.l:1.D#28000,B(2)1.2:STLB,*AR2+(1)1.3:改写为:STM#39,BRC(2)STM#3000H,AR2(2)RPTBL3-1(2)1.D*AR2,B(I)SUB#28000,B,A(2)BCLI,AGT(4,AGT为累加器A大于0)SUB#-28000,B,A(2)BCL2,AGEQ(4,AGEQ为累加器A大于等于O)BDL2(4)1.D#-28000,B(2)1.l:1.D#28000,B(2)1.2:STLB,*AR2+(1)1.3:16 .下面的汇编代码段实现视频编码的16x16方块运动估计。用VC5402的ABDST指令计算当前16x16图像块与参考帧带运动补偿的16x16图像块之间的绝对值和差。其中省略了计算出当前块与参考块指针的部分代码。每行汇编指令后面都标出了指令周期数。试用重复、块重复、跳转延迟等优化措施改写这段代码,使得运算结果相同的情况下执行效率最高。SSBXSXM(1)LD*(pos_size),A(1)STLMA,AR3(1)Ll:(省略)LD*(width),A(1)STLMA,ARO(1)LD#0,B(1)STM#15,AR2(OL2:MVMMAR6,AR4(1)MVMMAR7,AR5(1)LD#0,A(1)STM#16,ARI(1)L3:ABDST*AR4+,*AR5+(1)BANZL3,*ARI-(4)MAR*AR6+0(OMAR*AR7+0(1)BANZL2,*AR2-(4)LD*(BL),A(1)SUB*(min_sad),A(1)BCL4,AGEQ(5)STLB,*(min_sad)(1)1.D*(current_pos),A(1)STLA,*(best_pos)(1)1.4:ADDM#l,*(current_pos)(2)BANZL1,*AR3-(4)对此三重循环嵌套改写如下:SSBXSXM(1)1.D*(pos_size),A(1)STLMA,AR3(1)1.I:(省略)1.D*(width),A(1)STLMA,ARO(1)1.D#O,B(1)STM#15,BRC(1)RPTBL2-1MVMMAR6,AR4(1)MVMMAR7,AR5(1)RPTZA,#16ABDST*AR4+,*AR5+(1)MAR*AR6+0(1)MAR*AR7+O(1)1.2:1.D*(BL),A(1)SUB*(min_sad),A(1)BCL4,AGEQ(5)STLB,*(min_sad)(1)1.D*(current_pos),A(1)STLA,*(best_pos)(1)1.4:BANZDLl,*AR3-(4)ADDM#l,*(current_pos)(2)17 .对于用线性缓冲区法实现的15阶Hamming低通滤波的C函数fir,CCS2.2内置C编译器生成的汇编语言代码段如下。其中返回主函数前的现场恢复的代码缺漏。为进一步提高执行效率,要求用重复指令、块重复指令、双操作数寻址、MAC乘加指令等C54xDSP特性改写下面的汇编语言代码段,使得标号L2L3之间的运算密集的卷积过程包含最少指令码,达到最高执行效率,同时运算正确,输出信号不变。fir:LI:PSHMARlPSHMAR6PSHMAR7FRAME#-12SSBXSXM1.D*SP(21),BSTLB,*SP(5)MVDK*SP(16)AR1)DLD*SP(18),BMVDK*SP(20),*(AR7)BCDL4,BLEQNOPDSTB,*SP(6);branchoccurs;ADD#14,A,BSTLMA,AR61.D#0,ASTLB,*SP(8)DSTA,*SP(10)ST#4,*SP(O)ST#1,*SP(1)MVKD*(AR7),*SP(2)1.D*SP(8),ACALL#_fread;calloccurs#_freadSTM#14,AR2LD#0,AMAR*AR6-;loopstartsL2:LD*+AR6(l),BSTLMB,TNOPMAC*AR1+,ASTLB,*AR6(-1)BANZL2,*AR2-;loopends;L3:SFTAA,#-15STLMARSTSTA,*SP(4)*+AR6(#-l4)#4,*SP(O)#1,*SP(1)LD*SP(5),ASTLA,*SP1.DMSP,ACALLD#_fwriteADD#4,A;calloccurs#_fwriteMAR*+ARl(#-15)SSBXSXMDLD*SP(10),AADD#1,ADLD*SP(6),BSUBA,BBCDLI,BGTNOPDSTA,*

    注意事项

    本文(DSP原理课练习题通信参考答案.docx)为本站会员(夺命阿水)主动上传,课桌文档仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知课桌文档(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-1

    经营许可证:宁B2-20210002

    宁公网安备 64010402000986号

    课桌文档
    收起
    展开