混合异步同步系统的低等待时间fifo电路的制作方法

文档序号:6471172阅读:568来源:国知局
专利名称:混合异步同步系统的低等待时间fifo电路的制作方法
说明书相关申请交叉参考本申请要求通过引用而完全结合于此的2000年6月9日提交的题为“Low-Latency FIFO For Mixed-Clock Systems”的美国临时专利申请序列号60/210,642的优先权。
背景技术
发明领域本发明涉及FIFO电路,尤其涉及与以不同速度工作的子系统接口并可以是同步或异步的,并且在子系统之间具有非常长的互连延迟的低等待时间FIFO设计。
相关技术背景VLSI中的趋势正日益朝向涉及许多时钟域的“芯片上系统”。一个富有挑战性的问题是要牢固地与这些域接口。适当的解决方案,尤其是提供可靠的低等待时间的通信的那些解决方案是很少的。
在设计芯片上系统中存在两个基本的挑战问题。第1个挑战涉及在不同的定时假设下运行的系统。这些定时假设包括不同的时钟速度,以及同步和异步环境。第2个挑战涉及在系统之间的通信中具有长延迟的设计。
已经发展了许多FIFO电路和组件来处理子系统之间的定时偏差。某些设计限于处理单时钟系统。已提出了这些方法来处理时钟脉冲相位差、漂移和抖动(R.Kol等人的“Adaptive Synchronization for Multi-SynchronousSystem”,IEEE国际计算机设计会议(ICCD’98)第188-189页,1998年10月;以及M.Greenstreet的“Implementing a STARI Chip”,IEEE国际计算机设计会议(ICCD’98)会刊第38-43页,1995年)。为了处理长互连延迟,已提出了“等待时间不敏感协议”(L.Caloni等人的“A Methodology forCorrect-by-Construction Latency Insensitive Design”,1999年ICCAD);然而这些解决方案仅限于单个时钟域。
还已提出了若干设计,来处理混合定时域。一类设计方法试图使数据项和/或控制信号与接收机同步,而不干扰其时钟。尤其是Seizovic通过“同步FIFO”与同步环境的牢固的异步接口。(1994年11月,国际异步电路和系统高级研究学术讨论会上的J.Seizovic的“Pipeline Synchronization”第87-96页)。然而,该设计的等待时间与FIFO级数成比例,其实现包括昂贵的同步器。此外,他的设计要求发送器以恒定的速率产生数据项。
其它设计通过暂时修改接收机的时钟,来实现混合时钟系统的牢固接口。通过暂停或展宽接收机的本地时钟,避免了同步故障。各个通信同步系统以异步逻辑环绕,后者负责与其它系统的通信以及调整时钟。该方法改变了本地系统的时钟,并可在重启它们时引入等待时间损失。
Jerry Jex等人的美国专利号5,598,113描述了一种混合时钟FIFO电路。然而,在′113中描述的该FIFO电路在实现同步中有很大的面积开销。例如,对于每个单元,该设计具有两个同步器。
因此,在本领域中存在对一种具有低等待时间和高吞吐量的并能够在混合同步/异步环境中运行的FIFO电路的需要。
发明概述本发明的一个目的是提供一种具有低等待时间和高吞吐量的FIFO电路。
本发明的另一个目的是提供一种用于混合同步/异步环境中的FIFO电路。
本发明的又一个目的提供了一种用作与长延迟和混合同步/异步环境有关的中继站的FIFO电路。
本发明的又一个目的是提供一种FIFO电路部件,它配置成适用于某一特定的操作协议,即同步或异步,并能够连同其它部件一起使用,而不管其它部件的操作协议。
参考下面的揭示,本发明的这些和其它目的将变得清楚,并由在操作于第1操作协议下的发送器子系统与操作于第2操作协议下的接收机子系统之间对数据项的传送进行接口的FIFO电路得到实现。
置数接口配置成按照第1操作协议操作,并包括置数数据总线,以传送来自发送器子系统的数据项,以及置数数据请求输入,以接收来自发送器子系统的置数请求,使来自置数数据总线的数据项入队。取数接口配置成按照第2时域操作,并包括取数数据总线,以向接收机子系统传送数据项,以及取数数据请求输入,以接收来自接收机子系统的取数请求,把数据项从队列中取出到取数数据总线。
提供了单元阵列。各单元具有配置成从置数数据总线接收数据项并向取数数据总线传送数据项的寄存器,提供单元的状态的指示的状态控制器,配置成按照第1操作协议操作的置数部件,以及配置成按照第2操作协议操作的取数部件。
置数部件接收来自第1相邻单元的置数标记,根据置数请求、置数标记以及单元的状态,将所接收的来自置数数据总线的数据项锁存到寄存器,并将置数标记传送到第2相邻单元。取数部件接收来自第1相邻单元的取数标记,根据取数请求、取数标记以及单元的状态,从寄存器中将数据项从队列中取出到取数数据总线,并将取数标记传送到第2相邻单元。
根据本发明,已满足了上述目的,并且已实质上满足了对具有低等待时间和高吞吐量并能够在混合同步/异步环境中操作的FIFO电路的需要。通过附图和下面的说明性实施例的详细描述,本发明的另一些特征,特性和各种优点将变得更清楚。
附图简述

