C54X系列的DSP硬件包括哪些部分,各起什么作用

作者&投稿:弓童 (若有异议请与网页底部的电邮联系)
试从C54X-DSP硬件结构方面总结:为什么说DSP是一种特别适用于数字信号处理算法的微处理器?~

1、DSP采用哈佛结构总线,程序存储器和数据存储器分开,取指和数据访问同时进行。通用CPU采用冯.诺依曼型总线,程序和数据总线共享同一总线,取指和数据访问不能并发。
2、流水线操作(pipeline),取指、译码、寻址、取数、运算、存储流水操作,等效单周期完成指令,而通用CPU通常一条指令需要几个时钟周期才可以完成。当然,流水线操作引入了一些新问题,比如需要在适当位置加NOP空操作指令或者调整指令位置以确保流水操作能顺利完成。
3、独立的硬件乘法器。卷积、数字滤波、FFT、相关、矩阵运算等算法中,大量重复乘法和累加。MAC指令(取数、乘法、累加)在单周期内完成(通过流水线等效实现),比用软件乘法快很多。
4、独立的DMA总线和控制器。通用CPU中的总线是共享的,DMA使用了总线则CPU就要等待,而DSP中的DMA使用独立的DMA总线通路,可以和CPU core并发操作。独立的源、目的地址寄存器、长度寄存器,自动计算地址和循环。光DSP处理器运算速度快还不行,还与数据吞吐率有关。
5、中心算术逻辑单元CALU。DSP中有很多ALU,如DMA控制器、地址发生器中就含有可做乘加运算的ALU,这样他们就不用占用CALU了。DSP中的ALU非常简单,地址、乘法、移位都不管了,只管算术与逻辑运算。
6、移位:通用CPU每次移动1bit,DSP可在一个机器周期内左移/右移多个比特。可用来对数字定标,使之放大或缩小以保证精度和防止溢出,还可以用来做定点数和浮点数之间的转换。
7、溢出:通用CPU中,溢出发生后,设置溢出标志位,不带符号位时回绕,带符号位时反相,带来很大误差。此时,溢出已经发生,无法挽回。DSP把移位输出的最高位(MSB)存放在一个位检测状态寄存器中,检测到MSB=1时,就通知下一次会发生溢出,此时溢出还未发生,来得及采取措施防止。
8、数据地址发生器(DAG)。取数不光要占用数据总线,还要计算地址。通用CPU数据、地址的产生和数据的处理都由ALU来完成。DSP中,设置了专门的数据地址发生器(实际上就是专门的ALU),来产生所需要的数据地址,节省公共的ALU时间。CALU主要做运算而不是做这些辅助的工作。
9、外设(peripherals)
时钟发生器、定时器、软件可编程等待状态发生器、GPIO、同步串口与异步串口、JTAG。
10、CSSU比较、选择、存储单元。用于维特比译码,通信中常用算法,专门设计一个硬件单元用于此算法。
11、片内具有快速RAM,通常可通过独立的数据总线在两块中同时访问。片内RAM同片外存储器相比,有以下优点:(1)片内RAM的速度较快,可以保证DSP无等待运行;(2)对于C2000/C3x/C5000系列,部分片内存储器可以在一个指令周期内访问两次,使得指令可以更加高效;(3)片内RAM运行稳定,不受外部的干扰影响,也不会干扰外部。 4)DSP片内多总线,在访问片内RAM时,不会影响其它总线的访问,效率较高。
12、具有低开销或无开销循环及跳转的硬件支持。
13、快速的中断处理和硬件I/O支持。

