DSP-定点和浮点数格式


1. 浮点数的格式
浮点数表示为尾数和指数的形式
x m 2
e
式中,m 为尾数,e 为指数 符号、尾数和指数编码在同一个二进制字中
符号、尾数和指数的位数和位域不同,浮点数格式不 同,常用的浮点数格式有
IEEE754标准定义的单精度格式和双精度格式 TI公司定义的TMS320C3X浮点数格式
最高位(第31位)为符号位s 通常情况,即 1 ≤ e ≤ 254 时
s
x 1 1. f 2e-127
四种特殊情况
① 当 e=0、f≠0 时,尾数是个非归一化的数
x 1 0. f 2-126
s
② 当 e=0、f=0 时,x=0 ③ 当 e=255、f=0 时,x为正(s=0)或负(s=1)的无穷大 ④ 当 e=255、f≠0 时,x为一个无效数(NaN—Not a Number)
如果除法运算中包含负数,应将负数变换为等值的正数, 然后作除法运算,最后加上正确的符号
2.3 浮点数的格式与运算
• 1. 浮点数的格式
- 1)IEEE754浮点数格式 - 2)TMS320C3X浮点数格式 - 3)浮点数的数值范围、精度和 动态范围
• 2. 浮点数的算术运算
- 1)浮点数的加减法运算 - 2)浮点数的乘法运算 - 3)浮点数的除法运算
③ 整数乘整数(n=m=0)
例:两个相乘数都为Q0格式,8位字长
整数相乘,结果为Q0格式,需查询标志位确定保存的位数, 结果不需要左移一位
11111100.b(-4
Q0)

11111001.b(-7
Q0)
0000000000011100.b(28 Q0) 取低8位: 00011100.b(28 Q0)
0.00390625
0.0078125 0.015625 0.03125 0.0625 0.125 0.25 0.5 1
3)动态范围
动态范围:数据表示格式中可以表示的最大值与最小值之比
N位定点数的动态范围:
(2 N 1 1) / 2n N 1 DR fix= 2 1 n 1/ 2 用分贝表示为:
定点数与浮点数、定点数与定点数之间的转换关系
浮点数X Qn格式的定点数Xn
X n (int) X 2 n
例:5.1875 Q4定点数 4 5.1875×2 =83 =01010011b
Qn格式的定点数Xn 为浮点数X
X (float) X n / 2 n
- 00000110b
商数:00000011 余数:00000010b

00000100b - 00000110b
余数(丢弃):11111110b
商数:00000110 余数:00000100b

00001000b
- 00000110b
商数:00001101 余数:00000010b
⑥ 00000100b
例: (Q7) 01010011b 浮点数 7 83/2 =0.6484375
Qn格式的定点数Xn Qm格式的定点数Xm
n m (int) X n 2mn X m (int) X / 2 2 n

例:(Q7) 01010011b Q4定点数 7 83/2 =0.6484375 4 int(0.6484375 ×2 ) =int(10.375) =10=00001010b 4 10/2 =0.625≠ 0.6484375
DR fix=20 log10 2 N 1 1 6.02( N 1)
dB
动态范围:数据表示格式中可以表示的最大值与最小值之 比定点DSP处理器大多采用16位定点数 对于要求更大动态范围的应用,可以采用扩展字长的方式, 即用两个或更多的字来表示数据 定点DSP处理器要求编程时要仔细考虑信号幅值和中间结 果,在避免溢出和尽可能减小舍入误差的前提下,使精度和 动态范围最大化
Q8
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
-128~127.99609375
-256~255.9921875 -512~511.984375 -1024~1023.96875 -2048~2047.9375 -4096~4095.875 -8192~8191.75 -16384~16383.5 -32768~32767
000.1100000000000b(0.75 Q13)
左移一位:00.11000000000000b(0.75 Q14) 取高8位: 00.110000b(0.75 Q6 )
② 整数乘小数(n≠0、m=0)
例:两个相乘数分别为Q7和Q0格式,8位字长
0.1000000b(0.5 Q7) 11111001.b(-7 Q0) 111111100.1000000b(-3.5 Q7)
2. 定点数的算术运算 1)定点数的加减法运算
相同的Qn格式,保证隐含的小数点对齐 最可能出现的问题是运算结果的溢出
例:两个8位数相加,无溢出 进位位与最高位(MSB)相同 8位字长可以表示结果,没有发生数据溢出 11111100b( -4) + 11111110b( -2) 111111010b( -6) 00101001b( 41) + 00110011b( 51) 001011100Βιβλιοθήκη ( 92)DSP 运算基础
• 1、 DSP的数据表示
• 2、定点数的格式与运算 • 3、浮点数的格式与运算
1、 DSP的数据表示
定点
格式
浮点 16位 24位 32位
字长
格式和字长决定了数据的精度和动态范围 格式和字长也在一定程度上决定了DSP处理器 的成本、功耗和编程难度
2、 定点数的格式与运算
• 1. 定点数的格式
① 小数乘小数(n、m≠0,m≤ n) ② 整数乘小数(n≠0、m=0) ③ 整数乘整数(n=m=0)
① 小数乘小数(n、m≠0,m≤ n)
例:两个相乘数分别为Q7和Q6格式,8位字长 两个定点小数作乘法运算,结果左移一位,保存高位得到 运算结果,结果为Qm(m≤ n)格式
0.1000000b(0.5 01.100000b(1.5 Q7 ) Q6 )
- 00000110b
余数(丢弃):11111110b 商数:00011010 余数:00000100b ⑦ 00001000b - 00000110b
商数: 00110101 余数:00000010b

00000100b
- 00000110b
余数(丢弃):11111110b 商数: 01101010 余数:00000100b ⑨ 对结果的小数点右移一位,得到Q5格式的结果011.01010b (3.3125),最高位MSB为符号位
– 1)Qn格式 – 2)数值范围与精度 – 3)动态范围
• 2. 定点数的算术运算
– 1)定点数的加减法运算 – 2)定点数的乘法运算 – 3)定点数的除法运算
1. 定点数的格式
1)Qn格式
小数点
Q标志:表示隐含的小数点的位置
例:8位字长
二进制补码数01010011b,粗线表示隐含的小数点位置
饱和模式:110000000b(-128)
饱和模式:001111111b(127)
溢出是由于字长有限,运算结果超出数值的表示范围引 起的
饱和模式
定点数减法运算的原理与加法运算相同
2)定点数的乘法运算
DSP处理器都有硬件乘法器和乘法指令,可实现单周期乘 法运算 二进制乘法运算包含一系列的移位和加法运算 定点数乘法运算不要求相乘数有相同的Qn格式 两个相乘数分别为Qn和Qm格式,字长为N,结果为 Q(n+m)格式,字长为2N 根据n和m的不同取值,定点数乘法运算可以分成三种情况
例 ① 32位单精度浮点数 1100,0011,0101,0010,0000,0000,0000,0000b
例:两个8位数相加,有溢出 进位位与最高位(MSB)不同 运算结果发生溢出,8位字长已不能正确地表示结果
10110000b( -80) + 10111111b( -65) 非饱和模式:101101111b(-145)
00101001b( 41) + 01110011b(115) 非饱和模式:010011100b(156)
对于负数(最高位MSB为1),要先把它转化为无符号二进制数,再进 行计算,最后加上负号
位 二进制补码 Q0 Q4 Q7 7 MSB 0 符号 符号 符号 6 1 26 22 2-1 5 0 25 21 2-2 4 1 24 20 2-3 3 0 23 2-1 2-4 2 0 22 2-2 2-5 1 1 21 2-3 2-6 0 LSB 1 20 2-4 2-7
计算中,共进行了7次移位和条件减操作,得到8位(1 个符号位和7个数据位)的结果 要增加精度,可以增加移位和条件减的次数,如15次移 位和条件减可以得到16位的结果
对于两个正的小数相除(Qn格式除以Qm格式)
如Q3格式的00001.010b(1.25)除以Q2格式的000000.11b (0.75) 把两个正的小数看作两个Q0格式的正整数相除,即00001010b (10)除以00000011b(3) 与上面例子相同,结果为Q5格式011.01010b 最后对结果的小数点位置左移n-m 位 对于本例3-2=1>0,则结果的小数点左移一位,最后结果为Q6 格式01.101010b(1.65625)
左移一位:11111100.10000000b(-3.5 Q8) 取高8位: 11111100.b(-3. Q0)
误差小于等于Qn格式精度的一半,即小于等于1/2n+1 单次计算的误差并不大,但如果是连续的运算,则误差会 累积和传递,从而产生比较大的误差 DSP处理器提供了自动舍入功能来减小误差 保留整个32位中间结果 小数乘小数、整数乘小数运算都要求对乘积结果左移一位 后,保存高位 DSP处理器带有可选的自动左移一位的功能,消除移位操 作的时间开销
合集下载

