资源描述:
《dsp原理课练习题参考答案-应电》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、《DSP原理与应用》练习题参考答案32学时版本用于应用电子方向注意:红色字体文字为解题注解与说明,万万不可作为答题内容1.Q.15表示是16位数据中第15位为符号位,第14~0位为小数位。试写出下面问题的答案:⑴分别写出十进制正数0.68和十进制负数-0.245的Q.15表示。0.68*32768=570AH-0.245*32768=-1F5CH=E0A4H⑵分别写出Q.15表示的A200H和5A00H的十进制数值。A200H/32768=-5E00H/32768=-0.7343755A00H/32768=0.
2、703125上面两小题使用教材P7两条公式,公式中Q为数据中的小数位数,digits<->data。取补码的正规方法是按位取反得到的反码加上1。16进制下快速算法是找出互补的数,即加上该互补数得10000H。例如求1F5CH补码,1F5CH+E0A4H=10000H。故E0A4H为所求。⑶已知两个Q.15数相乘的乘积存放于累加器A中。FRCT=0时A为16进制0xFFEA000000,该乘积的十进制数是多少?FRCT=1时A为16进制0x007D000000,该乘积的十进制数又是多少?FRCT=0时累加器A低3
3、0位为小数位解法一,取乘积Q.15形式,乘积Q.15形式为D400H=-2C00H/32768=-11264/32768=-0.34375解法二,运用教材P7公式,EA000000/230=-16000000//230=-11/25=-0.34375解法三,写出小数点后二进制位数值,乘积为-16000000H,小数点后的二进制为01011B,得2-2+2-4+2-5=-11/25=-0.34375FRCT=1时累加器A低31位为小数位解法一,取乘积Q.15形式,乘积Q.15形式为7D00H=32000/3276
4、8=0.9765625解法二,运用教材P7公式,7D000000H/231=125/27=0.9765625解法三,写出小数点后二进制位数值,乘积7D000000H小数点后的二进制为1111101B,得2-1+2-2+2-3+2-4+2-5+2-7=125/27=0.97656252.在C54xDSP的C语言开发环境中,数据类型与通常的C语言开发环境的数据类型不同,主要数据类型如下表所示:数据类型位长char,unsignedchar16short,unsignedshort,signedshort16int,
5、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.097
6、25365,-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=0;j<15;j++){accumulator+=x[i-j]*coef[j];}y[i]=(int)accumulator;}}以上表达式中,,分别是低通滤波输入、输出的16位整型数组变量。现在要求把以上过程优化为在C54x平台上运
7、行的精度最高、执行效率最高的16位定点运算形式。试写出在C54xDSP和CCS2.2环境下完成16位相乘和32位累加的定点运算的C程序。第一步:把全部滤波器系数转化为Q.15定点数第二步:把乘累加转化为整数乘法,Q.15乘以整数的小数点位置在第14位和第15位之间,累加结果为32位整数,其中最高两位为符号位,接着15位为整数,低15位为小数第三步:舍去低15位小数,取一位符号位和15位整数位作为滤波输出结果在下面有符号数乘法中小数点位置:constintcoef[15]={158,264,-290,-1406,
8、-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;for(j=0;j<15;j++){accumulator+=x[i-j]*coef[j];}y[i]=(int)(accumulator>>15