TMS320C55x的硬件结构

 1.TMS320C55x DSP的基本结构

     1.1C55x的CPU体系

     C55x132位的程序数据总线(PB),516位数据总线(BBCBDBEBFB)和124位的程序地址总线及523位的数据地址总线,这些总线分别与CPU相连。总线通过存储器接口单元(M)与外部程序总线和数据总线相连,实现CPU对外部存储器的访问。这种并行的多总线结构,使CPU能在一个CPU周期内完成132位程序代码读、316位数据读和两次16位数据写。C55x根据功能的不同将CPU分为4个单元,即指令缓冲单元(I)、程序流程单元(P)、地址流程单元(A)和数据计算单元(D)。

读程序地址总线( PAB )上传送 24 位的程序代码地址,由读程序数据总线( PB )将 32 位的程序代码送入指令缓冲单元 I 进行译码。
3 条读数据地址总线( BAB CAB DAB )与 3 条读数据数据总线( BB CB DB )配合使用,即 BAB 对应 BB CAB 对应 CB DAB 对应 DB 。地址总线指定 数据空间或 I/O 空间地址,通过数据总线将 16 位数据传送到 CPU 的各个功能单 元。其中, BB 只与 D 单元相连,用于实现从存储器到 D 单元乘法累加器( MAC )的数据传送。特殊的指令也可以同时使用 BB DB CB 来读取三个操作数。
2 条写数据地址总线( EAB FAB )与两条写数据数据总线( EB FB )配合使 用,即 EAB 对应 EB FAB 对应 FB 。地址总线指定数据空间或 I/O 空间地址,通 过数据总线,将数据从 CPU 的功能单元传送到数据空间或 I/O 空间。所有数据 空间地址由 A 单元产生。 EB FB P 单元、 A 单元和 D 单元接收数据,对于同 时向存储器写两个 16 位数据的指令要使用 EB FB ,而对于完成单写操作的指 令只使用 EB
1.2 指令缓冲单元(I unit)
      C55x 的指令缓冲单元由指令缓冲队列 IBQ Instruction Buffer Queue )和指令 译码器组成。在每个 CPU 周期内, I 单元将从读程序数据总线接收的 4B 程序代 码放入指令缓冲队列,指令译码器从队列中取 6B 程序代码,根据指令的长度可 8 位、 16 位、 24 位、 32 位和 48 位的变长指令进行译码,然后把译码数据送入 P 单元、 A 单元和 D 单元去执行。IBQ最大可以存放64b的待译码指令。

1.3 程序流单元(P unit)

       程序流程单元由程序地址产生电路和寄存器组构成。程序流程单 元产生所有程序空间的地址,并控制指令的读取顺序。
        程序地址产生逻辑电路的任务是产生读取程序空间的 24 位地 址。一般情况下,它产生的是连续地址,如果指令要求读取非连 续地址的程序代码时,程序地址产生逻辑电路能够接收来自 I 单元 的立即数和来自 D 单元的寄存器值,并将产生的地址传送到 PAB
       P单元中使用的寄存器分为5种类型。
      ( 1 )程序流寄存器:包括程序计数器( PC )、返回地址寄存器 RETA )和控制流程关系寄存器( CFCT )。
       2 )块重复寄存器:包括块重复寄存器 0 1 BRC0 BRC1 BRC1 的保存寄存器( BRS1 )、块重复起始地址寄存器 0 1 RSA0 RSA1 )以及块重复结束地址寄存器 0 1 REA0 REA1 )。
       3 )单重复寄存器:包括单重复计数器( RPTC )和计算单重复 寄存器( CSR )。
       4 )中断寄存器:包括中断标志寄存器 0 1 IFR0 IFR1 )、 中断使能寄存器 0 1 IER0 IER1 )以及调试中断使能寄存器 0 1 DBIER0 DBIER1 );
       5 )状态寄存器:包括状态寄存器 0 1 2 3 ST0-55 ST1-55 ST2-55 ST3-55 )。
