加入收藏 | 设为首页 | 会员中心 | 我要投稿 | RSSRSS-巴斯仪表网
您当前的位置:首页 > 电子发烧 > 单片机学习

C54X DSP 的基本知识点

时间:2013-09-08  来源:123485.com  作者:9stone

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状态和控制寄存器。 

12累加器A和B都可分为三部分:保护位高阶位和低阶位。其中,保护位用作计算时的数据余量,以防止诸如自相关那样的迭代运算时溢出。

 13桶形移位寄存器的任务是为输入的数据定标,包括在ALU运算前对来自数据存贮器的操作数或累加器的值进行定标对累加器的值进行移位归一化处理等。

 14C54X CPU有一个17位×17位硬件乘法器,它与一个40位专用加法器相连,乘法器/加法器单元可以在一个流水线状态周期内完成一次乘法累加(MAC)运算。当ST1中的小数方式位FRCT=1,乘法器工作在小数相乘方式,乘法结果自动左移1位,以消去多余的符号位。 

15比较选择和存储单元CSSU是专为Viterbi算法设计的硬件单元,只要将ST1中的C16位置1,ALU就被配置成双16位工作方式,所有的双字指令都变成双16位的算术运算指令。ALU可以在一个机器周期内完成两个16位数的加/减运算,结果分别存放在累加器的高16位和低16位,然后可以利用CMPS指令对累加器的高16位和低16位进行比较,并选择较大者存放到指令所规定的存贮单元中。

 16状态寄存器0中,ARP字段是作为辅助寄存器指针,在间接寻址单操作数时,用来选择辅助寄存器,当DSP工作在标准方式时,不能修正ARP,它必须置“0”。

 17状态寄存器0中,DP字段称数据存贮器页指针,在直接寻址方式,若ST1中的CPL=0,该字段(9位)与指令中给出的低7位地址一起形成一个16位直接寻址存贮器的地址。

 18处理器工作方式状态寄存器PMST中的IPTR字段(9位)为中断的向量指针,它指示中断向量所驻面的128字程序存贮器的位置,DSP复位时,这9位字段全部置“1”,所以复位向量总是驻面在程序存贮器空间FF80H。

 19C54X寻址存贮器有两种基本形式:16位数和32位数。在32位数寻址时,先处理高有效字,后处理低有效字。如果寻址的第1个字处在偶地址,那么第2个字就在下一个(较高的)地址。如果寻址的第1个字处在奇地址,那么第2个字就处在前一个(较低的)地址。

 20C54X共有七种寻址方式,分别为立即寻址绝对寻址累加器寻址直接寻址间接寻址存贮器映象寄存器寻址堆栈寻址。

 21立即寻址就是在指令中已经包含有执行指令所需的操作数。 C54X中的立即数有两种形式;即短立即数和长立即数。

 22绝对寻址,就是在指令中包含有所要寻址的存贮单元的16位地址。

 23累加器寻址,就是利用累加器的数值(低16位或低23位)作为地址来读写程序存贮器。

 24直接寻址,就是在指令中包含有数据存贮器地址(dma)的低7位,由这7位dma作为偏移地址值,与基地址值(DP或SP)一道构成16位数据存贮器地址。

 25间接寻址就是利用8个辅助寄存器(AR0~AR7)中的任一个ARX中的内容作地址寻址64K字数据存贮空间中的任一个存贮单元。

 26间接寻址方式中的位码倒序寻址,就是以ARX为指针访问数据存贮器之后,再把ARX的内容加/减AR0中的内容进行指针调整时,是以位倒序的方式进行,即进位/借位是从左到右,而不是从右到左。

 27间接寻址方式中的循环寻址,就是在存贮器中设置一个长度为R的循环缓冲区,用来保存最新的一批数据,缓冲区基地址的N个最低有效位必须为0,即N是满足 >R的最小整数。将R值存放在循环缓冲区长度寄存器BK中,并指定一个辅助寄存器ARX指向循环缓冲区,寻址时以ARX的低N位作为循环缓冲区的偏移量进行所规定的寻址操作,并根据以下循环寻址方法修改偏移量,再返回ARX的低N位。

 If0≤index+step
 Index=index+step
