了解DSP的体系结构

这篇其实基本上是引用 窦海霓朱铭锆发表在《今日电子》上的论文《DSP基本体系结构和特点》中的一些内容,主要是为了配合前一篇ARM体系结构而写,为了形成对比,加深印象。网络上很多引用这篇小论文的,但请尊重原著,注明出处。

 

一、DSP自身的一些优越性:

DSP处理器的体系结构一直紧紧围绕着DSP算法和各种应用的不断发展而改进和优化,随着各种并行处理技术VLIWSIMD,超标量,多处理机等)、可重构技术低功耗体系结构技术的出现,使各种新的DSP处理器体系结构不断涌现,使得如今的DSP处理器性能不断提高。

1、具体来说,DSP在以下一些方面表现出它的优越性:

首先,DSP芯片采用改进的哈佛结构(Havard structure)。其主要特点是程序和数据具有独立的存储空间,有着各自独立的程序总线和数据总线,由于可以同时对数据和程序进行寻址,大大地提高了数据处理能力,非常适合于实时的数字信号处理。TI公司的DSP芯片结构是基本哈佛结构的改进类型改进之处是在数据总线和程序总线之间进行局部的交叉连接这一改进允许数据存放在程序存储器中,并被算术运算指令直接使用,增强了芯片的灵活性。只要调度好两个独立的总线就可使处理能力达到最高,以实现全速运行。改进的哈佛结构还可使指令存储在高速缓存器中(Cache)省去了从存储器中读取指令的时间,大大提高了运行速度。

至其DMA控制器也有自己的数据总线与地址总线。这使得DSP在取指令的同时还能写一个数据,读一个数据,并进行一次DMA操作,而且这个操作可以同时进行。这样的总线结构使得程序执行速度快,数据吞吐量也特别的大。

其次,DSP指令系统是流水线操作。在流水线操作中,一个任务被分解为若干个子任务,各个任务可以在执行时相互重叠DSP指令系统的流水线操作是与哈佛结构相配合的,增加了处理器的处理能力,把指令周期减小到最小值,同时也就增加了信号处理器的吞吐量。以TI公司的TMS320系列产品为例,第一代 TMS320处理器(例如TMS< xmlnamespace prefix ="st1" ns ="urn:schemas-microsoft-com:office:smarttags" />320C10)采用了二级流水线操作;第二代产品(例如TMS320C25)采用了三级流水线操作;第三代DSP芯片(例如TMS320C30)采用了四级流水线操作。在流水线操作中,DSP处理器可以同时并行处理24条指令,每条指令处于其执行过程中的不同状态。

DSP采用流水线操作以减少指令执行的时间,从而进一步增强处理器的数据处理能力。现在DSP的流水线深度一般都在4级以上,TITMS320C6000系列DSP芯片中,其深度更是达到了8级。

  第三,采用专用的硬件乘法器。在一般的计算机上,算术逻辑单元(ALU)只能完成两个操作数的加、减及逻辑运算,而乘法(或除法)则由加法和移位来实现。因此,在这样的计算机的汇编语言中虽然有乘法指令,但在机器内部,实际上还是由加法和移位来实现的,因此它们实现乘法运算就比较慢。与一般的计算机不同的是,DSP都有硬件乘法器使乘法运算可以在一个指令周期内完成。如在TMS320C3x系列DSP芯片中,有一个硬件乘法器,在 TMS320C6000系列中则有两个硬件乘法器。

第四,特殊的DSP指令。DSP芯片的另一个重要特征是有一套专门为数字信号处理而设计的指令系统。