DSP工作原理

DSP工作原理

DSP工作原理DSP(Digital Signal Processing,数字信号处理)是一种通过数学算法和计算机技术对信号进行处理的技术。

它在现代通信、音频处理、图像处理等领域得到了广泛应用。

本文将深入探讨DSP的工作原理。

引言概述DSP是一种数字信号处理技术,通过数学算法和计算机技术对信号进行处理。

它可以对信号进行滤波、变换、编码、解码等操作,广泛应用于通信、音频处理、图像处理等领域。

下面将从信号采样、数学算法、计算机实现、信号重构和应用领域五个方面详细介绍DSP的工作原理。

一、信号采样1.1 采样定理:根据奈奎斯特采样定理,信号的采样频率必须是信号最高频率的两倍以上,才能够准确还原原始信号。

1.2 采样过程:采样过程将连续时间域信号转换为离散时间域信号,通过模数转换器将模拟信号转换为数字信号。

1.3 采样率选择:采样率的选择取决于信号的频率成分,通常选择高于信号最高频率两倍的采样率,以确保信号的还原质量。

二、数学算法2.1 离散傅里叶变换(DFT):DFT是DSP中最基本的变换之一,将离散时间域信号转换为离散频率域信号,用于频谱分析和滤波等操作。

2.2 快速傅里叶变换(FFT):FFT是DFT的一种高效算法,通过减少计算量和复杂度,实现了快速的频域分析和滤波操作。

2.3 滤波算法:滤波是DSP中常用的操作之一,包括低通滤波、高通滤波、带通滤波等,通过滤波算法可以去除噪声、改善信号质量。

三、计算机实现3.1 固定点数表示:计算机中常用的表示方式是固定点数表示,将实数转换为二进制表示,通过定点运算实现DSP算法。

3.2 浮点数表示:浮点数表示可以更精确地表示实数,但计算复杂度较高,对于精度要求较高的应用,可以使用浮点数表示。

3.3 指令集优化:为了提高DSP算法的执行效率,可以针对特定的DSP芯片进行指令集优化,利用硬件加速器提高计算速度。

四、信号重构4.1 逆变换:通过逆变换,将离散频率域信号转换为离散时间域信号,实现信号的重构和还原。

FPGA定点小数的常规格式、相对于浮点小数的优势与劣势和计算的概述

FPGA定点小数的常规格式、相对于浮点小数的优势与劣势和计算的概述

FPGA定点小数的常规格式、相对于浮点小数的优势与劣势和计算的概述所谓定点小数,就是小数点固定地隐含在某一位置上的数据。

由于小数点的位置是固定的,所以就没有必要储存它(如果储存了小数点的位置,那就是浮点数了)。

而小数的具体位置则完全是由程序设计者自己决定的,因此,对于定点小数的处理,完全可以采用普通整数的处理方式。

下面我们来简单地聊一聊定点小数的常规格式、相对于浮点小数的优势与劣势,以及如何使用Lattice ECP3/ECP5的sysDSP乘法器来实现基本的定点小数运算(加法和乘法)。

并会在后续的文章中介绍定点小数的除法、平方根、平方根倒数和CORDIC算法的基本理论和HDL的实现等。

1、定点小数的常规格式
常规的定点小数格式如下图:
其中,有符号定点小数的值可以表示为:
无符号定点小数的值可以表示为:
定点数的位宽w和小数部分的位宽wf可以看做是定点数的两个要素。

其中,w决定了定点数的动态范围,wf决定了定点数的精度。

