一种兼顾定点DSP实时性又扩展动态范围的方法技术

技术编号:3759639 阅读:228 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及DSP处理器的数据处理方法,具体涉及一种兼顾定点DSP实时性又扩展动态范围的方法。该方法运用了一种32位和64位扩展精度的运算方法,使整个数据处理过程的动态范围达到了186dB,这种扩展精度的运算方法与浮点算法比较,既降低了运算量,同时又保持了浮点运算动态范围大、精度高的优点;同时所有的数据处理算法全部采用汇编语言编写,这样既提高了动态范围和精度,又提高了数据处理速度。

【技术实现步骤摘要】

本专利技术涉及DSP处理器的数据处理方法,具体涉及一种兼顾定 点DSP实时性又扩展动态范围的方法。
技术介绍
DSP处理器可以分为两大类:定点和浮点。随着科学技术的发展, 应用DSP的领域越来越广,选择一款合适的DSP芯片是非常重要的 一个环节。 一般来说,选择DSP芯片时应考虑到如下诸多因素DSP 芯片的运算速度、价格、硬件资源、运算精度、功耗、封装形式、开 发工具等。在上述诸多因素中, 一般而言,定点DSP芯片的价格较便宜, 功耗较低,但运算精度也低。而浮点DSP芯片的优点是运算精度高, 且C语言编程调试方便,但价格稍贵,功耗也较大。如果是在功耗要求很低的便携式仪器中,应该优先选择定点DSP 芯片。TI公司的TMS320C5000系列为低功耗16位定点DSP,可以 满足低功耗要求,但是该系列DSP芯片的动态范围最大为96dB,如 果动态范围要求高,该芯片不能满足动态范围要求。因为该系列DSP 芯片中没有浮点处理单元,所以有人用编译器产生模拟浮点运算的指 令来满足动态范围。为了解决实时性问题,也有人采取了多个DSP 芯片同时工作的办法。但是,在定点DSP中用编译器产生模拟浮 点运算的指令,运算效率很低,不能满足某些仪器的实时性要求; 采取多个DSP芯片同时工作的办法可以解决实时性问题,但这又增 加了成本和功耗。
技术实现思路
本专利技术的目的在于针对现有技术的缺陷,提供一种用一片低功耗定点DSP芯片同时满足仪器的实时性和动态范围的方法。本专利技术的技术方案如下 一种兼顾定点DSP实时性又扩展动态范围的方法,该方法在64位的加减运算中,将参与运算的每个操 作数和输出结果分别存放在四个连续的16比特内存单元中,操作 数X由X3、 X2、 XI、 X0级联构成,操作数Y由Y3、 Y2、 Yl、 YO级联构成,低位地址单元XO、 YO保存X、 Y的最低16位数 据,高位地址单元X3、 Y3保存X、 Y的最高16位数据,指针 ARO指向XO地址,指针AR1指向YO地址;运算时,先对(X1X0) 和(Y1Y0)进行32位加减法运算,将产生的进位或错位标志保存 在状态位STl.CARRY中,然后分别对X2、 Y2及X3、 Y3进行16 位加减法运算,状态位STl.CARRY根据所保存的进位或错位标志 参与运算。如上所述的兼顾定点DSP实时性又扩展动态范围的方法,该方 法在32位的乘法运算中,将参与运算的每个操作数由两个16位定 点数级联表示,操作数X由X1、 XO构成,操作数Y由Y1、 YO 构成,输出结果由Z3、 Z2、 Zl、 ZO级联构成;根据下式执行乘 法运算Z3Z2Z1Z0=X1X0XY1Y0。如上所述的兼顾定点DSP实时性又扩展动态范围的方法,其中, 在进行数据处理时,预先设置一个中间数值(23"n),当所测量的结 果大于中间数值时,就用高16位数据进行运算;当所测量的结果 小于中间数值时,在保证数据不溢出的情况下,把原始数据左移 n位,然后再用高16位数据进行计算,得到最终结果后再减去移 位带来的偏移20*log1()2n, n为0 31之间的整数。本专利技术所提供的方法中用到的16位精度算法和移位结合的方 法同时满足了实时性要求和动态范围要求;用到的扩展精度的计 算方法与模拟浮点运算比较,既降低了运算量,同时又保持了浮 点运算动态范围大、精度高的优点;同时,所有的数据处理算法 全部采用汇编语言编写,这样又提高了数据处理速度。本专利技术可以同时满足仪器的动态范围、精度和实时性要求,其中的方法也可以 在不同的场合分别使用。附图说明图1为64位数加减法运算的示意图。 图2为32位数乘法运算的示意图。具体实施例方式下面结合附图和实施例对本专利技术进行详细的描述。 在精度要求高、数据处理速度能满足要求的情况下,提出了 一种32位和64位扩展精度的计算方法,.使整个数据处理过程的 动态范围达到了 186dB。在运算处理过程中加、减、乘法运算是 必不可少的基本运算,下面就对64位的加减运算和32位的乘法 运算进行说明64位操作数的加法运算Z=X+Y。参加运算的每个操作数分 别存放在四个连续的16比特内存单元中,操作数X由X3、 X2、 XI、 X0级联构成,操作数Y由Y3、 Y2、 Yl、 YO级联构成,其 中,低位地址单元XO、 YO保存X、 Y的最低16位数据,高位地 址单元X3、 Y3保存X、 Y的最高16位数据。ARO指向XO地址, AR1指向Y0地址。输出也保存在4个连续的16比特内存单元中。 如图1所示,64位加减法运算分三个步骤实现。第一步先对 (X1X0)和(Y1Y0)进行32位加减法运算,产生的进位或借位 标志保存在状态位ST1.CARRY中;第二、三步对X2、 Y2及X3、 Y3进行16位加减法运算,ST1.CARRY也根据所保存的进位或错 位标志参与运算。在进行扩展精度的乘法时,参加运算的每个操作数由两个16 位定点数级联表示,操作数X由X1、 XO构成,操作数Y由Y1、 YO构成,结果Z由Z3、 Z2、 Zl、 ZO构成。执行32位乘法运算 时,Z3Z2Z1Z0=X1X0xY1Y0,实现原理如图2所示。如果仪器需要进行音频处理或需要检测突发信号,都要求数5字信号处理能实时进行,如果采用32位扩展精度的算法不能满足 实时性,可以采用16位精度算法和移位结合的方法,为了满足动 态范围的要求,采用如下的方法因为16位的定点DSP在处理 接近于零的数据时,会取近似值等于零,这样就降低了精确度, 无法避免人耳可以分辨的谐波失真,所以我们预先设置一个中间 数值(231",当所测量的结果大于中间数值时,就用高16位数据 进行运算;当所测量的结果小于中间数值时,在保证数据不溢出 的情况下,把原始数据左移n位,然后再用高16位数据进行计算, 这样相当于把动态范围扩大了 20*1(^1()2 得到最后结果后要减去 移位带来的偏移20*log1Q2n, n为0~31之间的整数。例如,如果 测量的结果最高5位为0时,可以设置中间数值为23"5=0x0400 0000, 指定n-5,当所测量的结果小于0x0400 0000时,就可以把原始数 据左移5位后再取高16位数据进行运算。下面结合几个具体实施例对本专利技术进行详细描述。 实施例1:2个32位数相乘的例子 void MyMul32 (LDATA *x, LDATA *y, LDATA *r, ushort nx)参数说明x, y为输入参数,Q31格式; r为x, y相乘的结果,Q31格式; nx为输入/输出数据的个数。 功能说明for(int I=0;I<nx;I++)r=xxy;举例x= 0.5 =0x40000000(Q3i;> y= 0.25=0x20000000(Q31) r= 0.125=0xl0000000(Q3i;)6实施例2:32位滤波算法,滤波累加相乘的中间过程用到了 32位相乘和64 位加法运算的例子myfir32v2(LDATA *x,LDATA *h,LDATA *r,LDATA承scratch,uint nx,uint nh)参数说明x: nx个实数输入向量指针,Q31格式。h: 大小为nh的系数向量指针,正常顺序,Q31格式。例本文档来自技高网...

【技术保护点】
一种兼顾定点DSP实时性又扩展动态范围的方法,其特征在于:该方法在64位的加减运算中,将参与运算的每个操作数和输出结果分别存放在四个连续的16比特内存单元中,操作数X由X3、X2、X1、X0级联构成,操作数Y由Y3、Y2、Y1、Y0级联构成,低位地址单元X0、Y0保存X、Y的最低16位数据,高位地址单元X3、Y3保存X、Y的最高16位数据,指针AR0指向X0地址,指针AR1指向Y0地址;运算时,先对(X1X0)和(Y1Y0)进行32位加减法运算,将产生的进位或错位标志保存在状态位ST1.CARRY中,然后分别对X2、Y2及X3、Y3进行16位加减法运算,状态位ST1.CARRY根据所保存的进位或错位标志参与运算。

【技术特征摘要】

【专利技术属性】
技术研发人员:唐丽萍
申请(专利权)人:中国电子科技集团公司第四十一研究所
类型:发明
国别省市:95[中国|青岛]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1