浮点 DSP 运算效率不高
DSP习题答案

DSP习题答案DSP 技术及应⽤综合训练1.DSP全称有哪两个含义?全称分别是什么?答:1、Digital Signal Processing,数字信号处理,指的是⼀门学科2、Digital Signal Processor,数字信号处理器,实现数字信号处理算法的处理器.平常所说的DSP⼀般指后者。
2.TI公司DSP主要分为哪⼏种⼦列?分别⽤于哪些场合答:C2000、C5000和C6000三⼤主流,其中C2000系列属于控制型,相当于⾼端单⽚机;C5000系列属于低成本、低功耗、⾼效率型;C6000系列属于⾼性能的类型,其性能是C5000系列的数⼗倍。
如果你处理的算法不是很复杂的话,建议使⽤C5000系列(如C5509、C5510等);如果算法之类的特别复杂,可以考虑C6000系列。
3.VC5509A硬件结构主要有哪些组成?答:CPU、存储器、⽚上外设。
(⽚上外设:●两个20位的定时器。
●⼀个看门狗定时器。
●l6通道直接存储器存取控制器(DMA),DMA控制器在不需要CPU⼲预的情况下可以提供6路独⽴的通道⽤于数据传输,并且可达每周期两个16位数据的吞吐量。
l外部存储器接⼝(EMIF),它提供与异步存储器如EPROM、SRAM及⾼密度存储器如同步DRAM的⽆缝连接。
l 三个串⼝⽀持最多三个多通道缓冲串⼝(McBSP)或最多两个多媒体/安全数字卡接⼝。
三个全双⼯多通道缓冲串⼝(McBSP)提供了与各种⼯业级串⾏设备的⽆缝接⼝,其多通道通信最多可以实现128个独⽴通道。
增强型主机接⼝(EHPI)是⼀个16位的并⾏接⼝,主机能够提供HPI接⼝访问5509A上的32KB⽚上存储器。
●可编程锁相环(DPLL)时钟发⽣器。
●USB全速(12Mbps)从端⼝。
●I2C主从接⼝。
●⼀个实时时钟。
)4.在CMD⽂件中,Mermory命令的主要作⽤是什么?答:⽤来指定⽬标存储器结构5.在CMD⽂件中,SECTION命令的主要作⽤是什么?答:⽤来控制段的构成与地址分配6.C55X处理器软件开发流程是什么?答:7.利⽤C语⾔与汇编语⾔混合编程优什么优点?答:可以充分地控制处理器的功能,为⼈⼯映射算法构成最有效的程序编码,效率⾼、可维护性和移植性好。
DSP原理期末试卷和答案

一、单项选择题:(每小题2分,共30分)1、下面对一些常用的伪指令说法正确的是:( D )A、.def所定义的符号,是在当前模块中使用,在别的模块中定义的符号;B、.ref 所定义的符号,是当前模块中定义,并可在别的模块中使用的符号;C、.sect命令定义的段是未初始化的段;D、.usect命令定义的段是未初始化的段。
2、要使DSP能够响应某个可屏蔽中断,下面的说法正确的是( B)A、需要把状态寄存器ST1的INTM位置1,且中断屏蔽寄存器IMR相应位置0B、需要把状态寄存器ST1的INTM位置1,且中断屏蔽寄存器IMR相应位置1C、需要把状态寄存器ST1的INTM位置0,且中断屏蔽寄存器IMR相应位置0D、需要把状态寄存器ST1的INTM位置0,且中断屏蔽寄存器IMR相应位置13、对于TMS320C54x系列DSP芯片,下列说法正确的是………… ( C )A、 8位DSPB、32位DSPC、定点型DSPD、浮点型DSP4、若链接器命令文件的MEMORY部分如下所示:MEMORY{PAGE 0: PROG: origin=C00h, length=1000hPAGE 1: DATA: origin=80h, length=200h}则下面说法不正确的是()A、程序存储器配置为4K字大小B、程序存储器配置为8K字大小C、数据存储器配置为512字大小D、数据存储器取名为DATA5、在串行口工作于移位寄存器方式时,其接收由()来启动。
A、RENB、RIC、REN和RID、TR6、执行指令PSHM AR5之前SP=03FEH,则指令执行后SP=( A )A、03FDHB、03FFHC、03FCHD、0400H7、TMS320C54X DSP采用改进的哈佛结构,围绕____A__组_______位总线建立。
A、8,16B、16,8C、8,8D、16,168、TMS320C54X DSP汇编指令的操作数域中, A 前缀表示的操作数为间接寻址的地址。
DSP公司各主流芯片比较