Elseif index+step≥BK 
index=index+step-BK 
Elseif index+step<0
index=index+step+BK 

注:循环缓冲区的有效基地址即ARX的低N位为0时所得值;尾地址就是用BK的低N位代替ARX的低N位所得到的,循环缓冲区的索引index就是ARX的低N位,步长step(必须小于BK)可以±1,也可由AR0或长立即数给定。 

28存贮器映象寄存器寻址是用来修改存贮器映象寄存器的内容,而不改变当前的DP或SP的值。可以有两种方式来产生MMR的地址。
①直接寻址方式:不管DP或SP为何值,数据存贮器的高9位地址均置0,利用指令中给出的低7位地址访问MMR;
②间接寻址方式:数据存贮器的高9位地址被置0,用当前辅助寄存器中的低7位寻址MMR,寻址后当前辅助寄存器的高9位被迫置为“0”。

29堆栈寻址,就是利用堆栈指针SP来寻址。 

30C54X的程序计数器PC是一个16位计数器,其中的内容为即将取指的某条指令的代码(包括立即数系数表)在程序存贮器中的地址。 复位时,(PC)=FF80H,顺序执行程序时,PC是按PC+1方式修改,对于分支转移指令,子程序调用与返回中断等操作,都将强行改变PC的内容。

31C54X的指令系统中条件操作指令有条件分支转移指令条件执行指令XC条件存贮指令条件调用与返回指令。 

32C54X有两条能对其下条指令进行重复操作的指令RPT和RPTZ,重复执行的次数等于重复计数器的内容(RC)+1。RC中的内容不能编程设置只能由重复指令提供的操作数加载。重复操作功能使得那些乘法/累加和数据块传送等多周期指令在执行一次之后变成单周期指令。

33单条重复指令一旦被取指译码,直到重复循环完成以前,对所有中断(包括NMI,但不包括 )均不响应,但在执行重复操作期间,如果′C54X响应HOLD信号,那么若ST1中的HM位为0,则继续操作,否则暂停操作。

 34执行块重复操作指令RPTB NEXT-1时,控制逻辑自动将(PC)+2→RSA,将NEX-1→REA,同时将1→BRAF,之后每执行一次程序块重复操作,BRC减1,直到BRC减到0,便将0→BRAF,因此,在执行块重复操作RPTB之前,必须通过装载指令把重复执行次数n-1加载到BRC。

 35上电后,且时钟电路已正常工作,在复位引脚 输入端加上至少2个机器周期的低电平,′C54X便可完成复位操作。复位后( 变成高电平)将PC置成FF80H,处理器从FF80H处取指,并开始执行程序,复位后PMST中的中断向量指针IPTR置成1FFH,ST1中的中断方式位INTM置成1,关闭所有的可屏蔽中断,中断标志寄存器IFR清0,对SP指针没有初始化。

36复位后,PMST中的MP/ 位记载MP/ 引脚的状态,如果MP/ =0,处理器便从片内ROM地址FF80H处取指开始执行程序,如果MP/ =1,处理器则从片外程序存贮器地址FF80H处取指开始执行程序。

37C54X支持硬件中断,也支持软件中断,硬件中断包括由外部中断口信号触发的外部硬件中断和由片内外围电路信号触发的内部硬件中断。软件中断是由指令INTRTRAP或RESET要求的中断。

38C54X的可屏蔽中断有外部引脚 — 输入的中断;片内外围电路,如定时器串行口并行口HPI等引起的中断。C54X的非屏蔽中断包括所有的软件中断,以及两个外部硬件中断 和 中断。硬件 中断对C54X所有操作方式都产生影响,而 中断对C54X的任何操作都不会产生影响,C54X响应NMI中中断时,所有其它中断被禁止。

 39当一个中断出现的时候,IFR中的相应中断标志位置1。直到中断得到处理为止,或C54X复位( 为低电平),或将1写到IFR中的相应位,或利用相应的中断号执行INTR指令。

40C54X中开放可屏蔽中断的条件是ST1中的INTM位=0,IMR中的相应位为1。而非屏蔽中断不受INTM位的影响,且在IMR寄存器中无相应标志位。

 41INTR软件中断是不可屏蔽的中断,它不受ST1中的中断屏蔽位INTM的影响,当CPU响应INTR中断时,INTM位置1,关闭其它可屏蔽中断。而TRAP指令也是不可屏蔽中断,但它不影响INTM位的状态。