1.4  地址流单元(A unit)
        地址流程单元包括数据地址产生电路(DAGEN)、算术逻辑电路(ALU)和寄存器组 构成。
        数据地址产生电路( DAGEN )能够接收来自 I 单元的立即数 和来自 A 单元的寄存器产生读取数据空间的地址。对于使用间接 寻址模式的指令,由 P 单元向 DAGEN 说明采用的寻址模式。
         A 单元包括一个 16 位的算术逻辑电路( ALU ),它既可以接 收来自 I 单元的立即数,也可以与存储器、 I/O 空间、 A 单元寄存器 D 单元寄存器和 P 单元寄存器进行双向通信。 ALU 可以完成算术 运算、逻辑运算、位操作、移位、测试等操作。
        A 单元包括的寄存器有以下几种类型。
       ( 1 )数据页寄存器:包括数据页寄存器( DPH DP )和接口数 据页寄存器( PDP );
        2 )指针:包括系数数据指针寄存器( CDPH CDP )、栈指针 寄存器( SPH SP SSP )和 8 个辅助寄存器( XAR0 XAR7 );
        3 )循环缓冲寄存器:包括循环缓冲大小寄存器( BK03 BK47 BKC )、循环缓冲起始地址寄存器( BSA01 BSA23 BSA45 BSA67 BSAC );
       ( 4 )临时寄存器:包括临时寄存器( T0 T3 )。
1.5  数据计算单元( D
         数据计算单元由移位器、算术逻辑电路、乘法累加器和寄存器组 构成。 D 单元包含了 CPU 的主要运算部件。
         D 单元移位器能够接收来自 I 单元的立即数,能够与存储器、 I/O 空间、 A 单元寄存器、 D 单元寄存器和 P 单元寄存器进行双向通 信,此外,还可以向 D 单元的 ALU A 单元的 ALU 提供移位后的 数据。移位器可完成以下操作:
       1 )对 40 位的累加器可完成向左最多 31 位和向右最多 32 位的移位 操作,移位数可从临时寄存器( T0 T3 )读取或由指令中的常数 提供;
        2 )对于 16 位寄存器、存储器或 I/O 空间数据可完成左移 31 位或 右移 32 位的移位操作;
       ( 3 )对于 16 位立即数可完成向左最多 15 位的移位操作。
  
        D 单元的 40 位算术逻辑电路可完成以下操作:
       ( 1 )完成加、减、比较、布尔逻辑运算和绝对值运算等操作;
       ( 2 )能够在执行一个双 16 位算术指令时同时完成两个算术操作;
       ( 3 )能够对 D 单元的寄存器进行设置、清除等位操作。
2  指令流水线
        C55x CPU采用指令流水线工作方式,C55x的指令流水线包括两个阶段:
        第一阶段是取流水线,即从内存中取出32位的指令包,放入指令缓冲队(IBQ)中,然后为流水线的第二阶段提供48位的指令包。

         

       其中PF1表示向存储器提供的程序地址,PF2表示等待存储器的响应,F表示从存储器取一个指令包并放入指令缓冲队列中,PD表示对指令缓冲队列中的指令预解码(确定指令的起始和结束位置;确定并行指令)。

       第二阶段是指执行流水线,这部分的功能是对指令进行解码,完成数据的存取和计算。

       

        流水线的第二阶段(执行流水线)

        为了解决流水冲突的问题,增加额外周期做流水保护处理。

TMS320C55x 存储空间结构    

     C55x DSP的存储空间包括统一的数据/程序空间和I/O空间。数据空间用于访问存储器和内存映射寄存器,程序空间用于CPU从存储器中读取指令,而I/O空间用于CPU与外设之间的双向通信。

3.1 存储器映射

       C55x的寻址空间为16MB,当CPU从程序空间读取程序代码时,使用24位地址,当访问数据空间时,使用23位的地址。但是在访问数据空间时,将23位地址左移一位,并将地址总线上的最低有效位(LSB)置0,使得在对数据空间或程序空间寻址时,地址总线都传送24地址。 

       数据空间被分成128个主数据页(第0页到第127页),每个主数据页的大小为64K字,指令通过7位的主数据页值和16位的偏移值共同来确定数据空间的任何一个地址。

      在第0主数据页中,前96个地址(00 0000h00 005Fh)为存储映射寄存器(MMR)保留,相对应在程序空间有192个地址(00 0000h00 00BFh),这段存储区为系统保留区,用户不能使用该区。

3.2 程序空间

      CPU读取指令时,程序空间才被访问。CPU采用字节寻址来读取变长的指令,指令的读取要和32位的偶地址对齐(地址的低两位为零)。

     1.字节寻址(24位) 

      当CPU从程序空间读取指令时,采用字节寻址,即按字节分配地址,且地址为24位。一个行宽为32位存储器的地址分配由下图说明,每个字节分配一个地址,例如字节0的地址是00 0100h,字节2的地址是00 0102h。

字节地址 00 0100h~00 0103h 

字节 字节1 字节2

     2. 程序空间的指令结构

      DSP支持8位、16位、24位、32位和48位长度的指令。表2-5和图2-9说明了指令在程序空间如何存放。在32位宽的存储器中存放了5条指令,每一条指令的地址是指操作码最高有效字节的地址,阴影部分表示没有代码。

2-5 指令长度及地址分配

   

长度(位)

   

A

24

00 0101h

B

16

00 0104h

C

32

00 0106h

D

8

00 010Ah

E

24

00 010Bh

 

2-9 存储器中的指令

字节地址

字节0

字节1

字节2

字节3

00 0100h000103h

 

A2316

A158

A70

00 0104h000107h

B158

B70

C3124

C2316

00 0108h00010Bh

C158

C70

D70

E2316

00 010Ch00010Fh

E158

E70

 

 

 

      3. 程序空间的边界对齐

     在程序空间存放指令时不需要边界对齐,当读取指令时要和32的偶地址对齐。也就是说,在读取一条指令时,CPU要从最低两位是0的地址读取32位的代码,这样的地址其最低位应是0h4h8hCh

       不过,也会遇到写入到程序计数器PC中的地址值和程序空间的读取地址不一致的情况,例如,执行一个子程序B

                                          CALL B

        假设子程序的第一条指令C的地址是00 0106hPC的值是000106h,但是读程序地址总线(PAB)上的值是32位边界地址000104hCPU00 0104h地址开始读取4字节的代码,而第一个被执行的指令是C

3.2 数据空间

      C55x DSP 采用字寻址来读 / 写数据空间的 8 位、 16 位或 32 位数据。

      1.字寻址(23位)

      CPU访问数据空间时,采用字寻址,即为每个16位的字分配一个23位宽的地址,下面说明了一行32位宽的存储器的地址分配,字0的地址为00 0100h,字1的地址为00 0101h 

 

字地址

100001h 字0 字1

       由于地址总线是24位宽,所以,当CPU/写数据空间时,23位的地址左移一位,最低位补0。例如,一条指令在23位地址00 0102h上读一个字,读数据地址总线上传送的值是00 0204h,如下所示

字地址:000 0000 0000 0001 0000 0010

读数据地址总线:0000 0000 0000 0010 0000 0100

      2.数据类型

      C55x DSP指令处理的数据类型有8位、16位和32位。

      数据空间是采用字寻址,但C55x有专门的指令可以选择字的高字节或低字节,进行8位数据的处理。字节装载指令将从数据空间读取的字节进行0扩展或符号扩展,然后装入寄存器中;字节存储指令可将寄存器中的低8位数据存储到数据空间指定的地方。

 

字节装载和字节存储指令       

   

存取的字节

   

MOV high_byte(Smem) , dst

MOV low_byte(Smem) , dst

MOV high_byte(Smem)<<#SHIFTW , ACx

MOV low_byte(Smem) <<#SHIFTW , ACx

Smem(158)

Smem(70)

Smem(158)

Smem(70)

字节装载

MOV src , high_byte(Smem)

MOV src , low_byte(Smem)

Smem(158)

Smem(70)

字节存储

        CPU存取长字时,存取地址是指32位数据的高16位(MSW)的地址,而低16位(LSW)的地址取决于MSW的地址。具体说明如下所示。

        如果MSW的地址是偶地址,则LSW的地址加1。 

       字地址

       100001h MSW LSW

       如果MSW的地址是奇地址,则LSW的地址减1

       字地址

       100001h LSW  MSW

       对于已确定地址的MSWLSW),将其地址的最低有效位取反,可得到LSWMSW)的地址。

       3.数据空间的数据结构

        下面通过实例来说明数据在数据空间是如何存储的。有7种变长的数据存储在32位宽的存储器中。

         根据表2-7和图2-10可以看出,为了存取一个长字必须参考它MSWC的存取地址是00 0102hD的存取地址是00 0105h;字地址也可以存取字节,如在地址00 0107h上,同时存放了数据F高字节)和数据G(低字节)。利用表2-6中的专用指令可以进行字节的存取。

2-7 数据长度及地址分配

   

   

A

字节

00 0100h(低字节)

B

00 0101h

C

长字

00 0102h

D

长字

00 0105h

E

00 0106h

F

字节

00 0107h(高字节)

G

字节

00 0107h(低字节)

2-10 存储器中的指令

  

   0

   1

00 0100h00 0101h

A

B

00 0102h00 0103h

C3116

C150

00 0104h00 0105h

D150

D3116

00 0106h00 0107h

E

 F

G

 

 

3.3 I/O空间

      C55x DSPI/O空间与数据/程序空间是分开的,采用16位宽的字寻址,即为每个字分配一个16位地址,其寻址范围为64K字,如下所示:

 

     地址                        I/O 空间
0000h FFFFh
64K