图1是根据本发明的同步置数接口的示意图。
图2是根据本发明的同步取数接口的示意图。
图3是根据本发明的异步置数接口的示意图。
图4是根据本发明的异步取数接口的示意图。
图5是根据本发明的第1实施例的示例性FIFO电路的示意框图。
图6是图5中所说明的FIFO电路的较详细的示意框图。
图7是根据本发明的第2实施例的示例性FIFO电路的示意框图。
图8是图7中所说明的FIFO电路的较详细的示意框图。
图9是根据本发明的第3实施例的示例性FIFO电路的示意框图。
图10是图9中所说明的FIFO电路的较详细的示意框图。
图11是关于根据本发明的同步置数协议而施加的示例性信号的时间曲线图。
图12是关于根据本发明的同步取数协议而施加的示例性信号的时间曲线图。
图13是关于根据本发明的异步置数协议而施加的示例性信号的时间曲线图。
图14是关于根据本发明的同步取数协议而施加的示例性信号的时间曲线图。
图15是根据本发明的说明图5和图6的FIFO电路的一部分的放大的示意框图。
图16是根据本发明的图15中所说明的FIFO电路的一部分的较详细的示意框图。
图17是根据本发明的图5和图6中所示的FIFO电路的满检测器的示意框图。
图18是根据本发明的图5和图6中所示的FIFO电路的第1空检测器的示意框图。
图19是根据本发明的图5和图6中所示的FIFO电路的第2空检测器的示意框图。
图20是根据本发明的图5和图6中所示的FIFO电路的另一部分的示意框图。
图21是根据本发明的图5和图6中所示的FIFO电路的又一部分的示意框图。
图22是根据本发明的说明图7和图8中所示的FIFO电路的一部分的放大的示意框图。
图23是根据本发明的图22中所示的FIFO电路的该部分的较详细的示意框图。
图24是根据本发明的图23中所示的FIFO电路的一部分的突发模式(burst-mode)说明。
图25(a)是根据本发明的图23中所说明的FIFO电路的一部分的较详细的示意框图。
图25(b)是根据本发明的图23中所说明的FIFO电路的另一部分的较详细的示意框图。
图26是根据本发明的图23中所说明的FIFO电路的又一部分的较详细的示意框图。
图27是根据本发明的图23中所说明的FIFO电路的又一部分的较详细的示意框图。
图28是根据本发明的图23中所说明的FIFO电路的一部分的皮特里网(petri-net)说明。
图29是根据本发明的说明图29中所示的FIFO电路的一部分的放大的示意框图。
图30是根据本发明的图29中所说明的FIFO电路的该部分的较详细的示意框图。
图31(a)是根据本发明的图30中所说明的FIFO电路的一部分的较详细的示意框图。
图31(b)是根据本发明的图30中所说明的FIFO电路的一部分的另一实施例的较详细的框图。
图32是根据本发明的图30中所说明的FIFO电路的突发模式说明。
图33是根据本发明的图30中所说明的FIFO电路的又一部分的较详细的示意框图。
图34是根据本发明的图30中所说明的FIFO电路的又一部分的较详细的示意框图。
图35是根据本发明的图30中所说明的FIFO电路的一部分的皮特里网说明。
图36是现有技术系统的示意框图。
图37是结合中继站现有技术系统的示意框图。
图38是现有技术中继站的示意框图。
图39是说明根据本发明的FIFO电路中继站的示意框图。
图40是根据本发明的说明图39中所说明的FIFO电路中继站的较详细的示意框图。
图41是根据本发明的图40中所说明的FIFO电路中继站的一部分的详细示意图。
图42是根据本发明的图40中所说明的FIFO电路中继站的另一部分的详细示意图。
图43是说明根据本发明的另一FIFO电路中继站系统的示意框图。
图44是根据本发明的说明图43中所说明的FIFO电路中继站系统的较详细的示意框图。
图45是根据本发明的说明图44中所说明的FIFO电路中继站的较详细的示意框图。
图46是根据本发明的图45中所说明的FIFO电路中继站的一部分的详细示意图。
图47是说明根据本发明又一FIFO电路中继站系统的示意框图。
图48是根据本发明的说明图47中所说明的FIFO电路中继站系统的较详细的示意框图。
图49是根据本发明的说明图48中所说明的FIFO电路中继站的较详细的示意框图。
图50是根据本发明的图49中所说明的FIFO电路中继站的一部分的详细示意图。
示例性实施例的详细描述根据本发明的FIFO电路处于两个子系统之间一个是产生数据项的发送器子系统,另一个是使用数据项的接收机子系统。把FIFO电路实现为相同单元的环形缓冲器,其中各单元在公共数据总线上与两个子系统通信。单元的输入和输出行为由环绕环的两个标记流指出一个用于使数据入队,一个用于使数据出队。一旦把数据排入队列,数据项就不能在环绕环中移动,从而提供了低等待时间的机会一旦将数据排入队列,在此后不久就可使数据出队。
如下所述,各FIFO电路划分成模块部件,这些模块部件可与许多不同的系统中的其它模块部件一起使用。如下将要描述的那样,可以把一组接口或FIFO电路的部数据包合在一起,以获得完整的FIFO电路,该电路可满足发送器端和接收机端所希望的定时假设。如这里所使用的,“时域”将涉及子系统是同步的还是异步的。
按照本发明,各FIFO电路具有两个接口或设计成与环境相协调的部分FIFO电路。首先,置数接口是FIFO电路的一部分,它与发送器子系统通信。图1中说明了一个同步置数接口,图3中说明了一个异步置数接口。其次,取数接口是FIFO电路的一部分,它与接收机子系统通信。图2说明了一个同步取数接口,以及图4说明了一个异步取数接口。与环境接口的FIFO电路,无论发送器和接收机子系统都是同步的,还是分别是同步的和异步的,或者异步的和同步的,都可通过连接适当对应于所呈现的条件的一个置数接口和一个取数接口来组合装配。
图1-2说明了根据本发明的两个同步接口。图1中所说明的同步置数接口10由发送器时钟信号12(CLK_put)控制。对同步置数接口10有两个输入,一个是置数请求信号14(req_put),它传送发送器的请求以使数据入队,另外一个是发送器数据总线16(data_put),它是数据项的总线。仅当FIFO电路满时,才提供全局满信号18(full),否则不提供。
图2说明了异步取数接口20,它由接收机时钟信号22(CLK_get)控制。来自接收机的用以使数据项出队的单个控制输入是取数请求信号24(req_get)。数据置于接收机数据总线26上(data_get)。仅当FIFO电路空时,才提供全局空信号28(empty)。有效数据信号30(valid_get)指示出数据项是有效的。
图3-4中说明的异步接口不与时钟信号同步。图3说明了一种具有2个输入的异步置数接口40,这两个输入与同步置数接口10(图1)的输入基本上类似。首先,提供了置数请求信号44(put_req),它传送发送器的请求,以使数据入队,以及其次提供了发送器数据总线46(put_data),用于数据项的输出。与同步置数接口10相反,当完成置数操作时,异步置数接口40提供了置数确认信号45(put_ack)。
图4中所说明的异步取数接口50,具有取数请求信号54(get_req)和输出数据总线58(get_data)。不同于类似的同步取数接口,该接口50提供了取数确认信号55(get_ack),该信号指示出完成了取数操作。
可以按照本发明来分别连接图1、2、3和4的模块接口10、20、40和50,以建立可在不同环境之间传送数据的FIFO电路。例如,如下面将参考示例性实施例FIFO电路100描述的那样,可通过使用同步置数接口10和同步取数接口20来形成在同步发送器子系统和同步接收机子系统之间接口的FIFO电路,以便形成在此称为“同步—同步”FIFO电路的FIFO电路。类似地,如下面将参考示例性实施例FIFO电路200详细描述的那样,在异步发送器子系统和同步接收机子系统之间接口的FIFO电路将结合异步置数接口40和同步取数接口20,可把该电路称为“异步—同步”FIFO。同样地,如下面参考示例性实施例FIFO电路300所描述的那样,为了在同步发送器子系统和异步接收机子系统之间接口,被称为“同步—异步”FIFO的电路可利用同步置数接口10和异步取数接口50。
图6、8和10的FIFO电路100、200和300实质上是类似的,只带有这里所注释的差异。例如,各个FIFO电路100、200和300具有相同单元的环形阵列,这些单元在公共数据总线上与置数和取数接口通信。各操作的控制逻辑分布于单元之间,并允许两个接口之间的并行。数据在单元阵列中是固定的。因此,一旦数据项加入队列,它就不被移动,并且仅从原位出队。
任何时候,在FIFO电路100、200和300中都存在两个标记,即置数标记和取数标记。由这些标记来控制FIFO电路100、200和300的输入和输出行为。置数标记用于允许使数据项入队,而取数标记用于允许使数据项出队。可把具有置数标记的单元认为是队列的“尾部”,而把具有取数标记的单元认为是队列的“头部”。在正常操作中,置数标记一般在取数标记之前。一旦一单元已使用一标记进行数据操作,在相应的操作完成之后把该标记传递给下一单元。如下面将要更详细描述的那样,标记的移动由接口请求以及FIFO的状态控制,所述状态即空或满。
FIFO电路100、200和300的结构具有若干共同的优点。由于在从输入到输出的单元之间不传递数据,所以FIFO电路具有潜在的低等待时间。因此,在数据入队的同时,它就能够用于出队。其次,FIFO电路提供潜在的低功率当数据处于FIFO电路中时,它们是固定的。最后,这些结构是可高度伸缩的;可用非常少的设计修改来改变FIFO电路的容量和数据项的宽度。
图5和图6中说明了根据本发明的第1实施例的FIFO电路100。当发送器子系统是同步的,且接收机子系统也是同步的时候,可使用FIFO电路100。因此,如图5中所说明的那样,模块化的同步置数接口10与模块化的同步取数接口20一起使用。发送器子系统根据发送器时钟信号12(CLK_put)操作,而接收机子系统根据接收机时钟信号22(CLK_get)操作。
如图6所示,FIFO电路100由相同单元170a、170b、170c和170d的环形阵列构成,并与两个外部接口通信,这两个接口即发送器数据总线16(data_put)上的同步置数接口10和接收机数据总线26(data_get)上的同步取数接口20。
同步接口10和20具有两个另外类型的部件(1)检测器,它确定FIFO电路100的当前状态,即空或满,以及(2)外部控制器,它有条件地把对数据操作的请求传递给单元阵列。如本领域中所知的那样,在一个时钟周期内完成同步接口上的一次数据操作;因此,该环境不需要明确的确认信号。然而,如果FIFO电路100变得满(或空),需要阻止该环境在置数(或取数)接口上通信。检测器和控制器操作于FIFO电路100之中,以检测异常情况,并且如果不能安全的进行数据操作,则停止相应的接口。如图6所说明的那样,满检测器72和空检测器74观测单元170a、170b、170c和170d的状态,并计算FIFO电路100的全局状态,即满或空。满检测器72的输出可传送到置数接口10,而空检测器74的输出可传送到取数接口20。置数控制器176和取数控制器178滤波对FIFO电路100的数据操作请求。从而,置数控制器176通常传送来自发送器子系统的置数请求,但当FIFO电路满时,则禁止这些请求。类似地,取数控制器178一般传送来自接收机子系统的取数请求,但当FIFO电路100空时,则阻塞这些请求。下面将更详细地描述检测器72和74,外部控制器176和178以及“空”和“满”的定义。
图7和图8说明了根据第2示例性实施例的FIFO电路200。当发送器子系统是异步的,而接收机子系统是同步的时候,可使用FIFO电路200。因此,如图7所说明的那样,模块化的异步置数接口40与模块化的同步取数接口20一起使用。发送器子系统异步地操作,而接收机子系统根据接收机时钟信号22(CLK_get)操作。
如图8中所说明的那样,FIFO电路200由相同单元270a、270b、270c和270d的阵列构成,并在公共数据总线(发送器数据总线46(data_put)以及接收机数据总线(get_data))上与两个外部接口通信,这两个外部接口是异步置数接口40和同步取数接口20。
如上述参考图6所述,同步取数接口20包括空检测器74和取数控制器278。取数控制器278一般传送来自接收机子系统的取数请求,但当FIFO电路200空时,则禁止这样的请求。与同步接口相反,诸如异步置数接口40之类的异步接口不包括满或空检测器或外部控制器。由于异步接口不根据时钟信号操作,因此它不需要产生诸如“满”或“空”之类的异常信号,来暂时停止数据操作。因此,当具有异步接口的FIFO电路变得满(或空)时,可长时期地抑制置数(或取数)确认,直到能安全执行数据操作为止。在FIFO电路200的情况下,当FIFO电路200满时,抑制取数确认信号45(put_ack),并当能安全地执行数据操作时,再传送该信号。
图9和图10说明了根据第3示例性实施例的FIFO电路300。当发送器子系统是同步的,而接收机子系统是异步的时候,可使用FIFO电路300。如图9中所说明的那样,同步置数接口10与异步取数接口50一起使用。发送器子系统根据发送器时钟信号12(CLK_put)操作,而接收机子系统异步地操作。
如图10中所说明的那样,FIFO电路300包括相同单元370a、370b、370c和370d的环形阵列,并在公共数据总线(发送器数据总线16(data_put)和接收机数据总线56(get_data))上与两个外部接口通信,这两个外部接口是同步置数接口10和异步取数接口50。
如上参考图6所述,同步置数接口10包括满检测器72和置数控制器376。FIFO电路300不具有空检测器;相反,当FIFO电路300空时,抑制取数确认信号55(get_ack),并当能安全地执行取数操作时传送该信号。
图11中说明了同步置数协议,并连同图1一起讨论。当同步置数接口10接收到置数请求信号14(put_req)和置数数据总线16(data_put)上的数据项时,紧接着在发送器时钟信号12(CLK_put)的上升沿,它开始置数操作。紧接着在下一时钟周期的上升沿,数据项入队(未示出)。如图11中所说明的那样,如果FIFO电路变得满了,那么在下一时钟周期之前提供全局满信号18(full),并且阻止该同步置数接口10进行下一步的操作。
图12说明了同步取数协议,连同上述图2一起讨论。同步取数操作由紧接着接收机时钟信号22(CLK_get)的上升沿之后提供的取数请求信号24(req_get)使能。在该时钟周期结束时,数据项及其有效性信号30(valid_get)置于取数数据总线28(data_get)之上。如果FIFO电路在该时钟周期期间变空,那么紧接着下一时钟周期的上升沿之后提供全局空信号28(empty),并且停止同步取数接口20,直到FIFO电路变得非空为止。在取数请求24(req_get)之后,有效性信号30(valid_get)和全局空信号28(empty)可指示3种结果(a)可使数据项出队,并且更多的数据项可用(即valid_get=1,empty=0);(b)可使数据项出队,并且FIFO电路变空(即valid_get=1,empty=1);(c)FIFO电路为空,无数据项出队(即valid_get=0,empty=1)。
图13和14中说明了异步置数和取数协议。由于异步接口无时钟,因此如本领域中所知的那样,它们使用4相数据束形式的通信(数据束通信的详细内容见于S.Furber的“Asynchronous Design”(1997)亚微米电子学会刊461-492页;H.van Gageldonk的“An Asynchronous Low-Power 805C51Microcontroller”国际异步电路和系统高级研究讨论会(1998)96-107页,通过引用而把它们完全结合于此)。在请求数据操作之前,数据项必须在数据总线上具有稳定值。
如图13中所示,发送器通过在发送器数据总线46(put_data)上放置数据项,并对FIFO电路发出请求,以通过提供置数请求信号44(put_req)将数据项输入,来开始置数操作。通过提供置数确认信号45(ptu_ack)来指示出入队操作的完成。接着把两条控制线复位为空闲状态,首先是置数请求44(put_req),然后是置数确认45(put_ack)。
类似地,图14中说明了异步取数操作。通过提供取数请求信号54(get_req)以及通过把数据项从队列中取出到取数数据总线56(get_data)上,来执行取数操作。一旦完成该操作,就提供取数确认信号55(gert_ack)。随后,取消取数请求信号54(get_req),并然后取消取数确认信55(get_ack)。
为了构造与同步和异步系统都能正确地运行的FIFO电路100、200和300,各单元具有这样的配置,它由选择以与发送机或接收机环境接口的4个不同的、可互换的组成部件组成(1)置数部件,执行置数操作并配置成与发送器环境操作,即同步或异步,(2)取数部件,执行取数操作并与接收机环境操作,即同步或异步,(3)数据有效性(DV)控制器,提供单元是否具有数据项的指示,并配置成与发送器和接收机环境两者操作,以及(4)寄存器,配置成与发送器和接收机两者操作。因此,单元170a-d以及370a-d中的置数部件将基本上是相同的,因为它们配置成与同步发送器环境操作。单元170a-d和270a-d中的取数部件将基本上是相同的,因为它们配置成与同步接收机环境操作。单元270a-d中的置数部件配置成与异步发送器环境操作,以及单元370a-d中的取数部件配置成与异步接收机环境操作。
数据有效性控制器的作用是指示单元何时为满,以及何时为空,以及何时具有有效数据。各单元中的寄存器分成两个部分,一个属于置数部件(写端口),一个属于取数部件(读端口)。置数部件、取数部件、数据有效性控制器以及寄存器连接在一起,从而构成一个完整的单元。
上面关于图5和图6,连同相同单元170a、170b、170c和170d一起描述了可连同同步发送器和同步接收机一起使用的FIFO电路100。图15和图16中说明了FIFO电路100的一个示例性单个单元,如单元170a。(下面对单元170a的描述也适用于单元170b、170c和170d)。各单元170a具有4个接口(1)同步置数接口171,(2)同步取数接口172,(3)与单元阵列中的右边一单元的接口173,以及(4)与单元阵列中的左边一单元的接口174。在同步置数接口171上,单元170a接受公共置数数据总线16(data_put)上的数据,该数据是置数控制器76(见图6)的输出。置数请求信号14(req_put)指示出数据有效性(在该实施例中始终提供)。图6已省略了置数请求信号14(req_put)向单元170a的传送,以避免使图复杂化。单元170a用空比特182(e_i)(当单元170a空时提供该信号)与满检测器72通信。示例性单元170a的状态由数据有效性(DV)控制器指示,后者诸如异步SR锁存器180。在同步取数接口172上(图15),单元170a把数据及其有效性信号184(valid_i)(在该实施例中始终提供该信号)输出到公共取数数据总线26(data_get)上。如图6中所示,有效性信号184(valid_i)不用于FIFO电路100,但将用于下面描述的若干实施例之中。同步取数接口172由取数使能信号186(en_get)使能,后者是取数控制器78(见图6)的输出。单元170a用满比特188a(f_i)(当单元170a满时提供该信号)与空检测器74通信。在与右边单元的接口173上,各单元170a-d接受置数标记输入190(ptok_in)上的标记,也接受来自右边单元的取数标记输入192(gtok_in)。在与左边的单元的接口174上,各单元170向左边的单元传送置数标记输出194(ptok_out)上的标记,以及取数标记输出196(gtok_out)。
图16中也示出了根据第1实施例的单元170a。可通过跟踪通过单元170a的一次置数操作以及随后跟踪一次取数操作来说明单元170a的行为。一开始,单元170a以空状态(即e_i=1以及f_i=0)起始,而且不具有任何标记。单元170a等待在发送器时钟信号12(CLK_put)的上升沿上接收来自右边单元的置数标记输入190(ptok_in=1)上的置数标记,并等待发送器将有效数据项置于置数数据总线16(data_put)之上。通过置数使能信号180(en_put=1)对所有单元指示一有效数据项,该置数使能信号是置数控制器176(见图6)的输出。
当存在有效数据,并且单元已获得置数标记(即AND 181)时,单元170a执行以下3个动作(1)它使能寄存器191(REG),以锁存数据项以及置数请求信号14(req_put);(2)它指示出该单元170a具有一有效数据项(异步地设置f_i=1);以及(3)它使能左上边沿触发的D型触发器ETDFF 193(en_put=1),以在置数标记输出194(ptok_out)上把置数标记传送给左边的单元。在发送器时钟信号12(CLK_put)的下一时钟周期的上升沿,数据项和有效性比特最终被锁存,并且置数标记传送到左边的单元。
单元170a进行的是数据出队随后以相同的方式进行,这里注释其中的差异。单元170a等待接收来自右边的单元的取数标记输入192(gtok_in=1)上的取数标记。当此发生时,单元170使有效比特183(v_i),即经锁存的置数请求信号14(req_put)传播到有效总线184(valid_i)上。当在取数标记输入192(gtok_in=1)上接收到取数标记,以及接收机用取数使能信号186(en_get=1)请求数据项时,如由与门181所实现的那样,单元170a异步地使数据项置于公共取数数据总线26(data_get)上,并指示出该单元170是空的(异步地设置e_i=1)。提供的取数使能186(en_get)的到达使左下边沿触发的D型触发器ETDFF 195在取数标记输出196(gtok_out)上传送取数标记。在下一时钟周期的开始处,该取数标记传送到左边的单元。
各FIFO电路100、200和300可具有至少一个同步接口。因此,FIFO电路操作一定是同步的。混合时钟FIFO电路具有高度并行的操作在任何时刻,FIFO电路的状态,即满或空,可由置数接口10和/或取数接口20修改,各接口可在不同的时钟下或异步地操作。在同一时刻,各接口根据自己的时钟“读取”FIFO电路的状态。全局满信号18(full)(图6和图10)由置数接口读取,而全局空信号28(empty)(图6和图8)由取数接口读取。因此,为了避免不一致的读取,已把同步器添加到两个全局控制信号中的每一个,满信号18(full)和空信号28(empty)。各同步器把对应的全局信号调节到适当的时钟。在示例性实施例中,使用一对同步锁存器;然而,为了提高的稳定性,注意到也可使用多于两个锁存器。如下面图17、18和19所说明的那样,同步器添加到满检测器72和空检测器74的输出,并由发送器时钟信号12(CLK_put)和接收机时钟信号22(CLK_get)分别控制。
这里所描述的同步器增加了额外的时钟周期延迟,以读取FIFO电路的当前状态。因此,仅指示FIFO电路的即时状态的简单的满和空检测器可能导致故障,即溢出或下溢。例如,当使用一对同步锁存器的FIFO电路变满时,在两个时钟周期之后停止发送器接口。在下一时钟周期,发送器可能存放一新的数据项,有效地覆盖一未读取的数据项。相反,当FIFO电路变空时,在两个时钟周期之后停止接收机接口,使得在下一时钟周期,接收机可读取一空的单元。
按照本发明的一个解决方案是修改全局满信号18(full)和全局空信号28(empty)的定义和实现,以预期“即将来临的”空或满状态,以及时地停止接口,既不过早也不太晚。根据该定义,当少于预定数量的单元是空的时候,则认为FIFO电路是“满”的。(下面更详细地考虑了“空”的定义)。按照第1示例性实施例,当无单元或一个单元是空的时候,则认为FIFO电路是满的。从而,当存在少于两个空单元时,则提供FIFO电路是满的,并且在随后的两个时钟周期的停止之前,发送器子系统能够安全地存储最后的数据项,并发出一新的未答复的请求。上述参考图11-12描述的协议保持不变。唯一的效果是某些时候这两个系统可把一n位(n-place)FIFO电路看作一n-1位(n-1 place)FIFO电路。
图17中所示的满检测器72实现了上述的“满”的定义。当少于预定数量的连续单元为空时,则提供FIFO电路100是满的。如图17中所示,对连续单元对的空比特182(e_i)进行估值,即e_0和e_1;e_1和e_2;e_2和e_3;e_3和e_0;如果这些连续对的单元都没有发现是空的,则提供FIFO电路100是满的。添加了一对锁存器171和173,以使全局满信号18(full)和发送器时钟信号12(CLK_put)同步。
当FIFO电路100中少于预定数量的单元是满的时候,则适用类似的“空”的定义。在示例性实施例中,当存在少于两个数据项时,可提供FIFO电路是空的。在这些情况下,在随后的两个时钟周期的停止之前,接收机子系统可随后移除最后的数据项,并发出一新的未答复的请求。然而,如上所述,对“空”的早先定义可能造成FIFO电路100死锁。“近似空”(ne)定义(FIFO电路中有0个或1个数据项)的一个缺点是可能提供FIFO电路100为空,然而它仍然包含一个数据项,但是作出请求的接收机仍然停止。
如众所周知,空的另一定义是“真正空”(oe),它是电路中是否存在任何数据项的指示。由于一般通过同步来提供真正空信号(oe),真正空信号的一个缺点是它可导致下溢。
按照本发明的一个解决方案是适用双模态空检测器74(如下面更详细的描述那样,图18-19中所描述的部件)。双模态检测器判定“近似空”(ne)状态以及“真正空”(oe)状态。然后,两个空信号与接收机同步,并组合成全局空信号28(empty)。然而,近似空定义一般将优先于真正空(oe)。
双模态空检测器部分地根据来自接收机的最近的取数请求的出现来提供全局空信号28(empty)。如果在至少一个时钟周期内不存在最近的取数请求,那么真正空信号(oe)处于支配地位。当在FIFO电路100中有一个数据项时,这就变得重要。近似空信号(ne)指示出FIFO电路是空的,而真正空信号(oe)指示出FIFO电路不是空的。在该条件下,取数接口20需要接收数据项,使得真正空信号(oe)用于指示FIFO状态,即“不空”,并取消。然而,当取数接口刚移除了一个数据项时,必须适用近似空信号(ne)来指示状态,即“空”,以便防止真正空信号(oe)的同步延迟可能造成的FIFO下溢。
根据另一个情况,FIFO电路可变空持续至少一个周期,即提供全局空信号28(empty)。在下一时钟周期期间,真正空信号(oe)处于支配地位。
按照第1示例性实施例,用2个检测器,即近似空检测器120(图18)和真正空检测器130(图19)来实现双模态空检测器74。如下参考图19所述,把两个信号组合在一起,以产生全局空信号28(empty)。图18中所说明的近似空检测器120与上述的满检测器72类似,它估计连续单元对(即f_0和f_1;f_1和f_2;f_2和f_3以及f_3和f_0)的满比特188(f_i)。如果没有发现两个连续的单元对具有各自的数据项,则在信号121(empty_p)上提供FIFO电路100为空。使用一对锁存器124和126使近似空信号122(ne)与取数时钟信号22(CLK_get)同步。
图19中说明的真正空检测器130判定FIFO电路的“真正空”(oe)状态。按照此定义,如果存在0个数据项,则FIFO电路100为空,在该情况下提供真正空信号132(oe)。从而,真正空检测器130估计满比特88(f_i),以判定是否存在任何数据项。通过同步使该真正空信号132(oe)延迟,这可导致下溢。为了避免该情况,在每次取数操作之后,把该真正空信号132(oe)同步地设置到一中性的“FIFO电路空”值。这是通过第1锁存器134定时后的输出信号138与第2锁存器136之前的取数使能信号186(en_get)求逻辑或来实现。作为在每次取数操作之后设置“真正空”信号的结果,“真正空”信号(oe)没有必要指示出在FIFO电路中没有数据项。具体来说,如果存在多于一个数据项,并且提供了取数使能信号186(en_get),则真正空检测器130将输出真正空信号132(oe)。
按照本发明,通过近似空信号122和真正空信号132的组合,解决了潜在的死锁问题。在大多数情况下,近似空检测器120和真正空检测器130产生相同的结果,即近似空信号122(ne)和真正空信号132(oe)是相同的。当FIFO电路100包含一些数据项,以及在对锁存器134定时与在对锁存器136定时的时间间隔期间没有提供取数使能信号186(en_get)时,真正空信号132(oe)和近似空信号122(ne)都指示出FIFO电路100是不空的,即这两个信号都取消。类似地,当FIFO电路100包含0个数据项时,真正空信号132(oe)和近似空信号122(ne)都指示出FIFO电路是空的,即提供两个信号。
当FIFO电路100恰好只包含1个数据项时,发生不同的情况,即近似空信号122指示出FIFO电路“空”(ne=1),而在随后的间隔期间缺少提供取数使能信号186(en_get)的情况下,真正空信号132却指示出FIFO电路“不空”(oe=0)。在取数接口使FIFO中的倒数第二个数据项移除之后,该情况会发生。下一步骤将取决于是否有另一个取数请求(1)如果在当前时钟周期中有另一个取数请求,则满足该请求,并且近似空检测器120将提供FIFO空(即提供近似空信号(ne))并将在下一时钟周期停止该取数接口。(2)如果没有取数请求,则真正空检测器130将在下一时钟周期中占支配地位,并提供FIFO不空(即取消真正空信号(oe)),允许满足随后的取数请求。只要最后一个数据项出队,近似空信号(ne)立即再次占据支配地位,并即时停止取数接口。此时,不能满足进一步的取数请求,从而再次使用近似空信号(ne)来指示FIFO 100的状态。
图20中示出了置数控制器176。置数控制器176使能或禁用的FIFO电路100中置数操作和置数标记的移动。如图20中所说明的那样,仅当在data_put上存在有效数据项,即已提供置数请求信号18(req_put)并且FIFO电路不满,即还未提供全局满信号18(full)时,使能这些操作。在上述的情况下,其中FIFO电路变空持续至少一个周期,取消取数使能信号186(en_get),不管接收机是否作出取数请求信号24(req_get)。在这样的情况下,在下一时钟周期中真正空信号18(oe)不被复位,并能够进行支配。在该情况下,一旦FIFO空,如果置数接口使一单个数据项入队,则真正空信号(oe)仍将处于支配地位,最终将取消oe,并且随后将取消全局空信号28(empty),取数接口20将能够移除数据项,从而避免死锁。
图21中所说明的取数控制器178使能和禁用FIFO电路100中取数操作和取数标记的移动。仅当存在来自接收机的请求,即提供了取数请求信号24(req_get),并且近似空检测器120和真正空检测器130中至少一个指示出FIFO电路100不空时,提供取数使能信号186(en_get)。
按照本发明的第2实施例的FIFO电路200(图7和图8)和按照本发明的第3实施例的FIFO电路300(图9和图10)中的每一个都具有一个异步接口和一个同步接口。如上参考图7-8所述,FIFO电路200具有异步置数接口和同步取数接口,而如上参考图9-10所述的FIFO电路300具有同步置数接口和异步取数接口。因此,FIFO电路200和300的每一个利用上述FIFO电路100的某些同步部件。特别地,同步置数接口10用作FIFO电路300中的置数接口。类似地,FIFO电路100中的同步取数接口20用于FIFO电路200之中,作为取数接口。
如上所述,各单元具有4个不同的部分置数部件、取数部件、数据有效性(DV)控制器以及寄存器。单元270a-d和370a-d中的每一个分别使用一种型式的数据有效性控制器,即数据有效性控制器280和数据有效性控制器380。在上述单元170a中(图16),数据有效性控制器是简单的(SR锁存器180)。然而,对于具有同步和异步部件两者的FIFO电路200和300来说,其行为变得更为复杂。这些设计允许对同一单元的写操作和读操作之间的更多个并行。因此,如下面将描述的那样,数据有效性控制器必须考虑这种提高的并行性。
上面参考图7描述了按照第2实施例的FIFO电路的接口,即异步-同步FIFO电路200。通过使用异步置数接口40(图3)和同步取数接口20(图2)来实现。参考图12-13描述了这些接口上的FIFO电路协议,并且图7-8中示出了FIFO电路200的结构。具体参考图8,FIFO电路200使用若干上面已描述的部件,即诸如取数控制器278、空检测器74和同步单元部件之类的接口部件。单元270a-d中剩余的部件,即异步置数部件和数据有效性控制器将在这里参考图22-23进行描述。
图23中所示的单元270a的同步部分与FIFO电路100(图6)中的单元170a(图16)的对应部件等同。单元270a的异步部分可分解成若干块。置数部件部分包括“获得置数标记”块293(OPT)以及C元件295。“获得置数标记”块293(OPT)从右边的接口在置数标记输入290(wel)上获得相应的置数标记。它实现为如图24所示的突发模式(Burst-mode)机。(突发模式机也详细地描述于通过引用而完全结合于此的IEEE ASYNCH’00研讨会中的T.Chelcea等人的“Low-Latency Asynchronous FIFO’s using Token Rings”210-220页)。如图24的突发模式说明所示,“获得置数标记”块293观测右边的单元,并等待一次置数操作。一次完整的标记传送由右边的单元指出,该单元首先在步骤402设置置数标记输入290(wel),然后在步骤404复位置数标记输入290(wel)。在该操作发生以后,置数标记处于当前的单元之中,即设置了置数标记信号297(ptok)(步骤404)。当设置了置数标记信号297(ptok)时,也可以产生另一置数操作。一旦该置数操作开始,则复位置数标记信号297(ptok),并且在步骤406设置置数标记输出294(we)。当该置数操作结束时,复位置数标记输出294(we),把该置数标记发送到下一单元,并且该循环重新开始。图25(a)中说明了“获得置数标记”块293(OPT)的第1示例性实施例。图25(b)中说明了“获得置数标记”块293’(OPT)的第2示例性实施例。
如图26中所示,置数操作由C元件295控制。如本领域中所知的那样,当所有的输入都是1时,异步C元件295的输出为1;当其所有输入变为0时,它的输出变为0。在异步C元件中,某些输入(以‘+’标记)仅参与把该元件的输出设置到1;它们的值对于其它输出转换来说是无关的。
对于异步置数操作,单元270a(图23)的行为如下进行一开始,单元270a起始于空状态(e_i=1以及f_i=0),并且置数标记或取数标记都不存在。在置数标记输入290(wel)上的一对转换之后,置数标记处于单元中(ptok=1)。当环境在置数请求信号44上请求置数操作(put_req=1),并且单元为空(e_i=1)时,设置置数标记输出294(we)。该事件引起若干并行操作由数据有效性控制器280(DV_as)将单元的状态改变到满(即提供了满比特288a(f_i));寄存器291(REG)得到使能,以锁存数据,并且单元270a开始把置数标记发送到左边的单元,并复位OPT(ptok=0)。当取消置数请求信号44(put_req)时,也取消了置数标记输出294(we)。该事件完成了把置数标记发送到左边的单元。现在,单元270准备好在寄存器291(REG)中的数据出队之后开始另一次置数操作。
单元270a中的同步取数操作在数据项存在于单元中之后开始。一旦设置了满比特288a(f_i),空检测器74(图8)把FIFO电路200的状态计算为“不空”,并在取数使能信号86(en_get)上传送取数请求24(req_get)。当单元270a具有取数标记时,于是寄存器291(REG)中的内容输出到取数数据总线26(data_get);在接收机时钟信号22(CLK_get)的下一上升沿,该取数标记传送到下一单元。同时,数据有效性控制器280(DV_as)把该单元的状态改变到“空”。注意当单元具有取数标记时(gtok=1),就把单元的有效性比特在有效性数据总线284(valid_i)上传播,而不管取数请求86(en_get)上的信号。这确保了有效性总线284(valid_i)上的信号始终是驱动到某一值。
如图27中所示,数据有效性控制器280(DV_as)指示出单元何时包含数据项;从而它控制置数和取数操作。它接受置数标记输出294(we)和读取使能信号299(re)作为输入,前者用信号通知正在发生置数操作,后者用信号通知正在发生取数操作。数据有效性控制器280(DV_as)的输出是空比特282a(e_i)以及满比特288a(f_i),前者指示出单元270a为空(在该实施例中仅内部使用),后者指示出单元270a为满(在该实施例中用于空检测器之中)。
图28中按皮特里网(Petri-Net)410示出了数据有效性控制器280(DV_as)的协议。(皮特里网是众所周知的通常用于描述并行行为的图形表示)。它由转移组成,这些转移由标记的事件、位置指出,存储着由黑点指示出的标记。当其所有进入弧线具有标记时,激发一次转移,然后标记存储在该此转移的所有输出弧线上。(关于皮特里网的更详细的内容讨论于IEEE会刊1989年4月的77(4)Tadao Murata的“Petri NetsProperties,Analysisand Applications”;国际时控皮特里网专题讨论会(意大利托里诺,1985年7月)会刊中的L.Y.Rosenblum和A.V.Yakolev的“Signal GraphsFromSelf-Timed to Timed Ones”;以及集成VLSI杂志(1986年6月4(2)99-113页)中的Tam-Anh Chu的“On the Models for Designing VLSI AsynchronousDigital Circuits”,通过引用把它们完全结合于此。)一旦一次置数操作开始,数据有效性控制器280(DV_as)复位空比特282(e_i=0),并设置满比特288a(f_i=1),从而在412提供该单元满得能够进行取数操作。在414处的取数操作开始之后(re+),在415,在CLK_get时钟周期的中间异步地提供该单元“不满”(fi=0)。当在416该取数操作结束(在CLK_get的下一上升沿上),在417,数据有效性控制器280(DV_as)把单元270a设置到“空”(ei=1)。在418复位置数标记输出294(we),并且该行为可重新开始。这种不对称的行为延迟了置数标记的传送,以防止在取数操作仍在进行的同时由置数操作引起的数据讹误。
这里将详细描述按照所述第3示例性实施例的FIFO电路,即同步-异步FIFO电路300(图9和图10)。上面参考图9描述了FIFO电路300的接口。通过“选用”同步置数接口10(见图1)和异步取数接口50(见图4)来获得这些接口。参考图11和14描述了这些接口上的FIFO电路协议,并且图9-10中说明了FIFO电路300的结构。参考图10,FIFO电路300使用若干上述已描述的部件,即诸如置数控制器376、满检测器72和同步单元部件之类的接口部件。这里将参考图29和30描述单元370a中剩余的部件,如异步取数部件和数据有效性控制器(DV_sa)。
图29中示出了示例性单元390a的接口(单元370a、370b、370c和370d的每一个都是等同的)。单元370a在4个接口上通信(1)同步置数接口371,(2)异步取数接口372,(3)与右边的(即前一个)单元的接口,以获得标记,以及(4)与左边的(即下一个)单元的接口,以传送标记。在同步置数接口上,单元370a接收公共置数数据总线16(data_put)上的数据。置数使能信号80(en_put)使其能够执行置数操作,该信号是置数控制器76(见图10)的输出。置数请求信号14(req_put)指示出数据有效性(在本实施例中始终提供)。单元370a用空比特82(e_i)与满检测器72(图10)通信,当单元370a是空的时候,提供所述空比特。置数操作由发送器时钟信号12(CLK_put)控制。各个单元370a-d与异步取数接口372通信,以在取数数据总线56(get_data)上传送数据,各个单元370a-d接收对一次取数操作的全局请求54(get_req),并且各个单元370a-d在55(get_ack)上指示出出队操作的结束。由于异步取数接口50仅传送有效数据(见图4),所以有效比特不用于单元370a的异步取数接口。各个单元接收置数标记输入90(ptok_in)上的置数标记,以及取数标记输入392(rel)上的取数标记;它在置数标记输出94(ptok_out)上传送标记,以及在取数标记输出396(re)上传送取数标记。
单元370a的同步部分与FIFO电路100(见图16)的单元170的对应部件等同。参考图30,单元370a的异步部分可分解成若干块,如“获得取数标记”块393(OGT)以及不对称C元件395。“获得取数标记”块393(OGT)获得来自右边的接口的取数标记输入392(rel)上的取数标记。“获得取数标记”块393(OGT)实现为图31(a)中所说明的突发模式异步状态机。图31(b)中说明了“获得取数标记”块393’(OGT)的另一示例性实现。图32中说明了突发模式说明420。“获得取数标记”块393(OGT)观测右边的单元,并等待一次取数操作。右边的单元分别在步骤422和424,通过首先设置,然后复位取数标记输入392(rel)(图30),来指示出完整的标记传送。随着那些操作完成,取数标记就处于当前的单元之中,即在图32中设置了(步骤424)取数标记信号397(gtok)。按不对称C元件395(图30)的控制,在步骤426(图32)设置取数标记输出396(re)(图30)。当单元满时,当它具有取数标记时,以及当接收机请求数据项时,开始取数操作。一旦完成了出队,通过复位请求以及随后复位确认,结束了与接收机的通信。在427,连同当前单元的取数标记信号397(gtok)一起,复位取数标记输出366(re)。
单元370a以与单元170a类似的方式执行置数操作。当单元在置数使能信号80(en_put)上得到使能,并具有置数标记(ptok_in=1)时,寄存器(REG)得到使能,以使数据以及用作有效性比特的置数请求14(req_put)入队。并行地,数据有效性控制器380(DV_sa)提供单元370满。在发送器时钟12(CLK_put)的时钟周期的起始处,数据锁存入寄存器,并且取数标记传送到下一单元。
取数操作如下执行。一开始,单元370a在没有取数标记(gtok=0)的条件下开始。“获得取数标记”块393(OGT)等待取数标记输入392(rel)上的上下转换;一旦这些发生,取数标记就处于单元之中(gtok=1),并且把寄存器391(REG)的输出驱动到取数数据总线56(get_data)上。异步取数接口不使用经锁存的有效性比特。单元370a等待接收机子系统(或环境)请求数据项,以便提供取数请求信号54(get_req=1)。当这发生时,仅当单元获得数据项时,即提供了满比特388a(f_i=1)时,单元370a才确认它取数请求信号。当满足这3个条件时(即gtok=1、get_req=1以及f_i=1),设置取数标记输出396(re);该事件向环境确认数据操作,开始复位“获得取数标记”块393(OGT),开始在数据有效性控制器380(DV_sa)中复位单元的状态,以及开始向下一单元发送取数标记。通过取消取数请求信号54(get_req),完成了取数接口上的操作循环,前者引起了取数标记输出396(re)的取消以及在取数标记输出396(re)的上升沿上开始的所有操作的完成。
数据有效性控制器380(DV_sa)指示出单元何时是满的或空的,并示于图34。图35中以皮特里网430示出了数据有效性控制器380(DV_sa)的协议。在正常的空状态下,提供空比特382a(e_i=1),而取消满比特388(f_i=0)。当置数操作开始时,数据有效性控制器380(DV_sa)并行地在步骤431复位空比特382(e_i)以及在步骤432设置满比特(f_i)(即单元370a的状态变成“满”),从而使能一次取数操作。可与取数操作并行地执行置数操作的结束,即写使能信号394(we)的取消(步骤433)。在信号re发生下落转移之后,由取数标记输出396(re)上的一对转移用信号表示取数操作(步骤434和435),在步骤436和437,单元的状态改变到“空”(e_i=0以及f_i=0),并且该正常操作可重新开始。
这里描述的若干另外的实施例基本上类似于上述FIFO电路100、200和300,但已经过修改,以作为发送器和接收机之间的中继站操作。如图36中所说明的那样,系统450可包括两个子系统,如发送器子系统452和接收机子系统454,通过非常长的导线456和458把它们相连。按此配置,在子系统452和子系统454之间传播的信号可能要花费若干时钟周期来传播,并且可能引入延迟损失。如图37中所示,经修改的系统460引入了中继站462a、462b、462c、462d,来缓解子系统464和子系统466之间的连接延迟损失,两个基站都必须工作于相同的时钟之下。中继站462a、462b、462c和462d的插入将长导线划分成段468和470,各自对应于少于一个时钟周期的延迟。通过从一个系统发送数据包到另一个系统,中继站链以类似于FIFO电路的方式操作。
图38中给出了本领域中已知的诸如中继站462b之类的单时钟中继站的实现。正常情况下,来自左边的中继站的数据包传送到右边的中继站。在图37中,一般从中继站462a把数据包传送到中继站462b。右边的中继站,即中继站462b也能够通过停止左边的中继站,即中继站462a来在数据流设置反压力。如图38所示,示例性中继站462b位于中继站462a和中继站462c之间(见图37)。参考图38,中继站462b具有两个寄存器。主寄存器472(MR)用于正常操作,而辅助寄存器474(AR)用于当停止时存储额外的数据包。不同于混合时钟周期FIFO电路100,中继站不包括满和空信号,也不包括置数请求和取数请求。相反,在正常操作中,在每个时钟周期上传送数据。由于数据传送通常是连续的,有效的和无效的数据都得到传送,其中只要无有效数据入队,便传送了无效数据。因此,有效比特依附于置数和取数数据总线两者,在各接口上形成数据包。
参考图37-38,中继站462b(基本上等同于中继站462a、462c和462d)如下操作。在正常操作中,在每个时钟周期的开始处,根据来自左边的中继站462a的数据包输入信号468(packetIn)所接收的数据包复制到主寄存器472(MR)中,并然后根据数据包输出信号470(packetOut)上发送到右边的中继站462c。一个数据包由一条数据总线上的一个数据项和一个有效比特组成,该有效比特指示出该数据包中的数据的有效性。如果接收机系统466想要停止接收数据,它就提供stopIn 476。在下一时钟沿上,中继站462b提供stopOut 478,并将下一数据包锁存到辅助寄存器474(AR)中。此时,该单元将停止。当中继站462b处于非停止的时候,它将首先从主寄存器472(MR)向右边的中继站462c发送数据包,并随后从辅助寄存器474(AR)发送一个数据包。
参考图39,FIFO电路500作为混合时钟中继站操作。FIFO电路500基本上等同于FIFO电路100(图5和图6中所示),这里仅注释其差异。图39中说明了FIFO电路500与中继站的接口。FIFO电路500置于如图37所示的中继站链之中,并在左边的一个中继站和右边的一个中继站之间接口,所述左边的中继站诸如包括中继站462a和462b,所述右边的中继站诸如包括中继站462c和462d。不同于图37中所说明的工作于单时钟之下的系统460,各中继站链可工作于不同的时钟之下,如中继站链462a/462b操作于第1时钟域502之下,中继站链462c/462d操作于第2时钟域504之下。
与上述FIFO电路100相反,FIFO电路500总是从左边置数接口506向右边取数接口508传送有效数据项。在FIFO电路500的协议中,在任一接口上无主动请求。相反,取数接口508和置数接口506配置成能主动停止或中断数据项的连续流。取数接口508在接收机时钟22(CLK_get)的每个时钟周期上根据数据包输出信号470(PacketOut)从FIFO电路500将数据项从队列取出。为了停止该流,中继站462c提供stopIn 476。类似地,FIFO电路500总是从置数接口506根据数据包输入信号468(packetIn)使数据项入队。从而,不同于FIFO电路100,置数请求信号514(req_put)仅用于指示数据有效性,而把它作为数据包输入信号468(packetIn)的一部分进行处理,而不是作为控制信号。当FIFO电路500变满时,它通过提供stopOut 512来停止置数接口506,所述信号stopOut是全局满信号18(full)。从而,不同于单时钟中继站系统460,混合时钟FIFO电路中继站500可在置数接口506被停止,以及提供StopOut 478,即使在取数接口508中还未提供StopIn 476。
FIFO电路500类似于FIFO电路100,这里仅注释其中的若干修改。参考图40,把满检测器72基本上实现为上述参考图17-19所述的满检测器,以确定各个单元570a、570b、570c和570d中的空比特数582a、582b、582c和582d(e_i)。FIFO电路100的双模态空检测器74(见图18-19)不需要了,因为FIFO电路中继站一般在每个时钟周期传送数据,固不会发生死锁。相反,空检测器574基本上等同于图18中所示的近似空检测器120。上述参考图20-21所述的FIFO电路100的置数控制器176和取数控制器178在FIFO电路500中得到了修改。在FIFO电路100中,置数控制器176当接收到置数请求信号14(req_put)时,使能有效数据项的入队。FIFO电路500的置数控制器576简单地允许有效数据通过。置数控制器576连续地使数据项入队,直到FIFO电路变满为止。从而,在示例性实施例中把置数控制器576实现为全局满信号18(full)的倒相器(见图41)。与FIFO电路100的取数控制器178相反,在其中按需进行出队,取数控制器578能够连续进行数据项的出队。如图42所示,仅当FIFO电路500变空(如上所述,提供了近似空信号122(ne))或取数接口通过提供stopIn 476来用信号通知不再接受数据项时,中断出队操作。由于有效的和无效的数据都可传送,取数控制器678还使用有效比特584(valid_i)来计算有效性信号30(valid_get)。
参考图43、44、45、47、48和49,FIFO电路600和700是两个另外的实施例,它们作为中继站操作,配置成分别与混合异步-同步接口以及同步-异步接口操作。FIFO电路600和700同时针对两个关键的设计挑战混合异步/同步环境之间接口的能力以及长互连延迟。
图43中说明了异步发送器490和同步接收机466之间带有中继站的通信的基本结构。异步域把数据包发送到(可能通过异步中继站(ARS)链494a和494b,这里将详细讨论)FIFO电路600。然后将所述数据包传送到同步域,并通过同步中继站链462a和462b发送到接收机466。
原则上,可使异步接口处的通信任意稳固,使得在异步域输出处不需要中继站。然而实际上,在FIFO设计需要强调正确性和性能问题。本领域中已知两种普通的异步数据编码形式双轨和单轨成束数据(bundled data)。(单轨成束数据详细描述于“亚微米电子学”的会刊中的S.Furber的“Asynchronous Design”461-492页(1997年)。)双轨形式在一对导线上对各个数据比特的值和有效性进行编码,它相对于导线延迟是任意稳固的(但具有显著的开销)并且不需要ARS链。单轨成束数据类型在数据自身和控制线之间具有定时假设,使得希望有ARS链来把级间的导线长度限制到短的中继段。最后,对于性能问题,即使不要求ARS,也希望有ARS来提高吞吐量。可通过使用通常称为微流水线(micro-pipeline)的异步FIFO电路来直接实现ARS链(微流水线的详细内容描述于1989年ACM通信32(6)中的I Sutherland的“Micropipelines”720-738页,以及2000年ACM TAU-00专题讨论会中的M.Singh等人的“MOUSETRAPUltra High-Speed Transition-SignalingAsynchronous Pipelines”,通过引用而把它们完全结合于此)。
不同于同步数据包,异步数据包不需要有效性比特。相反,在控制请求线上用信号通知有效数据包的存在,并且ARS能够在接受数据包之间无限地等待。因此,标准的微流水线实现了所希望的ARS行为。
图44和45中说明的FIFO电路600在异步域602和同步域604之间操作。异步接口640与先前描述的FIFO电路200中的异步接口40等同,并支持相同的通信协议。该接口能精确地与微流水线接口相匹配。类似地,同步接口620与FIFO电路500中相应的同步接口508等同,并支持相同的通信协议。参考图45,在结构层上,FIFO电路600等同于图8中所示的FIFO电路200。单元670a、670b、670c和670d基本上等同于单元270a、270b、270c和270d。如下将描述的那样,取数控制器678不同于取数控制器278(后者基本上等同于取数控制器178)。空检测器674基本上等同于FIFO电路500中的空检测器574。并且对应于上述图18中所示的近似空检测器120。
FIFO电路600如下操作。只要在异步接口640存在数据项,FIFO电路600就使之入队。在同步接口620上,除非FIFO电路600为空或者右边的中继站将其停止,否则它每个时钟周期输出一个数据项。从而,不同于FIFO电路500,只要FIFO电路600被停止时,数据包才是无效的。当FIFO电路600是空的或从右边被停止时,停止取数接口620。然而,由于FIFO电路600不使无效数据包入队,除非FIFO电路600停止,否则右边的接口仅接收有效数据包。
图46中说明了取数控制器678的实现。当从右边停止取数控制器678(stiopIn=0)时,以及当中继站不空(ne=0)时,取数控制器678使能取数操作(en_get=1)。该操作与FIFO电路100的取数控制器178类似。如果中继站停止或者它是空的,发送到右边的数据包则是无效的。因此,从异步接口接收的所有数据包都是有效地,并且从而不需要明显的有效性比特,相反,取数使能信号686(en_get)用作有效性信号30(valid_get)。
图47中说明了同步发送器464和异步接收机492之间带有中继站的通信的基本结构。同步域通过同步中继站链462a和462b向FIFO电路800发送数据包。然后最好通过异步域中的ARS链494a和494b,把数据包传送到异步接收机492。
图48中说明了FIFO电路700的接口。异步接口750基本上等同于图9中所示的FIFO电路500的异步接口50,并支持相同的通信协议。类似地,图48中所示的同步接口710基本上等同于FIFO电路300的同步接口10,并支持相同的通信协议。图49中示出的FIFO电路700的单元770a、770b、770c和770d基本上等同于图10中所示的FIFO电路的单元370a、370b、370c和370d。FIFO电路700和FIFO电路300中的唯一显著差异是各FIFO电路的置数控制器。
在正常操作期间,FIFO电路700从同步接口将数据包发送到异步接口。只要FIFO电路700提供数据,右边的异步中继站就使数据包入队。然而,在同步接口上,FIFO电路700充当过滤器,因为所有的异步数据包必须有效。进入的同步数据包的有效性比特14(valid_put)用于对异步数据包进行过滤。特别地,当数据包是有效的时候,FIFO电路700配置成使之入队;否则,它配置成丢弃该数据包。FIFO电路700仅使有效数据包入队,并当FIFO电路700满时,停止置数接口。如上所述,FIFO电路500使所接收的所有数据包入队,并且当没有满的单元时停止。相反,FIFO电路700在下面的条件下停止(1)当FIFO电路是满的时,和/或(2)当接收到无效数据包时。
图50中给出了置数控制器776的示例性实现。仅当中继站不满(full=0)并且进入的数据包是有效的(valid_put=1)时候,置数控制器776才使能置数操作(en_put=1)。置数控制器776的实现类似于置数控制器176,但是显式的置数请求信号(如req_put)的作用已由伴随每个数据包的隐式的有效比特14(valid_put)替代。
实例为了评估各种FIFO电路设计的性能,对各个示例性FIFO电路100、200、300、500、600和700进行模拟。使用商用和学术用工具对各个FIFO电路进行模拟。使用库存电路或定制电路来构建诸设计,并使用Cadence HSPICE进行模拟。使用Minimalist(Minimalist详细描述于CUCS-020-99中的R.Fuhrer等人的“MINIMALISTAn Environment for Synthesis,Verification andTestability of Burst-Mode Asynchronous Machines”之中,通过引用把它完全结合于此)来综合突发模式控制器,并且使用Petrify来综合皮特里网控制器(Petrify详细描述于1997年3月的IEICE信息和系统学报卷E80-D,第3号中的J.Cortadella等人的“PetrifyA Tool for ManipulatingConcurrent Specifications and Synthesis of Asynchronous Controller”315-325页,通过引用而把它完全结合于此)。以0.6μ的HP的CMOS技术,以3.3V和300K的条件,对FIFO电路设计进行模拟。
下述是对控制和数据全局总线的建模中的特别考虑控制总线put_req/en_put以及get_req/en_get插入适当的缓冲。把确认信号put_ack和get_ack构造成或门树形结构,该结构将单独的确认信号合并成一单个全局信号。在对get_data和data_get建模中,总线中的各个比特由三态缓冲器驱动。对环境和FIFO电路之内的长导线所贡献的负载进行建模。该模型作出这样的假设,即环境对负载贡献两个反相器(粗略地对应于一个锁存器),以及各导线贡献每个单元两个反相器的电容(粗略地是每导线2n个反相器)。
对各种设计模拟两种度量等待时间和吞吐量。等待时间是从置数接口上数据的输入到它在一空的FIFO电路中的取数接口上的输出所出现的延迟。吞吐量定义为一次置数或取数操作循环时间的反转。已对于不同的FIFO电路容量和数据项宽度计算了吞吐量和等待时间。已把FIFO电路的容量设置成4个、8个或16个单元。对于这些FIFO电路中的每一个,已把数据项宽度设置为8比特或16比特。
表1和2给出了最大吞吐量的结果。对于同步接口,吞吐量表示为该接口定时的最大时钟频率。由于异步接口不具有时钟,则以MegaOps/s(每秒钟接口可执行的数据操作数)给出吞吐量。
表1
表2吞吐量结果符合FIFO电路设计。同步取数接口比同步置数接口慢,这是由于空检测器74的复杂程度。同样地,中继站同步置数接口比它们的FIFO电路的对应接口快一点,这是由于在前者中的置数检测器的简化。在同步端,取数接口趋于比置数接口快,因为在数据总线上较早地使能寄存器的输出。
仅对8比特数据项的设计示出了通过空FIFO电路的等待时间(表3)。等待时间的实验性设定如下在空FIFO电路中,取数接口请求数据项。在任意时间之后,置数接口设置一数据项。按照当置数数据总线具有有效数据时的时刻到当取数接口取得数据项并能使用它的时刻之间所流逝的时间来计算等待时间。
表3具有同步接收机的FIFO电路的等待时间不是唯一限定的。等待时间随着数据项安全地入队于一单元的时间而变化。如果紧接着CLK_get的上升沿之后由置数接口使数据项入队,则等待时间增加(表中的“最大”栏)。如果正好在空检测器开始计算之前使数据项入队,那么等待时间减少(栏“最小”)。然而,异步接收机能够紧接着数据项入队之后就取得数据项;因此,等待时间是唯一限定的。更有趣的是,由于异步接收机不需要同步,可以使对异步域的通信的等待时间快得多。
吞吐量和等待时间结果对于基于总线的设计是相当好的。如所期望的那样,当FIFO电路的容量和数据项宽度增加时,吞吐量和等待时间都减少。对于同步接口,吞吐量趋于比异步接口更高。当接收机是异步的时候,通过空FIFO电路的等待时间较少。
应该理解,上述仅是本发明的原理的说明,并且本领域的技术人员可以不背离本发明的范围和要旨来对作出各种修改。
权利要求
1.一种FIFO电路,它在操作于第1时域下的发送器子系统和操作于第2时域下的接收机子系统之间接口数据项的传送,其中所述第1时域和第2时域是不同的,并且至少一个时域按照一时钟信号进行操作,其特征在于所述FIFO电路包括配置成按照所述第1时域操作的置数接口,包括用于发送来自发送器子系统的数据项的置数数据总线,以及用于接收来自发送器子系统的置数请求的置数数据请求输入,以将来自置数数据总线的数据项入队;配置成按照所述第2时域操作的取数接口,包括向接收机子系统传送数据项的取数数据总线,以及接收来自发送器子系统的取数请求的取数数据请求输入,以将数据项从队列中取出到取数数据总线;以及单元阵列,各单元包括寄存器,配置成接收来自置数数据总线的数据项,并向取数数据总线传送数据项;状态控制器,提供单元的状态的指示;置数部件,配置成按照第1时域操作以接收来自第1相邻单元的置数标记,根据置数请求、置数标记以及单元的状态将从置数数据总线接收的数据项锁存到寄存器,并将置数标记传送到第2相邻单元;以及取数部件,配置成按照第2时域操作以接收来自第1相邻单元的取数标记,根据取数请求、取数标记以及单元的状态从寄存器将数据项从队列中取出到取数数据总线,以及将取数标记传送到第2相邻单元。
2.如权利要求1所述的FIFO电路,其特征在于所述置数接口是同步的,并由第1时钟信号控制,并且该置数接口还包括满检测器,它产生与第1时钟信号同步的全局满信号,当单元阵列中少于预定数量的连续单元处于空状态时,提供该信号;以及置数控制器,配置成当未提供全局满信号时,将置数请求分发到单元阵列中的各单元的置数部件。
3.如权利要求2所述的FIFO电路,其特征在于所述单元阵列中的各单元的置数部件还包括由置数请求使能的同步锁存器,它把置数标记传送到所述第2相邻单元;配置成用信号通知状态控制器根据置数请求和置数标记来提供取消单元的空状态的指示的电路。
4.如权利要求2所述的FIFO电路,其特征在于所述寄存器由置数请求使能,以接收数据项。
5.如权利要求2所述的FIFO电路,其特征在于所述控制接口是同步的,并由第2时钟信号控制,并且该取数接口还包括第1空检测器,它产生与第2时钟信号同步的第1全局空信号,当单元阵列中少于预定数量的连续单元处于满状态时,提供该信号;产生第2全局空信号的第2空检测器,包括产生第1中间信号的电路,当阵列中无单元处于满状态时提供该信号;第1和第2锁存器,使所述第1中间信号与所述第2时钟信号同步;以及组合元件,它把第2中间信号与第1锁存器和第2锁存器之间的第1中间信号组合,其中当取消所述第2中间信号时,所述第2全局空信号是第1中间信号,而当提供所述第2中间信号时,所述第2全局空信号是第2中间信号;以及取数控制器,配置成当取消所述第1全局空信号和所述第2全局空信号之一时,将取数请求分发到所述单元阵列中的各单元的取数部件。
6.如权利要求5所述的FIFO电路,其特征在于所述单元阵列中的各单元的取数部件还包括由取数请求使能的同步锁存器,它把取数标记传送给所述第2相邻单元;以及配置成用信号通知状态控制器根据所述取数请求和取数标记来提供取消单元的满状态的指示的电路。
7.如权利要求5所述的FIFO电路,其特征在于所述寄存器由所述取数请求和取数标记使能,以把数据项传送到取数数据总线。
8.如权利要求2所述的FIFO电路,其特征在于所述取数接口是异步的,并且单元阵列中的各单元的取数部件包括取数标记传送电路,该电路配置成根据来自所述第1相邻单元的指示从第1相邻单元的寄存器把数据项从队列中取出到取数数据总线的信号,来接收单元阵列中的相应单元的取数标记。
9.如权利要求8所述的FIFO电路,其特征在于所述寄存器由所述取数标记使能,以将数据项从队列中取出到取数数据总线。
10.如权利要求9所述的FIFO电路,其特征在于所述取数接口还包括取数确认信号,并且所述取数部件还包括由所述取数标记、取数请求和单元的状态使能的取数控制电路,以用信号通知状态控制器复位该单元的状态,以提供取数确认信号。
11.如权利要求10所述的FIFO电路,其特征在于通过对传送取数标记到第2相邻单元的取数请求取消来禁用取数控制电路。
12.如权利要求1所述的FIFO电路,其特征在于所述置数接口是异步的,并且单元阵列中的各单元的置数部件包括置数标记传送电路,该电路配置成根据来自第1相邻单元的指示从置数数据总线将数据项锁存到第1相邻单元的寄存器的信号,来将置数标记接收进单元阵列中的相应单元。
13.如权利要求12所述的FIFO电路,其特征在于所述置数接口还提供置数确认信号,并且所述置数部件还包括由所述置数标记、置数请求和单元的空状态使能的置数控制电路,使寄存器能接收来自置数数据总线的数据项,用信号通知状态控制器提供对单元状态复位的指示,以及提供置数确认信号。
14.如权利要求12所述的FIFO电路,其特征在于通过对传送置数标记到第2相邻单元的置数请求的取消来禁用置数控制电路。
15.如权利要求12所述的FIFO电路,其特征在于所述第2时间域是同步的,并由第2时钟信号控制,并且所述取数接口还包括第1空检测器,它产生与第2时钟信号同步的第1全局空信号,当单元阵列中少于预定数量的连续单元处于满状态时,提供该信号;产生第2全局空信号的第2空检测器,包括产生第1中间信号的电路,当阵列中无单元处于满状态时提供该信号;第1和第2锁存器,使所述第1中间信号与所述第2时钟信号同步;以及组合元件,它把第2中间信号与第1锁存器和第2锁存器之间的第1中间信号组合,其中当取消所述第2中间信号时,所述第2全局空信号是第1中间信号,而当提供所述第2中间信号时,所述第2全局空信号是第2中间信号;以及取数控制器,配置成当取消所述第1全局空信号和所述第2全局空信号之一时,将取数请求分发到所述单元阵列中的各单元的取数部件。
16.如权利要求15所述的FIFO电路,其特征在于所述单元阵列中的各单元的取数部件还包括由取数请求使能的同步锁存器,它把取数标记传送给所述第2相邻单元;以及配置成用信号通知状态控制器根据所述取数请求和取数标记来提供单元的空状态的指示的电路。
17.如权利要求16所述的FIFO电路,其特征在于所述寄存器由所述取数请求和取数标记使能,以把数据项传送到取数数据总线。
18.一种电路,它对从由第1时钟信号控制的发送器子系统向由第2时钟信号控制的接收机子系统的数据项的传送进行接口,所述数据项的传送经受发送器子系统和接收机子系统之间的延迟,其特征在于该电路包括第1中继站链,依附于所述发送器子系统来传送置数数据总线上的数据项,并具有第1操作协议;第2中继站链,依附于所述接收机子系统来接收取数数据总线上的数据项,并具有第2操作协议;以及混合时钟中继站,它接收第1时钟信号和第2时钟信号,并按照所述第1中继站链的操作协议和所述第2中继站链的协议将数据项从第1中继站链传送到第2中继站链,其中该混合时钟中继站包括单元阵列;满检测器,它产生与第1时钟信号同步的满信号,当单元阵列中少于预定数量的连续单元处于空状态时,提供该信号;置数控制器,配置成如果没有提供满信号,则在所述第1时钟信号的每个时钟周期上将数据项入队;空检测器,它产生与第2时钟信号同步的空信号,当单元阵列中少于预定数量的连续单元处于满状态时,提供该信号;以及取数控制器,配置成接收来自连接至混合时钟站的第2中继站链的一中继站的停止信号,并配置成如果没有提供空信号以及如果没有提供停止信号,则在所述第2时钟信号的每个时钟周期上使能数据项的出队。
19.如权利要求18所述的电路,其特征在于所述单元阵列中的各单元包括寄存器,配置成接收来自置数数据总线的数据项,并向取数数据总线传送数据项;状态控制器,提供单元的状态的指示;置数部件,配置成按照第1操作协议操作以接收来自第1相邻单元的置数标记,根据置数请求、置数标记以及单元的状态将从置数数据总线接收的数据项锁存到寄存器,并将置数标记传送到第2相邻单元;以及取数部件,配置成按照第2操作协议操作以接收来自第1相邻单元的取数标记,根据取数请求、取数标记以及单元的状态从寄存器将数据项从队列中取出到取数数据总线,以及将取数标记传送到第2相邻单元。
20.如权利要求19所述的电路,其特征在于所述第1中继站链的一个中继站提供置数请求,并且所述单元阵列中的各单元的置数部件还包括由置数请求使能的同步锁存器,它把置数标记传送到所述第2相邻单元;配置成用信号通知状态控制器根据置数请求和置数标记来提供取消单元的空状态的指示的电路。
21.如权利要求20所述的电路,其特征在于所述寄存器由所述置数请求和置数标记使能,以接收数据项。
22.如权利要求21所述的电路,其特征在于所述第2中继站链的一个中继站提供取数请求,并且所述单元阵列中的各阵列的取数部件还包括由取数请求使能的同步锁存器,它把取数标记传送给所述第2相邻单元;以及配置成用信号通知状态控制器根据所述取数请求和取数标记来提供取消单元的满状态的指示的电路。
23.如权利要求22所述的电路,其特征在于所述寄存器由所述取数请求和取数标记使能,以把数据项传送到取数数据总线。
24.一种电路,它对从异步发送器子系统向由时钟信号控制的同步接收机子系统的数据项的传送进行接口,其中所述数据项的传送经受所述发送器子系统和所述接收机子系统之间的延迟,其特征在于该电路包括第1中继站链,依附于所述发送器子系统来传送置数数据总线上的数据项,并具有异步操作协议;第2中继站链,依附于所述接收机子系统来接收取数数据总线上的数据项,并具有同步操作协议;以及中继站,它接收所述时钟信号,并按照所述第1中继站链的异步操作协议和所述第2中继站链的同步操作协议将数据项从第1中继站链传送到第2中继站链,其中该中继站包括单元阵列;空检测器,它产生与第2时钟信号同步的空信号,当单元阵列中少于预定数量的连续单元处于满状态时,提供该信号;以及取数控制器,配置成接收来自连接至混合时钟站的第2中继站链的一中继站的停止信号,并配置成如果没有提供空信号以及如果没有提供停止信号,则在所述第2时钟信号的每个时钟周期上使能数据项的出队。
25.如权利要求24所述的电路,其特征在于所述单元阵列中的各单元包括寄存器,配置成接收来自置数数据总线的数据项,并向取数数据总线传送数据项;状态控制器,提供单元的状态的指示;置数部件,配置成按照第1操作协议操作以接收来自第1相邻单元的置数标记,根据置数请求、置数标记以及单元的状态将从置数数据总线接收的数据项锁存到寄存器,并将置数标记传送到第2相邻单元;以及取数部件,配置成按照第2操作协议操作以接收来自第1相邻单元的取数标记,根据取数请求、取数标记以及单元的状态从寄存器将数据项从队列中取出到取数数据总线,以及将取数标记传送到第2相邻单元。
26.如权利要求25所述的电路,其特征在于所述单元阵列中的各单元的置数部件包括置数标记传送电路,该电路配置成根据来自第1相邻单元的指示出将来自置数数据总线的数据项锁存入第1相邻单元的寄存器的信号,来把置数标记接收进所述单元阵列中的相应的单元。
27.如权利要求26所述的电路,其特征在于所述第1中继站链提供置数请求,并且所述置数接口还提供置数确认信号,并且所述置数部件还包括由所述置数标记、置数请求和单元的空状态使能的置数控制电路,是寄存器能接收来自置数数据总线的数据项,用信号通知状态控制器提供对单元状态的复位的指示,以及提供置数确认信号。
28.如权利要求26所述的电路,其特征在于通过对传送置数标记到第2相邻单元的置数请求的取消来禁用置数控制电路。
29.如权利要求28所述的电路,其特征在于所述第2中继站链的一个中继站提供取数请求,并且所述单元阵列中的各单元的取数部件还包括由置数请求使能的同步锁存器,它把置数标记传送到所述第2相邻单元;配置成用信号通知状态控制器根据取数请求和取数标记来提供单元的空状态的指示的电路。
30.如权利要求29所述的电路,其特征在于所述寄存器由所述取数请求和取数标记使能,以把数据项传送到取数数据总线。
31.一种电路,它对从由一时钟信号控制的同步发送器子系统向异步接收机子系统的数据项的传送进行接口,其中所述数据项的传送经受所述发送器子系统和所述接收机子系统之间的延迟,其特征在于该电路包括第1中继站链,依附于所述发送器子系统来传送置数数据总线上的数据项,并具有同步操作协议以及提供有效性信号;第2中继站链,依附于所述接收机子系统来接收取数数据总线上的数据项,并具有异步操作协议;以及中继站,它接收所述时钟信号,并按照所述第1中继站链的同步操作协议和所述第2中继站链的异步操作协议将数据项从第1中继站链传送到第2中继站链,其中该中继站包括单元阵列;满检测器,它产生与第1时钟信号同步的满信号,当单元阵列中少于预定数量的连续单元处于空状态时,提供该信号;置数控制器,配置成如果没有提供满信号,并且提供了有效性信号,则在所述第1时钟信号的每个时钟周期上将数据项入队。
32.如权利要求31所述的电路,其特征在于所述单元阵列中的各单元包括寄存器,配置成接收来自置数数据总线的数据项,并向取数数据总线传送数据项;状态控制器,提供单元的状态的指示;置数部件,配置成按照第1操作协议操作以接收来自第1相邻单元的置数标记,根据置数请求、置数标记以及单元的状态将从置数数据总线接收的数据项锁存到寄存器,并将置数标记传送到第2相邻单元;以及取数部件,配置成按照第2操作协议操作以接收来自第1相邻单元的取数标记,根据取数请求、取数标记以及单元的状态从寄存器将数据项从队列中取出到取数数据总线,以及将取数标记传送到第2相邻单元。
33.如权利要求32所述的电路,其特征在于所述第1中继站链的一个中继站提供置数请求,并且所述单元阵列中的各单元的置数部件还包括由置数请求使能的同步锁存器,它把置数标记传送到所述第2相邻单元;配置成用信号通知状态控制器根据置数请求和置数标记来提供单元的空状态的指示的电路。
34.如权利要求33所述的电路,其特征在于所述寄存器由置数请求使能,以接收数据项。
35.如权利要求34所述的电路,其特征在于所述单元阵列中的各单元的取数部件包括取数标记传送电路,该电路配置成根据来自所述第1相邻单元的指示从第1相邻单元的寄存器把数据项从队列中取出到取数数据总线的信号,来接收单元阵列中的相应单元的取数标记。
36.如权利要求35所述的电路,其特征在于所述寄存器由取数标记使能,以将数据项从队列中取出到取数数据总线。
37.如权利要求36所述的电路,其特征在于所述第2中继站链的一中继站提供取数请求,并且所述取数接口还包括取数确认信号,并且所述取数部件还包括由所述取数标记、取数请求和单元的状态使能的取数控制电路,以用信号通知状态控制器复位该单元的状态,以提供取数确认信号。
38.如权利要求37所述的电路,其特征在于通过对传送取数标记到第2相邻单元的取数请求取消来禁用取数控制电路。
全文摘要
一种FIFO设计,它对操作于不同时域上的发送器子系统和接收机子系统进行接口。发送器子系统和接收机子系统可以是同步的或异步的。FIFO电路包括配置成按照发送器时域操作的置数接口以及按照接收机时域操作的取数接口。FIFO电路包括单元阵列,该单元阵列具有寄存器以及状态控制器,后者指示出单元的状态。各单元还具有按照发送器时域操作的置数部件部分,包括置数标记传送电路和置数控制器电路。各单元具有配置成按照接收机时域操作的取数部件部分,包括取数部件传送电路和取数控制器电路。混合时钟中继站设计对工作于不同时域的发送器子系统和接收机子系统,以及发送器和接收机之间等待时间大的地方进行接口。
文档编号G06F5/10GK1478226SQ01813819
公开日2004年2月25日 申请日期2001年6月8日 优先权日2000年6月9日
发明者T·切尔塞雅, S·M·诺维克, T 切尔塞雅, 诺维克 申请人:纽约市哥伦比亚大学托管会
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1