DSP编程技巧之16-DSP里的数据类型,你都认得它们么

发布者:science56最新更新时间:2014-09-30 来源: 互联网关键字:DSP  编程技巧  数据类型 手机看文章 扫描二维码
随时随地手机看文章
  编程时有多少种?float,double和long double,long和long long这些绕口的名字究竟有什么区别?使用不正确又会有什么后果?如果你感觉说不清楚,那我们来看看这些到底都是何方神圣吧:

  表1 C28x 支持的

      DSP编程技巧之16-DSP里的数据类型,你都认得它们么
       Ø 64位整数的处理

  从上面的表中,可以看出C28x的编译器是支持64位的整数类型的,这使得在处理某些高精度智能编码器的反馈数据时特别方便,因为在更老的不支持64位整数类型的器件上编程时,需要我们自己定义64位类型,在运算时要自己定义运算规则才行。一个long long类型的整数需要使用ll或者LL前缀,才能被I/O正确处理,例如,我们使用下面的代码才能正确把它们显示在屏幕上:

  printf("%lld", 0x0011223344556677);

  printf("%llx", 0x0011223344556677);

  需要注意的是,虽然编译器支持了64位整数,但是实际的CPU的累加器还有相关的CPU寄存器还是32位的,在程序运行时,64位整数类型是被CPU“软支持”的。我们可以添加相关的实时运行库来提高效率,其中包含了llabs(), strtoll() 和strtoull()等函数。

  Ø 浮点的处理

  从表1中我们可以看出,C28x的编译器支持32位的单精度浮点、64位的单精度和双精度浮点运算。在定义双精度64位变量时,也要记得使用l或者L前缀,否则会被视为双精度的32位变量,造成精度的损失。例如:

  long double a = 12.34L; /* 初始化为双精度64位浮点 */

  long double b = 56.78; /* 把单精度浮点强制类型转换为双精度浮点 */

  在I/O处理时,也要标有相关的前缀,例如:

  printf("%Lg", 1.23L);

  printf("%Le", 3.45L);

  需要注意的是,虽然编译器支持了双精度浮点,但是FPU只支持硬件的32位单精度浮点,在程序运行时,双精度浮点类型是被CPU“软支持”的。特别是long double的操作,需要多个CPU寄存器的配合才能完成(代码尺寸和执行时间都会变长);在多个long double操作数的情况下,前两个操作数的地址会传递到CPU辅助寄存器XAR4和XAR5中,其它的地址则被放置在栈中。例如下面的代码中:

  long double foo(long double a, long double b, long double c)

  {

  long double d = a + b + c;

  return d;

  }

  long double a = 1.2L;

  long double b = 2.2L;

  long double c = 3.2L;

  long double d;

  void bar()

  {

  d = foo(a, b, c);

  }

  在函数bar()中调用foo的时候,CPU寄存器的值为:

  DSP编程技巧之16-DSP里的数据类型,你都认得它们么
       CPU寄存器寄存器的值:

  在C28x的浮点操作中,以加法为例,其汇编代码是有区别的:

  LCR FS$$ADD ; 单精度加法

  LCR FD$$ADD ; 双精度加法

  一般情况下,没有特殊的需要,完全可以不实用双精度的浮点,例如在电机控制系统中,因为A/D采样的精度限制,整个系统的精度是无法实现那么高的精度的。

  Ø 数据类型很多,使用时一定要小心

  单精度与双精度,有符号与无符号,一个大于65535的数赋给16位宽的类型……这些转换都是隐患重重,使用一定要小心啊!例如:

   如果你用Excel分析对比数据

  记得Excel中浮点类型只能使用双精度的浮点数。所以如果你把中单精度的浮点数据取出放入Excel中,发现数据发生了变化,就不会觉得奇怪了。例如,单精度浮点的0.2放到Excel,就变成0.200000002980232了。

关键字:DSP  编程技巧  数据类型 引用地址:DSP编程技巧之16-DSP里的数据类型,你都认得它们么

上一篇:DSP编程技巧-使用代码优化时必须考虑的五大问题
下一篇:DSP编程技巧之14-揭开编译器神秘面纱之链接器的高级选项

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

