定点DSP中高精度除法的实现方法

发布者:BeaLaity0170最新更新时间:2014-09-24 来源: 互联网关键字:DSP  除法  算法  C54X 手机看文章 扫描二维码
随时随地手机看文章

  引言

  各种集成化单片数字信号处理器(DSP)以其功能强、集成度高、应用灵活、性价比高等优点,在信号处理和系统控制中的主导性地位日益明显。许多信号处理和控制需要运用除法运算。一般的数字信号处理器中没有现成的除法指令。十多年前诞生的浮点DSP,由于其用硬件完成浮点数的运算,在数据处理和运算能力上大大超出定点DSP,处理除法运算也比定点DSP更为简单。但是定点DSP每器件产品的价格更低,这对大规模的大众市场应用而言是相当重要的优势,也是定点器件至今仍是业界主流的主要原因。所以,讨论定点DSP中除法的实现仍不失其意义。在定点DSP中虽然已经有人给出除法的算法,但是由于其运算的复杂和精度难以如愿,致使一些带有除法的好的算法在信号处理中难以得到应用。

  为了提高运算结果的精度,本文在已有除法算法的基础上进行了一些改进,最大限度地保证了结果的精度。最后在TI公司的TMS320C5416芯片里具体实现并验证了这一高精度除法。

  1 经典算法

  DSP中没有现成的除法指令,除法是靠被除数与除数之间的移位相减来实现的。在C54X系列里利用减法指令SUBC和循环指令RPT实现2个16位数的相除。下面以C54X为例来具体实现经典的除法:

  C54X提供的SuBC指令仅对无符号数进行操作,所以在移位相减开始之前必须先将被除数和除数取绝对值,仅考虑2个正数的除法。此时除法运算有两种情况:

  当|被除数|<|除数|时,将|被除数|存放在累加器的高16位,然后用SUBC完成15次移位相减,相减之后在累加器A的低16位中存放商的绝对值。根据运算前被除数和除数的符号是否相同来决定是否要改变所得结果的符号。

  当|被除数|≥|除数|时,将|被除数|存放在累加器的低16位,然后用SUBC完成16次移位相减,相减之后在累加器A的低16位中存放商的绝对值。根据运算前被除数和除数的符号是否相同来决定是否要改变所得结果的符号。

  从实现的过程分析,当|被除数|<|除数|时,移位相减开始时|被除数|和|除数|的小数点位置正好相差一位。第一次相减后在累加器A的O位最低位存进的数值正是商的最高位,该位为商的小数点后第一位。在15次移位相减之后,累加器A低16位所得的结果为Q值为15的小数。当|被除数|≥|除数|时,在第l6次相减时,|被除数|位于A的高16位(30~15位)上,小数点位在A的15位后,和|除数|的小数点位正好对齐,则此次相减后在A的 0位加上的值正好是商的最低有效整数位,相当于十进制数中的个位。所以在16次移位相减之后,累加器A低16位所得的结果为Q值为0的整数。以此分析,当商的精确值不是整数,或者超出Q值15所表示的范围时,此算法所得结果就达不到16位数据所能表达的精确度。

  表1中任取几组数据来说明。

测试数据

  2 高精度算法

  由于经典算法在结果上存在精度不高的问题,所以应考虑精度尽可能高的除法算法。

  和经典算法一致,本算法也采用移位相减实现除法。但不同的是,在进行移位相减之前算法对除数与被除数进行了一些处理,并且在移位相减时不再分两种情况。下面具体介绍算法的流程。

  首先给出被除数y和除数x。由于定点DSP中所有的数据都以整数的形式存在,所以在这里就把y和x看成是整数,不考虑它们本身的Q值。在图1所示的流程图中,A和B是C5416的2个累加器。算法第一步是将x和y相乘,结果存放在B中,以便在最后从B中提取商的符号(商的符号与B的符号相同)。第二步分别对x和y取绝对值以进行无符号数相除。第三步,分别判断x和y在最高有效位之前共有多少个O,分别记为n和m,即在x和y的分别有(16一n)和 (16一m)个有效位。然后将x和y分别左移(n一1)位和(m一2)位,即x=x·2n-1,y=y·2m-2。第四步,将前面所得x和y再进行移位相减,把y存放在A的高位,即AH=y,利用SUBC指令进行1 5次移位相减。在所得的结果当中,A的低位即为商的绝对值,B的符号即为商的符号,两者结合得到quot值。由于在移位相减之前分别对除数和被除数有一个左移放大的操作,所以在结果中就必须考虑商的Q值。