DSP学习入门:
DSP的特点 :
对于没有使用过DSP的初学者来说,第一个困惑就是DSP其他的嵌入式处理器究竟有什么不同,它和单片机,ARM有什么区别.事实上,DSP也是一种嵌入式处理器,它完全可以完成单片机的功能.。
唯一的重要的区别在于DSP支持单时钟周期的"乘-加"运算.这几乎是所有厂家的DSP芯片的一个共有特征.几乎所有的DSP处理器的指令集中都会有一条MAC指令,这条指令可以把两个操作数从RAM中取出相乘,然后加到一个累加器中,所有这些操作都在一个时钟周期内完成.拥有这样一条指令的处理器就具备了
DSP功能:
具有这条指令就称之为数字信号处理器的原因在于,所有的数字信号处理算法中最为常见的算术操作就是"乘-加".这是因为数字信号处理中大量使用了内积,或称"点积"的运算.无论是FIR滤波,FFT,信号相关,数字混频,下变频.所有这些数字信号处理的运算经常是将输入信号与一个系数表或者与一个本地参考信号相乘然后积分(累加),这就表现为将两个向量(或称序列)进行点积,在编程上就变成将输入的采样放在一个循环buffer里,本地的系数表或参考信号也放在一个buffer里,然后使用两个指针指向这两个buffer.这样就可以在一个loop里面使用一个MAC指令将二者进行点积运算.这样的点积运算对与处理器来说是最快的,因为仅需一个始终周期就可以完成一次乘加.
了解DSP的这一特点后,当我们设计一个嵌入式系统时,首先要考虑处理器所实现的算法中是否有点积运算,即是否要经常进行两个数组的乘加,(记住数字滤波,相关等都表现为两个数组的点积)如果有的话,每秒要做多少次,这样就能够决定是否采用DSP,采用多高性能的DSP了.
浮点与定点 :
浮点与定点也是经常是初学者困惑的问题,在选择DSP器件的时候,是采用浮点还是采用定点,如果用定点是16位还是32位?其实这个问题和你的算法所要求的信号的动态范围有关.
定点的计算不过是把一个数据当作整数来处理,通常AD采样来的都是整数,这个数相对于真实的模拟信号有一个刻度因子,大家都知道用一个16位的AD去采样一个0到5V的信号,那么AD输出的整数除以2^16再乘以5V就是对应的电压.在定点DSP中是直接对这个16位的采样进行处理,并不将它转换成以小数表示的电压,因为定点DSP无法以足够的精度表示一个小数,它只能对整数进行计算.
而浮点DSP的优势在于它可以把这个采样得到的整数转换成小数表示的电压,并不损失精度(这个小数用科学记数法来表示),原因在于科学记数法可以表示很大的动态范围的一个信号,以IEEE754浮点数为例,
单精度浮点格式: [31] 1位符号 [30-23]8位指数 [22-00]23位小数
这样的能表示的最小的数是+-2^-149,最大的数是+-(2-2^23)*2^127.动态范围为20*log(最大的数/最小的数)=1667.6dB 这样大的动态范围使得我们在编程的时候几乎不必考虑乘法和累加的溢出,而如果使用定点处理器编程,对计算结果进行舍入和移位则是家常便饭,这在一定程度上会损失是精度.原因在于定点处理处理的信号的动态范围有限,比如16位定点DSP,可以表示整数范围为1-65536,其动态范围为20*log(65536/1)=96dB.对于32定点DSP,动态范围为20*log(2^32/1)=192dB,远小于32位ieee浮点数的1667.6dB,但是,实际上192dB对绝大多数应用所处理的信号已经足够了。
由于AD转换器的位数限制,一般输入信号的动态范围都比较小,但在DSP的信号处理中,由于点积运算会使中间节点信号的动态范围增加,所以主要考虑信号处理流程中中间结果的动态范围,以及算法对中间结果的精度要求,来选择相应的DSP.另外就是浮点的DSP更易于编程,定点DSP编程中程序员要不断调整中间结果的P,Q值,实际就是不断对中间结果进行移位调整和舍入.。
DSP与RTOS:
TI的CCS提供BIOS,ADI的VDSP提供VDK,都是基于各自DSP的嵌入式多任务内核.DSP编程可以用单用C,也可以用汇编,或者二者结合,一般软件编译工具都提供了很好的支持.我不想在这里多说BIOS,VDK怎么用这在相应的文档里说的很详细.我想给初学者说说DSP的RTOS原理.用短短几段话说这个复杂的东西也是挑战!
其实DSP的RTOS和基于其他处理器的通用RTOS没什么大的区别,现在几乎人人皆知的uCOSii也很容易移植到DSP上来,只要把寄存器保存与恢复部分和堆栈部分改改就可以.一般在用BIOS和VDK之前,先看看操作系统原理的书比较好.uCOS那本书也不错.
BIOS和VDK其实是一个RTOS内核函数集,DSP的应用程序会和这些函数连接成一个可执行文件.其实实现一个简单的多任务内核并不复杂,首先定义好内核的各种数据结构,然后写一个scheduler函数,功能是从所有就绪任务中(通过查找就绪任务队列或就绪任务表)找出优先级最高的任务,并恢复其执行.然后在此基础上写几个用于任务间通信的函数就可以了,比如event,message box,等等.
RTOS一般采用抢先式的任务调度方式,举例说当任务A等待的资源available的时候,DSP会执行一个任务调度函数scheduler,这个函数会检查当前任务是否比任务A优先级低,如果是的话,就会把它当前挂起,然后把任务A保存在堆栈里寄存器值全部pop到DSP处理器中(这就是所谓的任务现场恢复).接着scheduler还会把从堆栈中取出任务A挂起时的程序执行的地址,pop到PC,使任务A继续执行.这样当前任务就被任务A抢先了.
使用RTOS之后,每个任务都会有一个主函数,这个函数的起始地址就是该任务的入口.一般每个任务的主函数里有一个死循环,这个循环使该任务周期地执行,完成一部分算法模块的功能,其实这个函数跟普通函数没任何区别,类似于C语言中的main函数.一个任务创建的时候,RTOS会把这个函数入口地址压入任务的堆栈中,好象这个函数(任务)刚发生过一次中断一样.一旦这个新创建任务的优先级在就绪队列中是最高的,RTOS就会从其堆栈中弹出其入口地址开始执行.
有一个疑问是,不使用RTOS,而是简单使用一个主循环在程序中调用各个函数模块,一样可以实现软件的调度执行.那么,这种常用的方法与使用RTOS相比有什么区别呢?其实,使用主循环的方法不过是一种没有优先级的顺序执行的调度策略而已.这种方法的缺点在于,主循环中调用的各个函数是顺序执行的,那么,即使是一个无关紧要的函数(比如闪烁一个LED),只要他不主动返回,也会一直执行直到结束,这时,如果发生一个重要的事件(比如DMA buffer full 中断),就会得不到及时的响应和处理,只能等到那个闪烁LED的函数执行完毕.这样就使整个DSP处理的优先次序十分不合理.而在使用了RTOS之后,当一个重要的事件发生时,中断处理会进入RTOS,并调用scheduler,这时scheduler 会让处理这一事件的任务抢占DSP处理器(因为它的优先级高).而哪个闪烁LED任务即使晚执行几毫秒都没任何影响.这样整个DSP的调度策略就十分合理。

1、DSP芯片内部采用改进的哈佛结构,允许同时取指令和取数据,而且还允许在程序空间和数据空间之间相互传送数据。

所谓哈佛结构,是将程序和数据的存贮空间分开,各有各的地址总线和数据总线。这样同一条指令可以同时对不同的存贮空间进行读操作或写操作,从而提高了处理速度。

和哈佛结构相配合的就是流水线操作。如果一条指令仅仅对一个数据空间操作,哈佛结构就失去其存在的意义。而DSP指令又不可避免地需要一些单操作数指令。

所谓流水线操作,就是将各条指令执行过程的几个阶段(取指、译码、取操作数、执行)重迭进行,执行完第一条指令的第一步后,紧接执行该指令的第二步,同时执行下条指令的第一步,使得指令执行加快,使大多数指令都可以在单个指令周期内完成。

2、DSP芯片内部采用多总线结构,C54X内部有8条16位总线,即1条程序总线,3条数据总线,和4条地址总线。程序总线PB传送取自程序存贮器的指令代码和立即操作数或系数表中的数据;数据总线CB和DB传送读自数据存贮器的操作数;数据总线EB传送写到存贮器的数据;地址总线传送执行指令所需的地址。

3、DSP执行一条指令,需要经过取指、译码、取操作数和执行等几个阶段。由于采用流水线结构,使指令执行的这几个阶段重迭进行。C54X有一个6级深度的流水线,在任何一个机器周期内,可以有1~6条不同的指令在同时工作,每条指令工作在不同级的流水线上。