42RESET指令也是一种不可屏蔽的软件中断,它不受INTM位的影响,但指令执行后将INTM位置1。硬件复位对ST0ST1及PMST均产生影响,而软件复位不影响PMST。

43C54X对于可屏蔽中断,响应的条件是:中断优先级别最高ST1中的INTM位为0,IMR中的相应位为1。

44C54X中,中断向量地址是由PMST中的IPTR(中断向量指针9位)作为高9位和中断向量序号(5位左移2位低位补0)作为低7位所组成。

45C54X允许紧跟在延迟分支转移指令后面的2条单字,或一条双字指令先执行完毕,从而使延迟分支转移指令变成一条2周期指令。

 46C54X片内的双寻址存贮器DARAM分成若干独立的存贮器块,允许CPU在单个周期内对其访问2次,意即:
①在单周期内允许同时访问DARAM的不同块;
②允许处于流水线同一级的两条指令分别访问两个存贮器块;
③允许处于流水线不同级上的两条指令访问同一存贮器块。均不会发生时序上的冲突。 

47为什么允许CPU在单周期内访问DARAM 2次?这是因为C54X规定对DARAM访问,有的在前半周期,有的在后半周期。其中取指和读第一个数据是安排在前半周期。而读第二个数据和写数据是安排在后半周期。因此,如果CPU同时(都在前半或后半周期)访问DARAM就会造成时序上的冲突。此时CPU可通过将写操作延迟一个周期或者插入一个空周期的办法,自动解决时序上的冲突。

48C54X的单寻址存贮器SARAM也是分块的,CPU可以在单个周期内对每个存贮器块访问一次,但不能同时访问同一个存贮器块。否则就会出现时序上的冲突。此时,将另一次寻址操作自动地延迟到下一个周期,于是导致了流水线等待1个周期。

 49、由于CPU的资源是有限的,当某一资源同时被一个以上流水线级访问时就可能发生时序上的冲突,其中有些冲突可以由CPU通过延迟寻址的方法自动缓解,有些需要由程序员重新安排指令或插入NOP指令加以解决。
 对下列存贮器映象寄存器,如果在流水线中同时对它们寻址就可能发生冲突:ARX、BK、SP、T、PMST、ST0、ST1、BRC及累加器A、B,解决冲突的办法就是在这些寄存器或字段写操作后面插入若干条NOP指令。需要插入的周期数可查阅等待周期表。
在C54X指令中,有些带有保护性操作,如STM、MVDK、MVMM、MVMD等,双字和三字指令都会提供隐含的保护周期,这样一来,有时可以不插入或少插入NOP指令了。 

50、C54X片内定时器是一个软件可编程定时器,它主要由定时器寄存器TIM、定时器周期寄存器PRD和定时器控制寄存器TCR组成,TIM是一个16位减1计数器,PRD是一个16位的时间常数寄存器。通过编程可以控制定时器产生定时中断,定时中断的周期为CLKOUT×(TDDR+1)×(PRD+1) 

51、对定时器初始化编程步骤 

(1)先将TCR中的TSS位置1,关闭定时器;
(2)加载PRD;
(3)重新加载TCR(使TDDR初始化,令TSS位为0,以接通CLKOUT;TRB位置1,以产生正脉冲信号,加载定时器时间常数),启动定时器。 

要开放定时器中断,必须(设STI中的INTM=1): 

⑴将1写到IFR中TIN位,该位变成0,清除尚未处理完的定时器中断;
⑵将IMR中的TINT位置1,开放定时器中断;
⑶将STI中的INTM清0,从整体上开放中断(开放所有可屏蔽中断)。 

52、时钟发生器为C54X提供时钟信号。时钟发生器由内部振荡器和锁相环(PLL)电路两部分构成。PLL兼有频率放大和信号提纯的功能,所以C54X的外部频率源的频率可以比CPU的时钟频率低,这样就能降低因高速开头时钟所造成的高频噪声。 