高精度算法流程

  假设给定的除数和被除数是x0和y0,则进行移位相减的两数分别为x=x0·2n-1,y=y0·2m-2。根据计算的过程可以得到商的Q值为 (14+m-n),所以最后的结果应该包括quot值和Q值(14+m—n)两部分。即商=quot·2-Q。  3 实验结果及讨论

  前一节中详细介绍了高精度算法的具体流程,可以发现其与经典算法相比,不同之处在于进行移位相减之前把除数和被除数进行了不同位数的左移,保证进行移位相减的除数的数据位最高位是l,即14位为1,而被除数的第13位为1。正是这个左移使结果的精度得到了提高。

  在所引用的经典算法中,当1被除数l

  利用高精度算法在TMS320C5416中计算上面的4组数据,所得结果如表2所列。

利用高精度算法在TMS320C5416中计算上面的4组数据

  上面的实验说明,该算法使计算结果的精度有了很大的提高。取表中第三组数据进行详细分析,y=479、x=240,利用经典算法结果为整数1。利用改进后的算法,得到的结果有两部分:quot值=3FDDH,Q值=13。由这两部分可以算得精确的商值1.995 727 539 062 5,而479/240=1.995 83,计算结果与实际值之间的误差为O.000105 794 270 83。当Q值=13时,定点数据表示形式允许的误差为2-13=O.000 122 070 312 5,可见计算结果误差在允许的误差范围之内,也就是说计算结果满足所推导出的精度的范围。对比前后两种算法,可以发现这里的计算结果精度由原来的1提高到了2-13。

  通过分析可知,该算法使计算结果在精度上有了非常大的提高,但是在效率上则有所降低。如表3所列:

算法使计算结果在精度上有了非常大的提高

  表3中的时钟周期指的是DSP的机器时钟周期。由表3可以发现高精度算法对于不同的数据所需的周期数是不一样的,而且算法中计算被除数和除数的高位无效位数占用了大部分的周期数。

  经典算法在效率上比高精度算法高,主要是因为在高精度算法中高位无效位数的计算效率过低。用C5416计算|被除数|和|除数|的高位无效位数,效率低是由于在C5416中没有现成的指令来探测数据中哪一位为最高有效位。表3给出的时钟周期数是在笔者的程序中所得到的结果,由于时间匆忙和优化方面能力的局限性,所以并不能保证在程序优化方面做得很好,所以在C5416中对该部分程序再进行更好的优化以减少执行的时间是很可能的。

  在TI公司C6000系列的定点DSP中,有专门的指令LMBD来快速得到累加器中从符号位开始无效0位的个数,只需几个周期就能完成C5416里高位无效位数的计算,所以在C6000中完成整个算法的效率与经典算法相比肯定能够提高。并且在C6000系列中对不同的数据进行计算所需的时钟周期数是一样的,因此在C6O0O系列定点DSP中该算法有着更好的实用性。

  结语

  本文介绍了高精度除法在定点DSP中的实现,通过与经典除法算法的对比,显示了其高精度的优点。定点TMS320C5416实验表明该算法使商的精度得到了很大的提高,但是在计算的效率上有待进一步提高。

  参考文献

  1. 戴明桢.周建江 TMS320C54X DSP结构、原理及应用 2001

  2. 石元君 定点DSP除法原理及其TMS320C6000实现 [期刊论文] -单片机与嵌入式系统应用2002(7)

  3. Texas Instruments TMS320C54x DSP Reference Set Volume 2:Mnemonic Instruction Set (SPRU172B)

  4. 张雄伟 DSP 芯片的原理与开发应用 2003

  5. 酆勇.李阳.李方伟 基于DSP的视频编码的优化和实现 [期刊论文] -电子工程师2002(10)

