DSP-定点和浮点数格式
- 格式:ppt
- 大小:837.00 KB
- 文档页数:42
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定点小数的常规格式、相对于浮点小数的优势与劣势和计算的概述所谓定点小数,就是小数点固定地隐含在某一位置上的数据。
由于小数点的位置是固定的,所以就没有必要储存它(如果储存了小数点的位置,那就是浮点数了)。
而小数的具体位置则完全是由程序设计者自己决定的,因此,对于定点小数的处理,完全可以采用普通整数的处理方式。
下面我们来简单地聊一聊定点小数的常规格式、相对于浮点小数的优势与劣势,以及如何使用Lattice ECP3/ECP5的sysDSP乘法器来实现基本的定点小数运算(加法和乘法)。
并会在后续的文章中介绍定点小数的除法、平方根、平方根倒数和CORDIC算法的基本理论和HDL的实现等。
1、定点小数的常规格式
常规的定点小数格式如下图:
其中,有符号定点小数的值可以表示为:
无符号定点小数的值可以表示为:
定点数的位宽w和小数部分的位宽wf可以看做是定点数的两个要素。
其中,w决定了定点数的动态范围,wf决定了定点数的精度。
需要注意的是,在进行定点数运算的时候,需要注意数值溢出的问题(包括向上溢出和向下溢出)。
所谓向上溢出是指运算结果超出了定点数整数部分所能表示的范围,向下溢出表示运算结果超出了定点数小数部分所能表示的范围。
显然,一旦溢出将会造成计算精度的丢失,甚至是计算结果的错误。
因此,合理地选择w和wf至关重要,w和wf的值过大会浪费资源,过小又会造成精度丢失。
2、定点数与浮点数的比较
与浮点数相比,定点数具有如下的一些优势:
(1)更少的资源。
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,很容易造成瓶颈效应。
第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基本数学运算一、实验目的: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是有差异的。