需要注意的是,在进行定点数运算的时候,需要注意数值溢出的问题(包括向上溢出和向下溢出)。

所谓向上溢出是指运算结果超出了定点数整数部分所能表示的范围,向下溢出表示运算结果超出了定点数小数部分所能表示的范围。

显然,一旦溢出将会造成计算精度的丢失,甚至是计算结果的错误。

因此,合理地选择w和wf至关重要,w和wf的值过大会浪费资源,过小又会造成精度丢失。

2、定点数与浮点数的比较
与浮点数相比,定点数具有如下的一些优势:
(1)更少的资源。

DSP面试常见问题

DSP面试常见问题

DSP常见问题1.DSP与普通的微处理器的不同?单周期指令:大多数DSP都拥有流水结构,即每条指令都由片内多个功能单元分别完成取指、译码、取数、执行等步骤,这样可以大大提高系统的执行效率。

它可以在一个时钟周期内执行一条语句。

快速乘法器:信号处理算法往往大量用到乘加(multiply-accumulate,MAC)运算。

DSP有专用的硬件乘法器,它可以在一个时钟周期内完成MAC运算。

硬件乘法器占用了DSP芯片面积的很大一部分。

(与之相反,通用微处理器采用一种较慢的、迭代的乘法技术,它可以在多个时钟周期内完成一次乘法运算,但是占用了较少了硅片资源)。

多总线:DSP有分开的代码和数据总线(一般用术语“哈佛结构”表示),这样在同一个时钟周期内可以进行多次存储器访问——这是因为数据总线也往往有好几组。

有了这种体系结构,DSP就可以在单个时钟周期内取出一条指令和一个或者两个(或者更多)的操作数。

地址发生器:DSP有专用的硬件地址发生单元,这样它可以支持许多信号处理算法所要求的特定数据地址模式。

这包括前(后)增(减)、环状数据缓冲的模地址以及FFT 的比特倒置地址。

地址发生器单元与主ALU和乘法器并行工作,这就进一步增加了DSP 可以在一个时钟周期内可以完成的工作量。

硬件辅助循环:信号处理算法常常需要执行紧密的指令循环。

对硬件辅助循环的支持,可以让DSP高效的循环执行代码块而无需让流水线停转或者让软件来测试循环终止条件。

数据格式:除了标准的整数型格式外,DSP一般支持定点和(或)浮点数。

对数据格式和精度的选择取决于应用程序所需,例如:16位定点DSP可以满足语音信号处理和控制所需24位和32位定点DSP可以满足高质量音频信号处理所需32位浮点DSP可以满足图形和图像处理所需1:DSP采用改进的Harvard结构,程序与数据存储空间分开,各有独立的地址总线和数据总线,取指和读数可以同时进行,而单片机多数采用的是冯•罗依曼结构,所有的操作都必须经过累加器A,很容易造成瓶颈效应。

实验一 CCS使用及DSP基本数学运算

实验一 CCS使用及DSP基本数学运算

四、实验程序结构说明 1.math.c这个文件中包含了实验关于DSP运算的主演函数。 主要有: fixed_add(int x,int y):定点加法运算; fixed_sub(int x,int y):定点减法运算; fixed_mul(int x,int y):定点乘法运算; fixed_div(int x,int y):定点除法运算; float_add(double x,double y):浮点加法运算; float_sub(double x,double y):浮点减法运算; float_mul(double x,double y):浮点乘法运算; float_div(double x,double y):浮点除法运算; float_fixed(double x):浮点转定点运算; fixed_float(int x):定点转浮点运算;
结果不超过16位表示范围 • 设x的Q值为Qx,y的Q值为Qy,且Qx>Qy,加法/ 减法结果z的定标值为Qz,则: • z=x+y
zq 2
Qz
xq 2
Qx
yq 2 ] 2
Qx
Qy
xq 2
Qx
yq 2
( Qx Qy )
2Qx
( Qz Qx )
⑶加载源文件到工程
点击Project,选择Add Files to Project,添加 math.c、math.cmd、rts.lib文件到工程中。
①添加源文件到工程 在下拉菜单中选择.c点击打开,即可添加 源程序到工程中
②同样的方法可以添加文件math.cmd、rts.lib到工 程文件中 在下面窗口中可以看到math.c、rts.lib文件已经加 到工程文件中。