DSP的一些指令和寻址方式也是专门为各种运算的快速完成而精心设置的,:段循环指令、累加指令、并行指令、循环寻址方式(Circular Addressing)、位反寻址方式(Bit-Re2verse Addressing)

  第五,快速的指令周期。CMOS技术、先进的工艺、集成电路的优化设计及工作电压的下降由(5V3.3V,再到1.5V),使得DSP芯片的主频不断提高。目前TI公司的TMS320C6000系列及TMS320C5000系列的芯片的最高工作主频已经达到200MHz,指令周期已经降到了5ns。可以预见,随着微电子技术的发展,工作频率还将继续提高,指令周期将进一步缩短。

  第六,良好的多机并行运行特性。在一定的技术条件下,DSP芯片的单机处理能力是有限的,系统的数据处理容量还是经常会超出单个DSP的处理能力。随着数字信号处理器DSP芯片的广泛使用和DSP芯片价格的不断降低,多个DSP芯片的并行处理已经成为近年来的研究热点,并逐渐在应用中崭露头角。多机并行类似于高性能的MPU巨型机。TI公司的TMS320C4x系列还提供了专门用于多个DSP并行运行的硬件通信接口。

  第七,大电流。高速信号处理芯片全速运行时电流经常在1 A以上。

  第八,低电压。为在大电流下减少系统功耗,系统的工作电压从标准的5V降到3.3V2.5V1.8V,甚至0.9 V

  第九,高度集成。芯片的集成度在数十到数百万门量级。

  第十,为提高运行速度而采用多种并行的体系结构。

  由于DSP的优越性,它自20世纪60年代以来,迅速得到广泛的应用。DSP应用几乎遍及整个电子领域,典型应用有通信、语音处理、图形/图像处理、自动控制、仪器仪表及医学电子等。随着人们对实时信号处理要求的不断提高和大规模集成电路技术的迅速发展,DSP的黄金时代正在来临。

 

2、定点与浮点DSP

和定点运算DSP相比,浮点运算DSP具有许多优越性:浮点运算DSP比定点运算DSP的动态范围要大很多。定点DSP的字长每增加1bit,动态范围扩大6dB16bit字长的动态范围为96dB。程序员必须时刻关注溢出的发生。这时,要么不断地移位定标,要么作截尾。前者要耗费大量的程序空间和执行时间,后者则很快带来图像质量的劣化。总之,是使整个系统的性能下降。而32bit浮点运算DSP的动态范围可以作到1536dB,这不仅大大扩大了动态范围,提高了运算精度,还大大节省了运算时间和存储空间,因为大大减少了定标,移位和溢出检查。

由于浮点DSP的浮点运算用硬件来实现,可以在单周期内完成,因而其处理速度大大高于定点DSP。这一优点在实现高精度复杂算法时尤为突出,为复杂算法的实时处理提供了保证。

 

3、强大的控制部件

控制部件是完成整个DSP处理器各个部分之间协调工作的重要部件。控制部件主要负责指令地址的产生、流水线的控制以及处理各种相关、异常、中断等工作,以保证数据通路的正常工作。控制部件的任务是非常艰巨的,没有一个功能强大的控制部件,整个DSP处理器将无法正常工作。

 

4、高速的运算单元

  运算单元是DSP处理器的执行部件,是实现各种DSP算法的核心部分。所有算法的实现都是由运算单元的基本功能组合而成,所有的其他部件如控制部件、数据通路都是为运算单元服务的,为运算单元提供各种控制和充分的数据。

 

二、数字信号处理常用算法

  在传统上,DSP的算法是利用通用可编程DSP器件实现低速率的应用,而利用专用DSP芯片组和ASIC实现高速的应用,FPGA就是结合各种算法的典型例子。

  基于SRAMFPGA特别适合包括乘法和累加等DSP功能的算法以及广泛的算术函数,如FFT、叠积和各种滤波器算法,并可以和周围的外设电路起集成。在一个FPGA器件中构造DSP系统时,设计可以采用并行结构和分布算术算法的优点,使资源最小化,并超过单片或多片DSP器件的性能。 FPGA中阵列乘法的分布算术算法是增加设计带宽和流量的个方法,可以超过流行的DSP方案几个数量级。

  在XilinxDSP方案中,分布运算对于分布RAM结构是完全匹配的。利用这个运算与结构相结合的匹配,复杂的DSP功能可以按照全定制芯片的效率装配进FPGA,具体算法演示这里不列。

  在分布算法中,算术运算已经简化为加,减和二进制换算,由于按2的负次幂换算,实际实现时二进制编码数据字向最低有效位移动,利用符号位保持符号在其通常的位置。 一个二进制全加器的硬件实现需要二个操作数,一个加数和被加数,产生和及进位输出。时间共享的单个并行加法器可以执行多个并行位的相加。

  FIR滤波器中的分布RAM也利用来缓冲采样数据流,对于16位数据字,对于每个采样字要求16个触发器。为了构造500个抽头将要求超过8000个触发器,比现在大多数FPGA包含的触发器还要多,但是采样分布RAM,带有许多中间抽头的大的移位寄存器可以由RAM基本单元构成,几万抽头和运算每秒超过亿次采样率的滤波器可装配进单个FPGA器件中。

  自适应滤波器也可以得益于分布RAM,基于RAM的查找表可以代替串行分布运算中基于ROM的查找表和并行分布运算FIR滤波器的核心,因为RAM查找表允许系数瞬时更新,在FPGA中没有分布RAM要实现大规模的自适应滤波器是不可能的。

  DSP应用中,几十亿次的乘法累加要求许多结点能够高速转换,对于CMOSIC工艺,这种转换增加器件的交流功耗,所以,功耗常常成为限制因素,降低功耗也就特别重要,对于给定工艺的几何尺寸,降低功耗的关键是缩短金属连线的长度来减少分布电容,达到至少降低两倍的功耗Xilinx FPGA器件采用分段布线的结构来降低功耗,也使其DSP应用带来附加的特性。它允许在设计实现之前规定DSP核心的尺寸和性能,当DSP核心装配到个大器件时得到相符的性能,并对任何规模的器件是相同的。

