CN103684663B - 用于循环冗余校验的装置和方法 - Google Patents
用于循环冗余校验的装置和方法 Download PDFInfo
- Publication number
- CN103684663B CN103684663B CN201210332751.4A CN201210332751A CN103684663B CN 103684663 B CN103684663 B CN 103684663B CN 201210332751 A CN201210332751 A CN 201210332751A CN 103684663 B CN103684663 B CN 103684663B
- Authority
- CN
- China
- Prior art keywords
- serial
- module
- crc
- data
- serial crc
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Error Detection And Correction (AREA)
Abstract
本发明涉及用于循环冗余校验(CRC)的装置和方法,其中,该装置包括:多个串行CRC模块,所述多个串行CRC模块均按照相同的CRC多项式和数据长度对输入的串行数据按位进行串行CRC;启动模块,其控制所述多个串行CRC模块依次在不同的时间点启动,以分别对同一输入的串行数据流进行串行CRC,其中,当所述多个串行CRC模块中的一个串行CRC模块得到正确的校验结果时,所述装置判断出得到正确的校验结果。利用该方法和装置,能够改进对于大数据量高复杂度报文数据进行CRC的实时性和精度,同时节省硬件资源的使用。
Description
技术领域
本发明涉及一种用于循环冗余校验(CRC)的装置和方法。
背景技术
为了避免数据传输过程中发生的错误对数据安全性产生影响,需要对传输的数据进行校验来确保数据的完整性。CRC码是一种常用的错误检测码,它通过将需要传输的每位数据按照一定的计算方式进行计算,并把计算后的结果作为CRC校验码附加到数据流后一起传输,接收方通过相同的计算方法对接收到的数据进行计算,将结果和收到的CRC码进行比较,以确定数据传输是否正确。由于CRC校验的编解码简单、纠错能力强且误判概率很低,因而在工业测控及通信系统中得到了广泛的应用。
在高速铁路系统中,应答器用于传输地面和列控中心发送给列车的运行控制信息,包括实时的速度、坡度、位置等信息,列车通过对接收到的报文信息进行分析后进行自动控制与驾驶。所以应答器对报文信息传输的安全性具有很高的要求。
CRC的错误检测能力依赖于CRC多项式的阶次,CRC中每增加一个数据位,就会将碰撞概率减少接近50%。举例来说,理论上CRC-64的碰撞概率大约是每18×1018个CRC码出现一次。为了尽量降低校验中的碰撞概率,提高信息传输的可靠性和安全性,当前高速铁路应答器报文数据采用75位的CRC校验多项式,数据长度采用1023位。
CRC算法可以用软件实现,也可以用硬件实现。软件实现的优点是设计相对简单,易于维护和更新,但是缺点是必须由中央处理器(CPU)来完成算法计算,不仅计算的速度受限于系统CPU的速度,而且它还会对系统CPU的工作带来很大的负担,特别是在一些实时性要求很强的嵌入式系统中,这个影响是不可估量的。所以,现在大量的CRC计算都是使用硬件方式来实现的,比较常见的就是使用现场可编程门阵列(FPGA)芯片来完成硬件电路的设计。它不仅可以提高计算速度,同时可提高系统的安全性和可靠性。现有硬件算法实现大体可分为串行实现和并行实现。
在串行实现中,每次输入一位数据,将输入数据和上一次异或运算的结果组成新的数据,进行循环异或运算,直到所有规定数据长度(例如上述1023位)的数据输入完,校验电路用移位寄存器和异或门实现。对于r位的CRC校验长度,需要r个寄存器,当有新的数据输入后异或运算立刻得出新的CRC值,寄存器依据时钟控制,等待新的输入数据,反复循环,直到计算出所有数据位的CRC校验码。串行CRC装置的结构是由所采用的CRC多项式决定的。
串行实现方式虽然可以计算各种CRC,但是一个时钟周期只能计算一位数据,效率比较低。例如,对于高速铁路应答器中使用1023位的数据报文长度,需要1023位的时间才能完成一次校验;而如果校验错误,则需要复位串行CRC电路以针对接下来的1023位进行下一次的校验。
相比串行实现方式,并行实现方式可以在一个时钟内对多位数据进行CRC计算,从而提高了CRC的计算速度。目前已采用的CRC并行算法有查表法和公式法。然而,并行CRC所需硬件资源大,不适合实现大的CRC校验长度,以查找表为例,CRC校验码为16位时,CRC余数表的长度为65535,而CRC校验码为32位时,CRC余数表的长度将为4294967296,这时,已经很难提供足够的硬件资源实现并行CRC校验了,更不用说实现更大长度的CRC校验。
因此,对于高速铁路应答器中采用的这种大数据量报文数据的CRC校验,本领域需要既能满足校验实时性,同时又能尽量降低硬件资源需求量的技术。
发明内容
考虑到现有技术的上述问题,本发明的实施例提供一种用于CRC的装置和方法,其通过采用多任务同时处理的工作模式,通过流水线结构对CRC任务进行区分,根据流水级数的不同控制校验的实时性和硬件资源的消耗数。
根据本发明的一个方面,提供了一种用于CRC的装置,包括:多个串行CRC模块,所述多个串行CRC模块均按照相同的CRC多项式和数据长度对输入的串行数据按位进行串行CRC;启动模块,其控制所述多个串行CRC模块依次在不同的时间点启动,以分别对同一输入的串行数据流进行串行CRC,其中,当所述多个串行CRC模块中的一个串行CRC模块得到正确的校验结果时,所述装置判断出得到正确的校验结果。
根据一个实施例,所述不同的时间点平均分布在一串行CRC周期中,所述串行CRC周期是用于采样所述串行数据流中具有所述数据长度的数据段以对其进行串行CRC的周期。
根据一个实施例,所述启动模块包括计数器,在所述启动模块启动第一个串行CRC模块后,所述计数器每当对输入的所述串行数据流的位数进行计数达到计数阈值时,所述启动模块启动下一个串行CRC模块,所述计数阈值等于所述数据长度的位数除以所述多个串行CRC模块的数量得到的整数。
根据一个实施例,所述启动模块包括计时器,在所述启动模块启动第一个串行CRC模块后,所述计时器每当计时达到计时阈值时,所述启动模块启动下一个串行CRC模块,所述计时阈值等于采样所述数据长度的位数以对其进行串行CRC所需的时间除以所述多个串行CRC模块的数量得到的时间量。
根据一个实施例,所述装置还包括校验判别模块,其接收由所述多个串行CRC模块分别输出的校验结果,并且当接收到一个指示校验正确的校验结果时,则判别出得到正确的校验结果。
根据一个实施例,所述装置还包括数据输出模块,用于当所述校验判别模块判别出得到正确的校验结果时,在所述校验判决模块的控制下输出对应于所述正确校验结果的数据。
根据一个实施例,所述数据输出模块包括选通器,所述选通器连接所述多个串行CRC模块的数据输出端,其中,所述校验判别模块在判别出得到正确的校验结果时,控制所述选通器选通得到正确校验结果的串行CRC模块的输出通路,以输出来自该得到正确校验结果的串行CRC模块的对应于所述正确校验结果的数据。
根据一个实施例,所述数据输出模块包括至少具有所述数据长度的位数的缓存器,所述输入的串行数据流在输入到所述多个串行CRC模块的同时并行地输入到所述缓存器,其中,当所述校验判别模块判别出得到正确的校验结果时,控制所述数据输出模块输出当前缓存器中的数据。
根据一个实施例,在将所述输入的串行数据流在输入到所述多个串行CRC模块的同时,将其并行地从所述装置输出;其中,当所述多个串行CRC模块中的一个串行CRC模块得到正确的校验结果时,从所述装置输出指示校验正确的信息。
根据本发明的另一个方面,提供了一种安装于列车上的包括上述用于CRC的装置的设备,当所述列车经过地面应答器时,所述设备从所述应答器接收串行数据流,并且通过所述用于CRC的装置得到校验正确的数据报文。
根据本发明的另一个方面,提供了一种进行CRC的方法,包括:控制多个串行CRC模块依次在不同的时间点启动,以分别对同一输入的串行数据流进行串行CRC,其中,所述多个串行CRC模块均按照相同的CRC多项式和相同的数据长度对输入的串行数据按位进行串行CRC;当所述多个串行CRC模块中的一个串行CRC模块得到正确的校验结果时,判断出得到正确的校验结果。
根据一个实施例,所述不同的时间点平均分布在一串行CRC周期中,所述串行CRC周期是用于采样所述串行数据流中具有所述数据长度的数据段以对其进行串行CRC的周期。
根据一个实施例,所述方法还包括:利用计时器来控制所述多个串行CRC模块依次在所述不同的时间点启动,启动第一个串行CRC模块后,每当所述计时器计时达到计时阈值时,启动下一个串行CRC模块,其中,所述计时阈值等于采样所述数据长度的位数以对其进行串行CRC所需的时间除以所述多个串行CRC模块的数量得到的时间量。
根据一个实施例,所述方法还包括:利用计数器来控制所述多个串行CRC模块依次在所述不同的时间点启动,启动第一个串行CRC模块后,每当所述计数器对输入的所述串行数据流的位数进行计数达到计数阈值时,启动下一个串行CRC模块,其中,所述计数阈值等于所述数据长度的位数除以所述多个串行CRC模块的数量得到的整数。
根据一个实施例,当所述多个串行CRC模块中的一个串行CRC模块得到正确的校验结果时,则选通得到正确校验结果的所述串行CRC模块的输出通路,以输出来自所述得到正确校验结果的所述串行CRC模块的对应于所述正确校验结果的数据。
根据一个实施例,所述方法还包括:在将所述输入的串行数据流输入到所述多个串行CRC模块的同时并行地输入到至少具有所述数据长度的位数的缓存器,其中,当所述多个串行CRC模块中的一个串行CRC模块得到正确的校验结果时,输出当前所述缓存器中的数据。
根据一个实施例,所述方法还包括:在将所述输入的串行数据流在输入到所述多个串行CRC模块的同时,将其并行地输出到外部处理系统;其中,当所述多个串行CRC模块中的一个串行CRC模块得到正确的校验结果时,将指示校验正确的信息输出到所述外部处理系统。
从上面的描述可见,本发明的实施例通过使多个串行CRC模块以流水线的方式在不同的时间点启动来对输入的数据流进行串行CRC,减小了对输入数据流进行串行CRC的时间间隔,即改进了对输入数据流进行串行CRC的粒度,从而改进了校验实时性。利用本发明的技术方案,可以根据系统要求的不同,通过调整并行工作的串行CRC模块的数量,在校验速度和资源之间进行合理的选择,从而在资源允许的条件下能够最大程度的提高CRC校验速度和精度。
附图说明
本发明的其它特点、特征、优点和益处通过以下结合附图的详细描述将变得更加显而易见。其中:
图1示出了按照本发明一个实施例的用于CRC的装置的结构图;
图2示出了按照本发明一个实施例的用于CRC的方法的示意图;以及
图3示出了按照本发明一个实施例的车载设备的示意图。
具体实施方式
下面,将结合附图详细描述本发明的各个实施例。
在高速铁路系统中,在轨道沿线每隔一定距离(例如1公里)布置一个地面应答器,其布置在轨道中间,当列车经过地面应答器时,通过无线射频激活应答器,使得应答器发射预置数据,从而使列车获得诸如公里标、限速、坡度等控制信息,自动控制列车的运行。按照欧洲铁路运输管理系统/欧洲列车控制系统(ERTMS/ETCS)规范以及中国铁路列车控制系统(CTCS)标准的要求,高速列车应答器的报文长度为1023位,采用75位CRC校验长度。当应答器向列车传输预置数据时,将1023位的报文循环重复地进行传输。由于采用特定的编码方式,所传输的串行数据流是循环的,这意味着串行数据流中任何正确传输的1023位数据段,都是具有相同消息内容的有效报文。
在下面的详细描述中,以现有高速铁路应答器中采用的数据要求为例,例如报文数据采用75位的CRC校验多项式,报文数据长度采用1023位,描述本发明的实施例。本领域技术人员应该清楚,所举例的数据长度1023和校验长度75都是作为例子的,即使铁路应答器采用其他的数据长度和校验长度,或者在其他应用领域采用类似的报文,本发明也同样适用。
现在参见图1,其示出了按照本发明一个实施例的用于进行CRC的装置1000的结构图。该装置1000可以通过例如现场可编程门阵列(FPGA)实现,当然也可以通过复杂可编程逻辑器件(CPLD)、专用集成电路(ASIC)等硬件电路来实现。本发明不限于具体的实现方式。
如图所示,CRC装置1000包括输入同步模块1010、启动模块1020、多个串行CRC模块10301、10302、……、1030n、校验判别模块1040和数据输出模块1050。
输入同步模块1010对输入的串行数据流进行同步处理,例如,用于同步例如数据接收单元与CRC装置1000之间的时钟,避免由于系统之间的不同时钟域引起的误差。这里,数据接收单元用于从地面应答器无线接收串行数据流,并将接收的串行数据流提供给CRC装置1000。
输入同步模块1010将输入的串行数据流输出到多个串行CRC模块10301-1030n中。
多个串行CRC模块10301-1030n均按照相同的CRC多项式和数据长度对输入的串行数据按位进行串行CRC。其中,当多个串行CRC模块10301-1030n中的一个串行CRC模块得到正确的校验结果时,该CRC装置1000输出该串行数据流中与该正确校验结果对应的数据,即得到正确校验的数据。
每个串行CRC模块1030可以按照本领域可用的任何串行CRC电路结构来实现。例如,每个串行CRC模块10301-n可以采用75位的CRC校验多项式以及1023位的数据长度来进行CRC。例如以西门子信号有限公司研制的BTM硬件解码模块中的硬件CRC校验设计为例,每个串行CRC模块1030a-n可以采用CRC校验多项式:G(x)=x75+x73+x72+x71+x67+x62+x61+x60+x57+x56+x55+x52+x51+x49+x46+x45+x44+x43+x41+x37+x35+x34+x33+x31+x30+x28+x26+x24+x21+x17+x16+x15+x13+x12+x11+x9+x4+x+1。当然,串行CRC模块1030也可以采用其他可用的CRC校验多项式。
启动模块1020控制多个串行CRC模块10301-n依次在不同的时间点启动,以分别对同一输入的串行数据流进行串行CRC。根据一个实施例,该不同的时间点可以平均分布于一串行CRC周期中,该串行CRC周期是用于采样该串行数据流中具有特定数据长度(例如1023位)的数据段以便对其进行串行CRC的周期,换言之,该特定数据长度的一系列串行数据位进入到一个串行CRC模块的周期。
例如,当接收到来自外部处理系统(例如主处理系统)的复位信号时,该启动模块1020控制多个串行CRC模块10301-n依次在不同的时间点启动。可以根据串行CRC模块的数量、CRC校验的报文数据长度以及输入的串行数据速度等参数设计启动模块来控制各串行CRC模块的启动时序。
为了说明的方便,假设装置1000包括8个串行CRC模块,每个串行CRC模块用于对上述高速铁路应答器传输的1023位的报文数据进行具有75位校验长度的CRC,高速铁路应答器报文是以565Kbps的数据速率按位串行传输的,即每一位的传输时间是1.77us。
对于1023位的报文数据,一个串行CRC模块对其执行一次完整的CRC校验的周期是该1023个数据位串行进入该CRC模块的时间周期,即一个CRC周期等于1023×1.77us≈1.81ms。可以设置8个串行CRC模块的启动时序,使它们在1.81ms的CRC周期中的不同时间点启动。例如,可以使8个串行CRC模块在平均分布于1.81ms的CRC周期中的不同时间点启动,即在第一个串行CRC模块启动后,经过1.81ms÷8=226.25us的时间使第二个串行CRC模块启动,然后再经过226.25us的时间使第三个串行CRC模块启动,依次类推,使得8个串行CRC模块每隔226.25us的时间依次启动。
可以设计启动模块1020来控制8个串行CRC模块在一个CRC周期中的不同时间点启动。根据一个实施例,启动模块1020可以包括计时器,设置该计时器的计时阈值,例如该计时阈值为上述1.81ms÷8=226.25us。在启动模块1020启动第一个串行CRC模块后,计时器每当计时达到计时阈值时,启动模块就启动下一个串行CRC模块,从而使得8个串行CRC模块每隔该计时阈值依次启动。在该例中,上述计时阈值等于采样规定数据长度的位数以便对其进行串行CRC所需的时间除以多个串行CRC模块的数量得到的时间量。
根据另一实施例,启动模块1020可以包括计数器,该计数器可以对采样并输入到串行CRC模块的位数进行计数。对于1023位的报文数据,可以设计该计数器的计数阈值为1023除以8所得到的整数,可以向上取整也可以向下取整,即,通过1023整除以8得到计数阈值为127或128。在启动模块1020启动第一个串行CRC模块后,计数器每当对输入的串行数据流的位数进行计数达到计数阈值时,启动模块1020启动下一个串行CRC模块,从而使得8个串行CRC模块每隔例如127或128的计数阈值个串行数据位依次启动。在该例中,上述计数阈值等于报文数据长度的位数除以多个串行CRC模块的数量得到的整数。
尽管每个串行CRC模块的启动时间不同,但是每个串行CRC模块均对同样的报文数据进行校验。区别在于,由于启动时间不同,所以有效校验的开始位不同。然而,如前所述,因为所传输的串行数据流是循环的,所以每个串行CRC模块都可以校验1023位数据。
在上述实施例中,启动模块1020可以利用任何合适的机会启动第一个串行CRC模块,例如,可以当收到复位信号时就启动第一个串行CRC模块,也可以当检测到有串行输入流进入时启动第一个串行CRC模块,也可以当检测到有串行输入流进入并计数一定数量的比特后启动第一个串行CRC模块,这样做的原因是,最初进入的若干比特中存在错误的可能性相对较大,因此可以忽略最初进入的这些比特不对其进行CRC。本发明技术方案的实现不受启动模块何时启动第一个串行CRC模块的限制。
通过上述控制串行CRC模块10301-n的启动时序,每个串行CRC模块10301-n在不同的时间点开始对输入的串行数据位进行CRC,并且将校验结果提供给校验判别模块1040。
校验判别模块1040接收由多个串行CRC模块10301-n分别输出的校验结果,并且当接收到一个指示校验正确的校验结果时,则判别出得到正确的校验结果。校验判别模块1040可以向外部处理系统输出用于指示校验正确的校验状态指示。
当校验判别模块1040判别出得到正确的校验结果时,其控制数据输出模块1050输出对应于该正确校验结果的数据,即得到正确校验的数据。该数据例如是在所描述的实施例中的1023位的报文数据。本领域技术人员应该理解,也可以在该输出数据中提供一定的冗余量,即该输出的数据可以多于该1023位报文数据并且包含该1023位报文数据;当外出处理系统接收到该输出数据时,可以按照预定的规则提取出相应的1023位报文数据。例如,可以根据CRC装置1000中所缓存的该输出数据的量、传输过程中可能的时间延迟,确定相应的1023位报文数据在该输出数据中的位置,使得外出处理系统能够从该输出数据中提取出相应的1023位报文数据。
根据一个实施例,数据输出模块1050包括选通器,该选通器连接多个串行CRC模块10301-n的数据输出端。校验判别模块在判别出得到正确的校验结果时,控制该选通器选通得到正确校验结果的串行CRC模块的输出通路,以输出来自该得到正确校验结果的串行CRC模块的对应于该正确校验结果的数据。例如,校验判别模块可以确定得到正确校验结果的串行CRC模块的标识信息,该标识信息例如是该串行CRC模块的地址,并利用该标识信息控制选通器选通该串行CRC模块的输出通路,从而输出校验正确的报文数据给外部处理系统。
根据另一个实施例,数据输出模块1050包括缓存器。该缓存器例如可以是先进先出(FIFO)缓存器,该缓存器能够至少缓存一个报文数据长度的位数。本领域技术人员应该理解,所包括的缓存器不限于FIFO缓存器,可以采用本领域可用的任何类型的缓存器。在该实施例中,无需如图1所示将串行CRC模块的数据输出端连接到数据输出模块,而是将来自输入同步模块1010的串行数据流在输入到所述多个串行CRC模块的同时并行地输入到该缓冲器。因此,当前输入到缓冲器中的数据位与当前输入到串行CRC模块的数据位是相同的。当校验判别模块1040判别出得到正确的校验结果时,当前缓存器中的数据恰好是得到正确校验结果的串行CRC模块中正确验证的数据,因此校验判别模块1040向数据输出模块1050发出控制信号,以使其输出当前缓存器中的数据。在其他情形下,缓冲器只需要随着输入数据位的到来丢弃最先进入的数据位。
如上所述,本领域技术人员应该理解,该缓存器的容量可以大于一个报文的数据量,从而可以在该输出数据中提供一定的冗余量;当外出处理系统接收到该输出数据时,可以按照预定的规则提取出相应数据长度的报文数据。
本领域技术人员应当理解,虽然在上面参照图1说明了本发明的实施方式,但是本发明的实现并不局限于此,本发明的实现不一定需要如图所示的所有部件。
例如,本领域技术人员应当理解,输入同步模块1010是作为嵌入式系统的FPGA通常都需要的模块,为了便于说明的目的在图1中示出了该模块,但是该输入同步模块并不是实现本发明技术方案所必要的技术特征。
又例如,校验判别模块1040和数据输出模块1050也不是实现本发明技术方案一定需要的。
在一个不同的实施例中,可以将每个串行CRC模块10301-n中配置为当得到正确的校验结果时输出校验结果指示和相应的报文数据,而当得到错误的校验结果时丢弃校验结果指示和相应的报文数据,从而不需要校验判别模块1040和数据输出模块1050也能够实现本发明技术方案。
在另一个不同的实施例中,装置1000中可以不包含数据输出模块1050。在将输入的串行数据流在输入到多个串行CRC模块10301-n的同时,将该串行数据流并行地从装置1000输出给外部处理系统。当多个串行CRC模块中的一个串行CRC模块得到正确的校验结果时,从装置1000输出指示校验正确的信息给外出处理系统。这时,外部处理系统中可以包含一个存储器,该缓存器能够至少缓存一个报文数据长度的位数。本领域技术人员应该理解,外部处理系统中的该缓存器可以通过各种方式实现,例如,以软件方式建立一个缓存区间,用于缓存输入的串行数据流。当前输入到缓冲器中的数据位与当前输入到串行CRC模块的数据位是一致的。当装置1000判别出得到正确的校验结果时,外部处理系统中缓存的数据恰好是得到正确校验结果的串行CRC模块中正确验证的数据,因此当外部处理系统接收到来自装置1000的校验正确指示信息时,可以从自己的缓存器中提取出相应的得到正确验证的数据。在其他情形下,缓冲器只需要随着输入数据位的到来丢弃最先进入的数据位。如上所述,本领域技术人员应该理解,该缓存器的容量可以大于一个报文的数据量,从而可以在该输出数据中提供一定的冗余量;当外部处理系统接收到该输出数据时,可以按照预定的规则提取出相应数据长度的报文数据。本领域技术人员可以理解,该实施例中可以包含检验判别模块1040,也可以不包含检验判别模块1040。
又例如,虽然根据上述实施例的实现方式,启动多个串行CRC模块的不同时间点平均分布在一CRC周期中,例如,对于8个串行CRC模块的例子来说,每隔226.25us或128个数据位依次启动一个串行CRC模块。但是在不同的实施例中,启动多个串行CRC模块的不同时间点也可以不是平均分布在一CRC周期中,例如配置启动模块1020使其在一CRC周期中具有任意间隔的不同时间点依次启动多个串行CRC模块,也能够实现本发明的技术方案。在另一不同的实施例中,启动多个CRC模块的不同时间点也不限于分布于一个CRC周期中,例如,配置启动模块1020使其在具有任意间隔的不同时间点依次启动多个串行CRC模块,且这些不同时间点可以分布在一个或多个CRC周期中,只要任意两个不同时间点之间的间隔不等于CRC周期的倍数即可以实现本发明的技术方案。
参见图2,其示出了按照本发明一个实施例的用于CRC的方法的示意图。
在步骤2010中,控制多个串行CRC模块依次在不同的时间点启动,以分别对同一输入的串行数据流进行串行CRC,其中,该多个串行CRC模块均按照相同的CRC多项式和相同的数据长度对输入的串行数据按位进行串行CRC。
在步骤2020中,当该多个串行CRC模块中的一个串行CRC模块得到正确的校验结果时,判断出得到正确的校验结果。例如,根据正确的校验结果,可以将校验正确的数据段输出到外部处理系统进行进一步的处理。
根据一个实施例,上述不同的时间点平均分布在一串行CRC周期中,该串行CRC周期是用于采样所述串行数据流中具有特定数据长度的数据段以对其进行串行CRC的周期。
根据一个实施例,在步骤2010中,利用计时器来控制多个串行CRC模块依次在不同的时间点启动,启动第一个串行CRC模块后,每当计时器计时达到计时阈值时,启动下一个串行CRC模块,其中,计时阈值等于采样特定数据长度的位数以对其进行串行CRC所需的时间除以该多个串行CRC模块的数量得到的时间量。
根据一个实施例,在步骤2010中,利用计数器来控制多个串行CRC模块依次在不同的时间点启动,启动第一个串行CRC模块后,每当计数器对输入的串行数据流的位数进行计数达到计数阈值时,启动下一个串行CRC模块,其中,计数阈值等于特定数据长度的位数除以该多个串行CRC模块的数量得到的整数。
根据一个实施例,在步骤2020中,当多个串行CRC模块中的一个串行CRC模块得到正确的校验结果时,则选通得到正确校验结果的该串行CRC模块的输出通路,以输出来自该得到正确校验结果的串行CRC模块的对应于该正确校验结果的数据。
在另一个实施例中,在将输入的串行数据流输入到多个串行CRC模块的同时并行地输入到至少具有上述特定数据长度的位数的缓存器。在步骤2020中,当多个串行CRC模块中的一个串行CRC模块得到正确的校验结果时,输出当前缓存器中的数据。
在另一个实施例中,在将输入的串行数据流在输入到多个串行CRC模块的同时,将该串行数据流并行地输出到外部处理系统;其中,当多个串行CRC模块中的一个串行CRC模块得到正确的校验结果时,将指示校验正确的信息输出到外部处理系统。
参见图3,示出了按照本发明一个实施例的车载设备3000的示意图。当列车经过地面应答器时,该设备从应答器接收串行数据流,并且通过本发明的CRC装置得到校验正确的数据报文。
车载设备3000可以是车载查询器,其用于接收来自应答器的数据。如图3所示,来自应答器的数据流由接收天线3010接收,经解调单元3020处理后输入到CRC单元3030,CRC单元3030输出校验正确的报文数据,例如将校验正确的报文数据输出给外部处理系统进行进一步的处理。该CRC单元3030可以是上述实施例中所述的CRC装置,例如图1所示的CRC装置,或者上述其他实施例中所述的CRC装置。
本领域技术人员应该理解,虽然上述实施例中将CRC装置描述为是车载查询器中的一个部件,但是本发明的实施不受此限制。本发明的CRC装置可以以任何适当的形式实现在车载设备中,该车载设备也不限于是车载查询器,其也可以是包括外部处理系统在内的设备。
上文通过附图和实施例对本发明进行了详细展示和说明,然而本发明不限于这些已揭示的实施例,本领域技术人员从中推导出来的其他方案也在本发明的保护范围之内。因此,本发明的保护范围应当由所附的权利要求书来定义。
Claims (15)
1.一种用于循环冗余校验(CRC)的装置,包括:
多个串行CRC模块,所述多个串行CRC模块均按照相同的CRC多项式和数据长度对输入的串行数据按位进行串行CRC;
启动模块,其控制所述多个串行CRC模块依次在不同的时间点启动,以分别对同一输入的串行数据流进行串行CRC,
其中,当所述多个串行CRC模块中的一个串行CRC模块得到正确的校验结果时,所述装置判断出得到正确的校验结果。
2.如权利要求1所述的装置,其中,所述不同的时间点平均分布在一串行CRC周期中,所述串行CRC周期是用于采样所述串行数据流中具有所述数据长度的数据段以对其进行串行CRC的周期。
3.如权利要求1所述的装置,其中,所述启动模块包括计数器或计时器,其中,在所述启动模块启动第一个串行CRC模块后,所述计数器每当对输入的所述串行数据流的位数进行计数达到计数阈值时,所述启动模块启动下一个串行CRC模块,所述计数阈值等于所述数据长度的位数除以所述多个串行CRC模块的数量得到的整数,或者,其中,在所述启动模块启动第一个串行CRC模块后,所述计时器每当计时达到计时阈值时,所述启动模块启动下一个串行CRC模块,所述计时阈值等于采样所述数据长度的位数以对其进行串行CRC所需的时间除以所述多个串行CRC模块的数量得到的时间量。
4.如权利要求1所述的装置,还包括:
校验判别模块,其接收由所述多个串行CRC模块分别输出的校验结果,并且当接收到一个指示校验正确的校验结果时,则判别出得到正确的校验结果。
5.如权利要求4所述的装置,还包括:
数据输出模块,用于当所述校验判别模块判别出得到正确的校验结果时,在所述校验判决模块的控制下输出对应于所述正确校验结果的数据。
6.如权利要求5所述的装置,其中,所述数据输出模块包括选通器,所述选通器连接所述多个串行CRC模块的数据输出端,
其中,所述校验判别模块在判别出得到正确的校验结果时,控制所述选通器选通得到正确校验结果的串行CRC模块的输出通路,以输出来自该得到正确校验结果的串行CRC模块的对应于所述正确校验结果的数据。
7.如权利要求5所述的装置,其中,所述数据输出模块包括至少具有所述数据长度的位数的缓存器,所述输入的串行数据流在输入到所述多个串行CRC模块的同时并行地输入到所述缓存器,
其中,当所述校验判别模块判别出得到正确的校验结果时,控制所述数据输出模块输出当前缓存器中的数据。
8.如权利要求1所述的装置,其中,在将所述输入的串行数据流在输入到所述多个串行CRC模块的同时,将其并行地从所述装置输出;
其中,当所述多个串行CRC模块中的一个串行CRC模块得到正确的校验结果时,从所述装置输出指示校验正确的信息。
9.一种安装于列车上的包括权利要求1到8中的一个所述用于CRC的装置的设备,当所述列车经过地面应答器时,所述设备从所述应答器接收串行数据流,并且通过所述用于CRC的装置得到校验正确的数据报文。
10.一种进行循环冗余校验(CRC)的方法,包括:
控制多个串行CRC模块依次在不同的时间点启动,以分别对同一输入的串行数据流进行串行CRC,其中,所述多个串行CRC模块均按照相同的CRC多项式和相同的数据长度对输入的串行数据按位进行串行CRC;
当所述多个串行CRC模块中的一个串行CRC模块得到正确的校验结果时,判断出得到正确的校验结果。
11.如权利要求10所述的方法,其中,所述不同的时间点平均分布在一串行CRC周期中,所述串行CRC周期是用于采样所述串行数据流中具有所述数据长度的数据段以对其进行串行CRC的周期。
12.如权利要求10所述的方法,还包括:
利用计时器或计数器来控制所述多个串行CRC模块依次在所述不同的时间点启动,其中,启动第一个串行CRC模块后,每当所述计时器计时达到计时阈值时,启动下一个串行CRC模块,其中,所述计时阈值等于采样所述数据长度的位数以对其进行串行CRC所需的时间除以所述多个串行CRC模块的数量得到的时间量,或者,启动第一个串行CRC模块后,每当所述计数器对输入的所述串行数据流的位数进行计数达到计数阈值时,启动下一个串行CRC模块,其中,所述计数阈值等于所述数据长度的位数除以所述多个串行CRC模块的数量得到的整数。
13.如权利要求10所述的方法,其中,当所述多个串行CRC模块中的一个串行CRC模块得到正确的校验结果时,则选通得到正确校验结果的所述串行CRC模块的输出通路,以输出来自所述得到正确校验结果的所述串行CRC模块的对应于所述正确校验结果的数据。
14.如权利要求10所述的方法,还包括:在将所述输入的串行数据流输入到所述多个串行CRC模块的同时并行地输入到至少具有所述数据长度的位数的缓存器,
其中,当所述多个串行CRC模块中的一个串行CRC模块得到正确的校验结果时,输出当前所述缓存器中的数据。
15.如权利要求10所述的方法,还包括:在将所述输入的串行数据流在输入到所述多个串行CRC模块的同时,将其并行地输出到外部处理系统;
其中,当所述多个串行CRC模块中的一个串行CRC模块得到正确的校验结果时,将指示校验正确的信息输出到所述外部处理系统。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210332751.4A CN103684663B (zh) | 2012-09-10 | 2012-09-10 | 用于循环冗余校验的装置和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210332751.4A CN103684663B (zh) | 2012-09-10 | 2012-09-10 | 用于循环冗余校验的装置和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103684663A CN103684663A (zh) | 2014-03-26 |
CN103684663B true CN103684663B (zh) | 2016-11-23 |
Family
ID=50321077
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210332751.4A Active CN103684663B (zh) | 2012-09-10 | 2012-09-10 | 用于循环冗余校验的装置和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103684663B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106788878B (zh) * | 2015-11-24 | 2019-11-15 | 中国航空工业第六一八研究所 | 一种具有单比特纠错功能的并行crc纠错方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1319801A (zh) * | 1999-09-27 | 2001-10-31 | 德克萨斯仪器股份有限公司 | 用于循环冗余校验的有效计算方法及装置 |
CN1933605A (zh) * | 2005-09-12 | 2007-03-21 | 三星电子株式会社 | 循环冗余检查电路和含该电路的多通道通信的通信系统 |
US7257758B1 (en) * | 2004-06-08 | 2007-08-14 | Sun Microsystems, Inc. | Stumping mechanism |
CN101223700A (zh) * | 2005-07-13 | 2008-07-16 | 密克罗奇普技术公司 | 用于配置循环冗余校验(crc)产生电路以对数据流执行crc的方法和设备 |
CN102082577A (zh) * | 2010-12-31 | 2011-06-01 | 杭州华三通信技术有限公司 | 一种高速循环冗余校验crc装置及其实现方法 |
CN102318250A (zh) * | 2011-08-02 | 2012-01-11 | 华为技术有限公司 | 通信系统中的循环冗余校验处理方法、装置和lte终端 |
-
2012
- 2012-09-10 CN CN201210332751.4A patent/CN103684663B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1319801A (zh) * | 1999-09-27 | 2001-10-31 | 德克萨斯仪器股份有限公司 | 用于循环冗余校验的有效计算方法及装置 |
US7257758B1 (en) * | 2004-06-08 | 2007-08-14 | Sun Microsystems, Inc. | Stumping mechanism |
CN101223700A (zh) * | 2005-07-13 | 2008-07-16 | 密克罗奇普技术公司 | 用于配置循环冗余校验(crc)产生电路以对数据流执行crc的方法和设备 |
CN1933605A (zh) * | 2005-09-12 | 2007-03-21 | 三星电子株式会社 | 循环冗余检查电路和含该电路的多通道通信的通信系统 |
CN102082577A (zh) * | 2010-12-31 | 2011-06-01 | 杭州华三通信技术有限公司 | 一种高速循环冗余校验crc装置及其实现方法 |
CN102318250A (zh) * | 2011-08-02 | 2012-01-11 | 华为技术有限公司 | 通信系统中的循环冗余校验处理方法、装置和lte终端 |
Non-Patent Citations (1)
Title |
---|
适用于串行通信数据流的循环冗余校验方法;任宇,陈欣,吕迅竤;《工业控制计算机》;20061225;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN103684663A (zh) | 2014-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3264718A1 (en) | System and method for detection and prevention of attacks on in-vehicle networks | |
CN107544463B (zh) | 一种车用控制器诊断功能的自动测试方法及测试装置 | |
CN107809434B (zh) | 一种计量数据有效性验证系统及方法 | |
US8627156B1 (en) | Method and system of testing bit error rate using signal with mixture of scrambled and unscrambled bits | |
CN105955114B (zh) | 基于动态脉冲校验的安全输入系统 | |
CN104598342B (zh) | 内存的检测方法和装置 | |
CN105281883B (zh) | 多通道同步方法、同步装置及系统 | |
CN104330774B (zh) | —种基于fpga的s模式二次雷达解码器 | |
KR102147750B1 (ko) | 컴퓨터, 상기 컴퓨터를 포함하는 통신 유닛, 상기 유닛을 포함하는 철도 관리 시스템, 및 컴퓨터 내에서 데이터 신뢰도를 개선하는 방법 | |
CN103684663B (zh) | 用于循环冗余校验的装置和方法 | |
CN104104559B (zh) | 一种e1误码仪系统 | |
WO2017012389A1 (zh) | 链路检测方法、接收设备及计算机存储介质 | |
CN102394720B (zh) | 一种信息安全校验处理器 | |
CN104639294A (zh) | 一种改进的crc校验实现方法 | |
US20130036336A1 (en) | Transmitting device, transceiver system, and control method | |
CN107231213A (zh) | Crc‑32算法在usb3.0数据包中的实现方法 | |
US7774669B2 (en) | Complex pattern generator for analysis of high speed serial streams | |
CN101442380B (zh) | 基于高速串行接口编码方式的误码率测试方法与装置 | |
CN106991027A (zh) | 基于serdes协议验证的检查器、功能验证系统及方法 | |
CN104253667A (zh) | 一种应用于手机平台的串行同步总线校验反馈系统和方法 | |
CN104125035A (zh) | Dci误检测筛查的方法和装置 | |
US9480033B2 (en) | Managing overlapping messages in a network environment | |
Zhang | Error correction application of CRC in the RFID system | |
CN106126466B (zh) | 一种并行数据变串行数据的传输方法 | |
CN104660499B (zh) | 一种避免因丢包而连续损失两组报文的报文处理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |