DSP

DSP概述

2019-07-13 11:59发布

DSP概述 数字信号处理(Digital Signal Processing,简称DSP),是利用计算机或专用处理设备,以数字形式对信号进行采集、变换、滤波、估值、增强、压缩、识别等处理,以得到符合人们需要的信号形式。 这种数学运算以快速傅里叶变换(FFT)为基础,主要针对描述连续信号的数字信号进行数学运算,对数字信号进行实时处理。 DSP处理器是在模拟信号变换成数字信号以后,进行高速实时处理的专用处理器,其主要特点就是处理速度快。 DSP芯片一般具有如下主要特点: 1、采用哈佛总线结构。 哈佛结构是一种将程序指令储存和数据储存分开的存储器结构。CPU首先到程序指令储存器中读取程序指令内容,解码后得到数据地址,再到相应的数据储存器中读取数据,并进行下一步的操作。程序指令储存和数据储存分开,数据和指令的储存可以同时进行,还可以使指令和数据有不同的数据宽度。 哈佛结构与冯.诺曼结构处理器,处理器有两个明显的特点:使用两个独立的存储器模块,分别存储指令和数据,每个存储模块都不允许指令和数据并存;使用独立的两条总线,分别作为CPU与每个存储器之间的数据总线和地址总线,而这两条总线之间毫无关联。 这种分离的程序总线和数据总线课允许在一个机器周期内同时获得指令字(来自程序存储器)和操作数(来自数据存储器),从而提高了执行速度,使数据的吞吐率提高了1倍。又由于程序和数据存储器在两个分开的物理空间中,因此取指和执行能完全重叠。哈佛结构的微处理器与两个存储器相对应的是系统的4条总线,因此该结构通常具有更高的执行效率。 2、支持流水线操作。 流水线技术是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术。流水线技术把CPU的一个操作进一步分解成多个可以单独处理的子操作(如取指令、指令译码、取操作数、执行),使每个子操作在一个专门的硬件站上执行,这样一个操作需要顺序地经过流水线中多个站的处理才能完成。在执行的过程中,前后连续的几个操作可以依次流入流水线中,在各个站间重叠执行。 采用流水线技术后,并没有加速单条指令的执行,每条指令的操作步骤一个也不能少,只是多条指令的不同操作步骤同时执行,因而从总体上看加快了指令流速度,缩短了程序执行时间。 3、硬件乘法器和高效的MAC指令。 DSP芯片采用专用的硬件乘法器,使得一次乘法运算能够在单周期内完成。与之配合的指令为MAC-乘法累加指令,它可以在单周期内取两个操作数相乘,并将结果加载到累加器。而且该累加寄存器通常比其他寄存器宽,这样保证乘累加运算结果不至于发生溢出。 硬件乘法器和高效的MAC指令,使得DSP处理器在一个指令周期内可完成一次乘法和一次加法。 4、丰富的外设资源。 DSP芯片内通常具有DMA控制器、串行接口、定时器等外设,所以用户通常只需要外加很少的器件就可以构成自己的DSP系统。DMA控制器可以在不干扰CPU操作的前提下,由其专用的数据存取通道独立完成接口到片内存储器之间的数据传输,从而形成片内的高速数据通道。此外,快速的中断处理和硬件I/O支持,极大地提高了系统的性能。 目前主要的DSP芯片厂商:     美国德州仪器(Texas Instruments,TI)是世界上最知名的DSP芯片生产厂商,其产品应用也最广泛,TI公司生产的TMS320系列DSP芯片广泛应用于各个领域。目前,TI公司在市场上主要有三大系列产品:
  (1)面向数字控制、运动控制的TMS320C2000系列。
       (2)面向低功耗、手持设备、无线终端应用的TMS320C5000系列。
  (3)面向高性能、多功能、复杂应用领域的TMS320C6000系列。
    美国模拟器件公司(ADI公司)在DSP芯片市场上也占有一定的份额,相继推出了一系列具有自己特点的DSP芯片。
DSP芯片的选型参数
    (1)运算速度:定点DSP芯片运算速度的衡量指标MIPS(百万条指令/秒);衡量浮点DSP芯片的重要指标MFLOPS(百万次浮点操作/秒)。
    (2)运算精度: 一般情况下,浮点DSP芯片的运算精度要高于定点DSP芯片的运算精度,但是功耗和价格也随之上升。一般定点DSP芯片的字长为16位、24位或者32位,浮点芯片的字长为32位。所谓定点浮点是指DSP里面运算的数据的小数点位置是固定的还是浮动的,浮点DSP能直接进行浮点运算,一次完成,是直接用硬件完成的。而定点DSP无法直接完成浮点运算,需要用程序来辅助完成浮点运算。     (3)字长的选择:一般浮点DSP芯片都用32位的数据字,大多数定点DSP芯片是16位数据字。     (4)存储器等片内硬件资源安排:包括存储器的大小,片内存储器的数量,总线寻址空间等。 DSP程序设计: DSP支持使用ANCI C进行程序设计,并提供了相应的编译器和C优化编译工具,利用这些优化编译工具可以产生可与手工编写相比的汇编语言程序。