背景技术
高速串行接口物理层的协议规定,逻辑层传输给物理层的事务包,在发送出去之前,需要经过物理层的循环冗余校验(Cyclic Redundancy Check,CRC)码产生电路产生16位的CRC校验码。在接收端,物理层的接收电路需要对接收的事务包的CRC码进行校验,通过判断CRC码的正确性,来确认接收的事务包是否在传输链路上出错,从而达到保护数据的目的。
一般的高速接口,如RapidIO2.1、PCIE2.0和USB3.0,采用的都是CRC-16校验类型,生成多项式为G(x)=x16+x12+x5+1,根据输入数据位数的不同,可以推导出16位、32位、48位和64位的并行CRC-16,其推导原理是根据串行CRC校验进行迭代产生,此处对并行CRC-16的实现不作介绍。
协议只规定逻辑层的数据是16位为一个有效单位,在许多高速串行接口的物理层IP核的应用场合下,为了提高逻辑层的时钟速度,需要将数据总线的宽度拓展到64位。由于可能会存在16位、32位、48位和64位四种有效的情况,使得校验电路实现起来要比32位的更复杂一些。为了能够处理四种有效的情况,目前已经提出了级联结构和并行结构的CRC-16校验电路。
级联结构是将4个16位并行CRC-16串联成一个链,64位的数据分成四个16位,分别输入到四个CRC-16中,计算所得的结果依次传递,最后通过判断每一个CRC-16输出是否等于16′h1D0F和次高16位是否为16′h0000,可以确定数据的有效对齐格式和校验结果。
由于是串行级联,该结构组合逻辑链较长,使得速度受到限制,不能运行在很高的频率下。
并行结构采用的并行的16位、32位、48位、64位四个CRC-16来选择对输入的数据进行CRC-16计算。如果校验输入的数据是32位对齐的,即最后一拍数据包含16位的有效数据、16位CRC码和32位的无效0。此时,选择32位的并行CRC-16来计算,判断输出是否等于16′h1D0F和次高16位是否等于16′h0000,就可以确定输入的数据是否是32位对齐的和校验的结果,从而可以确定最后一拍数据中有效的数据位。以此类推,输入的数据会同时给到四个CRC-16中,通过同时判断输出,就可以确定数据的对齐格式和校验结果。该结构通过四种并行CRC-16来涵盖四种数据对齐的情况,解决了对齐的问题。虽然速度能够获得提升,但面积较大,占用资源较多,功耗较大。
由于CRC-16校验电路在高速串行接口设计中,占据重要的地位,如何设计一种高性能的CRC-16校验电路,在完成事务包校验的同时,获得最优的速度、功耗和面积,对于高速串行接口的设计具有十分重要的意义。
发明内容
有鉴于此,本发明的主要目的是在于提供一种适用于64位总线位宽的CRC校验电路,以便通过采用16位、64位并行CRC校验器及等效判断逻辑,来达到减少并行CRC-16校验器个数,减小组合逻辑的目的,使速度、面积和功耗得到最大的改善。
为达到上述目的,作为本发明的一个方面,本发明提供了一种适用于64位总线位宽的CRC校验电路,所述CRC-16校验电路中仅包含16位和64位两种并行CRC校验器。
其中,所述16位CRC校验器完成16位有效数据输入的校验操作,通过按位取反逻辑辅助完成32位对齐的数据校验操作;所述64位CRC校验器完成64位数据校验操作,通过延迟判断逻辑辅助完成48位对齐的数据校验操作。
作为本发明的另一个方面,本发明还提供了一种适用于64位总线位宽的CRC校验方法,包括以下步骤:
仅通过16位CRC校验器和64位CRC校验器分别对输入的事务包数据进行计算;
如果16位CRC校验器对所述事务包数据计算所得的Cout16等于16′h1D0F,且次高16位Ds2等于16′h0000,则输入事务包是16位对齐的,且事务包校验正确;
如果16位CRC校验器对所述事务包数据计算所得的Cout16等于次高16位Ds2的按位取反,则输入的事务包是32位对齐的,且事务包校验正确;
如果64位CRC校验器对所述事务包数据计算所得的Cout64等于16′h84C0,且高16位Ds4等于16′h0000,则事务包是48位对齐的,且事务包校验正确;
如果64位CRC校验器对所述事务包数据计算所得的Cout64等于16′h1D0F,则事务包是64位对齐的,且事务包校验正确。
从上述方案可以看出,本发明公开的适用于总线为64位位宽的高速接口物理层事务包的CRC校验电路及校验方法,通过采用等效控制逻辑来替代并行32位、48位CRC校验器,对并行结构进行优化,在最大限度的减小电路面积和动态功耗的同时,提升了电路工作的速度。本发明的校验电路只需要16位并行CRC校验器和64位并行CRC校验器就可以实现对四种不同对齐格式的事务包进行校验操作。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明作进一步的详细说明。
本发明的基本思想是:①减少并行CRC-16产生器的个数,达到减少组合逻辑,节省资源的目的;②通过64位并行CRC-16来提高电路的工作速度,提高性能的目的。由于64位总线位宽的事务包对齐格式有16位、32位、48位和64位四种,需要用四种判断逻辑来满足这四种情况。在并行结构的基础上,通过16位并行CRC-16和按位取反等效判断逻辑来替代掉32位并行CRC-16,以此来实现事务包是32位对齐格式的校验;通过64位并行CRC-16及延迟判断逻辑来替代掉48位并行CRC-16,以此来实现事务包是48位对齐格式的校验;16位和64位对其格式的校验与并行结构的相同,以下是本发明的技术原理。
假设数据是16位对齐且校验正确的,则16位并行CRC-16的计算结果应该为16′h1D0F,如果此时次高16位是无效的16′h0000。则可以确定该数据是16位对齐的,即事务包最后一个数据是16位的CRC码和48位无效的0。
假设数据是64位对齐且校验正确的,则64位并行CRC-16的计算结果应该为16'h1D0F。由此可以确定该数据是64位对齐的,即事务包最后一个数据是48位有效的数据和16位的CRC码。
假设数据是32位对齐且校验正确的,即该数据包含低16位有效数据、次低16位CRC码以及高位无效0。此时低16位经过16位并行CRC-16计算结果应该就是原始的CRC码,但实际发送的数据中,次低16位是CRC码的按位取反。如果低16位等于次低16位的按位取反,就可以确定该数据是32位对齐的,即事务包最后一个数据是16位有效的数据、16位的CRC码和32位无效的0。
假设数据是48位对齐且校验正确的,则该部分输入数据DRX1(x)的CRC-16计算结果为16′h1D0F,只要通过判断最后一拍64位数据64位并行CRC-16计算的输出是否等于16′h84C0,以及高16位是否等于16′h0000,就可以确定数据包是否是48位对齐,即事务包最后一个数据是32位有效的数据、16位的CRC码和16位无效的0。
由上可以看出,本发明的校验电路只需要16位并行CRC-16和64位并行CRC-16校验器就可以实现对四种不同对齐格式的事务包进行校验操作。
更具体地,本发明公开了一种适用于64位总线位宽的CRC校验电路,该CRC校验电路中仅包含16位和64位两种并行CRC校验器。
其中,16位CRC校验器完成16位有效数据输入的校验操作,通过按位取反逻辑辅助完成32位对齐的数据校验操作;64位CRC校验器完成64位数据校验操作,通过延迟判断逻辑辅助完成48位对齐的数据校验操作。
其中,该CRC校验电路中还包括对齐格式判断逻辑和包校验逻辑。对齐格式判断和包校验逻辑对输入的数据包进行对齐格式判断,产生相应的校验结果。
作为一个优选实施例,本发明的适用于64位总线位宽的CRC校验电路,由16位并行CRC-16、64位并行CRC-16、包对齐格式判断逻辑、包校验逻辑组成,可以实现对不同对齐格式的事务包,进行校验操作。
本发明还公开了一种适用于64位总线位宽的CRC校验方法,包括以下步骤:
仅通过16位CRC校验器和64位CRC校验器分别对输入的事务包数据进行计算;
如果16位CRC校验器对所述事务包数据计算所得的Cout16等于16′h1D0F,且次高16位Ds2等于16′h0000,则输入事务包是16位对齐的,且事务包校验正确;
如果16位CRC校验器对所述事务包数据计算所得的Cout16等于次高16位Ds2的按位取反,则输入的事务包是32位对齐的,且事务包校验正确;
如果64位CRC校验器对所述事务包数据计算所得的Cout64等于16′h84C0,且高16位Ds4等于16′h0000,则事务包是48位对齐的,且事务包校验正确;
如果64位CRC校验器对所述事务包数据计算所得的Cout64等于16′h1D0F,则事务包是64位对齐的,且事务包校验正确。
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例和传统的设计结构,并参照附图,对本发明进一步详细说明。
图1给出了不同对齐格式下的64位总线数据的输入结果。Ds1~Ds4为64位数据的低到高,各为16位。如果数据包是16位对齐的,则CRC码位于最低16位的位置Ds1,高位补0;如果数据包是32位对齐的,则CRC码位于Ds2的位置,高位补0;如果数据包是48位对齐的,则CRC码位于Ds3的位置,高位补0;如果数据包是64位对齐的,则CRC码位于Ds4的位置。
图2和图3给出了传统的级联结构和并行结构的实现。传统的级联结构,从Ds1~Ds4开始数据分别输入到4个16位的并行CRC-16中,四个CRC-16的计算输出Cout16~Cout64分别向高位传递,最后通过分别判断Cout16~Cout64和Ds1~Ds4,就可以完成不同对齐格式数据包的校验操作,从而确定事务包有效的数据位。可以看出,由于串行级联,该结构组合逻辑关键路径很长,使得速度受到限制,不能运行在很高的频率下;
图2和图3给出了传统的级联结构和并行结构的实现。
传统的并行结构,Ds1分别输入到四个CRC-16中,Ds2分别输入到32位、48位、64位并行CRC-16中,Ds3和Ds4依次类推,输入的数据会分别经过四个CRC-16进行计算,最后通过判断Cout16~Cout64的输出以及Ds1~Ds4,可以确定有效的数据位。可以看出,虽然速度能够获得提升,但面积较大,占用资源较多,功耗较大。
图4是本发明的64位总线的CRC-16校验电路的结构示意图,具体实施如下所示:校验电路主要由16位并行CRC-16、64位并行CRC-16、包对齐格式判断逻辑、包校验逻辑组成。该结构是在并行结构基础上进行改进,用16位和64位并行CRC-16产生器来实现事务包的校验。事务包的校验和对齐格式由16-bit Ended、32-bit Ended、48-bit Ended、64-bitEnded四个信号给出,如果事务包数据计算所得CRC-16的Cout16等于16′h1D0F,且Ds2等于16′h0000,则输入事务包是16位对齐的,且事务包校验正确;如果Cout16等于Ds2的按位取反,则输入的事务包是32位对齐的,且事务包校验正确;如果Cout64等于16′h84C0,且Ds4等于16′h0000,则事务包是48位对齐的,且事务包校验正确;如果Cout64等于16′h1D0F,则事务包是64位对齐的,且事务包校验正确。
图5和图6是级联结构、并行结构和本发明结构在SMIC55nm CMOS工艺、ss工艺角以及相同的综合约束脚本下,通过Design Compiler综合软件的综合报告给出的资源和功耗对比曲线图。由图5可以看出,级联结构的极限频率是320MHz左右,并行结构的极限频率是380MHz左右,本发明结构的极限频率在400MHz左右。在320MHz工作时钟下,本发明结构的逻辑单元数约为级联结构的78.0%,约为并行结构的84.5%。由图6可以看出,在320MHz的工作时钟下,本发明结构的动态功耗约为级联结构的21.3%,约为并行结构的67.5%。由以上数据分析可以看出,本发明的电路结构在面积、功耗和速度上都要优于传统的级联结构和并行结构。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。