TMS320C55x的硬件结构 您所在的位置:网站首页 dsp三种硬件复位方式 TMS320C55x的硬件结构

TMS320C55x的硬件结构

2023-12-19 01:03| 来源: 网络整理| 查看: 265

 1.TMS320C55x DSP的基本结构

     1.1C55x的CPU体系

     C55x有1条32位的程序数据总线(PB),5条16位数据总线(BB、CB、DB、EB、FB)和1条24位的程序地址总线及5条23位的数据地址总线,这些总线分别与CPU相连。总线通过存储器接口单元(M)与外部程序总线和数据总线相连,实现CPU对外部存储器的访问。这种并行的多总线结构,使CPU能在一个CPU周期内完成1次32位程序代码读、3次16位数据读和两次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表示对指令缓冲队列中的指令预解码(确定指令的起始和结束位置;确定并行指令)。

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

       

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

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

3 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 0000h~00 005Fh)为存储映射寄存器(MMR)保留,相对应在程序空间有192个地址(00 0000h~00 00BFh),这段存储区为系统保留区,用户不能使用该区。

3.2 程序空间

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

     1.字节寻址(24位) 

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

字节地址 00 0100h~00 0103h 

字节0  字节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 0100h~000103h

 

A(23~16)

A(15~8)

A(7~0)

00 0104h~000107h

B(15~8)

B(7~0)

C(31~24)

C(23~16)

00 0108h~00010Bh

C(15~8)

C(7~0)

D(7~0)

E(23~16)

00 010Ch~00010Fh

E(15~8)

E(7~0)

 

 

 

      3. 程序空间的边界对齐

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

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

                                          CALL B

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

3.2 数据空间

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

      1.字寻址(23位)

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

 

字地址

100~001h 字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)



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有