百度一下 藏锋者 就能快速找到本站! 每日资讯归档 下载藏锋者到桌面一键访问

当前位置:主页 > 物联网 > DSP与通用处理器

DSP与通用处理器

所在栏目:物联网 时间:09-15 19:31 分享:

数字信号处理运算具有区别于通用处理任务的显著特点,比如有限冲激响应滤波器(FIR)。FIR 滤波器是做一系列的点积。取一个输入量和一个序数向量,在系数和输入样本的滑动窗口间做乘法,然后将所有的乘积加起来,形成一个输出样本。为数字信号处理设计的DSP 器件必须对此提供专门的支持,从而促成了DSP 器件与通用处理器(GPP)的显著区别。

(1)对密集的乘法运算的支持。

GPP 不是设计来做密集乘法任务的,即使是一些现代的GPP,也采用多个指令周期来做一次乘法。而DSP 处理器使用专门的硬件来实现单周期乘法。DSP 处理器还增加了累加器寄存器来处理多个乘积的和。累加器寄存器通常比其他寄存器宽,增加称为结果bit 的额外bit来避免溢出。同时,为了充分体现专门的乘法-累加硬件的好处,几乎所有的DSP 的指令集都包含有显式的MAC指令。

(2)存储器结构。

 GPP 使用冯·诺依曼存储器结构。在这种结构中,只有一个存储器空间通过一组总线(一个地址总线和一个数据总线)连接到处理器核。通常,做一次乘法会发生4 次存储器访问,用掉至少四个指令周期。大多数DSP 采用了哈佛结构,将存储器空间划分成两个,分别存储程序和数据。采用两组总线连接到处理器核,允许同时对它们进行访问。处理器存储器的带宽加倍,可以同时为处理器核提供数据与指令,使得DSP可以实现单周期的MAC指令。此外,DSP 处理器几乎都不具备数据高速缓存。这是因为DSP 的典型数据是数据流。也就是说,DSP 处理器对每个数据样本做计算后,就丢弃了,几乎不再重复使用。

(3)零开销循环。

DSP 算法的一个共同的特点,即大多数的处理时间是花在执行较小的循环上,因此大多数的DSP 都有专门的硬件,用于零开销循环。所谓零开销循环是指处理器在执行循环时,不用花时间去检查循环计数器的值、条件转移到循环的顶部、将循环计数器减1。与此相反,GPP 的循环使用软件来实现。某些高性能的GPP 则使用转移预报硬件,几乎达到与硬件支持的零开销循环同样的效果。

(4)定点计算。

大多数DSP 使用定点计算,而不是使用浮点。虽然DSP 的应用必须十分注意数字的精确,用浮点来做应该容易得多,但是对DSP来说,廉价也是非常重要的。定点机器价钱比起相应的浮点机器来要便宜,而且更快。为了不使用浮点机器而又保证数字的准确,DSP 处理器在指令集和硬件方面都支持饱和计算、舍入和移位。

(5)专门的寻址方式。

DSP处理器往往都支持专门的寻址模式,它们对通常的信号处理操作和算法是很有用的。

例如,模块(循环)寻址(对实现数字滤波器延时线很有用)、位倒序寻址(对FFT 很有用)。这些非常专门的寻址模式在GPP 中是不常使用的,只有用软件来实现。

(6)执行时间的预测。

大多数的DSP 应用(如蜂窝电话和调制/解调器)都是严格的实时应用,所有的处理必须在指定的时间内完成。这就要求程序员准确地确定每个样本需要多少处理时间,或者至少要知道在最坏的情况下需要多少时间。如果打算用低成本的GPP 去完成实时信号处理的任务,执行时间的预测大概不会成为什么问题,因为低成本GPP具有相对直接的结构,比较容易预测执行时间。然而,大多数实时DSP应用所要求的处理能力是低成本GPP 所不能提供的。DSP 对高性能GPP 的优势在于,即便是使用了高速缓存的DSP,指令是从高速缓存还是从存储器中读取、哪些指令会放进高速缓存都是由程序员(而不是处理器)来决定的,DSP一般不使用动态特性(如转移预测和推理执行等),因此由一段给定的代码来预测所要求的执行时间是完全直截了当的,从而使程序员得以确定芯片的性能限制。

(7)定点DSP指令集。

定点DSP指令集是按两个目标来设计的:

◆使处理器能够在每个指令周期内完成多个操作,从而提高每个指令周期的计算效率。