CPU 访问 I/O 空间时,用 DAB 读数据,用 EAB 写数据。由于 DAB EAB 都是 24 位的,所以在 16 位地址前补 0 构成 24 位地址。例如, 一个指令在地址 0102h 处读取一个字, DAB 上传送的地址是 00 0102h
4 堆栈操作
    4.1 数据堆栈和系统堆栈
C55x支持两个16位堆栈,即数据堆栈和系统堆栈
     访问数据堆栈时,CPU将SPH和SP连接成XSP
XSP包含了一个最后推入数据堆栈的23位地址,其中SPH里是7位的主数据页,SP指向该页上的一个字。
CPU在每推入一个值入堆栈前,减小SP值;从堆栈弹出一个值以后,增加SP值。在堆栈操作中,SPH的值不变。
    访问系统堆栈时CPU将SPH和SSP连接成XSSP。
XSSP包含了一个最后推入系统堆栈的值的地址
CPU在每推入一个值进堆栈前,减小SSP值;从堆栈弹出一个值以后,增加SSP值。在堆栈操作中,SPH的值不变
     SSP可以与SP关联,也可以独立于SP
     如果选择32位堆栈配置,则修改SSP与SP的方法一样
     如果选择双16位堆栈配置,则SSP与SP独立,SSP只有在自动环境切换时才能被修改
     4.22 堆栈配置
C55x提供了3种可能的堆栈配置
     一种配置使用快返回过程
     另外两种使用慢返回过程
通过给32位复位向量的第29、28位填入适当值,可以选择一种堆栈配置方式
复位向量的低24位就是复位中断服务子程序(ISR)的起始地址
    快返回与慢返回过程的区别在于CPU怎样保存和恢复两个内部存储器(即程序计数器PC和一个循环现场寄存器)的值
PC装的是I单元里1~6个字节代码的24位地址
一个8位的循环现场(loop context)寄存器存放激活循环记录
CPU执行中断或调用时,保存当前的循环现场,然后清零该寄存器,为新的子程序创建循环现场。当CPU从子程序返回时,再在该寄存器恢复原来的循环现场。
    在快返回过程里
返回地址保存在寄存器RETA中
循环现场保存在寄存器CFCT中
用专门的32位装入和存储指令可同时读/写RETA 和CFCT
    在慢返回过程里,返回地址和循环现场保存在堆栈里(在存储器里),当CPU从子程序返回时,这些数据的恢复速度取决于访问存储器的速度

5 中断和复位操作
5.1 中断概述
中断定义:由硬件或软件驱动的信号,使DSP将当前的程序挂起,执行另一个称为中断服务子程序(ISR)的任务。
C55x支持32个ISR。有些ISR可以由软件或硬件触发,有些只能由软件触发。
当CPU同时收到多个硬件中断请求时,CPU会按照预先定义的优先级对它们做出响应和处理。
中断的分类
可屏蔽中断:可以通过软件来加以屏蔽
不可屏蔽中断:不能被屏蔽
所有的软件中断都是不可屏蔽中断
 DSP处理中断的步骤
(1)接收中断请求。软件和硬件都要求DSP将当前程序挂起。
(2)响应中断请求。CPU必须响应中断。如果是可屏蔽中断,响应必须满足某些条件。如果是不可屏蔽中断,则CPU立即响应。
(3)准备进入中断服务子程序。
      CPU要执行的主要任务有:
完成当前指令的执行,并冲掉流水线上还未解码的指令
自动将某些必要的寄存器的值保存到数据堆栈和系统堆栈
从用户实现设置好的向量地址获取中断向量,该中断向量指向中断服务子程序
(4)执行中断服务子程序。
CPU执行用户编写的ISR。ISR以一条中断返回指令结束,自动恢复步骤(3)中自动保存的寄存器值。
☼  注意:
 外部中断只能发生在CPU退出复位后的至少3个周期后,否则无效;
 在硬件复位后,不论INTM位的设置和寄存器IER0、IER1的值如何,所有的中断都被禁止,直到通过软件初始化堆栈后才开放中断。
5.2 中断向量与优先级
5.3 可屏蔽中断
所有的可屏蔽中断都是硬件中断。
无论硬件何时请求一个可屏蔽中断,在一个中断标志寄存器里就有相应的中断标志置位。该标志一旦置位,相应的中断还必须使能,否则不会得到处理。
用来开放可屏蔽中断的位和寄存器
处理可屏蔽中断标准过程的基本模型
当CPU在实时硬件仿真模式下暂停时,只能处理时间临界中断。处理时间临界中断的基本模型
5.4 不可屏蔽中断
当CPU接收到一个不可屏蔽中断请求时,立即无条件响应,并很快跳转到相应的中断服务子程序(ISR)
C55x的不可屏蔽中断有:
硬件中断/RESET。如果引脚/RESET为低电平,则触发了一个DSP硬件复位和一个中断(迫使执行复位ISR)。
硬件中断/NMI。如果引脚/NMI为低电平,则CPU必须执行相应的ISR。 /NMI提供了一种通用的无条件中断DSP的硬件方法。
软件中断。所有软件中断可用表2-37所示的指令初始化。
6 硬件复位
    硬件复位后,DSP处于一个已知状态:
    所有当前指令全部终止,指令流水清空,CPU寄存器复位
然后CPU执行中断服务子程序,读复位中断向量时,CPU用32位复位向量的第29、28位来确定堆栈配置模式
7 软件复位
   软件复位只影响IFR0、IFR1、ST0_55、ST1_55和ST3_55
不影响其它寄存器
  • 16
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: TMS320C55x是一种数字信号处理器,可以使用其汇编指令来完成自相关运算。 自相关运算是一种在信号处理中常见的操作,其目的是衡量信号与其自身在不同时间点的相似程度。TMS320C55x的汇编指令集中包含了许多用于数学计算的指令,可以用来进行自相关运算。 要完成自相关运算,可以使用TMS320C55x的乘法指令和累加指令。具体而言,可以将信号在时间轴上移动一定的时间,然后与原信号进行逐点相乘,并将乘积累加起来,得到自相关函数。重复这个过程,直到覆盖整个时间范围。 需要注意的是,TMS320C55x的汇编指令是面向寄存器的,因此需要先将数据加载到寄存器中进行计算。另外,自相关运算需要进行多次重复的计算,因此需要在程序中使用循环语句来实现。 总之,使用TMS320C55x的汇编指令可以高效地完成自相关运算,这对于数字信号处理应用来说非常重要。 ### 回答2: TMS320C55x是一个数字信号处理器(DSP),其中内置了丰富的汇编指令集,可以用于各种信号处理和算法操作。要完成自相关运算,可以使用TMS320C55x的汇编指令。 首先,我们需要了解自相关运算的定义和原理。自相关是一种用于衡量信号之间的相似性的方法,它将输入信号与其自身在不同延迟下进行卷积运算。在DSP中,可以使用冲激响应函数发挥信号与其延迟版本的相似度。 为了完成自相关运算,我们可以按照以下步骤进行操作: 1. 初始化:将所需的参数和变量加载到TMS320C55x寄存器中。这些参数包括输入信号的长度,要计算的延迟范围,以及输入信号和结果的存储区域。 2. 数据加载:将输入信号加载到TMS320C55x的数据存储器中。可以使用TMS320C55x存储器访问指令(例如LDDW,LDBU等)来加载数据。 3. 自相关计算:使用TMS320C55x的乘法和累加(MAC)指令来计算自相关函数。通过逐个元素地将输入信号与其延迟版本相乘,并将结果累加到一个结果寄存器中。 4. 存储结果:将结果存储到指定的存储区域中,以供后续处理使用。使用TMS320C55x存储器访问指令将结果存储存储器中。 5. 结束:完成自相关计算后,可以将结果用于其他信号处理任务。 总结来说,使用TMS320C55x的汇编指令完成自相关运算需要初始化参数、加载输入数据、使用乘法和累加指令计算自相关函数,最后将结果存储到指定的存储区域中。这样我们可以利用TMS320C55x的高效性能和专门的指令集来完成自相关运算任务。 ### 回答3: TMS320C55x是一款数字信号处理器(DSP),拥有强大的计算能力,可用于执行各种信号处理任务,包括自相关运算。下面是使用TMS320C55x的汇编指令完成自相关运算的步骤。 首先,我们需要准备输入信号的样本数据,并将其存储在内存中的一个数组中。 然后,我们使用TMS320C55x的汇编指令来计算自相关。以下是一个可能的汇编指令示例: 1. 设置循环变量,如通过将迭代计数器初始化为信号长度减1。 2. 使用双循环结构,其中外循环负责对每个信号样本进行遍历,内循环用于执行自相关运算。 3. 在内循环中,我们使用乘法指令将当前信号样本与其他信号样本相乘,并将结果累加到一个累加器中。 4. 在外循环结束后,我们可以获得自相关运算的结果,将其存储在内存中的一个数组中。 需要注意的是,TMS320C55x的汇编指令操作与具体的TMS320C55x型号相关。因此,为了确保正确的指令操作,请参考TMS320C55x的相关文档和手册。 使用TMS320C55x的汇编指令完成自相关运算可以大大提高计算效率和性能,适用于各种信号处理应用,如音频处理、图像处理、通信等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值