53、C54X有两种形式的PLL:硬件配置的PLL和软件可编程PLL。所谓硬件配置的PLL,就是通过设定′C54X的3个引脚CLKMD1、CLKMD2和CLKMD3的状态,选定时钟方式。 

软件可编程PLL,通过软件编程可以选择以下两种时钟方式之一:
①PLL方式,这是靠PLL电路将移入时钟CLKIN乘以从0。25~15共31个系数中的一个系数作为CPU时钟。
②DIV方式,将输入时钟CLKIN除以2或4提供给CPU,这时所有的模拟电路包括PLL电路都关断,功耗最小。 

54、软件可编程PLL,在芯片复位时,时钟方式由3个引脚CLKMD1、CLKMD2、CLKMD3的状态决定。复位后可以对16位的时钟方式寄存器CLKMD编程加载,以配置成所要求的时钟方式。 

55、在PLL锁定之前,它是不能用作C54X时钟的,为此可以通过对CLKMD寄存器中的PLLCOUNT 8位字段编程,以自动延迟定时直到PLL锁定为此。这主要靠PLL中的锁定定时器,它是一个8位减1计数器。当时钟发生器从DIV工作方式转移到PLL工作方式时,锁定定时器工作,当CLKMD中的PLLCOUNT字段的计数值加载给PLL锁定定器后,每来16个输入时钟CLKIN计数器减1,直到减到0,PLL才开始对C54X定时,所以锁定延迟时间的设定范围为(0~255)×16×CLKIN个周期。 

56、PLL锁定时间与CLKOUT频率的关系如图1-35所示。由CLKOUT的值可以从图上求得锁定时间,有了锁定时间,便可按下式求出PLLCOUNT的值了:
PLLCOUNT(十进制数)>锁定时间/16×TCLK IN

57、主机接口HPI是一个8位并行口,用来与主设备或主处理器接口。外部主机是HPI的主控者,它可以通过HPI直接访问CPU的存储空间,包括存贮器映象寄存器。HIP是主机的一个外围设备。C54X与主机传送数据时,HPI能自动地将外部接口传来的连接的8位数组合成16位数后传送给C54X。 

58、HPI主要由HPI存贮器(HPI RAM)、HPI地址寄存器(HPIA)、HPI数据锁存器(HPID)、HPI控制寄存器(HPIC)和HPI控制逻辑五个部分组成。HPI RAM为2K字DARAM,主要用于C54X与主机之间传送数据,也可作为双寻址RAM或程序RAM。HPIA只能被主机寻址,寄存器中存放的是主机要访问的HPIRAM单元地址。HPID也只能被主机直接访问,其中的内容是主机当前读/写HPI RAM的数据。HPIC可被C54X也可被主机访问。 

59、HPI有两种工作方式:共用寻址方式SAM和仅主机寻址方式HOM。在共用寻址方式下,主机和C54X都能寻址HPI RAM,在仅主机寻址方式下,仅能让主机寻址HPI RAM,如果工作时序周期发生冲突,则主机有更高优先权。C54X等待一个周期。 

60、HPI存贮器地址的自动增量特性(使引脚HCNTL1、HCNTL0=01,进入地址自动增量方式),可以用来连续寻址HPI RAM,在自动增量方式,每进行一次读操作,都会使HPIA事后增1,每进行一次写操作,都会使HIPA事先增1。 

61、HPIC寄存器是一个16位的寄存器,其中有4个状态位控制着HPI的操作。由于主机接口总是传送8位字节,在主机这一边就以相同内容的高字节与低字节通过8位HPI数据总线传送给HPIC(选择HCNTL1和HCNTL0均为0)。在′C54X这一边HPIC的高位是不用的,控制/状态位都在低4位,寻址HPIC的地址为002CH。 

62、C54X具有高速、全双工串行口,它有三种形式:标准同步串行口SSP、缓冲串行口BSP和时分多路串行口TDM。′C54X的串行口都是双缓冲的。 

63、标准同步串行口SSP是由16位数据接收寄存器DRR、数据发送寄存器DXR、接收移位寄存器RSR、发送移位寄存器XSR以及控制电路所组成。收、发部分还有与之相关的时钟、帧同步脉冲信号,串行数据可按8位字节或16位字转换。 

