第3章 TMS320C54数字信号处理器硬件结构_第1页
第3章 TMS320C54数字信号处理器硬件结构_第2页
第3章 TMS320C54数字信号处理器硬件结构_第3页
第3章 TMS320C54数字信号处理器硬件结构_第4页
第3章 TMS320C54数字信号处理器硬件结构_第5页
已阅读5页,还剩149页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第3章TMS320C54x数字信号处理器硬件结构3.1TMS320C54x的特点和基本结构3.2TMS320C54x的总线结构3.3中央处理单元(CPU)3.4TMS320C54x的存储器结构3.5TMS320C54x的片内外设3.6小结DSP芯片属于专用微处理器,不同厂家的DSP器件各不相同,但都具有哈佛结构和硬件乘法电路等基本特征。TMS320C5400DSP具有高速度、低功耗、小型封装和最佳电源效率等优点。TMS320C54x是其一个子系列。3.1TMS320C54xDSP的特点与基本结构技术指标

对于同一系列的DSP器件,各型号器件所采用的CPU是基本相同的。TMS320C54x系列芯片中各型号器件内部CPU结构完全相同,只是在时钟频率、工作电压、片内存储器容量大小、外围设备和接口电路的设计上有所不同。表3-1TMS320C54x系列芯片的技术特征3.1.1TMS320C54x系列器件的基本结构

TMS320C54x采用了增强的哈佛总线结构,允许数据存放在程序存储器中,这些存放在程序存储器中的数据可以由算术运算指令直接调用,同时,还提供了存储指令的高速缓冲器和相应的指令,这些指令只需要读入一次,就可以连续使用而不需要再次从程序存储器中读出,从而减少了指令执行所需要的时间,提高了运行速度。图3.1TMS320C54xDSP的内部硬件组成框图TMS320C54x的主要特性如下所示:CPU(实现高效的数据存取和处理能力)先进的多总线结构(8条16位总线)。40位算术逻辑运算单元(ALU)。17位×17位并行乘法器与40位专用加法器相连。比较、选择、存储单元(CSSU)。指数编码器可以在单个周期内计算40位累加器中数值的指数。双地址生成器包括8个辅助寄存器和两个辅助寄存器算术运算单元(ARAU)。3.1.2TMS320C54xDSP的特点存储器(192K)64K字程序存储器、64K字数据存储器以及64K字I/O空间。在C548、C549、C5402、C5410和C5420中程序存储器可以扩展。指令系统专业的指令集可以帮助快速实现复杂算法和优化编程。单指令重复和块指令重复操作。(RPTRPTB)块存储器传送指令。(MVDDMVDK等)32位长操作数指令。(DLDDSTDADD等)同时读入两个或3个操作数的指令。(FIRSLMS等)并行存储和并行加载的算术指令。(ST‖LDLD‖MAC等)条件存储指令。(CMPSSACCDSRCCD等)从中断快速返回指令。(RETF)在片外围电路(如图3.1所示)软件可编程等待状态发生器。可编程分区转换逻辑电路。带有内部振荡器。外部总线关断控制,以断开外部的数据总线、地址总线和控制信号。数据总线具有总线保持特性。可编程定时器。并行主机接口(HPl)。电源可用IDLEl、IDLE2和IDLE3指令控制功耗,以工作在省电方式。可以控制关断CLKOUT输出信号。在片仿真接口具有符合IEEE1149.1标准的在片仿真接口(JTAG)。速度单周期定点指令的执行时间为25/20/15/12.5/10-ns(40MIPS/50MIPS/66MIPS/80MIPS/100MIPS)。3.2TMS320C54x的总线结构TMS320C54xDSP采用先进的哈佛结构并具有八组总线,其独立的程序总线和数据总线允许同时读取指令和操作数,实现高度的并行操作。采用各自分开的数据总线分别用于读数据和写数据,允许CPU在同一个机器周期内进行两次读操作数和一次写操作数。独立的程序总线和数据总线允许CPU同时访问程序指令和数据。

返回首页

(1)程序总线(PB)传送从程序存储器来的指令代码和立即数。(2)三组数据总线(CB,DB和EB)分别连接不同功能的各种元器件,如CPU、数据地址产生逻辑、程序地址产生逻辑,片内外设和数据存储器。

CB和DB总线传送从数据存储器读出的操作数。EB总线传送写入到存储器中的数据。(3)四组地址总线(PAB,CAB,DAB和EAB)传送执行指令所需要的地址。表3-2读/写访问时的总线占用说明C54x通过使用两个辅助寄存器算术单元(ARAU0和ARAU1)(AuxiliaryRegisterArithmeticUnit),每周期能产生两个数据存储器地址。

PB总线能把存储在程序空间的数据操作数(如系数表)传送到乘法器和加法器中进行乘/累加运算,或者在数据移动指令(MVPD和READA)中传送到数据空间。这种能力再加上双操作数读的特性,支持单周期3操作数指令的执行,如FIRS指令。3.3TMS320C54xDSP的CPU结构TMS320C54x的CPU包括:

40-bit的算术逻辑运算单元(ALU,ArithmeticLogicUnit)40-bit累加器A和B移位-16~31位的桶形移位寄存器(Barrelshifter)17×17bit乘法器/加法器单元(Multiplier/Adder)比较,选择和存储单元(CSSU,Compare,SelectionandStoreUnit)指数编码器(EXPencoder)

CPU状态和控制寄存器3.3.1算术逻辑运算单元(ALU)

要点:ALU如何获取数据,ALU输出送往何方,溢出怎么办?进位位的作用,什么是双16位算术运算?要点:作用,结构和位置,A和B的异同,加载与存储中的移位

3.3.2累加器A和BAG、AH、AL、BG、BH和BL都是存储器映射寄存器(在存储空间中占有地址),可作为独立的寄存器,使用寄存器寻址方式,由特定的指令将其内容放到16位数据存储器中,并从数据存储器中读出或写入32位累加器值。举例:已知累加器A=FF12345678H,求执行带移位的STH和STL指令后,数据存储单元T中的结果.1)STHA,8,T2)STHA,-8,T3)STLA,8,T3.3.3桶形移位器(定标移位器)要点:什么是定标?移位处理的作用功能:把输入的数据进行0~31位的左移和0~15位的右移。(即定标)所移的位数就是指令中的移位数。移位数都是用二进制补码表示,正值表示左移,负值表示右移。移位数可由立即数、状态寄存器ST1中的累加器移位方式(ASM)字段和被指定为移位数值寄存器的暂存器T来决定。4040多路开关符号控制