关键字:DSP  除法  算法  C54X 引用地址:定点DSP中高精度除法的实现方法

上一篇:评论:DSP无处不在,名称却要过时
下一篇:基于DSP+CPLD的嵌入式高速图像通信系统设计

推荐阅读最新更新时间:2024-05-02 23:12

Altera 启动业界第一届5G算法创新大赛
5G大学竞赛依托备受瞩目的亚洲创新大赛,华为、英特尔、展讯等行业领导厂商齐力支持 2015年5月21日,西安 Altera公司 (NASDAQ: ALTR) 宣布启动第一届5G算法创新大赛。该大赛是业界首个面向未来无线通信最先进技术的大学竞赛。 第一届5G算法创新大赛,即2015年Altera亚洲创新大赛的5G专题竞赛,由Altera、西安电子科技大学、友晶科技主办,华为、英特尔、展讯等公司赞助,旨在增强学术界与领先的市场技术提供商之间的互动与交流,推动创新、培育人才,促进整个产业的发展。大赛面向全国大专院校硕士和博士研究生以及高年级本科生开放。参赛详情可登录http://www.innovateasia.com/5
[嵌入式]
DSP与单片机的一种高速通信实现方法
  1 引言    数字信号处理 器(DSP)是一种适合于实现各种数字信号处理运算的 微处理器 ,具有下列主要结构特点:(1)采用改进型哈佛(Harvard)结构,具有独立的程序总线和数据总线,可同时访问指令和数据空间,允许实际在程序存储器和数据存储器之间进行传输;(2)支持流水线处理,处理器对每条指令的操作分为取指、译码、执行等几个阶段,在某一时刻同时对若干条指令进行不同阶段的处理;(3)片内含有专门的硬件乘法器,使乘法可以在单周期内完成;(4)特殊的指令结构和寻址方式,满足数字信号处理FFT、卷积等运算要求;(5)快速的指令周期,能够在每秒钟内处理数以千万次乃至数亿次定点或浮点运算;(6)大多设置了单独的DMA总线及其控制
[单片机]
<font color='red'>DSP</font>与单片机的一种高速通信实现方法
TMS320C32 DSP的中断编程方法
  TMS320C3X系列芯片是美国TI公司推出的第一代浮点DSP芯片,具有丰富的指令集、很高的运算速度、较大的录址空间和较高的性价比,在各领域得到了广泛的应用。TMS320C32是TMS320系列浮点数字信号处理器的新产品,在TMS320C30和TMS320C31的基础上进行了简化和改进。在结构上的改进主要包括可变宽度的存储器接口、更快速的指令周期时间、可设置优先级的双通道DMA处理器、灵活的引导程序装入方式、可重新定位的中断向量表以及可选的边缘/电平触发中断方式等。对TMS320C32的开发可以用汇编语言,也可以用C语言。使用汇编语言的优点在于运行速度快、可以充分利用芯片的硬件特性,但开发速度较慢,程序的可读性差;而C语言的优