Q格式运算讲解

Q格式运算讲解

第3章 DSP 芯片的定点运算3。

1 数 的 定 标在定点DSP 芯片中,采用定点数进行数值运算,其操作数一般采用整型数来表示。

一个整型数的最大表示范围取决于DSP 芯片所给定的字长,一般为16位或24位.显然,字长越长,所能表示的数的范围越大,精度也越高.如无特别说明,本书均以16位字长为例。

DSP 芯片的数以2的补码形式表示。

每个16位数用一个符号位来表示数的正负,0表示数值为正,1则表示数值为负。

其余15位表示数值的大小。

因此二进制数0010000000000011b =8195 二进制数1111111111111100b =—4对DSP 芯片而言,参与数值运算的数就是16位的整型数.但在许多情况下,数学运算过程中的数不一定都是整数。

那么,DSP 芯片是如何处理小数的呢?应该说,DSP 芯片本身无能为力。

那么是不是说DSP 芯片就不能处理各种小数呢?当然不是。

这其中的关键就是由程序员来确定一个数的小数点处于16位中的哪一位。

这就是数的定标。

通过设定小数点在16位数中的不同位置,就可以表示不同大小和不同精度的小数了。

数的定标有Q 表示法和S 表示法两种。

表3。

1列出了一个16位数的16种Q 表示、S 表示及它们所能表示的十进制数值范围。

从表3.1可以看出,同样一个16位数,若小数点设定的位置不同,它所表示的数也就不同。

例如: 16进制数2000H =8192,用Q0表示 16进制数2000H =0。

25,用Q15表示但对于DSP 芯片来说,处理方法是完全相同的.从表3。

1还可以看出,不同的Q 所表示的数不仅范围不同,而且精度也不相同。

Q 越大,数值范围越小,但精度越高;相反,Q 越小,数值范围越大,但精度就越低.例如,Q0的数值范围是-32768到+32767,其精度为1,而Q15的数值范围为—1到0.9999695,精度为 1/32768 = 0。

00003051。

因此,对定点数而言,数值范围与精度是一对矛盾,一个变量要想能够表示比较大的数值范围,必须以牺牲精度为代价;而想提高精度,则数的表示范围就相应地减小。

关于浮点数与定点数的理解

关于浮点数与定点数的理解

定点数与浮点数计算机处理的数值数据多数带有小数,小数点在计算机中通常有两种表示方法,一种是约定所有数值数据的小数点隐含在某一个固定位置上,称为定点表示法,简称定点数;另一种是小数点位置可以浮动,称为浮点表示法,简称浮点数。

1. 定点数表示法(fixed-point)所谓定点格式,即约定机器中所有数据的小数点位置是固定不变的。

在计算机中通常采用两种简单的约定:将小数点的位置固定在数据的最高位之前,或者是固定在最低位之后。

一般常称前者为定点小数,后者为定点整数。

定点小数是纯小数,约定的小数点位置在符号位之后、有效数值部分最高位之前。

若数据x 的形式为x = x0.x1x2…x n( 其中x0为符号位,x1~x n是数值的有效部分,也称为尾数,x1为最高有效位),则在计算机中的表示形式为:一般说来,如果最末位x n = 1,前面各位都为0 ,则数的绝对值最小,即|x|mi n = 2-n。

如果各位均为1,则数的绝对值最大,即|x|ma x =1-2-n 。

所以定点小数的表示范围是:2- n ≤ | x| ≤ 1 - 2- n定点整数是纯整数,约定的小数点位置在有效数值部分最低位之后。

若数据x 的形式为x = x0x1x2…x n ( 其中x0为符号位,x1~x n是尾数,x n为最低有效位),则在计算机中的表示形式为:定点整数的表示范围是:1≤ | x| ≤ 2n - 1当数据小于定点数能表示的最小值时,计算机将它们作0处理,称为下溢;大于定点数能表示的最大值时,计算机将无法表示,称为上溢,上溢和下溢统称为溢出。