桶形移位寄存器(-16~31)

MSW/LSW线选EB15-EB0CB15-CB0DB15-DB016164016CSSUALUSXMTC(测试位)T(范围-16~31)ASM(范围-16~15)快速指令寄存器(范围-16~31或0~15)BADC

输入:DB:取得16位输入数据。CB和DB:取得32位输入数据。40位累加器A或B。输出:ALU的一个输入端。经过MSW/LSW(MostSignificantWord/LeastSignificantWord,最高有效字/最低有效字)写选择单元至EB总线。3.3.4乘累加单元17×17位并行乘法器,与40位专用加法器相连,可用于进行非流水线的单周期乘法-累加运算。要点:结构、功能、数据流向A174040CDACtr符号位Ctr符号位乘法器(17×17)多路开关XMYM零检测舍入饱和送至累加器A或B40OVMOVA/OVBZA/ZBFRCTFract/intYAXA加法器(40b)TCB15-CB0DB15-DB0PB15-PB0TDAP累加器A累加器B1717B03.3.5比较,选择和存储单元(CSSU)完成累加器的高位字和低位字之间的最大值比较,即选择累加器中较大的字并存储在数据存储器中,比较结果存在状态寄存器ST0中的测试/控制位(TC)和状态转移寄存器(TRN)的第0位中。同时,CSSU支持各种Viterbi算法并利用优化的片内硬件加速Viterbi的蝶形运算。要点:结构、功能Viterbi算法示意图3.3.6指数编码器用于支持单周期EXP的一个专用硬件。可在单个周期内执行EXP指令,求得累加器中数的指数值。在EXP指令中,累加器中的指数值能以二进制补码的形式存储在T寄存器中,范围为-8至31。

指数值定义为前面的冗余位数减8的差值,即累加器中为消除非有效符号位所需左移的位数。当累加器中的值超过了32bits,该操作将产生负值。EXP编码器6BA来自累加器A来自累加器B送至T寄存器要点:结构、功能,如何计算指数3.3.7CPU状态和控制寄存器TMS320C54XX有3个状态和控制寄存器:(1)状态寄存器ST0(2)状态寄存器ST1(3)处理器工作方式状态寄存器PMST(ProcessorModeState)。要点:3个状态寄存器的功能,位置,各位的作用15~1312111098~0ARPTCCOVAOVBDP(1)状态寄存器ST0(反映寻址要求和计算的中间运行状态)151413121110987654~0BRAFCPLXFHMINTM0OVMSXMC16FRCTCMPTASM(2)状态寄存器ST1

(反映寻址要求,计算的初始状态设置,I/O及中断控制)续:

在操作中,可以使用置位指令SSBX和复位指令RSBX对ST0和ST1的各个位进行单独置位(置1)或清零(置0)。例如:SSBXSXM ;SXM=1,允许符号扩展RSBXSXM ;SXM=0,禁止符号扩展ARP、DP和ASM字段可以通过LD指令装载一个短立即数,ASM和DP也可以通过使用LD指令用数据存储器的值来装载。15~76543210IPTRMP/MCOVLYAVISDROMCLKOFFSMULSSTt(3)处理器方式状态寄存器PMST

(设定并控制处理器的工作方式、决定存储器的配置情况、反映处理器的工作状态)3.3.8寻址单元用以迅速有效地访问存储器单元,提高运算和指令执行效率

主要包括数据寻址和程序寻址两大类

程序寻址过程中的一个关键单元是程序计数器PC;

对于数据寻址,指令执行中所涉及的操作数地址一般由指令提供。为了加速数据寻址的速度,减少指令中为操作数地址所保留的比特位数,提高指令执行效率,一般DSP芯片都提供了多种数据寻址方式

。TMS320C54xDSP有两个地址发生器:程序地址生成单元PAGEN(ProgramAddressGenerationLogic)和数据地址生成单元DAGEN(DataAddressGenerationLogic)。1.程序地址生成单元(PAGEN)PAGEN包括5个寄存器:程序计数器PC、重复计数器RC、块重复计数器BRC、块重复起始地址RSA和结束地址REA(后四个寄存器合起来也叫重复寄存器),这些寄存器可支持程序存储器寻址。PAGEN使用PC对内部或外部程序存储器寻址。PC保存将被执行的下一条指令的地址。通过程序地址总线(PAB),从程序存储器中该地址处取回指令并装入指令寄存器。当装入指令寄存器时,PC保存下一地址。在重复操作指令中,数据表地址由PAGEN产生,而数据地址由DAGEN产生,从而允许重复指令从数据表中连续取值,以及在任一间接寻址方式下获取数据。2.数据地址生成单元(DAGEN)

包括辅助寄存器指针ARP、循环缓冲区大小寄存器BK、DP、堆栈指针寄存器SP、8个辅助寄存器(AR0~AR7)和2个辅助寄存器算术单元(ARAU0和ARAU1)。ARAU0和ARAU1的主要功能是在ALU操作的同时,执行8个辅助寄存器(AR0~AR7)的16位无符号数算术运算,

8个辅助寄存器支持间接寻址,利用包含在辅助寄存器中的16位地址,可访问64K数据空间中的任意单元,AR0~AR7由ST0中的ARP来指定。3.4TMS320C54xDSP的存储器结构3.4.1存储器空间3.4.2程序存储器3.4.3数据存储器3.4.4I/O存储器返回首页为了提高数据处理能力,TMS320C54xDSP芯片提供了片内存储器,包含ROM和RAM,而RAM通常有两类:双寻址RAM(DARAM)和单寻址RAM(SARAM),分别也可称为双口RAM和单口RAM。★RAM总是安排到数据存储空间,但也可以构成程序存储空间。★ROM一般构成程序存储空间,也可以部分地安排到数据存储空间。使用片内存储器的优点:无需等待周期故性能更高;比外部存储器成本低、功耗小。当片内存储器不能满足系统设计的存储要求时,就需要扩展片外存储器,扩展存储器主要分为两类:随机存储器(RAM)和只读存储器(ROM),其中RAM主要指静态RAM(SRAM);ROM包括EPROM、EEPROM、FlashMemory等,这一类存储器主要用于存储用户程序和系统常数表,一般映射在程序存储空间。’C54x片内存储器资源配置DSP存储器’C541’C542’C543’C545’C546’C548’C549’C5402’C5410’C5416’C5420ROM程序程序/数据DARAMSARAM28K20K8K5K02K2K010K02K2k010K048K32K16K6K048K32K16K6K02K2K08K24K16K16K08K24K4K4K4K16K0

16K16K08K56K

16K16K064K64K

00032K168K

注:用户可以将双寻址RAM(DARAM)和单寻址RAM(SARAM)配置为数据存储器或程序/数据存储器3.4.1存储器空间★TMS320C54x存储器的总存储空间为192K字,由3个独立的可选择空间组成:64K字的程序存储空间、64K字的数据存储空间和64K字的I/O空间。对于548,549,5402和5410还可以外部扩展程序空间。★程序存储器空间包括程序指令和程序中所需的常数表格;数据存储器空间用于存储需要程序处理的数据或程序处理后的结果;I/O空间用于与存储器映射的外围设备相连接,也可以作为附加的数据存储空间使用。★片内或片外的程序或数据存储器及外设都要映射到这三个空间。C54x可通过设置处理器工作状态寄存器PMST中的

MP/

、OVLY和DROM三个控制位来实现片内RAM是否可以映射到程序存储空间、片内ROM是否可以映射到程序储存空间或程序和数据存储空间。MP/位:决定DSP芯片使用哪种工作方式。若MP/=0,则片内ROM映射到程序空间。若MP/=1,则片内ROM不映射为程序空间。OVLY位:决定片内RAM是否映射到程序存储空间若OVLY=1,则片内RAM映射为程序和数据空间。若OVLY=0,则片内RAM只映射为数据存储空间而不映射为程序存储空间。DROM位:决定片内ROM是否使能映射为数据存储空间。若DROM=1,则允许部分片内ROM映射为数据空间。若DROM=0,则片内ROM不映射成数据空间。不同的C54x的数据和程序存储空间分配略有不同图3-2TMS320VC5402存储器分配图(a)TMS320VC5402程序存储器分配图4K字16K字(b)TMS320VC5402数据存储器分配图4K字128字8K字24K字16K字3.4.2程序存储器C54xDSP可寻址64K字的程序存储空间(C548和C549可以扩展到8M字)。C54xDSP的片内ROM、双寻址RAM(DARAM)以及单寻RAM(SARAM),都可以通过软件映射到程序空间。所谓映射到程序存储空间,就是指把片内存储器与程序存储器空间对应起来,通过访问程序存储空间就可以实现对这些片内存储器的访问。片内存储器映射到程序存储器的优点就是提高了数据处理速度,因为CPU对程序存储器的访问是在程序计数器的控制下自动完成的。

1.程序存储器的配置(PMST的设置)片内存储器是否作为程序存储器,取决于软件对处理器工作方式状态存储器PMST的状态位MP/和OVLY的编程。(1)若当MP/=1,OVLY=0时,TMS320C549DSP工作在微处理器模式下,片内RAM、片内ROM不映射到程序存储空间。(2)若MP/=0,OVLY=1时,TMS320C549DSP工作在微计算机模式下,则片内2K字ROM,片内中断向量分别映射到了程序存储器的C000H~FEFFH,FF00H~FFFFH地址空间,片内8K字的DARAM,24K字的SARAM分别映射到了程序存储器0080H~1FFFH,2000H~7FFFH地址空间。(3)当MP/=1,OVLY=1时,TMS320C549DSP工作在微处理器模式下,片内ROM不映射到程序存储空间,但片内8K字DARAM,24K字的SARAM分别映射到了程序存储器0080H~1FFFH,2000H~7FFFH地址空间。(4)若MP/=0,OVLY=0时,TMS320C549DSP工作在微计算机模式下,则片内2K字ROM,片内中断向量分别映射到了程序存储器的C000H~FEFFH,FF00H~FFFFH地址空间,但片内DARAM,SARAM都不映射到程序存储空间。

为了增强处理器的性能,增加执行速度,将片内ROM再细分为若干块,这样在片内ROM的一个块内取指的同时,又在别的块中读取数据。根据C54xDSP的不同,ROM可以组织成容量为2K字、4K字或8K字的块。以2K字为块单位以4K字为块单位2.复位时片内ROM在程序存储器中的映射当处理器复位时,复位和中断向量都映射到程序空间的FF80h。复位后,这些向量可以被重新映射到程序空间中任何一个128字页的开头。器件复位时,复位、中断和陷阱中断向量被映射到程序存储器FF80H地址开始的存储空间中。然而,复位后,TMS320C54x的中断向量表可以被重新映射到程序存储器中任何128字页的开始。这样,就可以把中断向量表从引导ROM中移出,然后再根据存储器意图重新配置其地址,这对于中断操作有着十分重要的意义。3.片内ROM的内容和映射C54x的片内ROM容量有大(28K字或48K字)有小(2K字),容量大的片内ROM可以把用户的程序代码编写进去,然而片内高2K字ROM中的内容是由TI公司定义的。这2K字程序空间(F800h~FFFFh)中包含如下内容:

1)自举加载程序。从串行口、外部存储器、I/O口、或者主机接口(如果存在的话)自举加载。

2)256字μ律压扩表。

3)256字A律压扩表。

4)256字正弦函数值查找表。

5)中断向量表。

注意:在C54xDSP的片内ROM中,128字被保留用于器件的测试。写到片内ROM并且在片内ROM执行的应用程序代码必须保留128字(FF00h~FF7Fh)。4.扩展程序存储器C548和C549采用页扩展方法,使其程序空间可扩展到8192K字(8M×16b),分成128页,每页64K字。为了能够访问这种分页扩展的程序存储空间,这些芯片具有以下一些增强的特性:有23条地址线增加了一个额外的存储器映射寄存器,即程序计数器扩展寄存器(XPC),芯片通过XPC的值来访问程序存储器的各个页,包含当前程序存储器地址的高7位6条额外的指令用于寻址扩展的程序存储空间,改变XPC的值当片内RAM安排到程序空间时,每页程序存储器分成两部分:一部分是公共的32K字,另一部分是各自独立的32K字,公共存储区为所有页共享,而每页独立的32K字存储区只能按指定的页号寻址。如果片内ROM被寻址(MP/=0),被寻址的片内ROM只能在0页,不能映射到程序存储器的其它页。扩展程序存储器的页号由XPC寄存器设定。XPC映射到数据存储单元001Eh。在硬件复位时,XPC各位被置为0。

为了便于软件进行页切换,设置了6条影响XPC的专用指令:

FB[D]——长跳转指令;

FBACC[D]——长跳转到累加器A或B所

指定的位置;

FCALA[D]——长调用累加器A或B所指

定的位置;

FCALL[D]——长调用指令;

FRET[D]——长返回;

FRETE[D]——带中断使能的长返回指令。图2-6C5402扩展程序存储器图返回本节C5402采用页扩展方法,使其程序空间可扩展到1024K字(1M×16b)。有20根地址线。C5402的程序空间分成16页,每页64K字3.4.3数据存储器C54x的数据存储器的容量最多可达64K字。数据存储器包含片内或片外的RAM,片内的RAM映射到数据存储空间。此外,C54x还可以通过软件将片内ROM映射为数据存储空间。表2-4各种C54xDSP可用的片内数据存储器的容量(单位:K字)1.数据存储器的配置(PMST的设置)

TMS320C54x可寻址64K字数据存储器空间,数据存储器空间包含片内和片外,采用内部和外部存储器统一编址。片内DARAM映射为数据存储空间。对于C54xDSP,用户可以通过设置PMST寄存器的DROM位,将部分片内ROM映射到数据存储空间。这一部分片内ROM既可以在数据存储空间使能(DROM位置1),也可以在程序空间使能(MP/清0)。复位时,处理器将DROM位清0。

当DAGEN产生的数据地址处于内部存储器的范围内时,CPU直接对内部数据存储器寻址。

当DAGEN产生的数据地址不在内部存储器的范围内时,CPU自动对外部数据存储器寻址。

2.片内的RAM的组织为了提高处理器的性能,片内RAM也细分成若干块。分块后,用户可以在同一个时钟周期内从同一块DARAM取出两个操作数,并将数据写入到另一块DARAM中,但一个SARAM块在一个机器周期只能被访问一次。C54xDSP内的RAM的分块组织见图2-15所示。

8K

8K

0060H

1FFFH

2000H

3FFFH

图2-15C5402的RAM分块图8K字的DARAM24K字的SARAM6K字的DARAM10K字的DARAM5K字的DARAM64K字的数据存储器空间包括存储器映射寄存器,所有C54xDSP上的DARAM的起始1K字的块包括存储器映射CPU寄存器(0000H-001FH)和外设寄存器(0020H-005FH),32字的暂存存储器DARAM(0060H-007FH)和896字的DARAM(0080H-03FFH)。C54x内部RAM前1K的配置:0380H~03FFH0300H~037FH0280H~02FFH0200H~027FH0180H~01FFH0100H~017FH0080H~00FFH0060H~007FH0200H~005FH0000H~001FH存储器映射的CPU寄存器存储器映像的CPU寄存器,特殊功能寄存器0000~001FH:特殊功能寄存器存储器映射的外设寄存器存储器映射的外设寄存器0020~005FH:外设寄存器暂存器SPRAM(DP=0)32字暂存寄存器SPRAM0060~007FH:暂存寄存器DARAM(DP=7)DARAM(DP=6)DARAM(DP=5)DARAM(DP=4)DARAM(DP=3)DARAM(DP=2)DARAM(DP=1)0080~03FFH:7个DARAM数据块。3.数据存储器映射寄存器

特殊功能寄存器

功能:主要用于程序的运算处理和寻址方式的选

择和设定。地址范围:0000H~001FH。

’C5402的CPU寄存器共有27个,CPU访问这些寄存器时,不需要插入等待时间。

外设寄存器

功能:用来控制片内外设电路的状态和存放数据。

地址范围:0020H~005FH。

包括串行口通信控制寄存器组、定时器定时控制寄存器组、时钟周期设定寄存器组等。访问它们需使用专门的外设总线结构。

暂存器SPRAM

功能:用来暂存变量。地址范围:0060H~007FH。

地址符号寄存器名称地址符号寄存器名称00H

IMR中断屏蔽寄存器10HAR0辅助寄存器001H

IFR中断标志寄存器11H

AR1辅助寄存器102H

保留(用于测试)12HAR2辅助寄存器203H保留(用于测试)13H

AR3辅助寄存器304H保留(用于测试)14H

AR4辅助寄存器405H保留(用于测试)15HAR5辅助寄存器506H

ST0状态寄存器016H

AR6辅助寄存器607H

ST1状态寄存器117H

AR7辅助寄存器708H

AL累加器A低字(15~0位)18H

SP堆栈指针09H

AH累加器A高字(31~16位)19H

BK循环缓冲区长度寄存器0AH

AG累加器A保护位(39~32位)1AH

BRC块重复计数器0BH

BL累加器B低字(15~0位)1BH

RSA块重复起始地址寄存器0CH

BH累加器B高字(31~16位)1CHREA块重复结束地址寄存器0DH

BG累加器B保护位(39~32位)1DHPMST处理器模式状态寄存器0EH

T暂存寄存器1EHXPC程序计数器扩展寄存器0FH

TRN状态转移寄存器1FH保留特殊功能寄存器注:程序计数器扩展寄存器(XPC)仅C548、C549、C5402、C5410、C5420有第2章TMS320C54x的硬件结构2.存储器映像寄存器

片内外设寄存器存在于一个专用的外设总线结构中,它可以发送数据至外设总线或者从外设中接收数据。设置或清除寄存器的控制位可以激活、屏蔽或者重新配置外设状态。

不同型号的芯片具有不同的片内外设寄存器。’C549片内外设寄存器地址符号寄存器名称地址符号寄存器名称20H

BDRR0缓冲串行口0数据接收寄存器35HTRAD

TDM串行口接收地址寄存器

21HBDXR0缓冲串行口0数据发送寄存器36~37H保留22H

BSPC0缓冲串行口0控制寄存器38HAXR0

ABU0发送地址寄存器23H

BSPCE0缓冲串行口0控制扩展寄存器39H

BKX0

ABU0发送缓冲范围寄存器24H

TIM定时设定寄存器3AH

ARR0

ABU0接收地址寄存器25H

PRD定时周期寄存器3BHBKR0

ABU0接收缓冲范围寄存器26H

TCR定时控制寄存器3CH

AXR1

ABU1发送地址寄存器27H保留3DH

BKX1

ABU1发送缓冲范围寄存器28HSWWSR软件等待状态寄存器3EH

ARR1

ABU1接收地址寄存器29HBSCR多路开关控制寄存器3FH

BKR1

ABU1接收缓冲范围寄存器2A~2BH

保留40H

BDRR1缓冲串行口1数据接收寄存器2CH

HPIC主机口(HPI)控制寄存器41H

BDXR1缓冲串行口1数据发送寄存器2D~2FH

保留42HBSPC1缓冲串行口1控制寄存器30H

TRCV

TDM串行口数据接收寄存器43HBSPCE1缓冲串行口1控制扩展寄存器31HTDXR

TDM串行口数据发送寄存器44~57H保留32HTSPCTDM串行口控制寄存器58HCLKMD时钟模式寄存器33H

TCSR

TDM串行口通道选择寄存器

59~5FH

保留34H

TRTA

TDM串行口接收发送寄存器

3.4.4I/O存储器除程序存储器空间和数据存储器空间外,C54x系列器件还提供了64K字的I/O存储器空间(0000h~FFFFh),I/O空间都位于片外。I/O空间的作用是与片外设备连接,所以利用它可以扩展外部存储器。

采用IOSTRB、R/W、IS等信号可以实现对外部I/O设备的访问。有两条指令PORTR和PORTW可以对I/O存储器空间数据的存取。I/O空间的读写时序与程序存储器空间和数据存储器空间有很大不同,这有助于访问单独I/O映射的设备而不是存储器。

TMS320C54x还有一个可屏蔽存储器保护选项,用来保护片内存储器的内容。当选定这项时,所有外部产生的指令都不能访问片内存储器空间。返回本节3.5TMS320C54xDSP片内外设TMS320C54xDSP的CPU都是相同的,由x所表示的子系列器件的差别在于其片内外围电路的不同。下面介绍几种常见的片内外设。1.中断系统2.定时器3.主机接口(HPI)4.串行口5.外部总线结构返回首页3.5.1中断系统

中断系统是DSP应用系统实现实时操作和多任务多进程操作的关键部分。

’C54x的中断系统根据芯片型号的不同,提供了24~27个硬件及软件中断源,分为11~14个中断优先级,可实现多层任务嵌套。

中断是指CPU暂时停止当前程序的执行,而去执行中断服务程序,并在服务完成后自动返回原程序执行的过程。

1.中断类型

软件中断

硬件中断

——

由程序指令产生的中断。

如:INTR、TRAP或RESET。

——

由外围设备信号产生的中断。

硬件中断①受外部中断引脚信号触发的外部硬件中断:RS和NMI引脚,INT0-INT3引脚

②受片内外设电路信号触发的内部硬件中断:串行口中断:接收中断:BRINT0、BRINT1发送中断:BXINT0、BXINT1定时器中断:TINT0、TINT1DMA中断:DMAC5~DMAC0HPI中断:HPINT

从引起中断的来源分:

不论是软件中断还是硬件中断,’C54x的中断都可以分成两大类。

可屏蔽中断

非屏蔽中断

1)可屏蔽中断

可用软件设置来屏蔽或开放的中断,即通过对中断屏蔽寄存器(IMR)中的相应位和状态寄存器(ST1)中的中断允许控制位INTM编程来屏蔽或开放中断。

TMS320C54xDSP最多可支持16个用户可屏蔽中断。

VC5402共有13个可屏蔽中断:INT3~INT0

——

外部中断

BRINT0、BXINT0BRINT1、BXINT1

——

串行口中断

TINT0、TINT1

——

定时器中断

DMAC4、DMAC5

——

DMA中断

HPINT——

HPI中断

中断分类无法用软件屏蔽,一旦发生,CPU立即响应,从主程序转移到中断服务程序(ISP)。C54x的非屏蔽中断包括:①所有的软件中断②两个外部硬件中断(RS和NMI)。

2)非屏蔽中断

RS:

是一个对C54x所有操作方式产生影响的非屏蔽中断。

NMI:

不会对C54x的任何操作方式产生影响。当中断响应时,所有其他中断将被禁止。

中断向量中存放对应中断服务程序的入口地址,采用中断向量来确定CPU响应每个中断时程序指针(PC)的跳转地址。C5000,C6000等系列DSP芯片都采用了软件可重定位中断向量形式。TMS320C54xDSP给每个中断源都分配一个确定的中断向量号。所有的中断向量放在一起就是中断向量表。TMS320C54xDSP在中断向量表中为每个中断向量提供了4个字的存储空间用于对应中断服务程序的存放。2.中断向量

当同时有多个中断出现时,’C54x将按照中断优先级别的高低对它们进行中断响应。VC5402中断源和优先级中断序号

中断名称

中断地址

中断优先级

功能

0RS/SINTR00H1复位(硬件和软件复位)

1NMI/SINT1604H2不可屏蔽中断

2SINT1708H——软件中断#17

3SINT180CH——软件中断#184SINT1910H——软件中断#195SINT2014H——软件中断#206SINT2118H——软件中断#217SINT221CH——软件中断#22VC5402中断源和优先级中断序号

中断名称

中断地址

中断优先级

功能

8SINT2320H——软件中断#239SINT2424H——软件中断#2410SINT2528H——软件中断#25

11SINT262CH——软件中断#2612SINT2730H——软件中断#2713SINT2834H——软件中断#2814SINT2938H——软件中断#2915SINT303CH——软件中断#30VC5402中断源和优先级中断序号

中断名称

中断地址

中断优先级

功能

16INT0/SINT040H3外部用户中断#0

17INT1/SINT144H4外部用户中断#1

18INT2/SINT248H5外部用户中断#219TINT0/SINT34CH6内部定时器0中断

20

BRINT0/SINT4

50H7缓冲串口McBSP0接收中断

21

BXINT0/SINT5

54H8缓冲串口McBSP0发送中断

22保留(DMAC0)/SINT6

58H9保留(默认)或DMA通道0中断,由DMPREC寄存器选择

VC5402中断源和优先级中断序号

中断名称

中断地址

中断优先级

功能

23

TINT1(DMAC1)/SINT7

5CH10内部定时器1中断(默认)或DMA通道1中断,由DMPREC寄存器选择24INT3/SINT8

60H11外部用户中断#325

HPINT/SINT9

64H12HPI中断26BRINT1(DMAC2)/SINT10

68H13缓冲串口McBSP1接收中断(默认)或DMA通道2中断,由DMPREC寄存器选择

27BXINT1(DMAC3)/SINT116CH14缓冲串口McBSP1发送中断(默认)或DMA通道3中断,由DMPREC寄存器选择

VC5402中断源和优先级中断序号

中断名称

中断地址

中断优先级

功能

28

DMAC4/SINT12

70H

15DMA通道4中断29

DMAC5/SINT13

74H16DMA通道5中断

HPINT/SINT9

78H~7FH——保留中断向量地址

中断向量可以映射到程序存储器的任何128字页面的起始位置,除保留区域外。C54x的中断向量地址是由PMST寄存器中的IPTR(9位中断向量指针)和左移2位后的中断向量号所组成。

中断向量地址=IPTR+(左移2位的中断向量序号)

例如,IPTR=0001H,INT0的中断向量序号为10H,中断向量的地址为00C0H。

中断向量地址=0

00000001100

0000

=00C0H复位时,IPTR为全1(IPTR=1FFh),并按此值将复位向量映像到程序存储器的511页空间。此时,IPTR=1FFh=111111111b,由表查得复位的中断序号为0,因此复位所对应的中断地址为:硬件复位后的开始地址为0FF80h。除硬件复位向量外,其它的中断向量,只要改变IPTR位的值,都可以重新安排它们的地址。

例如,SINTR中断,用0001h加载IPTR,IPTR=0001h=000000001b,由表查得SINTR中断序号为0h=00000b,左移2位后仍为0h=0000000b。即此时中断向量被移到从0080h单元开始的程序存储器空间中断向量表程序.sect“.vectors”

;定义段的名称为vectors,使后面的代码和数据与该段相关联.refstart;程序入口,主程序中必须有start标号

.align0x80;将段程序计数器对准128字的边界,确保在伪指令后的代码开始于第X个字或页面边界RESET:;复位中断,优先级最高

BDstart;执行完该语句下面的一条语句后,跳转到start处

STM#200,SP;设置堆栈大小为200个字nmi:RETE;NMI非屏蔽中断返回,下面依次为VC5402的各个中断

NOPNOPNOP;程序内部的软件中断,每个中断占4个字sint17.space4*16;.space开辟空间(单位:bit)sint18.space4*16sint19.space4*16程序中需要响应中断处理时,应将中断向量表文件加入到工程中去。这个文件的格式比较固定,下面给出一个中断向量表文件的例程。sint20.space4*16Sint21.space4*16sint22.space4*16sint23.space4*16Sint24.space4*16Sint25.space4*16sint26.space4*16Sint27.space4*16sint28.space4*16sint29.space4*16Sint30.space4*16int0:Bint_program;外部中断0入口点,响应中断跳到标号int_program,在主程序中必须有这个标号

nopnopnopint1:RETE;外部中断1nopnopnopint2:RETE;外部中断2nopnopnoptint:RETE;定时器中断

nopnopnoprint0:RETE;串口0接收中断

nopnopnopxint0:RETE;串口0发送中断

nopnopnoprint1:RETE;串口1接收中断

nopnopnopxint1:RETE;串口1发送中断

nopnopnopint3:RETE;外部中断3nopnopnop.end

’C54x中断系统设置两个中断管理寄存器,分别为中断标志寄存器IFR和中断屏蔽寄存器IMR。

3.中断寄存器

1)

中断标志寄存器IFR(0001H)中断标志寄存器IFR是一个存储器映射寄存器,包含所有可屏蔽中断的标志位,对各硬件中断请求进行标志,当一个中断出现时,IFR中的相应的中断标志位置1,直到CPU识别该中断为止。对IFR来说,某位为1表示DSP收到了一个相应的中断请求,用软件将IFR某位置1,等效于DSP收到了一个中断请求。

’C5402中断标志寄存器IFR的结构:15

141312111098保留DMAC5DMAC4BXINT1BRINT1HPINTINT376543210TINT1DMAC0BXINT0BRINT0TINT0INT2INT1INT0

中断标志寄存器IFR各位的功能。

名称功能

名称功能

15~14保留保留位,总是06DMAC0DMA通道0中断标志13DMAC5DMA通道5中断标志5BXINT0缓冲串口发送中断0标志12DMAC4DMA通道4中断标志4BRINT0缓冲串口接收中断0标志11BXINT1缓冲串口发送中断1标志3TINT0定时器中断0标志10BRINT1缓冲串口接收中断1标志2INT2外部中断2标志9HPINTHPI中断标志1INT1外部中断1标志8INT3外部中断3标志0INT0外部中断0标志7TINT1定时器中断1标志

在C54x系列芯片中,IFR中5~0位对应的中断源完全相同,分别为外部中断和通信中断标志寄存位,而15~6位中断源根据芯片的不同,定义的中断源类型不同。有三种情况将清除中断标志:

软件和硬件复位,即C54x的复位引脚RS=0;

将1写到IFR中的适当位(相应位变成0),相应的尚未处理完的中断被清除;③

使用相应的中断号响应该中断,

即执行INTR#K指令。

2)

中断屏蔽寄存器IMR(0000H)

中断屏蔽寄存器是一个存储器映射寄存器,主要用于控制硬件中断的屏蔽和开放。

当状态寄存器ST1中的INTM位为0,IMR中的某位置1时,开放相应的中断。复位时,IMR均设为0.

中断屏蔽寄存器IMR的结构与IFR完全一致:15

141312111098保留DMAC5DMAC4BXINT1BRINT1HPINTINT376543210TINT1DMAC0BXINT0BRINT0TINT0INT2INT1INT0用户可以对IMR寄存器进行读写操作。通过读IMR可以检查某个中断是否被屏蔽,通过写IMR可以屏蔽或开放某个中断,在IMR位置0,则屏蔽该中断。中断控制主要是屏蔽某些中断,避免其他中断对当前运行程序的干扰,以及防止同级中断之间的响应竞争。4.中断处理的步骤

1)接收中断请求一个中断可由硬件设备(引脚或片内外设)或软件指令提出请求。如果中断源正在请求一个可屏蔽中断,IFR寄存器中相应的中断标志位都会被置1。当相应的中断响应后,该标志位自动被清除。软件中断是由程序指令产生的中断请求,当软件中断请求时,一般为下列情形之一:

INTR指令:允许执行任何的可屏蔽中断,包括用户定义的中断(从SINT0到SINT30);

TRAP指令:与INTR指令相同,但不影响状态寄存器ST1的中断方式(INTM)位;

RESET指令:可在程序的任何时候产生,使处理器返回一个预定状态。复位指令影响ST0,ST1寄存器,但对PMST寄存器没影响。

对于软件中断和非屏蔽硬件中断,CPU将立即响应,进入相应中断服务程序。对于可屏蔽中断,只要满足以下3种条件后CPU才能响应中断。2)中断响应

当前中断优先级最高。

’C54x按照中断优先级响应中断请求。

INTM位清0。

当INTM=0,所有可屏蔽中断被使能。当INTM=1,所有可屏蔽中断被禁止。

IMR屏蔽位为1。

在IMR中,中断的相应位为1,表明允许该中断。

满足上述条件后,CPU响应中断,终止当前正进行的操作,指令计数器PC自动转向相应的中断向量地址,取出中断服务程序地址,并发出硬件中断响应信号IACK,而清除相应的中断标志位。3)执行中断服务程序

保护现场,将程序计数器PC值压入堆栈;

将中断向量的地址加载到PC;③

从中断向量所指定的地址开始取指;④

执行分支转移,进入中断服务程序;⑤

执行中断服务程序直到出现返回指令;

从堆栈中弹出返回地址,加载到PC中;⑦

继续执行主程序。CPU响应中断后,DSP执行中断向量地址所指向的分支转移指令,并执行中断服务程序,具体步骤如下:

注意:在中断响应时,程序扩展寄存器XPC不会自动压入堆栈。(若ISR在程序空间的扩展页上,程序须用软件将XPC压入堆栈,此时中断返回必须使用FRET[D]远程返回指令。一般建议中断服务程序放在DSP片内程序空间。建议进入中断服务程序时,只执行改变堆栈顶PC值的修改,返回到程序中即可,最后跳转到中断点。4)保存中断上下文当执行一个中断服务程序时,有些寄存器必须保存在堆栈中。当程序从ISR返回时,用户软件代码必须恢复这些寄存器的上下文。

使用堆栈操作指令可以将这些寄存器传送到堆栈中,或者从堆栈中取出。

PSHM指令:将MMR寄存器中的内容传送到堆栈中;

POPM指令:从堆栈中读出的数据传送到MMR寄存器中;PSHD指令:将数据存储器中的数据传送到堆栈;

POPD指令:从堆栈中读出的数据传送到数据存储器中.

当保存和恢复上下文时,应考虑如下几点:

①当使用堆栈保存上下文时,必须按相反的方向执行恢复;②寄存器BRC应在ST1的BRAF位之前恢复,否则,若在恢复BRC之前,中断服务程序中的BRC=0,则先前恢复的BRAF位会被清0。

5.中断操作流程

(1)可屏蔽中断操作过程:

设置IFR寄存器的相应标志位;

测试中断响应条件;

当中断响应后,清除相应的标志位,屏蔽其他可屏蔽中断;

PC值保存到堆栈中;

分支转移执行中断服务程序;

中断返回,将返回地址从堆栈中弹出给PC;

CPU继续执行主程序。

(2)非屏蔽中断操作过程:

CPU立刻响应该中断,产生中断响应信号;

如果中断是由RS、NMI或INTR指令请求的,则INTM位被置1;

若INTR指令已经请求了一个可屏蔽中断,则相应的标志位被清零;

PC值保存到堆栈中;

分支转移执行中断服务程序;

中断返回,将返回地址从堆栈中弹出给PC;

CPU继续执行主程序。

在工业应用中,计数器和定时器常用于检测和控制中的时序协调及控制。

’C54x的片内定时器是一个可编程的定时器,可用于周期地产生中断。定时器的最高分辨率为处理器的CPU时钟速度。通过带4位预定标器的16位计数器,可以获得较大范围的定时频率。

3.5.2定时器

’C54x的定时器是一个带有4位预分频器的16位可软件编程减法计数器。

这个减法计数器每来1个时钟周期自动减1,当计数器减到0时产生定时中断。

通过编程设置特定的状态可使定时器停止、恢复运行、复位或禁止。

定时器硬件上主要由3个16位存储器映射寄存器【定时寄存器TIM、定时周期寄存器PRD、定时控制寄存器TCR】及相应的逻辑控制电路组成。

寄存器TIM、PRD和TCR映射到存储器的地址分别为0024H、0025H和0026H。1.定时器结构

(1).定时器的组成

主定时器模块预定标器模块周期寄存器PRD定时寄存器TIM借位13预定标计数器PSC借位预定标分频系数TDDR12111&SRESETTRBCLKOUTTSSTINTTOUTTMS320C54xDSP片内定时器结构图主定时器模块:由PRD和TIM组成预定标器模块:由TCR的TDDR和PSC位域组成定时器由CPU提供时钟逻辑控制电路:由三个或门和一个与门组成。复位SRESET和TRB:①通过或门1、3控制TIM的加载计数;②通过或门1、2控制PSC的加载计数。停止控制位TSS:通过与门屏蔽CLKOUT信号来控制定时器的启动。TINT——外部定时中断,定时时间到发中断;TOUT——定时输出,输出定时波形。表3-1定时器的三个16位寄存器Timer0地址Timer1地址(仅C5402有)寄存器说明0024H0030HTIM定时器寄存器,减1计数器,每计数一次自动减10025H0031HPRD定时器周期寄存器,时间常数寄存器,用于重载TIM的值。当TIM减为0后,CPU自动将PRD的值装入TIM0026H0032HTCR定时器控制寄存器,包含定时器的控制和状态位*定时控制寄存器TCR

16位存储器映射寄存器,包含定时器的控制位和状态位。15~1211109~6543~0TCR0026h保留

Soft

Free

PSC

TRB

TSS

TDDR

保留位软件调试控制位

预定标计数器

重新加载位停止状态位分频系数TCR位结构图表3-2定时器控制寄存器(TCR)的功能定时器可以通过启动定时控制寄存器(TCR)完成以下操作:●设定定时器的工作方式(Soft、Free);●设定预定标计数器中的当前数值(PSC);●启动或停止定时器(TSS);●重新装载定时器(TRB);●设置定时器的分频值(TDDR)。

定时器的工作过程:由逻辑控制电路控制定时器运行。①

定时分频系数和周期数分别装入TCR和PRD寄存器中;②

每来一个定时脉冲CLKOUT,计数器PSC减1;③

当PSC减至0时,PSC产生借位信号;④在PSC的借位信号作用下,TIM减1计数,同时将分频系数装入PSC,重新计数;⑤

当TIM减到0时,定时时间到,由借位产生定时中断TINT和定时输出TOUT,并将PRD中的时间常数重新装入TIM。定时中断的周期=

CLKOUT×(TDDR+1)×(PRD+1)其中:CLKOUT-CPU时钟周期TDDR-定时器分频系数PRD-定时器时间常数读TIM和TCR寄存器,可以知道定时器中的当前值和预定标计数器中的当前值。由于读这两个寄存器要用两条指令,就有可能在两次读之间发生读数变化。若需要精确的定时测量,应在读这两值之前先关闭定时器。用定时器可以产生外围电路(如模拟接口电路)所需的采样时钟信号。一种方法是直接利用引脚TOUT的输出信号;另一种方法是利用中断,周期地读一个寄存器。2.定时时间3.定时器的用法关闭定时器:只要将TCR的TSS位置1,切断时钟输入,定时器停止工作,减小功耗定时器初始化:(1)将TCR的TSS位置1(关闭定时器)(2)加载PRD(3)加载TCR(使TDDR初始化,令TSS位为0,TRB位置1),启动定时器开放定时中断:(1)将IFR中的TINT位置1,清除尚未处理完的定时器中断(2)将IMR中的TINT位置1,开放定时中断(3)将ST1中的INTM位清0,从整体上开放中断复位时:TIM和PRD都置成FFFFH,定时器的分频系数TDDR置0,定时器开始工作*【例】定时器自动装载定时。TSS=0:启动定时器;TRB=1:自动装载;TDDR=Ah:分频系数10

soft=1,free=0:计数器减至0时,停止工作;TCR=0AAAH。定时周期:0101H;清除尚未处理完的定时器中断:IFR=0008H;

开放定时器中断:IMR=0008H。

STM#0000H,SWWSR

;不插等待时间STM#0010H,TCR

;TSS=0关闭定时器

STM#0101H,PRD

;加载周期寄存器(PRD)

STM#0AAAH,TCR;装入定时器控制字,启动定时器

STM#0080H,IFR;消除尚未处理完的定时器中断

STM#0080H,IMR

;开放定时器中断

RSBXINTM;开放中断返回本节3.5.3主机接口主机接口(HPI,HostPortInterface)是C54xDSP系列定点芯片内部具有的一种并行接口部件,

通过它可以连接到标准的微处理器总线。主机接口通常在主机和DSP内核之间共享一块可以访问的位于DSP器件上的存储器。TMS320C54xDSP上配置的是一个8位HPI接口,其内部简化框图如图3-23所示。主机和DSP可独立地对HPI接口操作,通过主机接口,可实现主机与DSP片内存储器之间信息的高速交换。主机是HPI的主控者,HPI作为一个外设与主机相连接,使主机的访问操作很容易。主机接口包括一个8比特的双向数据总线、各种控制信号及3个寄存器(HPIC、HPIA和HPID)。片外的主机通过修改HPI控制寄存器(HPIC)设置HPI的工作方式,通过设置HPI地址寄存器(HPIA)来指定要访问的片内RAM单元,通过读/写数据锁存器(HPID)来对指定存储器单元读/写。主机通过HCNTL0、HCNTLl管脚电平选择3个寄存器中的一个。主机和C54xDSP都可以访问HPIC。图3-23TMS320C54xDSPHPI内部简化框图地址寄存器

HPI的外部接口为8位的总线,通过两个连续的8位字节组合在一起形成一个16位字,HPI就可为C54xDSP提供16位的数。当主机使用HPI寄存器执行一个数据传输时,HPI控制逻辑自动执行对一个专用2K字的C54xDSP内部的双寻址RAM的访问,以完成数据处理。然后C54xDSP可以在它的存储器空间读写数据。HPIRAM也可以用作通用目标双寻址数据或程序RAM。图3.24主机与TMS320C54xDSP主机接口的连接

主机的接口采用8条数据线、两条地址线、一条读/写线和一条数据锁存和选通线,还有一个中断连接以使DSP能向主机提出新的数据申请,虽然没有主机向DSP申请的中断连接,但在主机写新数据时会自动产生主机向DSP的中断申请。HPI与主机的连接*表3-29HPI-8接口信号名称及其功能返回本节3.5.4串行口

’C54x为用户提供了丰富的同步串行口,可与双向串口器件实现高效的串行通信。

’C54x的串行口有四种类型:

标准同步串口SP缓冲同步串口BSP多路缓冲串口McBSP时分多路同步串口TMD

功能是提供器件内外数据的串行通信,串行通信是指发送器将并行数据逐位移出成为串行数据流

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论