DSP公司各主流芯片比较引言DSP芯片也称数字信号处理器,是一种专门适合于进行数字信号处理运算的微处理器具,其主机应用是实时快速地实现各种数字信号处理算法。
依照数字信号处理的要求,DSP芯片一样具有如下要紧特点:〔1〕在一个指令周期内可完成一次乘法和一次加法;〔2〕程序和数据空间分开,能够同时访问指令和数据;〔3〕片内具有快速RAM,通常可通过独立的数据总线在两块中同时访问;〔4〕具有低开销或无开销循环及跳转的硬件支持;〔5〕快速的中断处理和硬件I/O支持;〔6〕具有在单周期内操作的多个硬件地址产生器;〔7〕能够并行执行多个操作;〔8〕支持流水线操作,使取指、译码和执行等操作能够重叠执行。
在我们设计DSP应用系统时,DSP芯片选型是专门重要的一个环节。
在DSP系统硬件设计中只有选定了DSP芯片,才能进一步设计其外围电路及系统的其他电路。
因此说,DSP芯片的选择应依照顾用系统的实际需要而确定,做到既能满足使用要求,又不白费资源,从而也达到成本最小化的目的。
DSP实时系统设计和开发流程如图1所示。
要紧DSP芯片厂商及其产品德州仪器公司众所周知,美国德州仪器〔Texas Instruments,TI〕是世界上最知名的DSP芯片生产厂商,其产品应用也最广泛,TI公司生产的TMS320系列DSP芯片广泛应用于各个领域。
TI公司在1982年成功推出了其第一代DSP芯片TMS32020,这是DSP应用历史上的一个里程碑,从此,DSP 芯片开始得到真正的广泛应用。
由于TMS320系列DSP芯片具有价格低廉、简单易用、功能强大等特点,因此逐步成为目前最有阻碍、最为成功的DSP系列处理器。
目前,TI公司在市场上要紧有三大系列产品:〔1〕面向数字操纵、运动操纵的TMS320C2000系列,要紧包括TMS320C24x/F24x、TMS320LC240x/LF240x、TMS320C24xA/LF240xA、TMS320C28xx等。
DSP编程技巧之22详解浮点运算的定点编程

DSP编程技巧之22详解浮点运算的定点编程我们使用的处理器一般情况下,要么直接支持硬件的浮点运算,比如某些带有FPU的器件,要么就只支持定点运算,此时对浮点数的处理需要通过编译器来完成。
在支持硬件浮点处理的器件上,对浮点运算的编程最快捷的方法就是直接使用浮点类型,比如单精度的float来完成。
但是在很多情况下,限于成本、物料等因素,可供我们使用的只有一个定点处理器时,直接使用float类型进行浮点类型的运算会使得编译器产生大量的代码来完成一段看起来十分简单的浮点数学运算,造成的后果是程序的执行时间显著加长,且其占用的资源量也会成倍地增加,这就涉及到了如何在定点处理器上对浮点运算进行高效处理的问题。
本文引用地址:/article/263475.htm 既然是定点处理器,那么其对定点数,或者说字面意义上的“整数”进行处理的效率就会比它处理浮点类型的运算要高的多。
所以在定点处理器上,我们使用定点的整数来代表一个浮点数,并规定整数位数和小数位数,从而方便地对定点数和浮点数进行转换。
以一个32位的定点数为例,假设转换因子为Q,即32位中小数的位数为Q,整数位数则为31-Q(有符号数的情况),则定点数与浮点数的换算关系为:定点数=浮点数×2^Q例如,浮点数-2.0转换到Q为30的定点数时,结果为:定点数=-2×2^30=-2147483648 32位有符号数的表示范围是:-2147483648到2147483647。
如果我们把有符号定点数的最大值2147483647转换为Q为30对应的浮点数,则结果为:浮点数2147483647/2^30=1.999999999 从上面的两个计算例子中也可以看出,在Q30格式的情况下,最大的浮点数只能表示到1.999999999,如果我们想把浮点数2.0转换为Q30的定点数,则产生了溢出,即造成了1e-9的截断误差。
在此我们列出Q0到Q30对应的范围和分辨率如下表所示:如果你嫌自己计算麻烦的话,可以借助Matlab的命令来求取它们的转换,例如,在Matlab的命令窗口中输入:q = quantizer('fixed', 'ceil', 'saturate', [32 30]);FixedNum=bin2dec(num2bin(q,1.999999999)); 回车之后就可以看到1.999999999转成Q30之后的定点数了。
剖析DSP编程优化的7个方法

剖析DSP编程优化的7个方法方法一把浮点运算改成定点运算因为C6x DSP板并不支持浮点运算,但我们的原始程序代码是浮点运算的格式,所以必须改成定点运算,而其修改后的执行速度也会加快很多。
我们采用Q-format 规格来表示浮点运算。
以下将介绍其相关原理。
定点DSP使用固定的小数点来表示小数部份的数字,这也造成了使用上的限制,而为了要分类不同范围的小数点,我们必须使用Q-format的格式。
不同的Q-format表示不同的小数点位置,也就是整数的范围。
Q15数字的格式,要注意在小数点后的每一位,表示下一位为前一位的二分之一,而MSB (most-significant-bit ) 则被指定成有号数( Sign bit )。
当有号数被设成0而其余位设成1时,可得到最大的正数(7FFFH ) ;而当有号数被设成1而其余位设成0时,可得到最大的负数( 8000H ) 。
所以Q15格式的范围从-1到0.9999694 (@1) ,因此我们可以藉由把小数点向右移位,来增加整数部份的范围,Q14格式的范围增为-2.0到1.9999694 (@2) ,然而范围的增加却牺牲了精确度。
方法二建立表格( table )原来程序的设计是除了要读AAC的档案外,在译码时,还要再另外读取一些C语言程序代码的内容再做计算,如读取一些数值做sin、cos、exp的运算,但是为了加快程序的执行速度,故将这这些运算的结果建成表格,内建在程序中,可以不必再做额外的计算动做,以加速程序。
方法三减短程序的长度1.去除Debug的功能原本程序在Debug的阶段时,就加了许多用来侦测错误的部份,程序Debug完后,已经没有错误发生,所以就可以把这些部份给去除,以减少程序的长度,也可以减少程序执行时的时脉数,加快程序的速度。
2.去除计算时脉( clock ) 功能原本程序可以计算执行程序所需的时脉数,我们也可以把这些部份给去除,如果有需要计。
dsp论文----【浅谈DSP技术的应用和发展前景】

浅谈DSP技术的应用和发展前景adfasd adsfasdf【摘要】数字信号处理(DSP)是一门涉及许多学科而又广泛应用于许多领域的新兴学科.本文概述了数字信号处理技术的发展过程,分析了DSP处理器在多个领域应用状况,介绍了DSP的最新发展,对数字信号处理技术的发展前景进行了展望。
【Abstract】:Digital signal processing (DSP) is the one who is widely used in many disciplines involved in many areas of emerging disciplines。
This paper outlines the development of digital signal processing technology,processes,analyzes the DSP processor, application status in many areas,introduced the latest developments in DSP, digital signal processing technology for the future development prospects。
【关键词】信号数字信号处理信息技术【Key words】Signal digital signal processing Information Technology1引言自从数字信号处理器(Digital Signal Processor)问世以来,由于它具有高速、灵活、可编程、低功耗和便于接口等特点,已在图形、图像处理,语音、语言处理,通用信号处理,测量分析,通信等领域发挥越来越重要的作用.随着技术成本的降低,控制界已对此产生浓厚兴趣,已在不少场合得到成功应用。
2DSP技术的发展历程DSP的发展大致分为三个阶段:在数字信号处理技术发展的初期(二十世纪50—60年代),人们只能在微处理器上完成数字信号的处理。
定点与浮点运算的比较

定点与浮点运算DSP的比较定点运算DSP在应用中已取得了极大的成功,而且仍然是DSP应用的主体。
然而,随着对DSP处理速度与精度、存储器容量、编程的灵活性和方便性要求的不断提高、自80年代中后期以来,各DSP生产厂家陆续推出了各自的32bit 浮点运算DSP。
和定点运算DSP相比,浮点运算DSP具有许多优越性:浮点运算DSP比定点运算DSP的动态范围要大很多。
定点DSP的字长每增加1bit,动态范围扩大6dB。
16bit字长的动态范围为96dB。
程序员必须时刻关注溢出的发生。
例如,在作图像处理时,图像作旋转、移动等,就很容易产生溢出。
这时,要么不断地移位定标,要么作截尾。
前者要耗费大量的程序空间和执行时间,后者则很快带来图像质量的劣化。
总之,是使整个系统的性能下降。
在处理低信噪比信号的场合,例如进行语音识别、雷达和声纳信号处理时,也会发生类似的问题。
而32bit浮点运算DSP的动态范围可以作到1536dB,这不仅大大扩大了动态范围,提高了运算精度,还大大节省了运算时间和存储空间,因为大大减少了定标,移位和溢出检查。
由于浮点DSP的浮点运算用硬件来实现,可以在单周期内完成,因而其处理速度大大高于定点DSP。
这一优点在实现高精度复杂算法时尤为突出,为复杂算法的实时处理提供了保证。
32bit浮点DSP的总线宽度较定点DSP宽得多,因而寻址空间也要大得多。
这一方面为大型复杂算法提供了可能、因为省的DSP目标子程序已使用到几十MB存储器或更多;另一方面也为高级语言编译器、DSP操作系统等高级工具软件的应用提供了条件。
DSP的进一步发展,必然是多处理器的应用。
新型的浮点DSP已开始在通信口的设置和强化、资源共享等方面有所响应。
一:浮点与定点概述--------------------------------------------------------声明:此文为原创,欢迎转载,转载请保留如下信息作者:afreez 北京-中关村联系方式:afreez.gan@(欢迎与作者交流)初次发布时间:2006-12-09初次发布在: /ganxingming/不经本人同意,不得用语商业或赢利性质目的,否则,作者有权追究相关责任!---------------------------------------------------------1.1相关定义说明定点数:通俗的说,小数点固定的数。
DSP复习资料+习题+答案

