文档库 最新最全的文档下载
当前位置:文档库 › q格式

q格式

摘要TI 公司最新推出了32 位定点DSP TMS320F2812,并提出一种将浮点数转换成为Q 格

式定标整型数进行运算的算法,解决了定点DSP 无法直接处理浮点数的问题,提高了DSP 运算

的速度。通常使用Q0 和Q15 格式,但Q15 格式数据间的乘法运算极容易发生结果溢出的问题,

使得运算结果不准确。本文针对此问题提出一种新的Q15 乘法运算算法,该算法从根本上解决了

Q15 格式整型数相乘结果溢出的问题。

关键词:定点DSP Q 格式结果溢出

A New Compute Method of Q Format Multiplication in Fix Point DSP

Chen Zaiping Meng Jing

( Tianjin University of Technology Tianjin 300191 )

Abstract TMS320F2812 is a new 32-bit fix point DSP of Texas Instrument Incorporated. TI incorporated gives Q format compute algorithm, instead of floating point numbers direct compute. This method solve the problem that fix DSP cannot process floating point numbers directly, and increase the rate of DSP compute. Q0 and Q15 format numbers is used usually. The compute result overflow problem often happen in the mutiplication of Q15 format numbers, and this problem load to the inaccurateness of compute result. To solve this problem, this papar gives a new method of Q15 format multiplication, which can solve the problem of compute result overflow radically.

Keywords: fix point DSP,Q format,result overflow

1 引言

TMS320F2812 数字信号处理器是Texas Instruments公司最新推出的32位定点DSP控制器,该处理器是基于TMS320C2xx内核的定点数字处理器,是目前控制领域最先进的处理器之一。其最高速度可达150MIPS,可以在单个指令周期内完成32×32 位的乘累加运算,具有增强的电机控制外设、高性能的12 位模数转换能力和改进的通信接口,具有1MB 的线性地址空间,采用低电压供电(3.3V外设、1.8V 内核),与TMS320C24x 源代码兼容。它既具有数字信号处理能力,又具有强大的事件管理能力和嵌入式控制功能,特别适用于有大批量数据处理的测控场合,如工业自动化控制、电力电子技术应用、智能化仪器仪表及电机、马达伺服控制系统等。

TMS320F2812 需要使用Q 格式来表示浮点数进行运算,通常是Q0 和Q15 格式。Q15 格式的整

型数相乘很容易发生溢出,为解决该问题,本文提出了一种新的算法,该算法从根本上解决了Q15 格式数相乘结果发生溢出的问题。

2 Q 格式简介

TMS320F2812 属于定点DSP,定点微处理器不能直接处理小数。通常,处理小数的方法有三种:

1)把变量定义为float 类型。C 语言中自动调用运行时函数来处理浮点数运算,在高级语言的层次上,C 语言“抹平”了定点处理器和浮点处理器的差别,用户的编程工作量最少,编译出来的代码也最庞大。float 类型精度最高,运算速度也最慢,一个简单的浮点加法也需要好多汇编指令来实现。在嵌入式应用的很多情况中,float 类型几乎是想都不敢去想。2132)变量定义为整型变量类型(int 和long 型),采用放大若干倍数来表示小数。比如要表达精度达到0.01Hz 的频率变量f,就将变量 f 放大100,一个初级程序员常常这样做,但这是一个比较僵硬的做法。例如,当频率精度重新定义为0.001Hz 时,整个程序要全部重新编写,以防止溢出。

3)变量仍定义为整型变量类型(int和long 型),

采用定标法来确定小数。整数定标本质上并不复

杂,简单而言,就是通过假定小数点位于哪一位,

从而确定小数的精度。

常用Q 格式来表示数的定标。当假定小数点位

于第0 位的右侧时,为Q0;当把小数点定位于第

15 位的右侧时,为Q15,例如:

16 进制数2000h=8192,用Q0 表示。

16 进制数2000h=0.25,用Q15 表示。

浮点数和定点数之间的转换公式如下:

浮点数xf 转换为定点数xq 时,

(1)

定点数xq 转换为浮点数xf 时,

(2)

3 Q15格式乘法的溢出问题

像任何数制(包括整型和浮点型等)运算都要

考虑溢出一样,定点数之间的运算也要考虑溢出。

程序中最常用的是Q0 和Q15 格式。如果long 型变量的Q15 格式数值范围是一个不超过 1 的小数。小

数之间互相做乘法仍是小数,永远不会溢出,这是

小数的一个优势。

设浮点数x 和y,满足|x|<1 且|y|<1,求z=x*y

x 的Q15 格式为定点数Qx,y 的Q15 格式为定

点数Qy,z 的Q15 格式为定点数Qz

(3)

由于|x|<1 且|y|<1,故

TMS320F2812 位32 位DSP,其有符号long 整型数的表示范围为:00000000H-FFFFFFFFH,转换为十

进制数为

的值未超出此范围,故不会溢出。

为Q30 格式的long 类型数,Qz 为

Q15 格式的long 型数,需要进行以下运算,求出

Qz

(4)

(5)

但如果x 和y 的绝对值大于1,则极容易发生