4、C54X可寻址64K字程序空间,64K字数据空间,64K字I/O空间,总共可寻址192K字空间,而C548和C549的程序空间可扩展到8M(即8192K)字。

5、C54X中,内部存贮器的形式有DARAM、SARAM和ROM三种,RAM(包括DARAM和SARAM)总是安排到数据存贮空间,也可以构成程序存贮空间;ROM一般构成程序存贮空间,也可部分地安排到数据存贮空间。所谓双寻址RAM(DARAM)就是每个机器周期内可以进行两次存取操作的RAM存贮器,而单寻址RAM(SARAM)就是每个机器期间内只能进行一次存取操作的RAM存贮器。

6、在处理器工作方式状态寄存器PMST中有3个状态位MP/ 、OVLY和DROM,用来安排C54X片内存贮器作为程序或数据空间。
若MP/ =0,则片内ROM安排到程序空间。
若MP/ =1,则片内ROM不安排到程序空间。
若OVLY=0,则片内RAM只安排到数据存贮空间。
若OVLY=1,则片内RAM安排到程序和数据空间。
若DROM=0,则片内ROM不安排到数据空间。
若DROM=1,则片内ROM安排到数据空间。

7、为了增强处理器的性能,C54X对片内ROM进行分块,这样可以在对片内ROM的某一块取指的同时,又可对片内ROM别的块读数据。为了增强处理器的性能,C54X对片内RAM也进行分块,分块以后,可以在同一周期内从同一块DARAM中取出两个操作数并将数据写入另一块DARAM中。

8、C548和C549采用分页扩展方法,把程序空间分成128页,每页64K字,使其程序空间可扩展到8M字。因此,它们有23根地址线,增加了一个额外的存贮器映象寄存器——程序计数器扩展寄存器(XPC)。当片内RAM安排到程序空间时,每页程序存贮器分成两部分:一部分是公共的32K字;另一部分是各自独立的32K字;当片内ROM被寻址(MP/MC=0),它只能在0页,不能映象到程序存贮器的其它页。

9、C54X有两类特殊功能寄存器,它们都映象到数据存贮器空间的0页,第一类是CPU寄存器,它们映象到数据空间的0000~001FH地址范围内,主要用于程序的运算处理和寻址方式的选择及设定,第二类是外围电路寄存器,它们映象到数据空间的0020H~005FH区域内,主要用于控制片内外设,包括串行通信控制寄存器组、定时器控制寄存器组、机器周期设定寄存器组等。

10、指数编码器可以在单个周期内执行EXP指令,求得累加器中数的指数值,并以2的补码的形式存放到T寄存器中。累加器的指数值=冗余符号位-8,也就是为消去多余符号位而将累加器中的数值左移的位数,当累加器数值超过32位时指数时个负值。

11、对于C54X来说,不同型号器件的CPU是相同的,它由以下基本部件组成:40位的ALU、2个40位累加器、桶形移位寄存器(移位数为-16~31)、乘法器/加法器单元、比较选择和存储单元CSSU、指数编码器、CPU状态和控制寄存器。


仙剑中经典战斗音乐有哪些呢。
http:\/\/www.tudou.com\/programs\/view\/x0AqJf6PnsA\/ 20.水柔声 蛮州主题曲,紫萱回忆过往甜蜜的...http:\/\/www.tudou.com\/programs\/view\/Bi-HHd8eB54\/ 48.春晖爱日 表现美好的乡村生活 http:\/\/www...http:\/\/www.tudou.com\/programs\/view\/3rhDDSP7hOA\/ 76.仙剑问情(萧人凤演唱) 仙剑系列第一次尝试...

变形计之山呼海唤》的观后感
昨晚,看完快乐男生5进4,这场喧嚣的、被导演的好看的秀结束之后,无意中看到了这档节目《变形记》,昨天讲的是城市里的富家少爷和深山里的苗家少年的角色互换。少爷小炜要啥有啥,但是却自甘堕落,沦为街头混混;少年阿吉,要啥没啥,但是却保有一颗坚强、求知的心。其中有一幕阿吉5岁的表弟,在他...

