Fifo模块以及具有fifo模块的延迟均衡电路和速率匹配电路的利记博彩app

文档序号:6514963阅读:457来源:国知局
专利名称:Fifo模块以及具有fifo模块的延迟均衡电路和速率匹配电路的利记博彩app
技术领域
本发明涉及FIFO模块,以及具有所述FIFO模块的延迟均衡(deskew)电路和速率匹配电路。
背景技术
对更高速网络连接的持续需求促成了10千兆位光纤信道(10GFC)和10千兆位以太网(10GbE)网络的开发。在10GbE网络中,在介质访问控制(MAC)层和物理(PHY)层之间,存在10千兆位介质独立接口(XGMII)。XGMII在MAC层和PHY层之间以10Gb/s的速率提供了全双工操作。操作的每个方向独立于另一方向,并且包括32位的数据,以及时钟和控制信号,以定义MAC层和PHY层之间的74位接口。
为了解决与以下情况相关的问题,即在超过7cm的距离上为74位接口的如此大量的信号指定路由,开发了10千兆位附加单元接口(XAUI)。XAUI是全双工接口,其在操作的每个方向上使用四条自时钟的(self-clocked)串行差分链路,以获得10Gb/s的数据速率。每条串行链路以3.125Gb/s进行操作,以适应与8B/10B编码相关联的数据和开销。编码的自时钟本质消除了时钟和数据之间的时偏(skew)影响,并且将XGMII的作用范围扩展到大约50cm。XGMII和XAUI接口间的转换发生在XGMII扩展子层(XGXS)上。
将XGMII接口的发送和接收路径各自组织成四条通路(lane)。每条通路使用8位数据信号和1位控制信号。在XAUI接口的源方,将用于在给定通路上传输的数据和定时时钟转换成自时钟的、串行的、经8B/10B编码的数据流。将每个经编码的数据流以帧或分组的形式,通过单条差分链路发送到目的方。在目的方,从流入的数据流中恢复时钟。对流入的数据进行解码,然后映射回32位的XGMII格式。这样,将74针宽的XGMII接口缩减为XAUI接口,所述XAUI接口使用8个差分对来支持8条串行差分链路,因而总共只需要16针。
利用帧间或分组间时段来分隔每条通路中的帧,所述帧间或分组间时段是无数据传输的时间间隔。XGMII在这些时段期间改为发送空闲控制字符。在10GbE的术语中,这些时段被称为分组间间隙(IPG)。在IPG期间,XGXS将XGMII空闲控制字符转换到控制代码组(code-group)的随机化序列,并且从控制代码组的随机序列转换到XGMII空闲控制字符,从而实现串行通路同步、时钟速率补偿(也称为速率匹配)以及通路到通路对齐(alignment)(也称为延迟均衡)。这种随机化序列包括一般被称为“A”、“K”和“R”代码组的控制代码组。
数据流中的“K”或同步代码组使在接收方的XAUI接收机能够实现流入位流的代码组同步。每当“K”代码组出现时,每条通路进行调整,以适当地对齐到“K”代码组。当每条通路接收到四个连续的无错误且有效的“K”代码组时,则认为在各自的通路上实现了代码组同步。
但是,每条串行传输通路都独立于其他通路进行操作。由于通路之间的路径延时和等待时间有所不同,因此在一条通路上所发送的数据流通常无法与在另一条通路上所发送的数据流对齐。这种未对齐被称为通路到通路的时偏。通过使用“A”或对齐代码组来实现通路对齐或延迟均衡。XGXS定义了在IPG期间,应该同时在四条通路中的每条上出现“A”代码组的特定时间。接收机使用这些“A”代码组来纠正通路到通路的时偏。对通路到通路的时偏的纠正被称为延迟均衡。
此外,XGXS补偿在时钟域中的时钟速率差异,所述时钟速率差异通常存在于链路的发送方和接收方之间。通过监控流入和流出数据速率之间的差异,接收机可以在IPG中添加或删除“R”或跳过(skip)代码组,以对每条通路中的流入和流出数据速率进行平衡或速率匹配。
通常,作为专用集成电路(ASIC)来实现的接收机包括连接到各个解串器(deserializer)的现有技术的FIFO模块。这些现有技术的FIFO模块用于对各个通路上所接收到的数据流进行缓冲。FIFO模块中的每个都具有两个指针——写入指针和读取指针。写入指针指向或寻址到FIFO模块中的存储器位置,用于向其中写入数据流中的代码组。读取指针在操作期间跟随写入指针,所述读取指针指向或寻址到之前被写入的存储器位置,以允许为进一步的处理而读取存储在其中的代码组。
为了执行延迟均衡和速率匹配,在接收机中,还需要FIFO模块外部的附加电路。这些附加电路包括用于进一步缓存所读取的代码组的寄存器体(register bank),以及用于将所读取的代码组与预定代码组进行比较的比较器,等等。这样的设计存在多种缺点。首先,由于需要附加电路,因此无法有效地利用ASIC的芯片面积。效率的低下程度依赖于将所读取的代码组与预定代码组进行比较要花费多长时间,并且在芯片上所需的寄存器体的数量直接与比较的持续时间成比例。因此,比较的持续时间越长,芯片面积的效率低下程度则越高。因此,由于ASIC的硬件结构将需要根据比较的持续时间而改变,因此所述硬件结构是不确定的。
其次,对于附加电路中的任何改变,都不得不在系统级上对ASIC进行验证。这种验证执行起来很复杂,并且耗时。再次,只有在读取了FIFO模块中所存储的控制代码组,并且使所述控制代码组能够从FIFO模块的外部获得之后,才能执行延迟均衡。当一个存储器位置被写入时,只有当读取指针推进到该特定的存储器位置时,才能读取该存储器位置。因此,在特定存储器地址的写入和读取之间存在滞后(lag),并且只有在从该存储器位置读取控制代码组之后,才能进行延迟均衡。因此,延迟均衡被延迟,并且在延迟均衡之后执行的速率匹配也同样被延迟。

发明内容
根据本发明的一个方面,提供了一种具有存储体(memory bank)的先进先出(FIFO)模块。所述存储体包括多个可独立寻址的存储器位置。所述FIFO模块包括连接到存储体的写入指针,所述写入指针用于寻址第一存储器位置,以将输入数据总线上的数据写入到第一存储器位置中。所述FIFO模块还包括连接到存储体的读取指针,所述读取指针用于寻址第二存储器位置,以将存储在其中的数据读取到输出数据总线上。所述FIFO模块还包括连接到存储体的至少一个附加指针,所述附加指针用于寻址第三存储器位置,以读取存储在其中的数据。
根据本发明的另一方面,提供了一种具有至少两个上述FIFO模块的延迟均衡电路。所述至少一个附加指针包括耦合到所述写入指针的向后看指针,所述向后看指针用于对跟踪第一存储器位置的第三存储器位置进行寻址,所述第一存储器位置可由写入指针所寻址。所述延迟均衡电路还包括连接到存储体的检测器,所述检测器用于将所述第三存储器位置中的数据与对齐数据进行比较。当所述第三存储器位置中的数据与所述对齐数据相匹配时,所述检测器则断言(assert)找到数据(datum-found)信号。所述延迟均衡电路还包括连接到所述至少两个FIFO模块的时偏补偿单元。所述时偏补偿单元当所述至少两个FIFO模块各自的找到数据信号被断言时,接收所述至少两个FIFO模块各自的第三存储器位置的地址。然后所述时偏补偿单元使用所述地址来确定时偏量,并且产生控制信号,该控制信号用于控制所述至少两个FIFO模块中之一的写入指针,以补偿所述时偏。
根据本发明的另一方面,提供了一种包括至少一个上述FIFO模块的速率匹配电路。所述至少一个附加指针包括耦合到所述读取指针的向前看指针,所述向前看指针用于对引导第二存储器位置的第三存储器位置进行寻址,所述第二存储器位置可由所述读取指针所寻址。所述速率匹配电路包括标志电路,当在写入指针和读取指针中的地址之差超过预定门限值时,所述标志电路产生触发信号。所述速率匹配电路还包括连接到存储体的检测器,所述检测器用于将所述第三存储器位置中的数据与跳过数据进行比较,当所述第三存储器位置中的数据与跳过数据相匹配时,所述检测器则断言找到数据信号。所述速率匹配电路包括连接到所述至少一个FIFO模块的速率匹配器。所述速率匹配器接收所述触发信号和找到数据信号,并且当确定断言了触发信号和找到数据信号时,所述速率匹配器产生用于推进所述读取指针,以便跳过第三存储器位置的控制信号。


