一种高速互联总线的报文过滤系统及方法与流程

文档序号:12015616阅读:227来源:国知局
一种高速互联总线的报文过滤系统及方法与流程
本发明属于计算机集成电路设计技术领域,涉及一种高速互联总线的报文过滤系统及方法。

背景技术:
目前,计算机和集成电路技术高速发展,计算机内部芯片和芯片之间的直接互联往往基于报文传输的串行式高速点对点连接协议,采用差分信号与专门的时钟进行传输,在速度、带宽、每个针脚的带宽、功耗等规格上具有非常高的要求。在市场上高端的处理器中,高速总线互联方式使得每个串行高速通道上速率可以达到6.4Gb/s,CPU与CPU之间的高速互联总线采用的点对点设计,包括一对线路,分别负责数据发送和接收,峰值带宽可达96GB/s。在如此高的传输带宽下,即使将数据从串行方式转换到并行方式,使其位宽增大,依旧要求芯片内部核心逻辑在较高的时钟频率下工作。对于高速互联总线带宽高,速率高的特性,一些FPGA原型系统往往由于芯片资源,布局布线等方面的限制无法达到高速互联总线所要求的时钟频率,出现总线频率和FPGA芯片逻辑频率不匹配的问题。随着设计规模的不断扩大,一个系统中往往含有数个时钟。多时钟带来的一个问题就是如何设计异步时钟之间的接口电路。异步FIFO(FirstInFirstOut)是解决这个问题一种简便、快捷的解决方案。使用异步FIFO可以在两个不同时钟系统之间快速而方便地传输实时数据。在网络接口、图像处理等方面,异步FIFO得到了广泛的应用。异步FIFO是一种先进先出的电路,使用在需要产时数据接口的部分,用来存储、缓冲在两个异步时钟之间的数据传输。在高速互联总线中定义了一种特殊格式的报文,即空报文,空报文不携带任何数据信息,且不会引起上层逻辑的任何操作,仅仅只是作为总线空闲时的数据标识,不影响链路上的逻辑行为。当且仅当高速互联总线上没有协议报文或数据报文需要传输,亦无需进行链路训练握手时,空报文作为数据在总线上传输,标志着总线当前正处于空闲状态。将空报文从总线上进行解析和过滤,只保留携带有效信息的报文,能有效降低总数据流量,将过滤后的数据流做时钟域转换后能够降低其时钟频率,从而降低芯片内部核心逻辑时钟频率。

技术实现要素:
为解决上述问题,本发明的目的在于提供一种高速互联总线的报文过滤系统及方法,将空报文从总线上进行解析和过滤,只保留携带有效信息的报文,从而降低芯片内部核心逻辑时钟频率,降低了频率和资源的要求,从而解决了FPGA验证系统局限性的问题,提高了高速互联总线的设计灵活性。为实现上述目的,本发明的技术方案为:一种高速互联总线的报文过滤系统,包括译码模块、连接译码模块的冒泡模块、连接冒泡模块的合并模块、以及连接合并模块的转换模块;其中,译码模块按照点对点连接协议定义的报文编码对总线上接收端的并行数据进行译码,以单独标志标记每个报文是否有效;冒泡模块根据译码模块输出的位向量对总线并行数据进行重新排序,若报文类型为空报文,则进行冒泡操作,使空报文之后的有效数据报文位置前移,排除空报文位置上的空穴;合并模块的主要是将已经做完冒泡的有效报文数据与等待队列数据进行合并;转换模块通过异步FIFO将FPGA芯片内部分为完全独立的读时钟域和写时钟域,可以同时进行读写操作。进一步地,所述译码模块包括有译码器;所述译码器设有一个或多个使能控制输入端,用来控制允许译码或禁止译码。进一步地,所述译码器的译码逻辑采用报文操作符逐位比较的方法进行报文译码,解析出总线数据中的空报文和有效数据报文。进一步地,冒泡模块依次比较相邻的两个报文,若前面的报文是空报文,且后面的报文是有效数据报文,则将后面的报文位置前移1,否则不操作;从并行数据总线上的第1个报文和第2个报文开始,反复迭代,直至比较最后两个报文,完成冒泡的整个过程。进一步地,合并模块将已经做完冒泡的有效报文数据与等待队列数据进行合并,并根据合并后队列的长度L判断是否达到阈值,若达到则进行填装操作,将合并后的数据写入异步FIFO,否则将合并后的数据存放在等待队列中,等待下一笔冒泡数据进行合并。进一步地,转换模块的异步FIFO包含有一个独立的读端口和写端口的RAM,读端口和写端口各拥有一个计数器,共有两个计数器,产生相互独立的读写地址。本法明的另一技术方案为:一种高速互联总线的报文过滤方法,包括如下步骤:对高速互联总线上传输的数据进行译码,解析译码总线上传输的数据,分析并丢弃其中无效的空报文,只保留有效数据报文;对剩余的有效数据报文进行重新排序和合并;通过冒泡的方式排除空报文位置上的空穴,组成全部有效的并行数据;将过滤后且经过重新排序的数据写入异步FIFO进行跨时钟域转换,从高频转换到低频,与FPGA芯片内部逻辑时钟频率匹配。进一步地,通过专门的译码逻辑对总线上的报文进行译码,每个报文以单独标志位标记是否有效,全部标志位组成数据总线的有效信息位向量。进一步地,通过数据总线有效信息位向量识别总线上的数据空穴,将排在空穴后的有效数据报文前移,通过冒泡的方式排除空穴,重新排序后所有有效数据报文无缝相连。进一步地,将有效数据填装到异步FIFO中,将总线数据从传输总线上的高频时钟域转换到芯片内部核心逻辑使用的低频时钟域。相较于现有技术,本发明高速互联总线的报文过滤系统及方法通过对高速互联总线上传输的数据进行译码,保留有效数据报文,过滤其中的无效信息,并对过滤后的数据流通过异步FIFO做时钟域转换,将其从高速互联总线的高频时钟域转换到FPGA芯片核心逻辑的低频时钟域,降低了频率和资源的要求,从而解决了FPGA验证系统局限性的问题,提高了高速互联总线的设计灵活性。通过降低FPGA原型系统的风险和难度,缩短了产品的验证周期,提高了芯片投片成功率。附图说明图1是本法明高速互联总线的报文过滤系统的模块原理图;图2是本发明的译码模块译码逻辑示意图;图3是本发明的译码位向量示意图;图4是本发明的冒泡操作示意图;图5是本发明的转换模块原理框图。具体实施方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。如图1所示,本发明一种高速互联总线的报文过滤系统,包括译码模块、连接译码模块的冒泡模块、连接冒泡模块的合并模块、以及连接合并模块的转换模块。其中,译码模块按照点对点连接协议定义的报文编码对总线上接收端的并行数据进行译码,以单独标志标记每个报文是否有效;冒泡模块根据译码模块输出的位向量对总线并行数据进行重新排序,若报文类型为空报文,则进行冒泡操作,使空报文之后的有效数据报文位置前移,排除空报文位置上的空穴;合并模块的主要功能是将已经做完冒泡的有效报文数据与等待队列数据进行合并;转换模块通过异步FIFO将FPGA芯片内部分为两个完全独立的时钟域,即读时钟域和写时间域,可以同时进行读写操作。译码模块的译码功能由专门的译码器实现,译码器是一种具有“翻译”功能的逻辑电路,能将输入二进制代码的各种状态,按照其原意翻译成对应的输出信号。译码器设有一个和多个使能控制输入端,又称为片选端,用来控制允许译码或禁止译码。芯片在高速互联总线的接收端口对经过串并转换之后的并行数据进行处理,每笔并行数据中的每个报文的操作码被送到译码器中译码,译码器根据互联总线协议中定义的报文编码“翻译”出每个报文的类型。位向量产生逻辑根据译码结果产生有效位向量,并将并行数据以及对应的位向量送往冒泡模块做下一级处理。图1所示为本发明一实施例译码模块的逻辑图,译码逻辑采用报文操作符(Opcode)逐位比较的方法进行报文译码,解析出总线数据中的空报文和有效数据报文。译码逻辑主要由异或门和与门构成,其输出共有32个,每对输入分别对应一位标准报文操作码Ii和一位总线报文操作码Si,分别做Ii?=Si的比较操作,当且仅当I1-N=S1-N时,译码成功,输出报文类型。图2所示为译码模块的位向量,位向量每一位指示总线中报文类型,“1”表示有效数据报文,“0”表示空报文,总线宽度W=位向量宽度n*报文长度L。冒泡模块的冒泡操作(BubbleOperation)为:依次比较相邻的两个报文,若前面的报文是空报文,且后面的报文是有效数据报文,则将后面的报文位置前移1,否则不操作。从并行数据总线上的第1个报文和第2个报文开始,反复迭代,直至比较最后两个报文,完成冒泡的整个过程,使有效数据报文之间无空报文,能够无缝相连。图3所示描述了冒泡操作中将空报文在总线中的空穴排出,有效数据报文位置前移的过程。将总线上的数据分成若干组,依次比较相邻的两个报文,将有效报文放在前面,空报文放在后面。即在第一趟:首先比较组内第1个报文和组内第2个报文,将有效报文放在前,空报文放在后。然后比较组内第2个报文和组内第3个报文,将有效报文放在前,空报文放在后,如此继续,直至比较组内最后两个报文,将有效报文放在前,空报文放在后。至此第一趟结束,完成各组的冒泡。在第二趟:从第一对组(第1组和第2组)开始比较,将有效报文放在前,空报文放在后,一直比较到最后一组(第N组和第N-1组),第二趟结束,完成每两小组的冒泡。如此下去,重复以上过程,直至最终完成排序。合并模块的主要功能是将已经做完冒泡的有效报文数据与等待队列数据进行合并,并根据合并后队列的长度L判断是否达到阈值,若达到则进行填装操作,将合并后的数据写入异步FIFO,否则将合并后的数据存放在等待队列中,等待下一笔冒泡数据进行合并。转换模块通过异步FIFO将FPGA芯片内部分为两个完全独立的时钟域--读时钟域和写时间域,异步FIFO的存储介质为一块双端口RAM,可以同时进行读写操作。在写时钟域,由写地址产生逻辑产生写控制信号和写地址;在读时钟域,读地址产生逻辑产生读控制信号和读地址。在空/满信号产生部分,由读写地址相互比较产生空/满标志。由合并模块输出的填装数据作为写数据对异步FIFO进行写操作,另一侧实时读出该数据,数据即转换到FPGA芯片内部逻辑时钟的时钟域。图4为转换模块功能原理框图,转换模块的异步FIFO包含有一个独立的读端口和写端口的RAM,读写端口拥有两个计数器,产生数据宽度为log2(array_size)的相互独立的读写地址。这些计数器为读指针(ReadPointer)和写指针(WritePointer)。写指针指向下一个要写入的位置,读指针指向下一个要读的位置。每次写操作使指针加1,每次读操作使指针加1。空/满标志产生逻辑的功能则是给FIFO提供“空”(empty)和“满”(full)信号。这些信号告诉外部电路FIFO已达到临界状态。“满”信号有效表明FIFO没有存储空间来写入更多的数据。“空”信号有效表明FIFO没有更多的数据可以读出。合并后的完全有效数据使用高频总线时钟写入异步FIFO中,在另一侧被FPGA芯片内部低频逻辑时钟读出,完成有效数据报文的跨时钟域转换。本发明另一实施例为一种高速互联总线的报文过滤方法,通过对高速互联总线上传输的数据进行译码,解析译码总线上传输的数据,分析并丢弃其中无效的空报文,只保留有效数据报文,并对剩余的有效数据报文进行重新排序和合并,通过冒泡的方式排除空报文位置上的空穴,组成全部有效的并行数据。最后将过滤后且经过重新排序的数据写入异步FIFO进行跨时钟域转换,从高频转换到低频,与FPGA芯片内部逻辑时钟频率匹配。其中,通过专门的译码逻辑对总线上的报文进行译码,每个报文以单独标志位标记是否有效,全部标志位组成数据总线的有效信息位向量。通过数据总线有效信息位向量识别总线上的数据空穴,将排在空穴后的有效数据报文前移,通过冒泡的方式排除空穴,重新排序后所有有效数据报文无缝相连,具体地,将其与之前已处于等待状态的有效数据做合并操作,该操作以专门的合并-填装逻辑进行实现,合并之后根据有效报文数目是否达到阈值判断是否进行队列填装操作。将有效数据填装到异步FIFO中,将总线数据从传输总线上的高频时钟域转换到芯片内部核心逻辑使用的低频时钟域。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1