计算机采用定点数表示时,对于既有整数又有小数的原始数据,需要设定一个比例因子,数据按其缩小成定点小数或扩大成定点整数再参加运算,运算结果,根据比例因子,还原成实际数值。

若比例因子选择不当,往往会使运算结果产生溢出或降低数据的有效精度。

用定点数进行运算处理的计算机被称为定点机。

2. 浮点数表示法(floating-point number)4与科学计数法相似,任意一个J进制数N,总可以写成N = J E × M式中M称为数N 的尾数(mantissa),是一个纯小数;E为数N 的阶码(e x ponent),是一个整数,J称为比例因子J E 的底数。

CCS使用及DSP基本数学运算

实验一 CCS使用及DSP基本数学运算一、实验目的:1、熟悉CCS集成开发环境,掌握工程的生成方法;2、熟悉SEED-DTK5416实验环境;3、掌握CCS集成开发环境的调试方法;4、了解数在计算过程中的定标,掌握数的定点、浮点表示方法,定点、浮点基本运算以及定点、浮点间的相互转换。

二、实验内容:1、 DSP源文件的建立;2、 DSP程序工程文件的建立;3、编译与链接的设置,生成可执行的DSP文件;4、进行DSP程序的调试与改错;5、学习使用CCS集成开发工具的调试工具;6、观察实验结果;三、实验知识背景:在DSP编程过程中,数以二进制、十进制、与十六制表示均可。

在定点DSP的运算过程中,数一般采用二进制与二进制补码的形式进行运算的。

其中二进制数只能代表正数不能代表负的数,而二进制补码记数系统弥补了这一缺点。

它的构成如下;在二进制的基础上,加一符号位。

符号位位于二进制数的最高位当为正数时,符号位为0,为负数时,符号位为1当采用二进制补码进行数的运算时,具有如下的两个优点:可以将加法与减法统一成加法运算符号位可以进行扩展,而其数值不变,这可以使一个比较小的数存放到比较大的寄存器当中例:(11110)2 = 1×(-16)+ 1×8 + …… + 1×2 + 0×1 = -2当将其符号位扩展三位,放入一8位的寄存器中(11111110)2 = 1×(-128)+ 1×64 + …… + 1×2 + 0×1 = -2 这将为运算提供极大的方便,因而在定点的DSP中,大多数情况采用二进制补码形式。

C5000系列的DSP硬件只支持定点运算,浮点运算要通过软件来实现。

其运算字长为16位,也就是说,DSP所能表示的整数的范围也就决定了,其范围为-32768到32767。

而在很多情况下,数学运算过程中不一定是整数,而且动态范围也不是固定不变的。

定点数的概念和表示方法

1.基本概念(1)计算机中定点数的三种表示方法:原码、补码和反码(2)在DSP中一般使用补码的形式来表示操作数(3)整型数的表示范围由DSP芯片的字长决定,比如16位或24位(4)注意,符号位的bit个数,不同的DSP芯片有不同的实现2.DSP如何处理小数以16位的字长DSP芯片为例子。

(1)定标由程序员规定,小数点位于16位中的哪一位,通过设定小数点的不同位置,就可以表示不同大小和不同精度的小数。

参与运算的是16位的整型数,并不存在真正意义上的小数点。

(2)定标的表示方法Q表示法:Q后面的数表示该数的小数点右边有几位S表示法:表示小数点前后两部分各占了几位数Q/S表示法能表示十进制数值的精度和范围:同一个16bit数,Q值不同,则表示的数也不同。

在此处键入公式。

例:2000HQ0:意思是小数点部分没有,那就是2000H=8192Q15:小数点部分占了15位,总共才16位,最高位是符号位,所以意思就是整数部分占了0位,即不存在整数部分【数的格式就是0.xxxx】,值就是2000H=0.125所以:同样一个16位的数,Q值不同,所能表示的数也不同,所能表示的数的范围和精度也不同,Q值越大,所能表述的数的范围就越小[对整数部分而言],但是精度越高【对小数部分而言】,反之,Q越小,能表示的数值越大,但是精度越低。

故对于DSP处理定点数来说,数值的表示范围和精度是一堆矛盾体。