参考附图,将更好地理解本发明,在附图中
图1是根据本发明一个实施例的FIFO模块的示意图;图2是包括了四个图1中的FIFO模块单元的延迟均衡电路的示意图;图3是包括了四个图1中的FIFO模块单元的速率匹配电路的示意图;图4是详述图2中的延迟均衡电路的操作的流程图;图5A示出了在四条单独的通路上所接收到的具有时偏的数据流;图5B示出了经过延迟均衡的图5A中的具有时偏的数据流的图,所述延迟均衡是使用图2中的延迟均衡电路,在各自的存储体中进行的;以及图6是详述图3中的速率匹配电路的操作的流程图。
具体实施例方式
在下文中,将以接收机为背景,来描述本发明的优选实施例,所述接收机用于接收在10千兆位以太网中的XAUI接口的四条单独的通路上所发送的四条数据流。但是,将会了解,本发明可应用于诸如10千兆位光纤信道中的接口一类的其他接口。还将了解,本发明可以应用于如下的接收机,所述接收机用于接收在多个通信信道上分别发送的两条或更多条数据流。
根据本发明的一个实施例,接收机包括分别如图2和图3所示的延迟均衡电路2和速率匹配电路4。接收机包括四个先进先出(FIFO)模块6,图1中详细示出了所述FIFO模块中的一个。
参考图1,根据本发明的一个实施例的FIFO模块6包括存储器阵列或存储体8、用于访问存储体8的写入电路10和读取电路12;标志电路14、第一数据检测器16和第二数据检测器18。FIFO模块6可以作为专用集成电路(ASIC)的一部分来实现,并且在需要多个FIFO模块6的情况下,可以在单个集成电路上实现若干FIFO模块。
存储体8包括32个可独立寻址的存储器位置20。但是,存储体8可以包括多于或少于32个存储器位置20。每个存储器位置20可以存储任意大小的数据,例如在10GbE中所使用的9位或10位代码组。图1中所示的存储器位置20是按照对存储器位置20进行寻址所需地址的升序进行排列的,即在存储体8中较低(邻近读取电路12)的存储器位置20需要较小的地址,而在存储体8中较高(邻近写入电路10)的存储器位置20需要较大的地址。
写入电路10包括连接到存储体8的写入指针22和向后看(look-back)指针24。写入指针22所存储的值作为写入地址总线26上的地址而被输出,所述地址用于指向或寻址存储体8的存储器位置20。所示出的写入指针22指向存储器位置W。同样地,向后看指针24所存储的值作为向后看地址总线28上的地址而被输出,所述地址用于指向或寻址存储器位置20。所示出的向后看指针24指向存储器位置X,所述存储器位置X比存储器位置W落后一个存储器位置。换句话说,向后看指针24的值比写入指针22的值少1。应该注意,向后看指针24的值可以比写入指针22的值少2或更多,以对这样一个存储器位置X进行寻址,该存储器位置X跟踪存储器位置W,或者距存储器位置W相应数目个存储器位置20。按这种方式,向后看指针24与写入指针22相耦合。由写入时钟信号30对写入电路10进行定时和提供时钟。写入电路10还接收包括写入暂停信号32、写入使能信号34和复位信号35在内的其他输入。
在写入电路10的操作期间,写入时钟信号30提供用于将数据写入由写入指针22所指向或寻址的存储器位置20中的定时时钟,所述数据例如是经由输入数据总线36而接收到的10GbE中的代码组。换句话说,写入时钟信号30驱动写入电路10。当断言复位信号35时,对写入指针22和向后看指针24进行初始化。当断言写入使能信号34时,在写入时钟的每个上升沿,将输入数据总线36上的数据写入由写入指针22所指向的存储器位置20中。写入数据之后,在下一个写入时钟沿,将向后看指针24中所存储的值设置为写入指针22所存储的值,并且将写入指针22加1,以指向序列中的下一个存储器位置20,以用于写入。换句话说,在写入存储器位置20一个写入时钟周期之后,向后看指针24指向该存储器位置20,并且在向后看数据总线38上可获得存储在该存储器位置20中的数据。基于写入时钟信号30,来对向后看数据总线38上的数据定时。该特征允许在写入数据一个写入时钟周期之后,读取、检查或验证所写入的数据。当断言写入暂停信号32时,禁止将写入指针22的值增加到序列中的下一个存储器位置的地址。该动作导致写入指针22所指向的存储器位置20在保持断言写入暂停信号32期间被覆写。FIFO模块6的该特征的使用可用于对XAUI接口的数据流进行延迟均衡,随后将对此进行描述。
读取电路12包括读取指针40和向前看(look-ahead)指针42。读取指针40所存储的值作为读取地址总线44上的地址而被输出,所述地址用于指向或寻址存储器位置20。图1中所示出的读取指针40指向存储器位置Y。同样地,向前看指针42所存储的值作为向前看地址总线46上的地址而被输出,所述地址用于指向或寻址存储器位置20。图1中所示出的向前看指针42指向存储器位置Z,所述存储器位置Z比存储器位置Y领先一个存储器位置。应该注意,存储器位置Z可以比存储器位置Y领先多于一个存储器位置20,以增强数据的向前看能力。该特征使FIFO无需附加的外部寄存器体,就能够迎合更长代码组比较持续时间的需要。按这种方式,向前看指针42与读取指针40相耦合。由读取时钟信号48对读取电路12进行定时和提供时钟。读取电路12接收包括读取使能信号50、读取暂停信号52和读取双倍增加(read-double-inc)信号54在内的多种输入。读取电路12也使用复位信号35进行复位。
在读取电路12的操作期间,断言读取使能信号50,以允许在每个读取时钟的上升沿,分别读取在由读取指针40和向前看指针42所寻址的两个存储器位置中所存储的数据。分别可以在输出数据总线56和向前看数据总线58上获得从诸如存储器位置Y和Z的两个存储器位置上所读取的数据。在从存储器位置20读取数据之后,将读取指针中所存储的值加1,使得读取指针40指向将被读取的下一个存储器位置。基于被加1的读取指针的新值来计算向前看指针42中所存储的新值。然后将向前看指针42的新值存储在向前看指针42中。
当断言读取暂停信号52时,则禁止推进读取指针40,就是说,禁止增加读取指针40的值。当断言读取双倍增加信号54时,在读取操作之后,将读取指针40中所存储的值加2,而不是如前所述地加1。换句话说,当断言读取双倍增加信号54时,将读取指针40推进两个存储器位置,这具有跳过一个存储器位置的效果。向前看指针42允许预先读取存储器位置Z中的数据,从而可以在读取存储器位置Y时,对是否可以跳过存储器位置Z做出判断。如果数据可以被跳过,则推进读取指针40,以绕过存储器位置Z。FIFO模块6的该特征可用于XAUI接口中的速率匹配,随后将对此进行描述。
第一数据检测器16通过向后看数据总线38,接收来自由向后看指针24所指向的存储器位置20的数据。该第一数据检测器16将所述数据与第一预定数据相比较,并且当存在匹配时,产生找到第一数据信号60。所述第一预定数据可以是硬连线的或者可编程的。
同样地,第二数据检测器18通过向前看数据总线58,接收来自由向前看地址总线46所指向的存储器位置20的数据。该第二数据检测器18将所述数据与第二预定数据相比较,并且当存在匹配时,产生找到第二数据信号62。所述第二预定数据也可以是硬连线的或者可编程的。
标志电路14接收写入指针22和读取指针40中所存储的值,以作为输入。标志电路14由读取时钟信号48进行定时和提供时钟。标志电路14也可以由写入时钟信号30进行定时和提供时钟。标志电路14在标志总线64上产生诸如空标志、满标志、下溢标志和上溢标志一类的标志。这些标志对本领域技术人员是公知的。标志电路14还产生过于靠近(too-close)触发信号66和过于远离(too-far-apart)触发信号68。当标志电路14确定写入指针22和读取指针40中所存储的值之间的差小于预定的最小距离时,标志电路14则设置或断言过于靠近信号66。换句话说,当读取指针40逼近写入指针22,并且两个指针22、40之间的距离小于预定的最小距离时,则设置过于靠近信号66。当标志电路14确定写入指针22和读取指针40中所存储的值之间的差大于预定的最大距离时,标志电路14则设置或断言过于远离信号68。换句话说,当两指针越来越远,直到两个指针22、40之间的距离大于预定的最大距离时,则设置过于远离信号68。预定的最小和最大距离也可以是硬连线的或者可编程的。
有利的是,根据本发明的FIFO模块是简单的、模块化的、面积有效的,其具有确定的系统硬件结构,并且允许系统的设计和验证。用于分别与向后看数据总线38和向前看数据总线58中的数据相比较的第一和第二数据被嵌入到FIFO模块中;在FIFO模块之外不需要附加电路。对第一和第二数据的任何改变都被限制在FIFO模块内部。这样的FIFO模块可以被独立验证。在现有技术中,在搜索数据中的任何改变都需要改变FIFO模块外部的电路。这样就不得不在系统级上执行系统验证的仿真。和现在可以在FIFO模块级上所方便地执行的仿真相比,这种仿真执行起来更加困难,并且耗时。
此外,为了迎合代码组比较持续时间增加的需要,只需要相应地增大向前看指针42和读取指针40之间的距离。不需要如现有技术中那样,由于代码组比较持续时间的增加,而改变系统级设计以增加寄存器体。但是,向前看指针42的这种调整将导致写入指针22和向前看指针42之间的间隙或距离减小,这降低了FIFO缓冲数据的能力。这样一来,FIFO能够处理的读取和写入数据的速率之差相应地减小。因为将不得不更频繁地执行速率匹配,以补偿数据速率之差,所以速率匹配性能降低。如果降低的系统性能是可以忍受的,那么和现有技术相比在面积方面的节省是最大的。如果降低的系统性能是不可忍受的,那么可以增大FIFO模块中存储体的尺寸,以便维持写入指针和向前看指针之间的最优间隙。由于在芯片的基板面(real estate)方面,存储单元的尺寸要小于寄存器的尺寸,因此存储体尺寸的增加不会如FIFO模块外部的寄存器体那样明显地导致ASIC面积的增大。此外,存储单元是有组织的晶体管布局结构,它相对于存储器布局结构,可以提供对路由资源的更好利用。
现在参考图1和图2,下面将描述延迟均衡电路2,所述延迟均衡电路2包括四个FIFO模块6,用于对在XAUI接口中的四条单独的通路上所接收到的四条数据流进行延迟均衡。延迟均衡电路2包括连接到时偏补偿单元72的四个通路电路70。每个通路电路70都包括用于对解串数据流74(图3)的数据进行缓冲的FIFO模块6。从流入数据流74中所恢复出的时钟信号用作驱动FIFO模块6的写入电路10的写入时钟信号30。该被恢复的时钟信号一般被称为写入域时钟。对FIFO模块6的第一数据检测器16进行硬连线或者编程,以对FIFO模块6中所接收到的解串数据流36中是否出现“A”代码组进行监控。如前所述,当在解串数据流36中检测到“A”代码组时,FIFO模块6断言找到第一数据信号60。
每个FIFO模块6都连接到一组粘性寄存器(sticky register)76(本领域技术人员也称其为粘性寄存器文件)。粘性寄存器76接收找到第一数据信号60,并且经由向后看地址总线28接收在FIFO模块6的向后看指针24中所存储的值。粘性寄存器76也由写入时钟信号30提供时钟。粘性寄存器76具有两个输出,即对齐字符检测(align-char-detect)信号78和对齐字符位置(align-char-pos)总线80,它们分别是找到第一数据信号60和向后看地址总线28上的信号的相应的被锁存信号。当FIFO模块6断言找到第一数据信号60时,粘性寄存器76将在向后看地址总线28上出现的地址锁存或锁定到粘性寄存器76中。该地址是FIFO模块6中如前所述的在其中存储有“A”代码组的存储器位置的绝对地址。
同步器82连接到粘性寄存器76,以接收来自粘性寄存器76的对齐字符检测信号78和对齐字符位置总线80上的信号。同步器82由接收方的系统时钟信号提供时钟,并且所述系统时钟信号用作FIFO模块6的读取时钟信号48。接收方的系统时钟信号一般可被称为读取域时钟。接收方的系统时钟信号与被恢复的发送方的时钟信号之间不存在任何相位关系。但是,在XAUI标准中指定,被恢复的发送方时钟和接收方的系统时钟间的频率差应该小于百万分之200(200ppm)。同步器82将基于写入时钟30的对齐字符检测信号78和对齐字符位置总线80上的信号分别同步或重定时到系统时钟信号48,以产生两个输出,即检测同步(adec-syn)信号84和位置同步(apos-syn)总线86上的信号。
时偏补偿单元72接收通路电路70中每个通路电路的同步器82的两个输出。就是说,时偏补偿单元72接收全部的四个检测同步信号84和四条位置同步总线86上的信号。时偏补偿单元72也由系统时钟信号提供时钟。当时偏补偿单元72确定断言了所有的四个检测同步信号时,其从位置同步总线86上读取四个FIFO模块6中包含“A”代码组的各个存储器位置的地址。从这些地址中,时偏补偿单元72确定通路到通路或通路间的时偏。最后,时偏补偿单元72产生用于各个FIFO模块6的写入暂停信号32A、32B、32C、32D。每个写入暂停信号都用来控制各个FIFO模块6的写入指针22,以将其推进暂停或禁止一段时间,该段时间相应于FIFO模块6中所接收到的流入数据流74的时偏。这种动作补偿了FIFO模块6所接收到的数据流之间的时偏,并且能够对流入数据流74的下游数据进行对齐或延迟均衡。
时偏补偿单元72还产生公共的写入使能信号34,所述写入使能信号34用于控制,或者更具体地说,用于使流入数据流74中的数据能够写入FIFO模块6的存储体8中。时偏补偿单元72还产生用于复位FIFO模块6的复位信号35,但是这里没有示出复位信号35的耦合,并且这种耦合对本领域技术人员来说将是公知的。
对齐监控单元88连接到FIFO模块6的输出数据总线56,以接收从FIFO模块6中所读取的数据。当对齐监控单元88检测到四个连续的无错误“A”的有序集合时,其断言延迟均衡完成(deskew-done)信号92,以指示已经完成了通路对齐或延迟均衡。在10GbE的术语中,“A”的有序集合是在单个读取操作或周期中,从各个FIFO模块6中的每个所接收到的“A”代码组。在接收到少于四个连续的无错误且被对齐的“A”的有序集合的情况下,对齐监控单元88断言对齐丢失(loss-of-alignment)信号90,将所述对齐丢失信号90提供给时偏补偿单元72,然后时偏补偿单元72重新启动延迟均衡过程。当延迟均衡过程完成时,对齐监控单元88(1)检查四个FIFO模块6的输出数据总线56上的数据是否持续对齐;(2)容忍由于预定的相当低的误码率而引起的对齐不一致性,并且(3)如果没有如标准中所指定的那样可靠地维持对齐,则断言对齐丢失信号90。
下面,将另外参考图4中所示出的流程图来描述延迟均衡电路2的操作。当对接收机加电时,在“开始”步骤102中启动延迟均衡电路2的延迟均衡过程或序列100。接下来,延迟均衡序列100前进至“复位FIFO”步骤104,在该步骤中,时偏补偿单元72断言复位信号35,以复位四个FIFO模块6。复位四个FIFO模块的步骤初始化写入指针22、向后看指针24、读取指针40和向前看指针42。在本实施例中,将写入指针22和读取指针40之间的间隙或距离选择为十个存储器位置。写入指针22和读取指针40之间的其他间隙或距离也是可能的。接下来,延迟均衡序列100前进至“使能对FIFO的写入”步骤106,在该步骤中,时偏补偿单元72断言写入使能信号34,以允许将流入数据流74中的代码组写入FIFO模块6的存储体8中。如前所述,在写入时钟信号30的每个写入时钟周期上,将代码组写入存储器位置20,并且将向后看指针24的值设置为指向在写入时钟信号30之前的时钟周期中所写入的存储器位置20。利用该向后看指针24,在写入特定的代码组之后,几乎立即就可获得该特定代码组。
接下来,延迟均衡序列100前进至“找到对齐代码组?”的判断步骤108。延迟均衡序列100围绕该判断步骤108循环,直到确定检测到“A”代码组已经被写入每个FIFO模块6的存储体8中。具体地说,在该判断步骤108中,延迟均衡序列100围绕判断步骤108循环,以等待FIFO模块6的第一数据检测器16断言其各自的找到第一数据信号60。在该具体的实施例中,找到第一数据信号60被锁存并同步到系统时钟信号48。当时偏补偿单元72确定断言了所有检测同步信号84时,延迟均衡序列100退出“找到对齐代码组?”的判断步骤108,并且前进至“计算时偏”步骤110,所述检测同步信号84是找到第一数据信号60的经锁存和同步的版本,在步骤110中,时偏补偿单元72计算通路到通路或通路间的时偏。稍后将以示例的方式详细描述通路间时偏的计算。
在计算出通路间时偏之后,延迟均衡序列100前进至“时偏在规范之内?”的判断步骤112。在该判断步骤112中,时偏补偿单元72判断通路间时偏是否在预定的规范之内,例如确定通路间时偏是否在根据XAUI建议的四个存储器位置之内。如果在该判断步骤112中确定通路间时偏中的一个或多个不在规定之内,延迟均衡序列100则返回到“复位FIFO”步骤104。但是,如果在判断步骤112中确定所有的通路间时偏都在规定之内,延迟均衡序列100则前进至“执行代码跳过”步骤114。在该步骤114中,时偏补偿单元72断言如前所述的适当的写入暂停信号32A-32D,以使所选择的数据流中的下游代码组被跳过。
现在将借助图5A和5B,更详细地描述“计算时偏”步骤110和“执行代码跳过”步骤114。图5A示出了四条具有时偏的数据流。在写入指针P左边的数据流部分是FIFO模块6中已经接收到的,而在写入指针P右边的数据流部分是FIFO模块中将要接收到的。如果随后不执行延迟均衡,那么在FIFO模块中将接收到如图所示的写入指针右边的数据流的那些部分,即其中的“A”代码组没有对齐。图5B示出了在其各自的FIFO模块6中,从特定的存储器位置起进行延迟均衡的相同的四条数据流。当在通路0中写入“A”代码组之后不久的一个时刻,将在“找到对齐代码组?”的判断步骤108中确定出在每个FIFO模块6中找到一个“A”代码组。
在“计算时偏”步骤110中,时偏补偿单元72使用FIFO模块6中检测到存储了“A”代码组的地址来获得通路到通路的时偏。在这种情况下,如图5A所示,通路0与通路1、通路2以及通路3之间的时偏分别被确定为三个、一个和两个代码组。随后,例如在通路1的写入指针P如图5B中所示的时刻,在“执行代码跳过”步骤114中,时偏补偿单元72断言用于通路1、2和3的写入暂停信号。用于通路1、2和3的写入暂停信号的长度分别是写入三个、一个和两个代码组所需要的时段。换句话说,利用写入暂停信号32B对用于通路1的写入指针22进行限制,从而使其在写入接下来的三个代码组时,指向相同的存储器位置20。就是说,在相同的存储器位置20中覆写如图5A中所圈出的通路1中的三个代码组“KKR”,从而有效地跳过这三个代码组。同样地,用于通路2和通路3的写入暂停信号32C、32D使得在各自的通路中跳过了如图5A中所圈出的代码组“R”和“KR”。如图5B所示,在与FIFO模块6中最长的写入暂停信号32相对应的时段之后,FIFO模块6中所存储的数据流被对齐。对于该具体的情况,在该时刻,用于通路0、通路2和通路3的写入指针22相对于用于通路1的写入指针已经分别推进了三个、两个和一个存储器位置,所述用于通路1的写入指针保持固定或不变。
在“执行代码跳过”步骤114之后,延迟均衡序列100接下来前进至“存在任何对齐丢失?”判断步骤116,在该判断步骤116中,对齐监控单元88对四个FIFO模块6的输出数据总线56进行监控,以确定来自所有四个FIFO模块的数据流是否都被对齐。当对齐监控单元88在相同的读取操作中,从所有四个FIFO模块6中接收到四个连续的无错误的对齐列或对齐有序集合,即“A”代码组时,对齐监控单元88则确定所有四个FIFO模块6中的数据流被对齐。如果确定四个通路中的数据全都被对齐,延迟均衡序列100则简单地围绕“存在任何对齐丢失?”判断步骤116循环,直到对齐监控单元88检测到流入的数据流74未对齐,在这种情况下,延迟均衡序列返回到“复位FIFO”步骤104,从而再一次执行流入数据流74的延迟均衡。
有利的是,与使用现有技术的FIFO模块的实现方法相比,利用FIFO模块中的向后看指针,可以更早地执行延迟均衡。
因此,延迟均衡电路2能够执行用于对两个数据流进行延迟均衡的方法。所述延迟均衡方法包括将两个数据流的数据写入各自的存储体8的存储器位置20中,所述各自的存储体8可由各自的写入指针22所寻址。所述延迟均衡方法还包括记下在各自存储体中的两个地址,其中被写入的数据与对齐数据相匹配。使用这两个地址来确定两数据流之间的时偏。将其中一个写入指针的推进的过程暂停相应于所述时偏的一段时间,以便在将两个数据流的下游数据写入各自的存储体时,在存储体中对齐所述两个数据流的下游数据。使用现有技术的FIFO模块可以实现所述延迟均衡方法,其中通过解除写入使能信号的断言,可以暂停写入指针的推进。
接下来参考图3,将描述速率匹配电路4,所述速率匹配电路4包括四个FIFO模块6,用于对发送方的写入域时钟和接收方的读取域时钟进行速率匹配。但是,应该注意,具有多于或少于四个FIFO模块6的速率匹配电路也可以工作。
图2中的通路电路70中的每个FIFO模块6除了连接到各自的粘性寄存器76之外,还连接到速率匹配器120。速率匹配器120控制和协调速率匹配操作。当连接到FIFO模块6时,速率匹配器120从四个FIFO模块6中的每一个接收过于靠近信号66和过于远离信号68。速率匹配器120还从四个FIFO模块6中的每一个接收找到第二数据信号62。FIFO模块6接收来自速率匹配器120的公共的读取使能信号50、公共的读取暂停信号52和公共的读取双倍增加信号54。速率匹配器120由系统时钟48提供时钟。
除了相互连接之外,FIFO模块6和速率匹配器120还连接到输出寄存器122。具体地说,每个FIFO模块6经由其各自的输出数据总线56而连接到输出寄存器122。经由到FIFO模块6的公共的读取使能信号50,输出寄存器122能够同步地接收从FIFO模块6中的每一个所读取的代码组。输出寄存器122接收来自速率匹配器120的跳过插入(skip-insert)信号124。速率匹配器120还接收来自输出寄存器122的IPG检测(ipg-detect)信号126。输出寄存器122还在各条经速率匹配的输出数据总线128上输出经速率匹配的代码组。经速率匹配的输出总线128上的数据可以被读取,并且被呈递给XGXS层中的控制代码组处理器。
输出寄存器122同速率匹配器120一样,也是由系统时钟48提供时钟。从下面参考图6中所示流程图的速率匹配电路4的操作的描述中,各种信号的功能将变得清楚。
速率匹配序列或过程130从“开始”步骤132启动,其中将解串数据流36的代码组写入各自FIFO模块6的各自存储体8中,并且将利用延迟均衡电路2对所述代码组进行延迟均衡。每个解串数据流36的代码组都是频率锁定的,但是它异步于其他解串数据流36的代码组。
接下来,速率匹配序列130前进至“系统延迟均衡完成?”判断步骤134,在该步骤中,速率匹配器120等待延迟均衡电路2,或者更具体地说,等待延迟均衡电路2中的对齐监控单元88断言延迟均衡完成信号92。当在该步骤中确定断言了延迟均衡完成信号92时,速率匹配序列130则退出“系统延迟均衡完成?”判断步骤134,并且前进至“使能对FIFO的读取”步骤136。在该步骤136中,速率匹配器120断言读取使能信号50,并且解除读取暂停信号52和读取双倍增加信号54的断言。当断言了读取使能信号50时,基于系统时钟48,在输出数据总线56上输出由各自的读取指针40所寻址的存储体8中的每一个中的代码组。这时,在不同数据流中的代码组被对齐或同步。但是,在写入时钟30和系统时钟48之间可能存在频率差。任何频率差都需要被补偿,以确保接收机的正确操作。
接下来,速率匹配序列130前进至“断言了过于远离信号?”的判断步骤138,在该判断步骤138中,速率匹配器120确定各个FIFO模块6是否断言了过于远离信号68。如前所述,当每个FIFO模块6中的标志电路14确定写入时钟30比系统时钟48运转得更快时,每个FIFO模块6则断言过于远离信号68。在这种情况下,写入指针22和读取指针40越来越远。当标志电路14确定指针值之差超过预定的最大距离时,标志电路14则断言过于远离信号68。具有32个存储器位置20的存储体8的预定最大距离例如可以是15个位置的距离。
如果在“断言了过于远离信号?”的判断步骤138中确定断言了过于远离信号68,速率匹配序列130则前进至“检测到‘R’代码组?”的判断步骤140,在该判断步骤140中,速率匹配器120确定是否所有的FIFO模块6,或者更具体地说,是否所有FIFO模块6中的第二数据检测器18都已经在各自的存储体8中检测到“R”代码组。当检测到“R”代码组时,第二数据检测器10中的每一个分别断言各自的找到第二数据信号62。如果在“检测到‘R’代码组?”的判断步骤140中确定没有断言全部的找到第二数据信号62,速率匹配序列130则围绕“检测到‘R’代码组?”的判断步骤140循环。当断言了所有找到第二数据信号62时,速率匹配序列130则退出“检测到‘R’代码组?”的判断步骤140,并且前进至“推进读取指针”步骤142。在“推进读取指针”步骤142中,速率匹配器120断言读取双倍增加信号54,以指导FIFO模块6中的读取电路12,在读取操作之后将其各自的读取指针40加2,而不是加1。这样的读取指针40的推进导致跳过了数据流中被检测到的“R”代码组的列,并且缩短了读取指针40和其各自的写入指针22之间的距离。接下来,速率匹配序列130返回到“断言了过于远离信号?”的判断步骤138。
有利的是,利用FIFO模块中的向前看指针,可以在读取存储器位置时快速地执行读取指针的推进。与现有技术不同,本发明不需要附加的外部电路系统来分别缓冲所读取的数据。
如果在“断言了过于远离信号?”的判断步骤138中确定没有断言过于远离信号68,速率匹配序列130则前进至“断言了过于靠近信号?”的判断步骤144。在该步骤中,速率匹配器120判断是否所有的FIFO模块6都已经断言了其各自的过于靠近信号66,以指出写入指针22和各自的读取指针42之间的距离小于预定的最小距离。对于具有32个存储器位置20的存储体,所述预定的最小距离可以是5个存储器位置20。如前所述,当系统时钟比写入时钟快,并且导致读取指针40逼近写入指针22时,则断言过于靠近信号66。如果在“断言了过于靠近信号?”的判断步骤144中确定已经断言了所有的过于靠近信号66时,速率匹配序列130则前进至“检测到分组间间隙?”的判断步骤146。
在“检测到分组间间隙?”的判断步骤146中,速率匹配器120等待输出寄存器122断言IPG检测信号126。当输出寄存器122检测到输出数据总线56中的代码组属于分组间间隙(IPG)时,输出寄存器122则断言IPG检测信号126。然后,速率匹配序列130退出“检测到IPG?”的判断步骤146,并且前进至“暂停读取指针”步骤148,在该步骤148中,速率匹配器120通过断言读取暂停信号52来响应于IPG检测信号126的断言。读取暂停信号52的断言致使所有的FIFO模块6暂时地停止其读取指针40的增加,以便加宽读取指针40和其各自的写入指针22之间的距离。同时,速率匹配器120断言跳过插入信号124,以致使输出寄存器122在经过速率匹配的输出数据总线128上强行插入一列“R”代码组。因此,一列四个“R”字符被插入到输出数据流中。最后,速率匹配序列返回到“断言了过于远离信号?”的判断步骤138。
虽然以上述实施例中的实现方式描述了本发明,但是不应该将其解释为局限于此。例如,延迟均衡电路和速率匹配电路可以不共享公共的FIFO模块。作为另一个示例,如果延迟均衡电路具有公共的读取和写入域时钟,则可以除去延迟均衡电路中的每个通路电路中的同步器。
权利要求
1.一种先进先出模块,包括具有多个可单独寻址的存储器位置的存储体;连接到所述存储体的写入指针,所述写入指针用于对所述多个存储器位置中的第一存储器位置进行寻址,以将输入数据总线上的数据写入所述第一存储器位置;连接到所述存储体的读取指针,所述读取指针用于对所述多个存储器位置中的第二存储器位置进行寻址,以将所述第二存储器位置中的数据读取到输出数据总线上;以及连接到所述存储体的至少一个附加指针,所述附加指针用于对所述多个存储器位置中的第三存储器位置进行寻址,以读取所述第三存储器位置中所存储的数据。
2.如权利要求1所述的先进先出模块,还包括连接到所述存储体的检测器,所述检测器用于接收从所述第三存储器位置所读取的数据,并且将所述所读取的数据与预定数据进行比较,以确定是否匹配。
3.如权利要求1所述的先进先出模块,其中所述至少一个附加指针包括耦合到所述写入指针的向后看指针,所述向后看指针用于对跟踪所述第一存储器位置的第三存储器位置进行寻址。
4.如权利要求3所述的先进先出模块,其中所述第三存储器位置比所述第一存储器位置落后至少一个存储器位置。
5.如权利要求3所述的先进先出模块,其中所述写入指针和所述向后看指针由公共的时钟信号所驱动,并且其中在所述第一存储器位置被写入至少一个时钟周期之后,所述第三存储器位置就是所述第一存储器位置。
6.如权利要求5所述的先进先出模块,其中所述第三存储器位置的地址是从所述先进先出模块中可读取的。
7.如权利要求1所述的先进先出模块,其中所述至少一个附加指针包括耦合到所述读取指针的向前看指针,所述向前看指针用于对引导所述第二存储器位置的第三存储器位置进行寻址。
8.如权利要求7所述的先进先出模块,其中所述第三存储器位置比所述第二存储器位置领先至少一个存储器位置。
9.一种延迟均衡电路,包括至少两个先进先出模块,所述至少两个先进先出模块中的每一个都包括具有多个可单独寻址的存储器位置的存储体;连接到所述存储体的写入指针,所述写入指针存储了可增加的写入地址,所述写入指针用于对所述存储器位置进行寻址,以在其中写入数据;耦合到所述写入指针的向后看指针,所述向后看指针用于对第二存储器位置进行寻址,所述第二存储器位置跟踪第一存储器位置,所述第一存储器位置是所述写入指针可寻址的;和连接到所述存储体的检测器,所述检测器用于将第二存储器位置中的数据与对齐数据进行比较,当所述第二存储器位置中的数据与所述对齐数据相匹配时,所述检测器则断言找到数据信号;以及连接到所述至少两个先进先出模块的时偏补偿单元,所述时偏补偿单元用于当所述至少两个先进先出模块各自的找到数据信号被断言时,接收所述至少两个先进先出模块各自的第二存储器位置的地址,从而使用所述地址来确定时偏,并且产生控制信号,该控制信号用于控制所述至少两个先进先出模块中之一的写入指针以补偿所述时偏。
10.如权利要求9所述的延迟均衡电路,其中所述时偏补偿单元包括用于接收各自的第三存储器位置的地址的时偏补偿单元,所述各自的第三存储器位置的地址由所述各自的找到数据信号来锁存。
11.如权利要求10所述的延迟均衡电路,其中所述时偏补偿单元包括用于接收各自的第三存储器位置的被锁存地址的时偏补偿单元,所述被锁存地址被同步到驱动所述时偏补偿单元的时钟。
12.如权利要求9所述的延迟均衡电路,其中所述用于控制至少两个先进先出模块中之一的写入指针的控制信号包括将所述写入指针中的写入地址的增加禁止一段时间的控制信号,所述的一段时间对应于所述时偏。
13.一种速率匹配电路,包括至少一个先进先出模块,所述先进先出模块包括具有多个可单独寻址的存储器位置的存储体;连接到所述存储体的写入指针,所述写入指针用于对所述存储器位置进行寻址,以在其中写入数据;连接到所述存储体的读取指针,所述读取指针用于对所述存储器位置进行寻址,以从其中读取数据;其中所述写入指针和所述读取指针由不同的时钟信号所驱动;耦合到所述读取指针的向前看指针,所述向前看指针用于对第一存储器位置进行寻址,所述第一存储器位置引导第二存储器位置,所述第二存储器位置是所述读取指针可寻址的;标志电路,当在所述写入指针和所述读取指针中的地址之差超过预定门限值时,所述标志电路产生触发信号;和连接到所述存储体的检测器,所述检测器用于将所述第一存储器位置中的数据与跳过数据进行比较,当所述第一存储器位置中的数据与所述跳过数据相匹配时,所述检测器则断言找到数据信号;以及连接到所述至少一个先进先出模块的速率匹配器,所述速率匹配器用于接收所述触发信号和所述找到数据信号,从而产生控制信号,该控制信号用于推进所述读取指针以跳过所述第一存储器位置。
全文摘要
本发明公开了一种先进先出(FIFO)模块。所述FIFO模块包括多个可独立寻址的存储器位置、写入指针、读取指针和至少一个附加指针。所述写入指针连接到存储体,用于寻址第一存储器位置,以将输入数据总线上的数据写入到第一存储器位置中。所述读取指针连接到存储体,用于寻址第二存储器位置,以将存储在其中的数据读取到输出数据总线上。所述至少一个附加指针连接到存储体,用于寻址第三存储器位置,以读取存储在其中的数据。本发明还公开了利用所述FIFO模块的延迟均衡电路和速率匹配电路,以及延迟均衡方法。
文档编号G06F12/00GK1658596SQ20051000735
公开日2005年8月24日 申请日期2005年2月4日 优先权日2004年2月19日
发明者张文杰 申请人:安捷伦科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1