◆将存储DSP 程序的存储器空间减到最小。由于存储器对整个系统的成本影响甚大,该问题在对成本敏感的DSP应用中尤为重要。为了实现这些目标,DSP 处理器的指令集通常都允许程序员在一个指令内说明若干个并行的操作。例如,在一条指令中包含了MAC 操作,即同时有一个或两个数据移动。在典型的例子里,一条指令中就包含了计算FIR 滤波器的一节所需要的所有操作。这种高效率付出的代价是,与GPP 的指令集相比,其指令集既不直观也不容易使用。GPP 的程序通常并不在意处理器的指令集是否容易使用,因为他们一般使用C、C++等高级语言。而对于DSP 的程序员来说,麻烦的是主要的DSP 应用程序都是用汇编语言写的(至少部分是汇编语言优化的)。这里有两个理由:首先,大多数广泛使用的高级语言,例如C语言,并不适合于描述典型的DSP 算法。其次,DSP结构的复杂性,如多存储器空间、多总线、不规则的指令集和高度专门化的硬件等,使得难于为其编写高效率的编译器。即便用编译器将C 语言源代码编译成为DSP 的汇编代码,优化的任务仍然很重。典型的DSP 应用都具有大量计算的要求,并有严格的开销限制,使得程序的优化(特别是对程序的最关键部分)必不可少。因此,考虑选用DSP 的一个关键因素是,它是否具备能够较好地适应DSP处理器指令集的程序员。

(8)开发工具的要求。

因为DSP 应用要求高度优化的代码,大多数DSP 厂商都提供了一些开发工具,以帮助程序员完成其优化工作。例如,大多数厂商都提供处理器的仿真工具,以准确地仿真每个指令周期内处理器的活动。无论对于确保实时操作还是代码的优化,这些都是很有用的工具。而GPP 厂商通常并不提供这样的工具,主要是因为GPP 程序员通常并不需要详细了解这一层的信息。GPP缺乏精确到指令周期的仿真工具,是GPP应用开发者所面临的大问题:由于几乎不可能预测高性能GPP 对于给定任务所需要的周期数,从而无法说明如何去改善代码的性能。

TI 公司C6000 系列DSP介绍TI 的TMS320C6000(简称C6000)是基于超长指令字(VLIW)结构的通用DSP 系列。

该结构包括定点的C62x、浮点的C67x 和新的C64x。C64x 和C62x 代码兼容,但结构有显著的加强,其初期的工作频率可达750 MHz。C67x 在C62x 8个功能块中的6个上增加了浮点功能,因此其指令集是不同的。C6000 没有专门的MAC单元,而是使用分开的乘法和加法指令来实现MAC操作。尽管该操作需要两个指令周期,但其流水的效果仍然是单周期执行。这种结构包含2个数据通道,以便和各有4 个功能单元的2 组相匹配。C62x 和C64x 包含2 个乘法单元(M)、6 个32 bit的算术单元、40 bit 的ALU和40 bit 的桶型移位器。C64x 的M单元每个时钟周期执行两个16316 bit 的乘法,而C62x 则只能执行一个乘法。此外,C64x 的每个M单元可以在每个周期内作4 个838 bit 的乘法。M单元的位计数和旋转硬件,可以支持bit 水平的算法。C64x的其他单元各有其强大的功能。例如,逻辑单元(L)可以作byte 移位和4个8 bit 的绝对值减法。该绝对值差指令对于运动估计算法是很有好处的。M单元和S单元都具有双向可变bit的移位功能。C64x 除S单元和L单元外,D单元也可以执行32 bit 的逻辑指令。L单元和D单元可以装入5 bit 的常数,而S单元可以装入16 bit 的常数。C64x 的每个功能单元组都各有其32 个32 bit 的寄存器组,而在C62x 中,每个功能单元组都各只有16 个32 bit 的寄存器组。每个程序可以将通用寄存器用于数据、数据地址指针或条件代码。在所有的C6000 器件中,用户可以将寄存器A4~A7 及B4~B7 用于循环寻址。程序可以使用任何寄存器作为循环计数器,从而将标准的条件寄存器释放作他用。在C64x 中,2个功能单元组中的任何一个都可以使用另一个的寄存器组。而在C62x 中,功能单元组是通过一组数据总线来执行该过程的。在C62x 中,除2个D单元外的所有功能单元都有访问另一个功能单元组的数据交叉通道。在C64x 中,允许每个功能单元组中的多个单元通过数据交叉通道,同时读同一个交叉通道信源。也就是说,一个功能单元组中的一个、多个、乃至全部单元,都可以在一个VLIW执行包中使用交叉通道的操作数。而在C62x 中,每个数据通道、每个执行指令包,只有一个功能单元可以访问对方寄存器组的操作数。C62x 的寄存器组打包16~40 bit 的定点数和64 bit 的浮点数。用户可以将多于32 bit 的值存储在寄存器对中。C64x 的寄存器支持C62x 的所有数据类型,以及打包的8 bit 类型和64 bit 定点数。打包的数据类型存储4个8 bit 或两个16 bit 的值于一个32 bit 寄存器中,将4个16 bit 的值存于一个64 bit 的寄存器对中。C64x 的每个乘法器可能返回多达64 bit 的结果,因此,从乘法器到寄存器组多了一个写口。C6000系列支持没有分开的X和Y存储器空间。它们提供的实际上是单一的64 bit 或32 bit 数据通道的数据存储器,用于从存储器到寄存器组装入数据。另外的两个32 bit 通道(C64x 则是64 bit),则用于将数据从寄存器存储到存储器。一组32 bit 的地址总线支持这些数据通道。C64x 可以使用非排队的存取方式,访问按byte 边界的字或双字。但C62x 则要求按32或64 bit 边界排队。一组32 bit 的地址总线对程序存储器寻址,但一个数据通道则是256 bit宽。这个宽度允许C62x 在每个周期提取,但不一定是执行8个32 bit 的指令。TI 称这种方式为取包。C62x的结构不允许跨过取包边界去取包,其结果是编译产生NOP指令来铺垫取包。C64x的结构则在指令分配单元里解决了这个问题,取消了执行包边界的限制,从而也就取消了填充的NOP指令。CPU可以在每个周期内执行1~8条指令,但数据的独立性、指令的反应时间,以及资源的冲突对性能的发挥有所限制。多包的执行允许充分的并行、串行和并/串行的组合。因此,要求8个串行指令和8 个并行指令具有同样的长度。从而对编译器和汇编器的优化起着重要的作用。编程工具用指令的最低位将指令包中的指令连接起来。如果该位置位,则指令并行执行。

汇编优化器作指令的独立性检查和实施并行,从而保证代码按照编程的要求,在独立的功能块中运行,不再需要硬件来做独立性检查。C6211 和C6711 是业界首先具有片内cache 存储器L1 和L2 的DSP。C6211 有两层cache,一层是4 KB的程序和数据cache,第二层cache是统一的64 KB的数据和指令RAM。

C6211 还具备16 个通道的DMA控制器,各自进行独立传输。C6202、C6203 和C6204具有32 bit 的扩展总线,作为外部存储器的接口(EMIF),取代16 bit 的主机接口。第二组用于I/O 的总线降低了EMIF 的负担,提高了数据的通过率。EMIF和扩展总线是相互独立的,允许CPU并行地访问各口。

(1)结构特点。

◆第一块C64x可以达到750 MHz;

◆超长指令字(VLIW)结构具有与RISC类似的特点;

◆C语言编译器与结构结合紧密;

◆8个功能块提高了并行性。

(2)寻址模式。

C6000 可以作为线性寻址和循环寻址。但和其他具有专门的地址发生单元不同,C6000使用一个或多个功能单元来计算地址。

(3)特殊指令。

所有的C6000 处理器条件执行全部的指令,从而减少转移和保持流水。C64x 的MPYU4指令执行4个838 bit 的无符号数乘法。ADD4执行4个8 bit 的加法。所有的功能单元都可以执行双16 bit 的加法与减法、比较、移位、最大值与最小值,以及绝对值运算。2个M单元及其他6 个功能单元中的4个,都支持4 个8 bit 加法与减法、比较、平均、最大值与最小值,以及bit 扩展运算。还增加了直接对打包的8 bit 和16 bit 数据作运算的指令。M单元里的bit 计数和旋转硬件,扩展了对bit 层算法的支持,例如二进制语法、图像矩阵计算,以及加密算法等。C64x 的转移-地址递减(BDEC)和检测为正转移(BPOS)指令将转移指令和地址递减指令及目标寄存器检测指令分别组合起来。另外一条指令可以减少设置函数调用返回地址所需的指令数量。双16 bit 算术指令和8个功能单元中的6个,以及位倒序指令组合起来,将FFT 所需的周期数减少一半。Galois 乘法指令(GMPY4)使用Chien搜索法为C62x 提供Reed Solomon编码。特殊的平均指令可以将运动补偿的性能提高7 倍。C64x 提供数据打包和解包,在4个8 bit 或2个16 bit 硬件扩展时保证很高的性能。解包指令为并行的16 bit 运算准备8 bit 数据。打包指令则保证并行结果的输出精度。