溢出,例如:

z 的值不正确,这是因为

超过了DSP 存储器的数据存储范围:

故发生溢出。

在DSP 的程序运算中,极容易出现乘数的绝对

值大于 1 的情况,如果单纯的将乘数按比例缩小,

会影响计算的精度。当然,也可以使用定标数小些

的Q 格式进行乘法运算,比如使用Q13 格式,这样可以一定程度上解决溢出的问题,但不能从根本

上解决问题,只要数据稍大些,便会发生溢出,影

响计算的准确性。

4 Q15格式整型数乘法运算溢出问题的解决

本论文使用一种新的算法,将每个乘数分解为

整数和小数部分,分别相乘,然后再将各个乘积结

果相加,从而求出准确的结果,从根本上解决乘法

溢出的问题。该方法结合使用Q15 和Q0 两种格式进行计算,将两个较大数的乘法运算转化成乘法运

算和加法运算,从而巧妙的解决了乘法运算结果溢

出的问题,如图 1 所示。

57 . 2 = x 69 . 3 = y 4833 . 9 = × = y x z

5 000148 0 84213 ) 32768 )( ( F x x long Qx = = × = 851 0001 0 120913 ) 32768 )( ( D x y long Qy = = × = 85 5 0 1592511877 ) ( EEBCD x Q Q z x = = ×

7 0000 0 48599 15 ) ( BDD x Q Q Q y x z

= = >> × =

43124 . 1 ) 2 )( (

15

= × = ?

z

Q float z

) 2 )( (

Q

f q x lon

g x × =

) 2 )( (

Q

q f

x float x

?

× =

) 2 )( (

) 2 )( (

) 2 )( (

30

15

15

× × = ×

× =

× =

y x long Q Q

y long Q

x long Q

y x

y

x

30 30

2 ) ( 2 ≤ × ≤ ? y x Q Q

1 2 ~ 2 31 31

? ?

) ( y x Q Q ×

) 2 /( ) (

15

y x z

Q Q Q × =

15 ) ( >> × = y x z

Q Q Q

) ( y x Q Q ×

31 30 30

2 74165 . 4 2 483

3 . 9 2 69 . 3 57 . 2 × = × = × ×1 2 ~ 2 31 31

? ? 214

x x F I x + =

y y F I y + =

) 2 )( (

15

× = x x F long Q

) 2 )( (

15

× = y y F long Q

15 ) ( 215

>> × + × + × + × × = y x x y y x y x z

Q Q Q I Q I I I Q

图 1 Q15 格式数相乘的示意图

Fig.1 Schematic of Q15 format multiplication

该方法可以从根本上防止乘法运算时的溢出问

题,如上例,

故只要保证用该方法处理Q15

格式的乘法,其计算结果基本正确。

该方法与将x 和y 按比例缩小或使用定标数小于15

的Q 格式算法相比,该方法精度更高,并且可以从

根本上解决乘法运算的溢出问题。

5 结论

本文运用乘法运算和加法运算结合使用,Q0

格式和Q15格式整型数结合使用的方法提出一种新

的Q15 格式整型数的乘法运算算法,该算法可以从

根本上解决Q15格式数据相乘时计算结果溢出的问

题,从而使定点DSP TMS320F2812 的运算结果更

加准确。

参考文献

[1] 王潞刚. 陈林康. 曾岳南等. DSP C2000 程序员高手进阶. 北京:机械工业出版社,2005

[2] 张雄伟. 邹霞. 贾冲. DSP 芯片原理与应用. 北京:机械工业出版社,2005

[3] Texas Instruments Incorporated. TMS320C28x 系列DSP 的CPU 与外设(上). 北京:清华大学出版

社,2004

[4] Texas Instruments Incorporated. TMS320C28x 系列DSP 的CPU 与外设(下). 北京:清华大学出版社,2004

[5] 苏奎峰. 吕强. 耿庆锋等. TMS320F2812 原理与开发. 北京:电子工业出版社,2005

[6] 李其林. 基于DSP 的电机故障监测与数据传输技术. 天津理工大学. 2006

作者简介

陈在平男,1950 年生,硕士,教授,硕士生导师,研究方向智能控制理论及其应用

孟敬男,1982 年生,硕士,现研究方向智能控制理论及其应

69 . 0 3 69 . 3 + = = y

2 = x I 57 . 0 = x F

3 = y I 69 . 0 = y F

5 000048 0 18677 ) 32768 )( ( F x F long Q x x = = × = 00005851 0 22609 ) 32768 )( ( x F long Q y y = = × =

85 4 192 0 422268293 ) ( D B x Q Q z x = = ×

7 0004 0 310743

15 ) ( 32768

BDD x

Q Q Q I Q I I I Q y x x y y x y x z

= =

>> × + × + × + × × =

483124 . 9 ) 2 )( (

15

= × = ?

z

Q float z

4833 . 9 = × = y x z

57 . 0 3 57 . 2 + = = y

float Q0 float

float Q0 float

Q15

Q15

Q15 Q15 Q15 Q15 Q30

Q15

15

2 ) ( < × y x I I

相关文档