三、DSP的体系结构和指令系统

  1TMS320C5000 DSP芯片的体系结构

  这一系列DSP包含有C54XC540XC54XXC547XC55XOMAP等芯片,由CMOS集成电路制造的。C5000系列是一种改良型的哈佛结构,并且具有芯片上的外围、存储器,以及特殊指令集,使得这个系列的DSP有很好的操作弹性与速度。而且哈佛结构特有的数据与程序分离的做法,可以提高运算的性能。C5000的执行速度超过100MIPS,可达400MIPS的整体性能。

比起以前DSP芯片,TMS320C5000系列DSP芯片的体系在以下这些方面体现出它的总体性能:

  1)中央算术逻辑单元(CALU)

  40bit算术及逻辑运算单元(ALU)40bit的累加器(Accumulator,ACC),及40bit累加缓冲器(ACCB)

  16bit的并行逻辑单元(PLU)

  16×16bit并行乘法器及32bit乘积的能力

  单一周期乘/(MAC)运算能力;

  8个辅助寄存器及一个专用的间接寻址(indirect Addressing)算术单元(ARAU)

  016bit快速左、右移寄存器及64bit的递增式数据移位器(Data Shifter)

  2)存储器

  芯片内快速双存取存储器(DARAM)

  3224K×l6的超大寻址空间

  数据存储器——64K×l6

  程序存储器——64K×l6

  输出输入口——64K×l6

  全局数据存储器——32K×l6

  4)芯片内部外围设备

  TMS320C5000系列拥有各种的芯片内外围,无论是串行端口、并行端口、硬什定时器及中断控制机制,都足以胜任各种应用的需要。64K的并行 IO端口,其中的16个可映射在数据存储空间(Memory Mapped),全双工的同步串行口传输,以适合C5000与其他串行设备做直接沟通,区间式定时器(Timer)具有周期、控制、计数寄存器以适合程序的停止、启动、复位(Reset)16个软件可编程的等待周期发生器(Wait-state Generator),以适合程序、数据及IO、存储器设备,提供外部DMA操作,PLL时钟产生及Divide-by-one时钟操作。另外,TMS320C5000系列芯片都内置了JTAG扫描逻辑,让应用系统的开发者可以利用简便的扫描式仿真器(Scan-based Emulator)进行各种软静件的调试工作。

  2DSP芯片的指令系统

  DSP的硬件结构和指令体系决定了它在实现各种算法时具有速度快、精度高的特点TMS320C5000系列中的指令系统由3个子系统构成:

  1)七种寻址方式

  TMS320C54x提供了7种基本的数据寻址方式:

  立即寻址方式,指令中嵌有一个固定的立即数;

  绝对地址寻址方式,指令中有一个固定的地址,指令按照此地址进行数据寻址;

  累加器寻址方式,将累加器内的当前值作为地址去访问程序存储器中的单元;

  直接寻址方式,指令中的7比特是一个数据页内的偏移地址,而所在的数据页由数据页;

  指针DPSP决定。该偏移量加上DPSP的值决定了在数据存储器中的实际地址;

  间接寻址方式,按照辅助寄存器中的地址访问存储器;

  存储器映射寄存器寻址方式,修改存储器映射寄存器中的值,而不影响当前DPSP的值;

  堆栈寻址方式,把数据压入和弹出堆栈,堆栈寻址按照后进先出原则进行寻址。

  2)四种代数汇编指令

  算术运算指令、逻辑运算指令、程序控制指令和载入\存储指令。具体指令在TI产品中都有列表,在此不再详述。

  3)一些常用的汇编伪指令

  汇编伪指令提供程序数据,控制汇编过程,用户可以用它们来完成以下任务:将代码和数据汇编到特定的段;为未初始化的变量保留存储器的空间;控制展开列表的形式;存储器初始化;汇编条件块;定义全局变量;指定汇编器可以获得宏的特定库;检查符号调试信息。

  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Code Composer Studio 教程 III 6.6 进一步探索..........................................................................................................85 6.7 进一步学习..........................................................................................................85 第七章 I/O...................................................................................................................86 7.1 打开和查看工程..................................................................................................86 7.2 查看源程序..........................................................................................................87 7.3 SIGNALPROG应用程序.............................................................................................90 7.4 运行应用程序......................................................................................................91 7.5 使用HST和PIP模块修改源程序.........................................................................93 7.6 HST和PIP资料...................................................................................................96 7.7 在配置文件增加通道和SWI.............................................................................97 7.8 运行修改后的程序.............................................................................................100 7.9 进一步学习....................................................... 第一章 CCS概述............................................................................................................1 1.1 CCS概述...............................................................................................................1 1.2 代码生成工具.......................................................................................................3 1.3 CCS集成开发环境.................................................................................................5 1.3.1 编辑源程序...................................................................................................5 1.3.2创建应用程序................................................................................................6 1.3.3 调试应用程序...............................................................................................6 1.4 DSP/BIOS 插件.....................................................................................................7 1.4.1 DSP/BIOS 配置..............................................................................................7 1.4.2 DSP/BIOS API 模块......................................................................................8 1.5 硬件仿真和实时数据交换....................................................................................10 1.6 第三方插件..........................................................................................................13 1.7 CCS文件和变量...................................................................................................14 1.7.1安装文件夹...................................................................................................14 1.7.2文件扩展名...................................................................................................14 1.7.3环境变量.......................................................................................................15 1.7.4增加DOS环境空间........................................................................................16 第二章 开发一个简单的应用程序................................................................................17 2.1 创建工程文件......................................................................................................17 2.2 向工程添加文件..................................................................................................19 2.3 查看源代码..........................................................................................................21 2.4 编译和运行程序..................................................................................................23 2.5 修改程序选项和纠正语法错误............................................................................24 2.6 使用断点和观察窗口...........................................................................................26 2.7 使用观察窗口观察STRUCTURE变量........................................................................28 2.8 测算源代码执行时间...........................................................................................29 2.9 进一步探索..........................................................................................................31 2.10进一步学习.........................................................................................................31 第三章 开发DSP/BIOS程序..........................................................................................32 3.1 创建配置文件......................................................................................................32 3.2 向工程添加DSP/BIOS文件..................................................................................34 3.3 用CCS 测试.........................................................................................................36 Code Composer Studio 教程 II 3.4 测算DSP/BIOS代码执行时间..............................................................................38 3.5 进一步探索..........................................................................................................40 3.6 进一步学习..........................................................................................................40 第四章 算法和数据测试.............................................................................................41 4.1 打开和查看工程..................................................................................................41 4.2 查看源程序..........................................................................................................43 4.3 为I/O文件增加探针断点....................................................................................45 4.4 显示图形.............................................................................................................47 4.5 执行程序和绘制图形...........................................................................................48 4.6 调节增益.............................................................................................................50 4.7 观察范围外变量..................................................................................................51 4.8 使用GEL文件......................................................................................................53 4.9 调节和测试PROCESSING函数..................................................................................54 4.10 进一步探索........................................................................................................56 4.11 进一步学习........................................................................................................57 第五章 程序调试............................................................................................................58 5.1 打开和查看工程..................................................................................................58 5.2 查看源程序..........................................................................................................60 5.3 修改配置文件......................................................................................................63 5.4 用EXECUTION GRAPH查看任务执行情况..................................................................66 5.5 修改和查看LOAD值..............................................................................................67 5.6 分析任务的统计数据...........................................................................................70 5.7 增加STS显式测试...............................................................................................72 5.8 观察显式测试统计数据.......................................................................................73 5.9 进一步探索..........................................................................................................75 5.10 进一步学习........................................................................................................75 第六章 实时分析............................................................................................................76 6.1 打开和查看工程..................................................................................................76 6.2 修改配置文件......................................................................................................77 6.3 查看源程序..........................................................................................................79 6.4 使用RTDX控制修改运行时的LOAD值...................................................................81 6.5 修改软断优先级...............................................................................................84
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值