(4)开发支持。

 eXpressDSP软件技术包括DSP集成开发工具:可升级的实时软件基础、可重复使用的应用软件接口标准,以及不断增加的第3方的软件模块。Code Composer Studio是一个集成的DSP 开发工具套件,包括C6000 的C语言编译器、DSP/BIOS和实时数据交换技术等。4.DSP与RFID 读写器终端RFID 读写器的典型结构包括射频通信模块、控制逻辑模块和接口模块3 部分,控制逻辑模块通常采用单片机或其他更高性能的通用微处理器构成,射频通信模块负责射频信号处理和调制/解调等工作,射频通信模块将基带数据传递给控制逻辑模块,控制模块基本上不作任何数字信号处理的工作。由于RFID 系统对实时性和运算的要求,如碰撞算法的实现、实时编/解码、密钥运算等,使用DSP作为控制核心的读写器终端成为一个理想的选择。随着DSP 技术的发展,高性能DSP 和A/D 转换器的出现,电子产品设计的方法正在发生深刻的变化,越来越多原本采用模拟电路实现的处理过程也开始采用DSP 来实现,DSP 的功能在不断地向射频前端延伸。图2-22是一个现代通信终端的示意图,是中频数字化的典型代表,通信终端包括一个可变的射频前端,可以对应于不同的通信频段,或者在宽带范围内实现通信,信号经过射频前端转换为固定的中频,经中频采样转换为数字信号,数字信号的处理是通过FPGA和DSP 共同完成的,这是因为目前的DSP 还不能完全应付高速的中频采样数据,随着DSP 处理能力的增强,数字信号处理的任务可以由DSP 独立完成,另一个发展趋势是由FPGA或专用数字处理芯片来完成与协议无关的中频预处理和基带预处理的工作。中频采样数据在FPGA和DSP 中完成中频预处理、基带预处理、调制/解调和信道编/解码,中频数字化的优势在于提高了系统的稳定性和灵活性,可以满足快速发展的电子技术和协议的要求。

基于DSP结构的RFID 读写器包含两方面的含义,用DSP 代替通用处理器,DSP具有更快的速度和代码执行效率,可以更有效地完成基带信号处理和其他附加的运算功能,因此DSP 具有更高的灵活性。另一方面,采用高速A/D 转换器和DSP 可以实现中频数字化,利用数字信号处理实现频率合成、调制/解调等原本采用模拟电路实现的功能。采用DSP 结构的RFID 读写器具有更高的灵活性,事实上这也是RFID 发展的要求。

RFID 发展迅速,多种标准和体制并存,但是它又要求在全球范围内实现一个统一的RFID 网络,因此读写器终端要适应快速发展的RFID技术,采用DSP结构可以在不更换硬件的情况下,实现读写器功能的升级,可以利用软件来实现多协议的兼容。

 5.基于DSP设计的多频读写器。

目前国际流行的标准包括多个频段,在同一商场中流通的商品可能采用不同频率的标签,设计一个可以同时读取多种标签的读写器具有重要的使用价值。

(1)读写器硬件结构设计。

读写器主要由天线子系统、RF 前端子系统、DSP 系统和网络系统等几部分组成。其中天线子系统通过电磁能接收和发送数据,RF前端系统产生射频信号和射频能量,接收天线的反射调制信号进行解调、放大及过滤,DSP 系统和网络系统是主要的控制模块完成和标签的通信过程,与主机的应用程序通信并执行应用软件发来的命令。

(2)天线子系统设计。

天线的子系统设计必须做到体积小、价格便宜、可重复使用,包括3个常规的工作频段,应用全向性天线以满足标签的无方向需求。天线的结构设计成如图2-24 所示的结构形式,13.56 MHz、915 MHz、2.4 GHz的天线偶极按如图所示的方式分布。

(3)射频前端体系结构。

在射频部分,本系统采用LMX2330 数字集成锁相环分频产生3个常规频率信号,数字锁相环与模拟锁相环相比的优点是精度高、不受环境的影响、带宽和中心频率编程可调。

(4)读写器的主模块设计。

主模块的设计包括数字信号处理器和网络处理器,其中数字信号处理器采用先进的DSP 技术,通过前端本地振荡器(LO)进行解码,再通过反相关器和相关器位解码,采用算法分析进行检验后将信号进行消息解码,产生数据。

主模块的DSP 处理器处在核心的位置,有较高的运算速度和存储空间,还包括动态随机存储器(DRAM)和FLASH 可扩展存储空间并引导DSP 装入程序,FPGA门电路产生逻辑电路来控制DSP。主模块中的网络存储器采用TCP/IP协议或RS-232 串口等多种协议完成读写器和主机及其他应用程序的通信。图2-28 中采用了10 兆位基带以太网和RS-232 串口实现数据的传输。

DSP与通用处理器 免费邮件订阅: 邮件订阅

图片推荐

热点排行榜

CopyRight? 2013 www.cangfengzhe.com All rights reserved