64、缓冲串行口BSP是在标准同步串行口的基础上增加了一个自动缓冲单元ABU,它是一种增强型的标准串行口。ABU利用独立于CPU的专用总线,让串行口直接读/写C54X的内部存贮器。 

65、BSP有两种工作方式:非缓冲方式和自动缓冲方式。当工作在非缓冲方式时ABU是透明的,数据传送操作与标准同步串行口一样,串行口产生以字为基础的中断加到CPU,作为接收和发送中断。当工作在缓冲方式时,串行口直接与C54X内部存贮器进行16位数据传送。 

66、时分多路串行口TDM是将时间间隔分成若干个子间隔,按事先规定,每一个子间隔表示一个通信信道,C54X TDM最多可以有8个TDM信道可用,每个器件可以用1个信道发送数据,用1个或多个信道接收数据。 

67、TDM串行口也有两种工作方式:非TDM方式和TDM方式,当工作在非TDM方式时,其功能与标准同步串行口是一样的。 

68、标准同步串行口的工作原理?接口操作受串行口控制寄存器SPC控制。 

69、C54X通过外部总线与外部存贮器以及I/O设备相连,外部总线由数据总线、地址总线以及一组控制信号线所组成。当CPU寻址片内存贮器时,外部数据总线呈高阻状态,地址总线均保持先前的状态,如果PMSR中的地址可见位AVIS=1,那么CPU执行指令时的内部程序存贮器的地址就出现在外部地址总线上,同时指令地址采集信号IAQ有效。 通过READY信号和片内软件可编程等待状态发生器,可以使处理器与慢速的存贮器及I/O口设备接口。当外部设备需要寻址′C54X的外部程序、数据和I/O空间时,可以利用HOLD和HOLDA信号,达到控制′C54X的外部资源的目的。 

70、C54X外部是单总线结构,每个周期只允许进行一次寻址,否则就会发生流水线冲突,因此C54X规定了流水线各阶段操作的优先级别:数据寻址比程序寻指有较高的优先权,在所有的CPU数据寻址完成以前程序存贮器取指操作是不可能开始的。 

71、C54X片内有两个部件——等待状态发生器和分区转换逻辑电路,控制着外部总线的工作。软件可编程等待状态发生器可以将外部总线周期延长多达7个机器周期,如果外部器件要求插入7个以上的等待周期,则可以利用硬件READY线来接口,当所有的外部寻址都配置在0等待状态时,加到等待状态发生器的时钟被关断。 

72、C54X将程序空间和数据空间都分成两个32K字块,I/O空间由一个64K字块组成。软件等待状态寄存器每3位一个字段,共5个字段,分别对应这5个存贮空间,用来定义各个空间插入等待状态的数目0~7。 

73、可编程分区转换逻辑允许C54X在外部存贮器分区之间切换时不需在外部为存贮器插入等待状态。当跨越外部程序或数据空间中的存贮器分区界线寻址时,分区转换逻辑会自动地插入一个周期。 

分区转换控制寄存器BSCR中的分区对照位4位字段,决定外部存贮器分区的大小。 在下列几种情况下,分区转换逻辑可以自动插入一个附加的周期。
①当PS—DS位置1时,一次程序存贮器/数据存贮器读之后,紧跟着一次数据存贮器/程序存贮器读操作。
②一次程序存贮器或数据存贮器读操作之后,紧跟着对不同的存贮器分区的另一次程序存贮器读或数据存贮器读。
③对C548和C549,一次程序存贮器读之后、紧跟着对不同页进行另一次程序存贮器读操作。


分享到:
来顶一下
返回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
栏目导航->单片机学习
  • 电子应用基础
  • 电源技术
  • 无线传输技术
  • 信号处理
  • PCB设计
  • EDA技术
  • 单片机学习
  • 电子工具设备
  • 技术文章
  • 精彩拆解欣赏
  • 推荐资讯
    使用普通运放的仪表放大器
    使用普通运放的仪表放
    3V与5V混合系统中逻辑器接口问题
    3V与5V混合系统中逻辑
    数字PID控制及其改进算法的应用
    数字PID控制及其改进
    恶劣环境下的高性价比AD信号处理数据采集系统
    恶劣环境下的高性价比
    栏目更新
    栏目热门