您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > DSP原理课练习题-应电-参考答案二
《DSP原理与应用》练习题32学时版本用于2010级应用电子1.在16位定点DSP中,一个16位二进制数在Q15表示法下的含义是第15位为符号位,第14~0位为小数位;在Q12表示法下的含义是第15位为符号位,第14~12位为整数位,第11~0位为小数位;在Q11表示法下的含义是第15位为符号位,第14~13位为整数位,第10~0位为小数位。由此类推。试写出下面问题的答案:根据教材P7的公式⑴16位二进制数10AAH在Q15表示法下的十进制数值是多少?在Q11表示法下的十进制数值是多少?Q15表示法下的十进制数值是4266/32768=0.13018798828125Q11表示法下的十进制数值是4266/2048=2.0830078125⑵16位二进制数C650H在Q15表示法下的十进制数值是多少?在Q12表示法下的十进制数值是多少?Q15表示法下的十进制数值是-14768/32768=-0.45068359375Q12表示法下的十进制数值是-14768/4096=-3.60546875⑶十进制正数0.625在Q15表示法下的二进制数是多少?在Q11表示方法下的二进制数是多少?Q15表示法下的二进制数是0.625x32768=5000HQ11表示法下的二进制数是0.625x2048=0500H⑷十进制负数-6.375在Q12表示法下的二进制数是多少?在Q11表示方法下的二进制数是多少?-6.375x4096=-6600H=9A00H-6.375x2048=-3300H=CD00H2.在课程内的VC5402DSP上,一个16位二进制数的Q15表示是第15位为符号位,第14~0位为小数位。已知两个Q15数相乘的乘积存放于累加器A中。FRCT=0时A为16进制002C000000H。该乘积的十进制数是多少?FRCT=1时A为16进制FFC8000000H,该乘积的十进制数又是多少?FRCT=0时A低30位为小数位,乘积=2C000000/230=11/24=0.6875或者写出2C000000H小数点后的二进制为1011B,得2-1+2-3+2-4=11/24=0.6875FRCT=1时A低31位为小数位,乘积=C8000000H/231=-38000000H/231=-7/24=-0.4375或者写出-38000000H小数点后的二进制为0111B,得2-2+2-3+2-4=7/24=-0.43753.在C54xDSP的C语言开发环境中,数据类型与通常的C语言开发环境的数据类型不同,主要数据类型如下表所示:数据类型位长char,unsignedchar16short,unsignedshort,signedshort16int,unsignedint,signedint16long,unsignedlong,signedlong32float32double32现在利用一个15阶Hamming低通滤波器对16位音频信号进行FIR滤波。在C54xDSP和CCS2.2上的C语言程序如下:constdoublecoef[15]={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;i1024;i++){doubleaccumulator=0.0;for(j=0;j15;j++){accumulator+=x[i-j]*coef[j];}y[i]=(int)accumulator;}}以上表达式中,x,y分别是低通滤波输入、输出的16位整型数组变量。现在要求把以上过程优化为在C54x平台上运行的精度最高、执行效率最高的16位定点运算形式。试写出在C54xDSP和CCS2.2环境下完成16位相乘和32位累加的定点运算的C程序。第一步:把滤波器系数转化为Q15定点数第二步:把乘累加转化为整数乘法,Q15乘以整数的小数点位置在第14位和第15位之间,累加结果为32位整数,其中最高两位为符号位,接着15位为整数,低15位为小数第三步:舍去低15位小数,取一位符号位和15位整数位作为滤波输出结果constintcoef[15]={158,264,-290,-1406,-951,3187,9287,12272,9287,3187,-951,-1406,-290,264158};voidfir(int*x,int*y){inti,j;for(i=0;i1024;i++){longaccumulator=0;for(j=0;j15;j++){accumulator+=x[i-j]*coef[j];}y[i]=(int)(accumulator15);}}4.解决图像编码中常见的8x8离散余弦变换在VC5402DSP上定点运算问题。⑴用C语言编写VC5402上用定点运算实现8cos2214cos153的程序,并且把最后结果存放到16位整型变量r中。数据类型见前面题3的表格。4cos的Q15定点数是23170,5A82H8cos的Q15定点数是30274,7642Hconstintx[2]={153,221};constinty[2]={23170,30274};longa;intr;a=x[0]*y[0]+x[1]*y[1];r=(int)(a15);或者C程序也可写成:longa;intr;a=153*23170+221*30274;r=(int)(a15);⑵用C54x汇编指令写出用定点运算实现8cos2214cos153的代码,并且把最后结果转换为16位整数存放到1102H的地址中。1000H存放153,1001H存放2211002H存放23170,1003H存放30274SSBXFRCTSTM#1000H,AR2STM#1002H,AR3STM#1102H,AR1RPTZA,#1MAC*AR2+,*AR3+,ASTHA,AR1⑶现有一个8位无符号字符数216,对其执行浮点运算8cos4cos216。在VC5402上的汇编指令代码段如下:SSBXFRCTMPY*(1000H),#216,AMPYA*(1001H)STHB,*(1002H)运算前数据页1000H和1001H的地址存放的数据是多少?运算后数据页1002H的地址存放的结果是多少?是多少?用CCS可以算出140,与笔算一致笔算方法:216*23170=5004720,取1位符号和15位得152,乘以30274后再取1位符号和15位得140运算前数据页1000H的地址存放的数据是327684cos=23170=7642H运算前数据页1001H的地址存放的数据是327688cos=30274=7642H运算后数据页1002H的地址存放的结果是8CH=140⑷上面⑶的运算精度偏低。如何在⑶中插入移位指令提高运算精度?写出完整的指令代码。在第一次乘法后果把A左移8位,接着在第二次乘法后右移8位SSBXFRCTMPY*(1000H),#216,ASFTAA,#8MPYA*(1001H)SFTAB,#-8STHB,*(1002H)这样可得141⑸在以上⑴~⑷的基础上简述如何在VC5402上使用MAC指令通过双重循环嵌套的16位定点乘累加运算求出一个图像数据的8x8离散余弦变换系数?忽略常数项的8x8离散余弦变换为:],[u,v,x,yyxyxfvuFxy7016)12(cos16)12(cos),(),(7070],[u,v,x,yyxyxfvuFxy7016)12(cos16)12(cos),(),(7070用3276816)12(cosx后取整的方法,求出8个余弦常数的Q15数,存放到内存。把FRCT置1在内循环用MAC指令计算),(yxf与Q15余弦常数的乘累加,32位结果存放A累加器在外循环用MAC指令计算A的高16位与Q15余弦常数的乘累加,高16位为最后结果。5.在VC5402汇编语言程序中需要连续读取散布于数据页地址0A06H,0A27H,0A3AH,0A53H,0A65H,0A92H,0ACAH,0AE0H中的8个数据。要求以最少指令和最快速度读入这8个地址的数据。写出执行指令。注意读入8个地址数据的次序不能改变。如全写成绝对寻址,得一半分LD*(0A06H),ALD*(0A27H),ALD*(0A3AH),ALD*(0A53H),ALD*(0A65H),ALD*(0A92H),ALD*(0ACAH),ALD*(0AE0H),A满分答案:RSBXCPL或者CPL=0时LD#14H,DPLD@06H,ALD@27H,ALD@3AH,ALD@53H,ALD@65H,ALD#15H,DPLD@12H,ALD@4AH,ALD@60H,A6.当VC5402内部ST1状态寄存器第14位CPL=1同时数据页指针寄存器DP=1000H,堆栈指针寄存器SP=0275H时,指令LD2AH,A和LD82H,A所读取的数据页地址是多少?当CPL=1同时DP=0480H,SP=1C22H时,指令LD40H,A和LD2A6H,A所读取的数据页地址又是多少?CPL=1,指令LD2AH,A和LD82H,A所读取的数据页地址分别是029FH和0277HCPL=1,指令LD40H,A和LD2A6H,A所读取的数据页地址分别是1C62H和1C48H注意,DP有效位数9位,直接寻址位数7位7.现在需要对16位整型音频信号数据执行512点FFT,待处理数据放在数据页首地址为0A00H,长度为512的缓冲区内。在按时间抽取基2FFT碟形运算中输入数据倒序,输出数据顺序。⑴写出在一个512次循环中以降序ARx-0B读入数据页0BFFFH~0A00H的256个输入数据的汇编指令代码。STM#0BFFH,AR1STM#256,AR0STM#511,AR2loop:LD*AR1-0B,ABANZloop,*AR2-或者STM#0BFFH,AR1STM#256,AR0STM#511,BRCRPTBend_loop–1LD*AR1-0B,Aend_loop:或者STM#0BFFH,AR1STM#256,AR0RPT#511LD*AR1-0B,A⑵在⑴中已经读取0A65H地址的数据后,随后连续8次读取的输入数据的地址是多少?要求写出详细计算过程,光写对答案不能得满分。计算过程,光写对答案不能得满分。第1次:0000,1010,0110,0101-1,0000,0000B=0000,1011,1010,0101=0BA5H第2次:0000,1011,1010,0101-1,0000,0000B=0000,1010,1010,0101=0AA5H第3次:0000,1010,1010,0101-1,0000,0000B=0000,1011,0010,0101=0B25H第4次:0000,1011,0010,0101-1,0000,0000B=0000,1010,0010,0101=0A25H第5次:0000,1010,0010,0101-1,0000,0000B=0000,1011,1100,0101=0BC5H第6次:0000,1011,1100,0101-1,0000,0000B=0000,1010,1100,0101=0AC5H第7次:0000,1010,1100,0101-1,0000,0000B=0000,1011,0100,0101=0B45H第8次:0000,1011,0100,0101-1,0000,0000B=0000,1010,0100,0101=0A45H8.现在需要对16位整型音频信号数据执行128点FFT,待处理数据放在数据页首地址为1200H,
本文标题:DSP原理课练习题-应电-参考答案二
链接地址:https://www.777doc.com/doc-2871051 .html