3.小数和定点数和转换规则在实际处理中,大都处理浮点数,但是浮点数太消耗时间。

因此在DSP处理中,首先进行数值的转换,DSP芯片计算整型数会快很多。

小数F转定点整数A:A=Fx2Q定点整数A转小数F:F=Ax2−Q例:F=0.6,定标Q=15,对应的定点整数就是:0.6 x 215=0.6 x 32768=19660.8最终要得到一个整数,所以这里还有另一个规则,就是“向下取整”,那最终的结果就是19660。

A=19660,定标Q=15,对应的小数就是:19660 x 2−15=0.5997,可以发现转回去的值和0.6是有差异的。

DSP 定点乘法运算


数的标定及Q值确定
数的标定即由程序员来确定1个数的小数点处于16位数的哪一位。 S表示法
数标定的方法 Q表示法
Q值得确定(Q0-Q15)
从表3.1可以看出,同样一个16位数, 若小数点设定的位置不同,它所表示 的数也就不同。 例如: 16进制数2000H=8192,用Q0表 示 1示6进制注范意围数:不20不同0同,0H的而=且Q0所精.2表度5示,也的不用数相Q不同15仅。表
一般的定点dsp芯片都设有溢出保护功能当溢出保护功能有效时一旦出现溢出则累加器acc的结果为最大的饱和值上溢为7fffh下溢为8001h从而达到防止溢出引起精度严重恶化的目的
定点CPU计算中的小数乘法 实现及基本原理
讲解人:吴益芬
流程
为何需要定点计算? 数的定标及Q值确定? 定点乘法的实现及原理? 会出现的问题及办法?
例子:
设x = 18.4,y = 36.8,则浮点运算值 为 z =18.4×36.8 = 677.12; 根据上节,得Qx = 10,Qy = 9,Qz = 5,所以 x = 18841;y = 18841; temp = 18841L; z = (18841L*18841)>>(10+9-5) = 354983281L>>14 = 21666; 因为z的定标值为5,故定点 z = 21666 即为浮点的 z = 21666/32 = 677.08
Q越大,数值范围越小,但精度 越高;相反,Q越小,数值范围 越大,但精度就越低。
浮点数X与定点数Xq的转换
xq (int)x 2Q
x (float)xq 2Q
例子:
浮点数X=0.5,定标 Q=15, 则定点数 Xq=[0.5×32768]=16384,[] 中表示下取整。反之,一个用 Q=15 表示的定点数16384, 其浮点数为16384×2^(-15) =16384/32768=0.5

Q格式运算讲解

z=(int)(117964L>>2)=29491;
因为z的Q值为13,所以定点值z=29491即为浮点值z=29491/8192=3.6。
例3.3定点减法
设x=3.0,y=3.1,则浮点运算结果为z=x-y=3.0-3.1=-0.1;
Qx=13,Qy=13,Qz=15,则定点减法为:
x=24576;y=25295;
3.2.1
设浮点加法运算的表达式为:
float x,y,z;
z=x+y;
将浮点加法/减法转化为定点加法/减法时最重要的一点就是必须保证两个操作数的定标值一样。若两者不一样,则在做加法/减法运算前先进行小数点的调整。为保证运算精度,需使Q值小的数调整为与另一个数的Q值一样大。此外,在做加法/减法运算时,必须注意结果可能会超过16位表示。如果加法/减法的结果超出16位的表示范围,则必须保留32位结果,以保证运算的精度。
二进制数0010000000000011b=8195
二进制数1111111111111100b=-4
对DSP芯片而言,参与数值运算的数就是16位的整型数。但在许多情况下,数学运算过程中的数不一定都是整数。那么,DSP芯片是如何处理小数的呢?应该说,DSP芯片本身无能为力。那么是不是说DSP芯片就不能处理各种小数呢?当然不是。这其中的关键就是由程序员来确定一个数的小数点处于16位中的哪一位。这就是数的定标。
temp=25395;
temp=x-temp=24576-25395=-819;
因为Qx<Qz,故z=(int)(-819<<2)=-3276。由于z的Q值为15,所以定点值z=-3276即为浮点值z=-3276/32768-0.1。
-4096≤X≤4095.875
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档