DSP复习资料+习题+答案1、定点DSP:数据以定点格式⼯作的DSP芯⽚称为定点DSP芯⽚,该芯⽚简单、成本较低。
两种基本表⽰⽅法:整数表⽰⽅法:主要⽤于控制操作、地址计算和其他⾮信号处理的应⽤。
⼩数表⽰⽅法:主要⽤于数字和各种信号处理算法的计算中。
定点表⽰并不意味着⼀定是整数表⽰。
2、浮点DSP:数据以浮点格式⼯作的DSP芯⽚称为浮点DSP芯⽚,该芯⽚运算精度⾼、运⾏速度快。
浮点数在运算中,表⽰数的范围由于其指数可⾃动调节,因此可避免数的规格化和溢出等问题。
但浮点DSP⼀般⽐定点DSP复杂,成本较⾼。
3、TI公司常⽤的DSP芯⽚可以归纳为三⼤系列:TMS320C2000系列:TMS320C2xx/C24x/C28x等;TMS320C5000系列:TMS320C54x/C55x等;TMS320C6000系列:TMS320C62x/C67x/C64x4、在对I/O空间访问时,除了使⽤数据总线和地址总线外,还要⽤到IOSTRB、IS和I/W控制线。
5、C54x C语⾔相同点:1)结构化程序设计的思想,以函数为单位2)⼤部分变量、常量、结构体、枚举、联合体、指针的定义3)局部变量、全局变量、静态变量、动态变量4)宏定义、宏展开、宏调⽤5)算术、关系、逻辑、位操作运算符以及运算符之间的优先级和结合性6)函数的组织:顺序结构、分⽀结构、循环结构不同点:1)所处理数据的性质不同;程序结构不同PC :采集好的,数据量⼤;DSP:实时采集,量⼩2)数据的输⼊输出设备不同3)死循环”的对待上不同。
4)语法结构及细节上的不同6、汇编器有5条伪指令可识别汇编语⾔程序的各个部分:.bss 为未初始化的变量保留空间;.data 通常包含了初始化的数据;.sect 定义已初始化的命名段,其后的数据存⼊该段;.text 该段包含了可执⾏的代码;.usect 在⼀个未初始化的有命名的段中为变量保留空间。
7、段的处理链接器在处理段的时候,有如下2个主要任务:(1)将由汇编器产⽣的的⼀个或多个.obj⽂件链接成⼀个可执⾏的.out⽂件;(2)重新定位,将输出的段分配到相应的存储器空间。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
浮点 DSP 运算效率不高
问题:
该问题由某客户提出,发生在STM32F407IGT6器件上。
据其工程师讲述:由于在其产品中,需要使用STM32进行大量的浮点数以及浮点DSP运算,所以针对STM32的浮点数运算能力及 DSP 运算能力做了相关的测试,但测试结果不理想。
STM32F407 在144MHz 主频下,对于表(一)程序的运算耗时为:9105uS。
没有体现出硬件浮点运算应有的运算能力。
调研:
使用 Keil MDK4.21 创建工程对表(一)的程序进行测试。
在工程设置中,选择支持浮点运算指令。
将编译器的优化等级设置为 LEVEL1,然后编译运行。
通过示波器测量主程序在调用该函数之前和在该函数返回之后在 I/O 管脚上所发出的脉冲之间的时间差,来判断 STM32 运行该函数所花费的时间。
1. 当 STM32 的主频为 168MHz,使用 SRAM2 存贮变量的条件下,测得时间消耗为:7840uS。
修改工程设置,将内存的使用由 SRAM2 转成 CCM,重新编译、下载、运行,测得时间消耗为:7840uS。
2. 修改工程设置,将优化等级由 LEVEL1 换成 LEVEL3。
为了避免编译器把整个测试函数优化掉,修改该函数如表(二)。
重新编译、下载、运行,测得时间消耗为:7660uS。
3. 修改程序代码,将序函数 sin()和 cos()分别替换成 ARM DSP library 中的arm_sin_f32()和arm_cos_f32(),如表(三)所示。
重新编译、下载、运行,测得时间消耗为:748uS。
4. 修改代码,将计算中所用到的小数常量,表示成单精度,如表(四)所示。
重新编译、下载、运行,测得时间消耗为:130uS。
结论:
三个方面的原因导致了计算效率降低:
1. 编译器的优化等级不够,以至生成的代码本身的效率低下;
2. 表达式上的漏洞,造成部分计使用了双精度浮点运算;
3. 三角函数库的选取不当,导致在计算正弦、余弦过程中引入了大量的双精度浮点运算;处理:
1. 合理选用编译器的优化等级,提高代码的执行效率;
2. 在计算表达式中,强制常量为单精度浮点数,以避免引入双精度浮点数动算;
3. 选用 ARM 公司提供的,采用单精度浮点数优化的三角函数库,以避免由普通的数学函数库引入的双精度浮点数运算;
建议:
从应用角度看,Cortex-M4 可以认为是 Cortex-M3 的加强版。
相对 Cortex-M3,Cortex-M4主要从两个方面进行了改进:
1. 增加了 DSP、SIMD 指令;
2. 增加了单精度浮点运算单元;
第 1 点使得 Cortex-M4 拥有高速的定点 DSP 处理能力,第 2 点则使得 Cortex-M4 拥有强大的数学运算能力。
受益于 Cortex-M4 的优异的处理性能,以及高效的总线与存贮器接口,STM32F4 系列 MCU 在数据处理方面有着非凡的表现。
不过,要使硬件上的性能得以充分的发挥,除了对算法本身进行优化以外,对一些相关因素也要仔细斟酌:
1. 恰当的设置 Flash 缓冲区的参数。
在 STM32F4 中,为了匹配 Flash 存贮器与CPU 之间的对数据、指令的吞吐速率,设有指令缓冲区和数据缓冲区。
复位后缓冲区是不工作的,需要软件予以开启,并设置恰当的等待周期数。
没有缓冲区的参与,运行在 Flash 中的程序,在运效率上会大幅度的降低。
2. 选择高效的存贮器来存放数据。
快速的数据存取是保证 CPU 不间断的执行指令的前提。
这一点上,不仅要考查存贮器本身的速率,还要看是否有其它的处理单元与 CPU 分享该存贮器。
比如,在STM32F4 中,将数据放在 CCM 存贮器中,要比放在 SRAM1 中更能保证 CPU 对数据的存取速率,因为CCM 存贮器是 CPU独享的,而 SRAM1 还可能被 DMA 访问。
3. 根据 CPU 指令集的特点,合理的选取计算的数据类型。
比如,要计算 16 位的DSP 运算,最好把变量和常量定义成 16 位数据,这样有利于编译器使用 SIMD指令对代码进行优化。
在单精度浮点数能够满足要求的情况下,将变量或常量定义成单精度类型,有利于编译器使用单精度浮点运算指令,对代码优化。
4. 选择针对 Cortex-M4 进行优化的数学函数库。
ARM 公司为 Cortex_M4 的提供了一整套的 DSP、浮点数运算库,其效率远高于编译器自带的函数库。
5. 编译器的优化等级是一个重要的设置选项,不同的优化等级下,所生成的代码的效率是有很大差别的。
6. 对于高频次使用的数据,要考虑放在寄存器类型的变量中。
通常,CPU 存取操作数的最快捷的方式是寄存器寻址,可以做到零时钟花费。
7. 合理安排计算次序,考虑是否可以以乘法代替除法。
在数学中,乘法和除法是一对逆运算,除以一个数与乘于这个数的倒数可以等同起来。
然而在 CPU 的指令实现中,乘法和除法的计算速度上是有很大差别的,通常乘法的计算速度远高于除法的计算速度。
所以,有必要在运算中,使用乘法来代替除法。
比如:可以使用来代替。
8. 找出算法中的重复计算,将其合并,只计算一次。
对这样的计算,完全可以在第一次计算之后,将结果放在中间变量中,而在后面的计算中直接引用。
9. 对于复杂的计算,考虑是否能用查表来代替。
查表是一种快速得出结果的好方法,它以牺牲存贮器空间来换取速度。
在存贮器空间不是很紧张的情况下,用查表代替计算还是很划算的。