2.8 ’C54x的外部总线

’C54x的外部总线具有很强的系统接口能力,可与外部存储器以及I/O设备相连,能对64千字的数据存储空间,64千字的程序存储空间,以及64千字的I/O空间进行寻址。独立的空间选择信号允许进行物理上分开的空间选择。接口的外部数据准备输入信号(READY)与片内软件可编程等待状态发生器一起,可以使处理器与各种不同速度的存储器和I/O设备连接。接口的保护方式能使外部设备对’C54x的外部总线进行控制,使外部设备可以访问程序存储空间、数据存储空间和I/O空间的资源。

2.8.1 外部总线接口

1.外部总线的组成

’C54x的外部总线由数据总线、地址总线及一组控制总线所组成,可以用来寻址’C54x的外部存储器和I/O口。表2.8.1列出了’C54x的主要外部总线接口信号。

外部接口总线是一组并行接口。它有两个互相独立,且相互排斥的选通信号信号用于访问外部程序或数据存储器,用于访问I/O设备。R/读/写信号则控制数据的传送方向。

READY和片内软件可编程等待状态发生器允许CPU与不同速度的存储器及I/O设备进行数据交换。当与慢速器件通信时,CPU处于等待状态,直到慢速器件完成了它的操作,并发出READY信号后才继续运行。

表2.8.1 ’C54x的主要外部总线接口信号

信号可以使’C54x工作在保持方式,将外部总线控制权交给外部控制器,直接控制程序存储空间、数据存储空间和I/O之间的数据交换。

CPU寻址片内存储器时,外部数据总线处于高阻状态,而地址总线及存储器选择信号(PS、)均保持以前的状态,此外,、R/信号均保持无效状态。

如果处理器工作方式状态寄存器(PMST)中的地址可见位(AVIS)置1,那么CPU执行指令时的内部程序存储器的地址就出现在外部地址总线上,同时信号有效。

2.外部总线的优先级别

’C54x的处理器共有8组16位片内总线,这8组总线包括1组程序总线PB、3组数据总线CB、DB、EB以及4组地址总线PAB、CAB、DAB、EAB。由于采用流水线结构,CPU可以同时对这些总线进行存取操作。但是,对于外部总线,CPU在每个机器周期内只能对它们寻址一次,否则,将会产生流水冲突。例如,在一个并行指令周期内,CPU寻址外部存储器两次(如一次取指,一次读操作数或写操作数),那么就会发生流水线冲突。对于下面的指令顺序,如果数据存储器和程序存储器都在片外,将会发生外部总线操作的流水线冲突。

            ST      T,*AR6               ;Smem写操作
            LD      *AR4+,A             ;Xmem和Ymem读操作
            ||MAC   *AR5+,B

由于数据和程序存储器都在片外,且一条单操作数写指令后紧跟一条双操作数读指令,将出现流水线冲突。对于这种外部总线上的流水线冲突,CPU可根据流水线操作的优先级别自动解决。外部总线操作的优先级别如图2.8.1所示。

图2.8.1 外部总线操作的优先级别

从图2.8.1可以看出,在一个机器周期内,若CPU对外部总线进行一次取指操作、两次读操作和一次写操作时,外部总线优先级别为数据寻址比程序存储器取指具有较高的优先权。在所有的CPU数据寻址完成之后,才能够进行程序存储器取指操作。

2.8.2 外部总线等待状态控制

’C54x片内有两个控制CPU等待状态的部件——软件可编程等待状态发生器和可编程分区转换逻辑电路,这两个部件用来控制外部总线工作,分别受两个存储器映像寄存器——软件等待状态寄存器(SWWSR)和可编程分区转换逻辑寄存器(BSCR)的控制。

1.软件可编程等待状态发生器

软件可编程等待状态发生器可以通过编程来延长总线的等待周期,最多可达到7~14个机器周期,这样可以方便地使’C54x与慢速的片内存储器和I/O器件接口。若外部器件要求插入的等待周期大于7~14个机器周期时,可以利用硬件READY线来实现。当所有的外部器件都配置在0等待状态时,加到等待状态发生器的内部时钟将被关断,器件工作在省电状态。

(1)软件等待状态寄存器SWWSR

软件可编程等待状态发生器受16位软件等待状态寄存器SWWSR的控制,它是一个存储器映像寄存器,其数据空间的地址为0028H。

’C54x的外部扩展程序空间和数据空间分别由两个32千字的存储块组成,I/O空间由64千字块组成。这5个字块空间在SWWSR中都相应地有一个3位字段,用来定义各个空间插入等待状态的数目,如图2.8.2所示。

图2.8.2 SWWSR寄存器

在SWWSR中,每3位字段规定的插入等待状态的最小数为0(不插等待周期),最大数为7(111B)。表2.8.2列出了SWWSR寄存器各字段功能的详细说明。复位时,SWWSR=7FFFH,使外部存取状态为最大等待周期。这样能确保处理器初始化期间,CPU能够与外部慢速设备正常通信。

表2.8.2 SWWSR寄存器各字段的功能

对于’C549,’C5402,’C5410,’C5420 等器件,除了有一个软件等待状态寄存器 SWWSR外,还配有软件等待状态控制寄存器SWCR,它位于内存映像寄存器的002BH处。图2.8.3为SWCR寄存器结构。

图2.8.3 SWCR寄存器结构

SWSM 位用来确定扩展最大的等待周期。当 SWSM=1 时,等待状态由扩展最大等待状态周期决定,可以达到7~14个机器周期。

(2)等待状态发生器

图2.8.4给出了’C54x外部程序空间的等待状态发生器逻辑框图。

图2.8.4 软件可编程等待状态发生器逻辑框图