8051、ARM和DSP指令周期的测试与分析
摘要 在实时嵌入式控制系统中,指令周期对系统的性能有至关重要的影响。介绍几种最常用的微控制器的工作机制,采用一段循环语句对这几种微控制器的指令周期进行测试,并进行分析比较。分析结论对系统控制器的选择有一定的指导作用。 关键词 指令周期测试 AT89S51 LPC2114 TMS320F2812   在实时控制系统中,选择微控制器的指标时最重要的是计算速度的问题。指令周期是反映计算速度的一个重要指标,为此本文对三种最具代表性的微控制器(AT89S51单片机、ARM7TDMI核的LPC2114型单片机和TMS320F2812)的指令周期进行了分析和测试。为了能观察到指令周期,将三种控制器的GPIO口设置为数字输出口,并采用循环不断地置
[单片机]
电力电子装置控制系统的DSP设计方案
摘 要 以TI公司的电机控制专用芯片TMS320LF2407aDSP为例,介绍电力电子装置中控制系统的硬件设计方案。包括DSP的电平转换、时钟、复位、译码、片外存储、键盘、液晶显示和E2PROM电路与必要的外围电路。 关键词 DSP 硬件设计 电力电子装置 PCB 引言 在现代高性能电力电子和交流电机控制系统中,DSP已经取代了微控制器成为控制器的核心。其快速强大的运算和处理能力以及并行运行的能力,满足了电力电子装置控制系统对实时性和处理算法复杂性的要求,并为不断发展的新理论和新算法的应用奠定了技术基础。 C240x系列DSP是面向数字控制系统的新一代数字信号处理器。该控制器集实时处理能力和控制器设计功能于一身,为控
[应用]
DSP电磁的兼容性问题简析
1 引言 自从20世纪80年代初期第一片数字信号处理器芯片(DSP)问世以来,DSP就以数字器件特有的稳定性、可重复性、可大规模集成、特别是可编程性和易于实现自适应处理等特点,给数字信号处理的发展带来了巨大机遇,应用领域广阔。但由于DSP是一个相当复杂、种类繁多并有许多分系统的数、模混合系统,所以来自外部的电磁辐射以及内部元器件之间、分系统之间和各传输通道间的窜扰对DSP及其数据信息所产生的干扰,己严重地威胁着其工作的稳定性、可靠性和安全性 。据统计,干扰引起的DSP事故占其总事故的90%左右。同时DSP又不可避免地向外辐射电磁波,对环境中的人体、设备产生干扰、妨碍或损伤。并且随着DSP运算速度的提高,能够实时处理的信
[模拟电子]
vivo 发布逆光和夜景拍照黑科技,DSP芯片来自瑞芯微
电子网 6月28日报道 今日,“2017世界移动大会-上海”在新国际博览中心隆重开幕。其中,vivo 在这次展会上发布多项黑科技。除了此前备受关注极具未来感的“隐形指纹”功能外,还有一项“DSP拍照技术”的黑科技发布。 据悉,此次vivo推出是基于独立DSP芯片的“DSP拍照技术”,能解决消费者在暗光、逆光等各种复杂光线条件下拍照效果差的痛点。据集微网了解,vivo的这个双核DSP型号为“RK1608”,与国内知名IC厂商瑞芯微共同研发,基于CEVA的图像和视觉DSP技术,采用拥有256MB内存,可以快速抓取5张图片,利用高达10倍处理速度合成为一张高品质照片,综合处理速度比普通手机提升3倍。 在消费者日常的手机拍摄体验中,除了
[半导体设计/制造]
嵌入式DSP访问片外SDRAM的低功耗设计研究
DSP有限的片内存储器容量往往使得设计人员感到捉襟见肘,特别是在数字图像处理、语音处理等应用场合,需要有高速大容量存储空间的强力支持。因此,需要外接存储器来扩展DSP的存储空间。 在基于DSP的嵌入式应用中,存储器系统逐渐成为功耗的主要来源。例如Micron公司的MT48LC2Mx32B2-5芯片,在读写时功耗最大可以到达924 mW,而大部分DSP的内核功耗远远小于这个数值。如TI的 TMS320C55 x系列的内核功耗仅仅为0.05 mW/MIPS。所以说,优化存储系统的功耗是嵌入式DSP极其重要的设计目标。本文主要以访问外部SDRAM为例来说明降低外部存储系统功耗的设计方法。 1 SDRAM功耗来源 SDRAM内部一般分为多
[嵌入式]
嵌入式<font color='red'>DSP</font>访问片外SDRAM的低功耗设计研究
基于TMS320C6000系列DSP的维特比译码程序优化设计
摘要:在软件无线电技术中,经常采用DSP芯片实现信道解码,但维特比译码算法在DSP上的运行速度限制了DSP译码在高速实时系统中的应用。针对TMS320C6000系列DSP的特点,提出了一种优化的译码程序设计方案。利用DSP的并行运算能力,极大地缩短了译码器中“加比选”单元的运算时间。优化后的程序比优化前的译码速度上提高约4倍。当在167MHz的TMS320C6701上运行的时候,对(2,1,7)卷积码的译码速度可以达到870kbps。 关键词:数字信号处理器 维特比译码器 软件无线电 卷积码因为其编码器简单、编码增益高以及具有很强的纠正随机错误的能力,在通信系统中得到了广泛的应用。基于最大似然准则的维特比算法(VA)是在加性高
[嵌入式]
DSP与PC间高速串口通信的实现
    摘要: 利用UART解决DSP与PC机间通信时速率匹配问题,并给出了具体实现电路。     关键词: DSP UART 串行通信 FIFO DSP是一种专门用来实现信号处理算法的微处理器芯片,主要优点有:硬件乘法器,哈佛总线结构,多种寻址方式,零耗循环(zero overhead loop),程序执行时间可预测等。     正是由于DSP的诸多优点能够满足密集的数学计算,而且DSP应用的另一个突出特点是实时性,使其在通信、雷达、数字电视等领域得到了广泛的应用,而且日益渗透到人们的日常生活的各个方面。     在实时信号处理中已经离不开DSP,这些处理系统中包含了各种数据通
[应用]
一种基于USB与DSP的指纹识别系统设计方案
  通用串行总线USB(UNIversal Serial Bus)是一种新型接口技术。它是由Intel、Microsoft等公司为解决日益增加的外设与有限的主板插槽与端口之间的矛盾而制定的一种串行通信标准。USB具有以下特点:(1)有较高的传输速率。USBl.1支持全速和低速两种方式,全速速率为12Mbps,低速速率为 1.5Mbps;USB2.0除支持USBl.1的两种速度方式外,还增加了速率可达480Mbps的高速方式。(2)使用方便灵活。USB支持即插即用和热插拔,允许在任何时候连接和断开外设。当外设被连接时,系统会自动检测到外设并准备使用。(3)易于扩展。通过根集线器可携带127个设备真正实现多个外设共用一个接口。此外,U
[嵌入式]
一种基于USB与<font color='red'>DSP</font>的指纹识别系统设计方案
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

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

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