[嵌入式]
用CPLD实现DSP2407A与S3C4480的通信
在现代汽车电子中,一般有多个微控制器共同协调工作。DSP控制器采用哈佛结构,运算速度快,所以在汽车电子中广泛采用DSP芯片来实现汽车动力系统的控制。ARM是一种32位微控制器,有丰富的外扩接口,因此在汽车电子中一般用ARM来实现大容最的数据存储和人机交互或GPS全球定位系统,故在DSP和ARM之间需要进行数据交换。 CPLD(Complex Programmable Logic Device)是一种复杂的用户可编程逻辑器件,由于采用硬件可编程技术,从而使没计硬件电路也像设计软件一样方便。DSP2407A是T1公司设计的一款专为满足大范围的数字电动机控制应用的微控制器。S3C4480是三星公司专为手持设备设计的高性价比的微控制器。本设
[应用]
赛灵思65nm高端FPGA量产给嵌入式设计产业带来了什么?
近日,赛灵思举办了一系列活动来庆祝其65nm Virtex-5 FPGA实现量产。自2006年5月15日推出65nm Virtex-5 FPGA平台以来,该公司已向市场发售了基于三款平台(LX、LXT和SXT)的13种器件。其中两款LX50和LX50T目前可量产供货,其它型号很快就可进入量产。 “在从推出样片到量产的一年里,赛灵思在高低温测试、ESD保护以及开发工具、参考设计等方面做了大量工作。”赛灵思亚太区Virtex解决方案高级市场经理邹志雄表示。不过,虽然他强调“量产的FPGA意味着客户现在可以放心地大量采用65nm FPGA进行整机产品制造。”但业内分析人士认为:65nm FPGA量产给嵌入式设计产业带来的不仅仅是几
[焦点新闻]
智能手环心率算法是如何实现的?
和心率检测是目前智能手环的核心卖点,消费者对于这些功能最大的关注度就是它的精准度问题,这也是智能手环厂商最头疼的问题。因为按照现在的技术水平来说,还没有谁可以达到100%或者靠近100%的精准度。啊?这么大的误差!是的,不过这个计步误差对生活和身体带来不了什么影响,心率误差还是会带来一些影响的哦!人处于行走、快跑、睡眠等多种状态,这些状态下,计步的条件存在差异!因此,单纯的计算步数肯定会带来很长差异!好的算法必须将这些因素都考虑进去! 不管性能如何,先来看看计步功能如何实现?后续再讲解心率算法如何实现!当年带着学生一起做了计步算法的实现和测试工作,学习过程让我非常的满意。教学相长也在过程中得到了体现。只不过这样的学生很少很少,
[嵌入式]
CEVA-TeakLite-4超低功耗DSP 运行Maxim动态扬声器管理技术
CEVA,全球领先的智能和互联设备的信号处理IP授权许可厂商 (纳斯达克股票交易所代码:CEVA) 宣布由Maxim Integrated Products, Inc.( 纳斯达克股票交易所代码:MXIM)推出的动态扬声器管理(DSM™)软件,在CEVA-TeakLite-4系列超低功耗音频/语音DSP上提供可用版本。这款在CEVA-TeakLite-4上运行的DSM优化软件实施方案已经整合到一流智能手机OEM厂商的智能手机SoC中。 包括智能手机、耳机和可穿戴设备在内的许多设备在扬声器设计方面遇到重大挑战。这些设备中的微型扬声器越来越小,并要满足功率限制的要求,因而严重地限制了使用传统D类放大器所能够达到的音质。在CEVA-
[嵌入式]
4DSP推出的FM480是基于Virtex-4 FPGA的PCI夹层卡
4DSP的PMC扩展卡可加速信号处理算法 4DSP公司日前推出的FM480是一款基于Virtex-4 FPGA的PCI夹层卡(PMC)。FM480已通过几种现场测试,所开发的首个应用是一个基于IEEE-754标准浮点FFT内核的2维快速傅立叶变换。 FM480 PMC可选传导散热方式,配有大容量的SRAM和DRAM资源以及超高速DMA引擎,因而适于作为协处理器单元以满足信号处理算法的需求。该卡还提供了几个前面板I/O模块,可实现相机、前端面板数据端口以及ADC连接。 FM480目前已向几个主要用户提供了样件,已开发的项目包括在Virtex-4 FPGA中实现的实时JPEG2000压缩。有关该产品的价格目前尚未公布。
[新品]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved