TMS320C54xDSPCPU与外设TMS320C54xDSPCPU和外设第2页第一章综述1总线结构C54x包括8条16比特宽度的总线,其中:一条程序总线(PB)三条数据总线(CB、DB、EB)四条地址总线(PAB、CAB、DAB、EAB)2CPUC54x的CPU结构包括:40比特的ALU,其输入来自16比特立即数、16比特来自数据存储器的数据、暂时存储器、T中的16比特数、数据存储器中两个16比特字、数据存储器中32比特字、累加器中40比特字。2个40比特的累加器,分为三个部分,保护位(39-32比特)、高位字(31-16比特)、低位字(15-0比特)。桶型移位器,可产生0到31比特的左移或0到16比特的右移。17×17比特的乘法器40比特的加法器比较选择和存储单元CSSU数据地址产生器DAGEN程序地址产生器PAGEN3外设C54x包括:通用I/O引脚,XF和BIO定时器PLL时钟产生器HPI口,8比特或16比特同步串口带缓存串口,BSP多路带缓存串口,McBSP时分复用串口,TDM可编程等待状态产生器可编程bank-switching模块外部总线接口IEEE1149.1标准JTAG口TMS320C54xDSPCPU和外设第3页第二章存储器一般而言,C54x的存储空间可达192K16比特字,64K程序空间,64K数据空间,64KI/O空间。依赖其并行的工艺特性和片上RAM双向访问的性能,在一个机器周期内,C54x可以执行4条并行并行存储器操作:取指令,两操作数读,一操作数写。使用片内存储器有三个优点:高速执行(不需要等待),低开销,低功耗。1存储空间分配图(以C549为例)复位后,中断矢量表位于程序区FF80H位置,可重新定位于程序空间任何一个128字的页面(其地址高9比特即页号由PMST中IPTR确定)。2程序存储区C54x有片内ROM、DARAM、SARAM,这些区域可以通过软件配置到程序空间。当地址落在这些区域内,自动对这些区域进行访问;当地址落在这些区域以外,自动产生对外部存储器的访问。2.1片内ROM片内ROM(4K,16K,24K,28K或48K字)可能包括的内容有:引导程序,可以从串口、外部存储器、I/O口或HPI口引导256字的μ率扩展表256字的A率扩展表保留(OVLY=1)或外部(OVLY=0)保留(OVLY=1)或外部(OVLY=0)内存映象存储器程序空间程序空间数据空间地址地址地址暂时存储器000000000000005F0060007F007F007F片内DARAM(OVLY=1)或片外(OVLY=0)片内DARAM(OVLY=1)或片外(OVLY=0)片内DARAM8K字片内SARAM(OVLY=1)或片外(OVLY=0)片内SARAM(OVLY=1)或片外(OVLY=0)外部外部片内ROM16K字片内SARAM24K字外部片内ROM(DROM=1)或片外ROM(DROM=0)中断和保留区(片外)中断和保留区(片内)保留(DROM=1)或外部(DROM=0)MP/MC=1微处理器方式MP/MC=0微机方式00801FFF20007FFF8000FF7FFFFF00801FFF20007FFF8000BFFFC000FEFFFF00FFFF00801FFF20007FFF8000BFFFC000FEFFFF00FFFFTMS320C54xDSPCPU和外设第4页256字的正弦表中断矢量表2.2扩展程序存储器‘548、’549、’5410、’5420采用分页扩展的方式使可寻址程序空间达到8192K字。这一功能的实现有赖于:23条地址线扩展程序计数器XPC6条访问外部程序空间的指令当程序空间可以使用片内RAM时,程序空间的每一页分为以下两部分:最大32K字的通用块和32K字的专有块。通用块为所有页共享。XPC寄存器指示选定页,复位后,初始化为0。影响XPC的6条指令是:FB[D]-长跳转指令FBACC[D]-长跳转指令,跳转地址由A或B中内容确定FCALA[D]-长调用指令,子程序地址由A或B中内容确定FCALL[D]-长调用指令FRET[D]-长返回指令FRETE[D]-长中断返回指令其它的指令不修改XPC寄存器,而在当前页中做内部访问。3内存映象寄存器(以‘549为例)0IMR中断屏蔽寄存器1IFR中断标志寄存器2-5-测试保留6ST0状态寄存器07ST1状态寄存器18AL累加器A低字(15-0比特)9AH累加器A高字(31-16比特)AAG累加器A保护位(39-32比特)BBL累加器B低字(15-0比特)CBH累加器B高字(31-16比特)DBG累加器B保护位(39-32比特)ET乘法寄存器FTRN传送寄存器10-17AR0-AR7辅助寄存器ARnn=0~718SP堆栈指针19BK循环缓存区大小寄存器1ABRC块重复计数器1BRSA块重复开始地址1CREA块重复结束地址1DPMST状态寄存器TMS320C54xDSPCPU和外设第5页1EXPCPC扩展寄存器1E-1F-保留20BDRR0带缓存串口0数据接收寄存器21BDXR0带缓存串口0数据发送寄存器22BSPC0带缓存串口0控制寄存器23BSPCE0带缓存串口0控制扩展寄存器24TIM定时器计数器25PRD定时器周期寄存器26TCR定时器控制寄存器27-保留28SWWSR等待状态产生寄存器29BSCRBank-switching控制寄存器2A-保留2BXSWR扩展等待状态寄存器2CHPIC主机接口控制寄存器2D-2F-保留30TRCNTDM串口数据接收寄存器31TDXRTDM串口数据发送寄存器32TSPCTDM串口控制寄存器33TCSRTDM串口通道选择寄存器34TRTATDM串口接收发送寄存器35TRADTDM串口接收地址寄存器36-37-保留38AXR0ABU0发送地址寄存器39BKX0ABU0发送缓冲大小寄存器3AARR0ABU0接收地址寄存器3BBKR0ABU0接收缓冲大小寄存器3CAXR1ABU1发送地址寄存器3DBKX1ABU1发送缓冲大小寄存器3EARR1ABU1接收地址寄存器3FBKR1ABU1接收缓冲大小寄存器40BDRR1带缓存串口1数据接收寄存器41BDXR1带缓存串口1数据发送寄存器42BSPC1带缓存串口1控制寄存器43BSPCE1带缓存串口1控制扩展寄存器44-57-保留58CLKMD时钟方式寄存器59-5F-保留下面着重对三个状态寄存器作一简要说明。3.1ST0寄存器TMS320C54xDSPCPU和外设第6页ST0结构为:15-1312111098-0ARPTCCOVAOVBDPARP-辅助寄存器指针TC-测试/控制位,存储了ALU测试位操作的结果,受BIT,BITF,CMPM,CMPR,CMPS,SFTC指令的影响C-如果加法产生进位C为1,减法产生借位C为0。ADD指令只能置位C,而SUB指令只能清COVA-累加器A溢出标志OVB-累加器B溢出标志DP-数据存储空间页标志,由DP指定页,在此页中采用直接寻址指令。其绝对地址为DP指示的高9位加上直接寻址指令中的地址为其低7位构成。3.2ST1寄存器ST1结构为:151413121110987654-0BRAFCPLXFHMINTM0OVMSXMC16FRCTCMPTASMBRAF-块重复指示。BRAF=1,块重复操作。CPL-编译器模式,指示相关直接寻址选用指针。CPL=0,使用DP指针;CPL=1,使用SP指针。XF-指示外部引脚XF状态。HM-挂起方式。指示CPU响应HOLD信号的方式。HM=0,外部接口呈高阻;HM=1,CPU停机。INTM-全局中断控制位。INTM=0,开中断;INTM=1,屏蔽可屏蔽中断。0-读出值总为0。OVM-溢出处理方式。指示发生溢出时,对累加器中数值的处理。OVM=0,溢出值不变;OVM=1,载入正向最大值007FFFFFFFH或负向最大值0080000000H。SXM-符号扩展方式。SXM=0,符号不扩展;SXM=1,数据被ALU使用前先行符号扩展。C16-C16=0,ALU操作采用双精度方式(全32位方式),C16=1,ALU操作采用双16位方式。FRCT-小数模式。FRCT=1,乘法器输出左移一位补偿多余的符号位。CMPT-兼容模式。CMPT=0,ARP在只有单数据存储器操作数的间接寻址方式中不更新,在这种方式下,ARP必须总置0;CMPT=1,ARP在上述条件下更新,除非使用AR0。ASM-累加器移位数。规定了移位范围-16-15,用于并行存储TMS320C54xDSPCPU和外设第7页指令STH、STL、ADD、SUB和LD。3.3PMST寄存器ST1结构为:15-76543210IPTRMP/MCOVLYAVISDROMCLKOFFSMULSSTIPTR-中断矢量指针。此9位指向内存空间中以128字为单位的页首址。即中断矢量必须位于页的起始部分。复位后IPTR为1FFH,指向FF80H的位置,可重新定义到任何页。MCMP/-微机/微处理器模式。MCMP/=0,微机模式,片内ROM可访问;MCMP/=1,微处理器模式,片内ROM不可访问。OVLY-片内RAM是否配置入程序空间。OVLY=0,片内RAM不配置入程序空间;OVLY=1,除00-7FH外,片内RAM配置入程序空间。AVIS-地址显示模式。控制对内部程序访问时,地址数据是否显示在地址线上。AVIS=0,不显示;AVIS=1,显示。DROM-数据ROM配置。DROM=0,片内ROM不配置在数据空间;DROM=1,部分片内ROM配置在数据空间。CLKOFF-CLKOUT关闭。CLKOFF=1,CLKOUT输出禁止,保持高电平。SMUL-乘法溢出处理。当SMUL=1,且OVM=1,FRCT=1时,对MAC(乘累加)和MAS(乘累减)指令的操作基于ETSIGSM规范。体现在在小数模式下,在进行后续加/减之前,8000H×8000H的结果被调整为7FFFFFFH。这等同于在OVM=1下MPY+ADD指令。如果只有OVM=1,而SMUL不为1,只在加/减结果后作溢出调整。SST-存储溢出处理。当SST=1,累加器中数据在存储到数据空间之前进行溢出调整。影响指令有:STH,STL,STLM,DST,ST||ADD,ST||LD,ST||MACR[R],ST||MAS[R],ST||MPY和ST||SUB.步骤是:1)依据指令,累加器中数据完成左移或右移。2)40比特值根据SXM位调整为32位。SXM=0(不符号扩展),若值大于7FFFFFFFH,取7FFFFFFFH;若SXM=1(符号扩展),若值大于7FFFFFFFH,取7FFFFFFFH,若值小于80000000H,取80000000H。3)调整后数据存入数据空间。4)在调整过程中,累加器中数据不改变。3.4累加器的存储操作累加器中数据存储,AH和AL部分比较好办,采用STH,STL和STLM即可完成。要存储AG中的内容,则需要采用间接方式,如累加器ATMS320C54xDSPCPU和外设第8页中内容为0FF43211234H,要存储AG部分内容至TEMP存储器中,可用“STHA,-8,TEMP”指令来完成,TEMP=FF43H。TMS320C54xDSPCPU和外设第9页第三章数据寻址C54x提供七类寻址方式:立即数寻址绝对地址寻址累加器寻址直接寻址间接寻址内存映象寄存器寻址堆栈寻址下面着重介绍以下几种方式。1绝对地址寻址术语解释:dmad-数据存储地址;pmad-程序存储地址;PA-口地址;lk-长整数。绝对地址寻址包括四类:dmad寻址pmad寻址PA寻址*(lk)寻址1.1dmad寻址dmad寻址用一标号标记数据空间地址,这类指令有:MVDKSmem,dmadMVDMdmad,MMRMVKDdmad,SmemMVMDMMR,dmad如: