一种总线控制方法及使用该方法的设备 本发明涉及一种总线控制方法及设备。更具体地,在多个装置通过一公用总线而被访问的情况下,本发明涉及一种用于控制各装置的总线周期的方法及使用该方法的设备。
例如PC机的各种数据处理设备通常有中央控制该整个设备的微处理器。一微处理器通过例如局部总线和系统总线的总线而被连至多个存储器和I/O装置。在近来的微处理器中,通常安装有一超高速缓冲存槠器和一有关通信功能的电路。然而,对于不是超高速缓冲存储器或I/O装置的其它存储器,微处理器通过执行一通常的总线周期来访问它们。
图4为在Hitachi single chip RISC microcomputer SH7032,SH7034,HD6417032,HD6477034,and HD6437034 hardware manuals(third edition)”一文的125页上所叙述的总线周期的时间图。在该图中,CK表示该微机的操作时钟,及A21~A0为用于寻址外部装置的地址。*CSn表示当被划分成多个空间的地址空间的第n空间(以下简称为地址空间n)被访问时所断言的一组件选择,及*RD为一在低信号电平上是有效地读出命令。AD15~0表示数据。以下,带有前缀*的信号为在低信号电平上有效的信号。
在图4中,时钟CK的一周期等于各状态T1或T2。如果结构是尽可能地简单,各装置在逐个的基础上被指定给各地址空间n,并且该地址空间n变为该装置的一专有空间。因此,各装置具有与一组件选择*CS的联系。
图4中微机的一个特点在于它能改变一读出命令*RD的断言定时。如图中所示,如果RDDTY=0,该断言定时被设置成略微较晚,而如果RDDTY=1,该断言定时被设置成略微较早。该信号RDDTY可为各地址空间n而被分别地设置。根据该说明书的叙述,对一外部装置的访问时间可通过设置RDDTY=1而被设置得较长。
对于上述微机,读取命令的断言定时可为待被访问的各装置而被分别设置。这是一种考虑到对一装置的访问时间的技术。
另一方面,当设计有关总线周期的定时时,在一些情况下应考虑一装置的禁止输出的时间。一输出禁止时间是一从对该装置的读出命令的求反定时到当该装置的数据缓冲器实际变为OFF以使该装置的一输出完全浮动时的定时的时间。如果该输出禁止时间较长且下一总线周期是一写周期,例如,在该装置的输出与一写数据之间的总线上发生冲突。这会导致该装置的能耗增加及一较低的长期可靠性。即使当下一总线周期为一读周期时,两装置的输出可能会发生冲突。如果一读取命令被较早地求反,数据冲突的可能性将被降低。然而,对于普通的IC,最低的输出禁止时间被设置成属于标准的0~n个ns。因此,在该数据被接收之前,该数据可能是浮动的。设计一待被早些求反的读出命令通常是危险的。因此,在某些情况下,考虑到输出禁止时间的设计是非常困难的。
在图4所示的微机的情况下,一读出命令的无效时间可通过RDDTY=0而被延长。因此,如果读周期被重复。来自一装置的读出数据的输出定时较迟移位,且在该数据与来自预先选择的一装置的读出数据之间的数据冲突的可能性被降低,然而,如果一写周期在一读周期后到来,数据冲突不能被避免。
本发明是考虑到上述问题而提出的。本发明的目的在于提供一种总线控制方法和用于带有不同输出禁止时间的多个装置的设备,防止了数据冲突的发生同时避免了性能恶化。本发明的另一目的在于使用预设参数或类似以自动地执行这样的控制。本发明的再一目的在于提供一种总线控制方法和设备,可实现对外部电路更容易的设计。
1.有关一种总线控制方法
解决上述问题的原理是涉及紧接的前面的总线周期BCi-1对总线周期BCi进行控制。换句话说,根据在BCi-1内被访问的一装置的特性,例如其输出禁止时间,在BCi-1结束之后,如果需要,BCi的启动被延迟。在此,“装置”表示待被访问的一般目标。
通过本发明可解决现有技术的问题,因为一总线周期控制是响应于紧接前面的总线周期而被执行的。延迟一总线周期启动的一方法为插入一空闲状态。
在本发明的一方面中,在BCi-1内待被访问的一装置的特性通过涉及下而被确定的:a.当各装置被安装在一专有地址空间中时被输出的一地址,及b.在当前总线周期中等待周期数或类似。
根据本发明,仅在需要时BCi的启动被延迟。因此,可避免一数据冲突而不会导致无益的处理性能的恶化。当输出禁止时间被看作为装置的一特性时,该带有长的输出禁止时间的装置常为—低速装置。因此,当本发明被采用时,一低速装置可被确定。尽管较为简单,该方法却具有高的实用性。
在本发明的另一方面中,如果在BCi-1中具有输出数据的装置也是在BCi中输出数据的装置,BCi没有延迟地被启动。这是因为当数据从相同的单一装置被输出时,没有冲突发生。这里的装置意指包括有一微处理器或类似。因此,根据该方面,当一微处理器连续执行到一装置的写操作时,BCi将不被延迟。
2.有关总线控制设备
本发明包括有设定装置,用于设定一有关于待被访问的装置的输出禁止时间的参数,和总线控制装置,用于根据由该设定装置设定的参数,响应于在当前总线周期中被访问的装置的输出禁止时间,在该当前总线周期后插入一空闲状态。该“有关于输出禁止时间的参数”意指包括有所有参数以判断或估计该输出时间本身及该输出禁止时间是否长或短。
通过该结构,该设备可实现与上述1相同的结果。设计该设备外的电路的工作负担也被减小,因为该设备其自身考虑到了输出禁止时间。
本发明的一方面包括有判断装置,用于判断在当前总线周期内输出数据的一装置是否也为在后随的总线周期中输出数据的装置,及禁止装置,用于如果这些装置被为相同,禁止在当前总线周期后插入空闲状态。如以上1所述,当一个装置及同一装置连续输出数据时,无数据冲突发生。通过考虑到这些情况,不必要的延迟将被避免。
图1为使用作为本发明的一实施例的总线控制设备的微机的电路图。
图2为该实施例的总线控制单元的内部结构图。
图3为当一外部装置通过该实施例的微机而被访问的示例时间图。
图4为在“Hitachi single chip RISC microcomputers SH7032,SH7034,HD6417kj032,HD6477034,and HD6437034 hardwaremanual(third edition)”一文中125页上所叙述的一总线周期的时间图。
以下将参照附图,说明本发明的一优选实施例。
〔1〕结构
图1为使用作为本发明的一实施例的总线控制设备的微机的电路图。在该图中,处理器2构成了微机1的核心逻辑部分并控制整个微机。该处理器2有一地址Ai和数据Di。而且,处理器2输出一读出命令RDi,一写命令WRi和表示一总线周期的开始时间的STARTi,所有这些命令在信号电平为高时是有效的,并暂时将这些信号提供给一总线控制单元4。该总线控制单元4由其自身表示地址A,并当它为一外部装置时输出该地址。对于数据Di,总线控制单元4用作为数据收发机并连接至为一外部数据总线的数据D。在它们的名称前加有后缀“i”的信号是指微机1的内部信号。
根据地址A,总线控制单元4为第一装置6、第二装置8到第n装置10产生组件选择信号*CS1、* CS2到*CSn,其中所有的装置为外部装置。这里,一专有地址空间意指被分配用于各装置,例如
第一装置6:1000h~1FFFh
第二装置8:2000h~2FFFh
第n装置10:n000h~nFFFh因此,如果例如地址A示为“1234h”,它可被确定为对第一装置6的访问。
当总线控制单元4判断在当前总线周期BCi中被访问的装置的输出禁止时间为长时,它在该总线周期BCi及随后的总线周期BCi-1之间插入一空闲状态。因本实施例中,在生成这些空闲状态中不包括有处理器2。如果在处理器2中正执一总线周期,处理器2将在最早的定时启动随后的总线周期。在另一方面,当将插入一空闲状态时,总线控制单元4延迟这些外部装置的一总线周期的启动。因此,尽管从处理器2外部观察时该处理器2好象处于一空闲状态,在处理器2内可以正执行一总线周期。
总线控制单元4锁存全部自处理器2提供的读出命令RDi、写命令WRi和周期开始信号STARTi。总线控制单元4然后在完成空状态后迅即将所锁存的信号各自断言为这些外部装置的信号*RD、*WR和START。在该过程期间,一等待信号WAITi由处理器2所断言以中止该处理器2。
第一、二和第n装置6、8和10被连接至地址A,一用于数据D、*RD、*WR、START和相应的组件选择*CS1、*CS2和*CSn的总线。对于第一装置6。例如,如果*CS1和*RD被一起断言,在此时对应于地址A的数据被读出。当*CS1和*WR被一起断言,来自处理器2的一写数据被写在由地址A断言的装置上。根据一待被访问的装置,START信号可以不是必需地被涉及到。
图2示出了总线控制单元4的内部结构。在图2中,RDi、WRi和STARTi被输入定时控制单元20。在后面将予叙述的一空闲信号IDLEi也被输入该定时控制单元20。当该信号被求反时,*RD、*WR和START由微机1外部的装置所断言。
第一、第二和第n比较器21、22和2n接收地址A,并各自地将该地址与第一、第二和第n装置6、8和10的专有地址1×××h、2×××h和n×××h相比较,当它们相互一致时,一致性信号CS1i、CS2i和CSni被断言,并输入NAND门51、52和5n的正逻辑输入端子。
一旦利用第一、第二和第n装置6、8和10,第一、第二、第n等待寄存器31、32和3n(在图2中分别表示为“第一W”、“第二W”和“第nW”0存储待被插入的数字。这些等待数字由写给这些寄存器的数据所设定,一等待选择器60(在图2中表达为“W选择器”)被提供给这些一致性信号及来自第一、第二和第n等待寄存器31、32和3n的输出信号。例如,如果CS1i被断言,对应于该装置的等待数字,即来自第一等待寄存器31的输出信号被选择并输出给一等待计时器62(在图2表达为“W计时器”)。该等待计时器保持断言该等待信号WAITi经过对应于该输入等待数字的时钟周期数。在正插入一空闲状态时,为避免使处理器2前进至下一总线周期,在正插入一在后面将予叙述的空闲信号IDLEi时,等待计时器保持断言WAITi。
在另一方面,第一、第二和第n输出禁止时间寄存器41、42和4n(在图2中表达为“第一D”、“第二D”和“第nD”)存储有关第一、第二和第n装置6、8和10的输出禁止时间的参数。这些参数也可使用软件而被设置。当一最大输出禁止时间Tdmax被采用作为该参数,Tdmax(ns)可以下面四种方法被确定,如果这些输出禁止时间寄存器各自具有2比特位:
当Tdmax可被认作为Tdmax=…“00” (缺省)
当10<Tdmax<29ns…“01”
当30<Tdmax<49ns…“10”
当500<Tdmax…“11”
一空闲选择器64(在图2中表达为“I选择器”)被提供有这些一致性信号及来自第一、第二和第n输出禁止时间寄存器41、42和4n的输出信号(以下也被作为Tdmax码)。例如CS1i被断言时,来自第一输出禁止时间寄存器41的输出信号被选择并输出给一空闲计时器66(在图2中表达为“I计时器”)。根据该Tdmax码,空闲计时器66首先计算可覆盖该输出禁止时间的时钟周期数。如果该总线时钟频率为20MHz,1空闲状态等于50ns。因此,根据上述的4个Tdmax码,该时钟周期数如下计算:
如果该Tdmax码为“00”,则为0时钟周期
如果该Tdmax码为“01”或“10”,则为1个时钟周期
如果该Tdmax码为“11”,则为2个时钟周期。
如果该最大输出禁止时间超出50ns,换句话说,如果该Tdmax码为“11”,则不知道精确的时钟周期数,然而,100ns一般来讲是足够的,因此在这儿时钟周期数被固定在2。
空闲计时器66然后保持断言一信号IDLEio经过该时钟周期数。为使IDLEio的断言启动处于备用直至当前总线周期结束,空闲计时器66涉及WAITi,并在WAITi被断言时避免使其自身前进。IDLEio被输入给一与门70的正逻辑输入端子。
一空闲掩蔽电路68(在图2中表示为“I掩蔽电路”)接收RDi、WRi、CS1i、CS2i和CSni。该I掩蔽电路检测其中同样一装置连续地驱动该数据总线两个总线周期的状态,并断言一IMASK信号。这是因为当同样的一个装置使用—数据总线时,在该情况中不存在有数据冲突。该IMASK信号的具体断言条件如下:
当WRi在两总线周期内被连续断言时。
当RDi在两总线周期中被连续断言,且对应的一致性信号CS1i或类似信号在该两总线周期中为相同时。
前者对应于处理器2连续驱动该数据总线,而后者则是相同的外部装置连续驱动该数据总线的情况。该IMASK信号被输入与门70的一负逻辑端子,而作为与门70的输出信号的一空闲信号IDLEi被输入NAND门51、52和5n的负逻辑端子并且也被输入定时控制单元20。
一收发器72连接总线数据Di和数据D,该IDLEi信号被输入收发器72的一启动端子*EN。只要IDLEi被求反,则该收发器72处于一启动状态。该RDi信号被输入一数据方向DIR,而只要RDi被断言,则数据从外部导向内部,换句话说,数据D被输出给数据Di。
〔2〕操作
图3为当一外部装置被微机1所访问时的时间图。数字T1到T15表示用作为总线操作的参考的时钟周期。在图3中,描述了以下3个总线周期:
BC1…数据从第一装置6读出(1000h)
BC2…数据写(1004h)到第一装置6
BC3…数据写(2000h)到第二装置8。
对于第一装置6,空闲状态数为“2”而等待状态数为“3”,对于第二装置8,等待状态数为“2”。
(1)BC1
处理器2在T1开始处启动第一总线周期BC1。STARTi在T1开始处被断言,且START经定时控制单元20由外部装置断言。“1000h”出现在地址A上,且*CS1被断言,因为CS1i由第一比较器21断言。*RD也响应于RDi的断言而被断言。当*RD和*CS1都被断言时,第一装置6在周期T1的中间开始驱动数据D。然而,由于访问时间长,一有效读出数据RDATA在总线上的T4内出现。因为IDLEi在BC1内不被断言,收发器72处于启动状态,且在*RD正被断言时,数据D出现在数据Di上。
跟随CS1i的断言,已被存储在第一等待寄存器31中的等待数“3”由等待选择器60选择并被发送给等待计时器62。WAITi由等待计时器62保持断言3个时钟周期,并且在每个时钟周期的结束处将等待的计数减去1。当等待数变为0时,BC1在周期T4的最后结束。然后,由于第一装置6的输出禁止时间长,数据D上的读出数据的输出继续直至接近T6。
对于空闲状态,跟随CS1i的断言,已被存储在第一输出禁止寄存器41中的空闲状态数“2”被空闲选择器64选择并被发送给空闲计时器66。空闲计时器66跟随WAITi被求反的时钟周期而将断言IDLEi保持2个时钟周期。
(2)BC2
处理器2确认在T4的最后WAITi被求反,并通过在T5断言STARTi而开始下一个总线周期BC2。然而,由于IDLEi在此时被断言,一空闲状态被插入以用于外部总线。该空闲状态I对应于T5和T6。在这两周期中,收发器72也被停用,且数据D和数据Di被分开。结果,避免在出现于数据Di上的来自于处理器2的写数据WDATA与仍保留在数据D上的来自第一装置6的读出数据之间发生冲突。
当IDLEi被断言时,*WR和START的断言在定时控制单元20中被保持在备用,且*CS1的断言在NAND门51被保持在备用。当IDLEi被求反时,这些信号在T7中由外部装置所断言。当IDLEi被断言时,等待计时器62的递减计数也被中止,并且WAITi被保持断言。在IDLEi被求反后,等待计时器62开始递减计数,并保持断言WAITi过3个时钟周期。在周期在T10中结束。因此,处理器2自身在T5中启动该总线周期,而当从微机的外部观察时,该总线周期在T7中被启动。等待数对该总线周期为3,而等待数对于处理器为5。
(3)BC3
由于WRi在BC2和BC3中被连续断言,空闲掩蔽电路68断言IMASK信号。结果,作为来自与门70的输出信号的IDLEi被求反,且BC3在无空闲状态插入前变为一普通的总线周期。根据已被设定在第二等待寄存器32中的等待数“2”,BC3在T13中结束,T14是一自然空闲状态,该状态在于处理器2内无后随总线周期被请求时产生。
根据上述实施例,不使性能发生劣化而能避免数据冲突,因为一空闲状态仅在需要时被插入。外部电路的设计人将不再被考虑到输出禁止时间的设计所防碍。
〔3〕改型
对于本实施例,例如以下所示出的改型是可能的。
(1)在这里,处理器2和总线控制单元4被安装在该单一的微机1内,然而它们当然也可以被分开在不同的结构中。在该情况下,本发明可被采用作为一已知微处理器的外部电路。
(2)作为最大输出禁止时间的Tdmax被看作为存储在第一输出禁止时间寄存器41或类似装置中的参数。然而,一期望的空闲状态数自身也可被用作为该参数。在该情况下,由于该寄存器有2比特位,例如可规定0到3的空闲状态数。
(3)空闲状态数可使用等待数而被估算。由于带有更大量等待的一低速装置通常具有更长的输出禁止时间,因此例如等待数超出4时,可能允许空闲状态为1,而当等待数超出10时,允许空闲状态数为2。在该情况下,不需要用于第一输出禁止时间寄存器的电路或类似装置,而且具有一表格或类似物以存储来自第一等待寄存器31或类似装置的输出信号与待被插入的空闲状态数之间的关系就足够了。
(4)在本实施例中,已说明了输出禁止时间。然而,当然可能根据除输出禁止时间以外的一装置特性来延迟一后随总线周期开始。例如,如果一个装置曾被读取则在下次读取前需要恢复时间,一恢复时间可被设置以替代本发明的输出禁止时间。
仅参照优选实施例对本发明进行了描述。但可以理解能对其作出各种改型,并且期望所附权利要求可覆盖所有落入本发明的真实的精神与范围内的各种改型。