PS2X2模拟器怎么用 PCSX2模拟器使用详细图文教程
第四,PCSX2支持众多插件,用户可以通过插件实现很多效果,如强劲的DSP音效等,可玩性十分高; 第五,PCSX...音频插件请务必使用“SPU2-X r4600m 1.4.0”。SPU2是最为强大的音频插件,很多音效都只有SPU2能支持...《最终幻想》系列游戏可以说是日式RPG的旗帜,我们采用了《最终幻想12》来测试PCSX2对这款较新的游戏的...

基于dsp的 f.i.r低通滤波器设计
使用可编程的DSP芯片实现数字滤波可以通过修改滤波器的参数十分方便地改变滤波器的特性,下面主要说明利用TMS320VC54x DSP芯片设计实现FIR数字滤波器。设计目的意义一个实际的应用系统中,总存在各种干扰,所以在系统设计中,滤波器的好坏将直接影响系统的性能。使用DSP进行数字处理,可以对一个具有噪声和信号的混合信号源进行...

dsp:FIR滤波器的设计
使用可编程的DSP芯片实现数字滤波可以通过修改滤波器的参数十分方便地改变滤波器的特性,下面主要说明利用TMS320VC54x DSP芯片设计实现FIR数字滤波器。设计目的意义一个实际的应用系统中,总存在各种干扰,所以在系统设计中,滤波器的好坏将直接影响系统的性能。使用DSP进行数字处理,可以对一个具有噪声和信号的混合信号源进行...

阳山县13478342796: C54X系列的DSP硬件包括哪些部分,各起什么作用 -
金命扶正: 1、DSP芯片内部采用改进的哈佛结构,允许同时取指令和取数据,而且还允许在程序空间和数据空间之间相互传送数据.所谓哈佛结构,是将程序和数据的存贮空间分开,各有各的地址总线和数据总线.这样同一条指令可以同时对不同的存贮...

阳山县13478342796: 试从C54X - DSP硬件结构方面总结:为什么说DSP是一种特别适用于数字信号处理算法的微处理器? -
金命扶正: 1、DSP采用哈佛结构总线,程序存储器和数据存储器分开,取指和数据访问同时进行.通用CPU采用冯.诺依曼型总线,程序和数据总线共享同一总线,取指和数据访问不能并发. 2、流水线操作(pipeline),取指、译码、寻址、取数、运算...

阳山县13478342796: 一个dsp最小硬件系统一般包括哪些部分 -
金命扶正: 一般有:电源管理、DSP处理器、仿真接口(JTAG)、外扩程序空间(如flash)、外扩数据空间(如DDR或SDRAM)、复位、时钟

阳山县13478342796: c 5409dsp 芯片内部含有几个辅助寄存器 -
金命扶正: 1.TMS320C2000 TMS320C2000系列包括C24x和C28x系列.C24x系列建议使用LF24xx系列替代C24x系列,LF24xx系列的价格比C24x便 宜,性能高于C24x,而且LF24xxA具有加密功能. C28x系列主要用于大存储设备管理,高性能的控制场...

阳山县13478342796: 一些基本的DSP C54X芯片指令问题 -
金命扶正: 1. CPL=0 //CPL=0的是直接寻址(下面两句都是直接寻址)中,使用的指针来自数据存储器的页指针DP;若CPL=1,使用的指针是堆栈指针SP. A=#1234h //A指的是累加器A(一共有两个:累加器A和累加器B),这句话的意思就是给累加器A赋值,这个值是一个立即数 1234h(16位) DP=#09H //因为第一句已经选择了使用DP指针,这一句就是给DP指针赋值一个立即数,让DP指针指向数据存储器(RAM)09寄存器单元 、 剩下的有空再说吧!

阳山县13478342796: 'c54x dsp的总线结构有哪些特点 -
金命扶正: 1)、改进的哈佛结构; 2)、多总线结构; 3)、流水线技术;4)、多处理单元; 5)、特殊的DSP指令; 6)、指令周期短; 7)、运算精度高; 8)、丰富的外设; 9)、功耗低.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网