当 CPU 对外部程序存储空间进行寻址时,通过译码器将 SWWSR 中相应的字段值装载到计数器。如果这个字段值不为0,就会向CPU发出一个“没有准备好”信号,等待状态计数器启动工作。没有准备好的情况一直保持到计数器减到0和外部READY线置1为止。当计数器减到0时,C为高电平。从图2.8.4可知, =C·READY。

当计数器减到0(C=1),且外部READY也为高电平时,CPU的信号由低变高,结束等待状态。需要说明的是,只有软件编程等待状态插入 2 个以上机器周期时,CPU 才在CLKOUT的下降沿检测外部READY信号。

2.可编程分区转换逻辑

可编程分区转换逻辑允许’C54x 在外部存储器分区之间切换时,不需要外部为存储器插入等待状态。但当跨越外部程序或数据空间中的存储器分区界线寻址时,或在访问越过程序存储器到数据存储器时,可编程分区转换逻辑自动插入一个周期。

插入的附加周期可以使存储器在其他器件驱动总线之前先释放掉总线,从而防止总线竞争。分区转换由分区转换控制寄存器 BSCR 定义,该寄存器是一个存储器映像寄存器,地址为0029H。BSCR寄存器的组成如图2.8.5所示。

图2.8.5 BSCR寄存器的组成

BSCR寄存器的各位功能见表2.8.3。

表2.8.3 分区转换控制寄存器功能表

EXIO与BH位用来控制外部地址和数据总线的使用。正常操作情况下,这两位都应当置0。若要降低功耗,特别是对于那些很少使用的外部存储器,可将EXIO与BH位置1。

BNKCMP 位用来屏蔽一个地址的高 4 位,可定义外部存储器分区的大小。其取值只有 5种,分别为1111B、1110B、1100B、1000B和0000B,其他值是不允许的。

’C54x的可编程分区转换逻辑可以在下列几种情况下自动插入一个附加的周期:

● 当对程序存储器进行一次读操作之后,紧随其后对不同的存储器分区进行另一次程序存储器读或数据存储器读操作;

● 当PS~DS位置1时,读一次程序存储器之后,紧跟着进行一次数据存储器读操作;

● 当PS~DS位置位时,一次数据存储器读操作之后,紧跟着进行一次程序存储器读操作;

● 对数据存储器进行一次读操作之后,紧跟着对一个不同的存储器分区进行另一次程序存储器或数据存储器读操作;

● 对于’C548、’C549等器件,一次程序存储器读操作之后,紧跟着对不同页程序存储器进行另一次读操作。

图2.8.6给出了存储器分区转换时插入附加周期的时序图。图2.8.7给出了连续进行程序存储器读操作和数据存储器读操作之间插入附加周期的时序图。

图2.8.6 存储器读操作之间分区转换时序图

图2.8.7 程序存储器读操作和数据存储器读操作之间分区转换时序图

2.8.3 外部总线接口时序

所有外部总线的读/写操作都是在整数个CLKOUT周期内完成的。从CLKOUT信号的一个下降沿开始,到下一个下降沿所需的时间定义为CLKOUT信号的一个周期。某些不需要插入等待周期的外部总线寻址,通常需要2个机器周期,例如存储器写操作、I/O写和I/O读等操作。而存储器读操作只需要一个机器周期。如果一个存储器读操作之后紧随一次存储器写操作,或者相反,那么存储器读操作就要多出半个周期。下面以零等待状态寻址为例,介绍外部接口时序图。

存储器寻址时序图和I/O寻址时序图反映了’C54x进行存储器和I/O操作时各信号之间的时序关系,这对于正确使用外部总线接口十分重要。

1.存储器寻址时序图

图2.8.8给出了存储器读—读—写操作定时图。

图2.8.8 存储器读—读—写操作时序图

从图 2.8.8 中可以看出,CLKOUT 开始时,=1,==0,第一个周期进行第一次程序存储器读操作,第二个周期进行第二次程序存储器读操作,而第三个周期为读—写转换周期。在此周期内由低变高,而由高变低,为数据写做准备。第四个周期完成写操作。整个读—读—写操作过程需要4个时钟周期。

图2.8.9是程序空间插入一个等待周期的存储器读—读—写操作的时序图。

图2.8.9 插入等待周期的存储器读—读—写操作时序图

通常情况下,存储器读操作需要1个周期,扩展后插入一个周期,成为2个周期,而数据空间写操作仍为2个周期。

图 2.8.10 给出了由控制的无等待周期的存储器写—写—读操作的时序图。当由低变高后,写操作的地址线和数据线继续保持约半个周期的有效。当R/改变时,在每个写周期结束瞬间变为高电平,以防止存储器被再次改写。因此,每次存储器写操作需要2个机器周期,而仅随其后的读操作也需要2个周期。

图2.8.10 存储器写—写—读操作时序图

2.I/O寻址时序图

在没有插入等待周期的情况下,对I/O设备读/写操作时,分别需要占用2个周期。通常情况下,地址线变化发生在CLKOUT的下降沿。只有当I/O寻址之前是一次存储器寻址,则地址总线的变化发生在上升沿。的低电平发生在时钟的上升沿到下一个上升沿之间。

图2.8.11为没有插入等待周期的I/O读—写—读操作时序图。

图2.8.11 并行I/O口读—写—读操作时序图

在不插入等待周期的情况下,I/O的读/写操作分别需要2个时钟周期。

图2.8.12是插入一个等待周期的I/O口读—写—读操作时序图。每次进行I/O口读/写操作时都将延长一个周期。

图2.8.12 插入等待周期的并行I/O口读—写—读操作时序图