CN104639294A - 一种改进的crc校验实现方法 - Google Patents
一种改进的crc校验实现方法 Download PDFInfo
- Publication number
- CN104639294A CN104639294A CN201510068486.7A CN201510068486A CN104639294A CN 104639294 A CN104639294 A CN 104639294A CN 201510068486 A CN201510068486 A CN 201510068486A CN 104639294 A CN104639294 A CN 104639294A
- Authority
- CN
- China
- Prior art keywords
- crc
- data block
- flit
- code
- csb
- 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.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Error Detection And Correction (AREA)
- Detection And Prevention Of Errors In Transmission (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
本发明公开了一种改进的CRC校验实现方法,其具体实现过程为:在发送端每个数据块需要与两个不同的CRC生成多项式进行计算分别得到CSA与CSB,当前CSA与前一数据块的CSB进行与或运算得到CRC码值附在数据块尾部组合成flit进行传输。在接收端把接收到的flit进行数据块与CRC码值分离,对接收到的数据块进行与发送端一样的CRC码计算,将计算得到的新CRC码值与接收到的CRC码进行比较判断传输过程中是否出现差错。该一种改进的CRC校验实现方法与现有技术相比,在不降低编码效率的前提下,有效提升CRC校验性能,大幅降低漏检概率,实用性强。
Description
技术领域
本发明涉及数据通信技术领域,具体地说是一种实用性强、改进的CRC校验实现方法。
背景技术
在数字通信的传输过程中,由于信道存在的噪声、线路间的串扰等各种因素的影响,会造成所传输的信号失真,为保证通信系统中数据传输的正确性,需要对通信过程进行差错检验。CRC技术由于其误码检测能力强,抗干扰性能优异,是比较常用的差错检验技术。
对于r位CRC校验码,能够检验出所有的单比特错误、所有的两比特错误以及所有的奇数个比特错误。对于小于等于r位的突发性错误也能全部检出,而大于r位的突发性错误则存在一定的漏检概率。具体为(r+1)位突发性错误漏检概率为1/2^(r-1),r位突发性错误漏检概率为(1/2^r)。
显然为了提高CRC检验性能,需要提高生成多项式的阶次即增加CRC验证码的长度。然而随着CRC验证码的长度增加,编码效率下降,对传输带宽占用较大。基于此,现提供一种实用性强、改进的CRC校验实现方法,使用该方法可以在不降低编码效率的情况下有效改善CRC检验性能。
发明内容
本发明的技术任务是针对以上不足之处,提供一种实用性强、改进的CRC校验实现方法。
一种改进的CRC校验实现方法,其中信息数据以包packet的形式进行收发,每个数据包由包头header、包尾trailer以及若干个数据帧flit组成,每个flit由数据块data block与CRC校验码组成,其具体校验过程为:
设置发送端编码装置,该装置内置有两个缓存寄存器,分别存储当前数据块和前一数据块;使用两个缓存寄存器内的数据分别与两个生成多项式进行计算得到两个对应的校验码,再通过这两个校验码的异或运算得到当前数据块的CRC校验码并与当前数据块组装成flit进入发送通道,进行发送;
设置接收端解码校验装置,在接收端先把flit分解为data block与CRC码,对data block按照发送端一样的计算方式重新计算CRC校验码CRC’,通过计算得到的CRC’与接收到的CRC进行比较完成校验。
所述发送端与接收端的计算过程中使用的为两个预设的生成多项式GA、GB,其中:在发送端每个flit数据分别进行两次CRC码计算得到CSA、CSB,CSA与前一flit计算得到的CSB进行异或运算的结果作为CRC校验码附在flit的末尾发送,CSB与下一flit的CSA异或运算得到下一flit的CRC码,当是第一个filt时,则直接使用CSA作为CRC码发送;
在接收端则先把flit数据与CRC码拆分,对flit数据使用与发送端相同的生成多项式计算CRC,并把计算出来的CRC与接收到的CRC码进行比较,判断传输过程是否出现差错。
所述CRC校验码计算过程中,第n个flit携带的CRC码由第n个数据块data block n与第n-1个数据块data block n-1分别与两个生成多项式计算得到的结果进行异或运算得到。
所述发送端的详细编码过程为:当输入data block n时,数据存入第一级缓存寄存器first buffer,此时第二级缓存寄存器second buffer内暂存的数据为前一数据即data block n-1,在下一个周期到来时,data block n-1进入crc gen.1计算得到crc校验码CSB,data block n 进入crc gen.2计算得到crc校验码CSB,同时data block n更新第二级缓存寄存器second buffer内的data block n-1,此外data block n 进入输出寄存器OUT REG暂存;CSA、CSB进入crc gen.3进行异或运算得到CRCn,之后进入OUT REG与暂存的data block n组装成一个完整的flit,发送出去。
所述接收端解码与校验流程的详细过程为:当在第m个时钟周期时第一级寄存器STAG REG.1接收到第n个flit时,把前一flit,即第n-1个flit传送至第二级寄存器STAG REG.2,其中STAG REG寄存器模块用于把flit中的数据块data block 与CRC校验码分离;在第m+1周期时,data block n-1进入CRC GEN.2计算得到CSA,CRC校验码进入比较器COMP 2等待;
在第m+1个周期时,data block n进入CRC GEN.1计算得到CSB;
在第m+2周期时,CSB与CSA同时进入CRC GEN.3进行异或运算得到新的CRC校验码CRCn’,之后进入COMP2,与传输来的CRCn码进行比较,判断传输过程是否出错。
本发明的一种改进的CRC校验实现方法,具有以下优点:
该发明的一种改进的CRC校验实现方法可以在不提高CRC生成多项式的阶次的前提下(即不降低编码效率),有效提高CRC的校验性能;大幅降低漏检概率;该方法主要用于以包的形式传输数据时,对包内的flit数据进行CRC校验的改进;实用性强,易于推广。
附图说明
附图1为数据包packet组成示意图。
附图2为持续CRC计算过程示意图。
附图3为使用持续CRC的传输系统发送端编码流程图。
附图4为使用持续CRC的传输装置接收端校验结构框图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步说明。
一种改进的CRC校验实现方法,通过持续CRC计算方法,使用两个不同的CRC生成多项式。每个数据块data block分别通过两个生成多项式计算得到两组校验码,组成flit传输的CRC校验码不仅仅由本data block计算得到,还与前一data block有关。
如附图1所示,该方法中信息数据以包packet的形式进行收发,每个数据包由包头header、包尾trailer以及若干个数据帧flit组成,每个flit由数据块data block与CRC校验码组成,其具体校验过程为:
设置发送端编码装置,使用该CRC计算方法,对当前传输的数据块data block进行CRC编码时,还需要前一data block的配合。因而在该发送端的编码装置内设置两个缓存寄存器,分别存储当前数据块和前一数据块;使用两个缓存寄存器内的数据分别与两个生成多项式进行计算得到两个对应的校验码,再通过这两个校验码的异或运算得到当前数据块的CRC校验码并与当前数据块组装成flit进入发送通道,进行发送;
设置接收端解码校验装置,接收端接收到的flit包含的CRC码不仅与当前flit有关还与接收到的前一flit有关。在接收端先把flit分解为data block与CRC码,对data block按照发送端一样的计算方式重新计算CRC校验码CRC’,通过计算得到的CRC’与接收到的CRC进行比较完成校验。
所述发送端与接收端的计算过程中使用的为两个预设的生成多项式GA、GB,这里的生成多项式可采用两种常见的CRC生成多项式,比如已经成为国际标准的CRC生成多项式。其中:在发送端每个flit数据分别进行两次CRC码计算得到CSA、CSB,CSA与前一flit计算得到的CSB进行异或运算的结果作为CRC校验码附在flit的末尾发送,CSB与下一flit的CSA异或运算得到下一flit的CRC码,当是第一个filt时,则直接使用CSA作为CRC码发送;
在接收端则先把flit数据与CRC码拆分,对flit数据使用与发送端相同的生成多项式计算CRC,并把计算出来的CRC与接收到的CRC码进行比较,判断传输过程是否出现差错。
如附图2所示,所述CRC校验码计算过程中,第n个flit携带的CRC码由第n个数据块data block n与第n-1个数据块data block n-1分别与两个生成多项式计算得到的结果进行异或运算得到。
所述发送端的详细编码过程如附图3所示:以输入data block n为例,数据存入第一级缓存寄存器first buffer,此时第二级缓存寄存器second buffer内暂存的数据为前一数据即data block n-1,在下一个周期到来时,data block n-1进入crc gen.1计算得到crc校验码CSB,data block n 进入crc gen.2计算得到crc校验码CSB,同时data block n更新第二级缓存寄存器second buffer内的data block n-1,此外data block n 进入输出寄存器OUT REG暂存;CSA、CSB进入crc gen.3进行异或运算得到CRCn,之后进入OUT REG与暂存的data block n组装成一个完整的flit,发送出去。需要注意的是如果输入的是第一个data block,此时second buffer内应设置为全0。
所述接收端解码与校验流程的过程如附图4所示,其详细过程为:当在第m个时钟周期时第一级寄存器STAG REG.1接收到第n个flit时,把前一flit,即第n-1个flit传送至第二级寄存器STAG REG.2,其中STAG REG寄存器模块用于把flit中的数据块data block 与CRC校验码分离;在第m+1周期时,data block n-1进入CRC GEN.2计算得到CSA,CRC校验码进入比较器COMP 2等待;
在第m+1个周期时,data block n进入CRC GEN.1计算得到CSB;
在第m+2周期时,CSB与CSA同时进入CRC GEN.3进行异或运算得到新的CRC校验码CRCn’,之后进入COMP2,与传输来的CRCn码进行比较,判断传输过程是否出错。
特别的,若收到的flit为第一个即没有前一flit,则可以设置CSA为0。
上述具体实施方式仅是本发明的具体个案,本发明的专利保护范围包括但不限于上述具体实施方式,任何符合本发明的一种改进的CRC校验实现方法的权利要求书的且任何所述技术领域的普通技术人员对其所做的适当变化或替换,皆应落入本发明的专利保护范围。
Claims (5)
1.一种改进的CRC校验实现方法,其特征在于,其中信息数据以包packet的形式进行收发,每个数据包由包头header、包尾trailer以及若干个数据帧flit组成,每个flit由数据块data block与CRC校验码组成,其具体校验过程为:
设置发送端编码装置,该装置内置有两个缓存寄存器,分别存储当前数据块和前一数据块;使用两个缓存寄存器内的数据分别与两个生成多项式进行计算得到两个对应的校验码,再通过这两个校验码的异或运算得到当前数据块的CRC校验码并与当前数据块组装成flit进入发送通道,进行发送;
设置接收端解码校验装置,在接收端先把flit分解为data block与CRC码,对data block按照发送端一样的计算方式重新计算CRC校验码CRC’,通过计算得到的CRC’与接收到的CRC进行比较完成校验。
2.根据权利要求1所述的一种改进的CRC校验实现方法,其特征在于,所述发送端与接收端的计算过程中使用的为两个预设的生成多项式GA、GB,其中:在发送端每个flit数据分别进行两次CRC码计算得到CSA、CSB,CSA与前一flit计算得到的CSB进行异或运算的结果作为CRC校验码附在flit的末尾发送,CSB与下一flit的CSA异或运算得到下一flit的CRC码,当是第一个filt时,则直接使用CSA作为CRC码发送;
在接收端则先把flit数据与CRC码拆分,对flit数据使用与发送端相同的生成多项式计算CRC,并把计算出来的CRC与接收到的CRC码进行比较,判断传输过程是否出现差错。
3.根据权利要求1或2所述的一种改进的CRC校验实现方法,其特征在于,所述CRC校验码计算过程中,第n个flit携带的CRC码由第n个数据块data block n与第n-1个数据块data block n-1分别与两个生成多项式计算得到的结果进行异或运算得到。
4.根据权利要求3所述的一种改进的CRC校验实现方法,其特征在于,所述发送端的详细编码过程为:当输入data block n时,数据存入第一级缓存寄存器first buffer,此时第二级缓存寄存器second buffer内暂存的数据为前一数据即data block n-1,在下一个周期到来时,data block n-1进入crc gen.1计算得到crc校验码CSB,data block n 进入crc gen.2计算得到crc校验码CSB,同时data block n更新第二级缓存寄存器second buffer内的data block n-1,此外data block n 进入输出寄存器OUT REG暂存;CSA、CSB进入crc gen.3进行异或运算得到CRCn,之后进入OUT REG与暂存的data block n组装成一个完整的flit,发送出去。
5.根据权利要求4所述的一种改进的CRC校验实现方法,其特征在于,所述接收端解码与校验流程的详细过程为:当在第m个时钟周期时第一级寄存器STAG REG.1接收到第n个flit时,把前一flit,即第n-1个flit传送至第二级寄存器STAG REG.2,其中STAG REG寄存器模块用于把flit中的数据块data block 与CRC校验码分离;在第m+1周期时,data block n-1进入CRC GEN.2计算得到CSA,CRC校验码进入比较器COMP 2等待;
在第m+1个周期时,data block n进入CRC GEN.1计算得到CSB;
在第m+2周期时,CSB与CSA同时进入CRC GEN.3进行异或运算得到新的CRC校验码CRCn’,之后进入COMP2,与传输来的CRCn码进行比较,判断传输过程是否出错。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510068486.7A CN104639294A (zh) | 2015-02-10 | 2015-02-10 | 一种改进的crc校验实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510068486.7A CN104639294A (zh) | 2015-02-10 | 2015-02-10 | 一种改进的crc校验实现方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104639294A true CN104639294A (zh) | 2015-05-20 |
Family
ID=53217656
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510068486.7A Pending CN104639294A (zh) | 2015-02-10 | 2015-02-10 | 一种改进的crc校验实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104639294A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105162551A (zh) * | 2015-07-29 | 2015-12-16 | 中工科安科技有限公司 | 一种针对编码器信号处理的crc安全校验码的计算方法 |
WO2017148096A1 (zh) * | 2016-02-29 | 2017-09-08 | 中兴通讯股份有限公司 | 循环冗余校验码的生成方法和装置 |
CN108233944A (zh) * | 2017-12-29 | 2018-06-29 | 北京自动测试技术研究所 | 一种循环冗余校验方法、设备及存储介质 |
CN110750383A (zh) * | 2019-09-29 | 2020-02-04 | 东南大学 | 一种利用crc校验码携带信息的方法 |
CN116701274A (zh) * | 2023-07-26 | 2023-09-05 | 武汉能钠智能装备技术股份有限公司 | 一种热插拔硬盘数据传输系统及方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040098655A1 (en) * | 2002-11-19 | 2004-05-20 | Sharma Debendra Das | Rolling CRC scheme for improved error detection |
CN102158316A (zh) * | 2011-04-25 | 2011-08-17 | 中兴通讯股份有限公司 | 一种64bit位宽的并行CRC32校验方法及装置 |
CN102263612A (zh) * | 2011-07-18 | 2011-11-30 | 杭州晟联通信技术有限公司 | 用于数据块的差错检测方法和设备 |
-
2015
- 2015-02-10 CN CN201510068486.7A patent/CN104639294A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040098655A1 (en) * | 2002-11-19 | 2004-05-20 | Sharma Debendra Das | Rolling CRC scheme for improved error detection |
CN102158316A (zh) * | 2011-04-25 | 2011-08-17 | 中兴通讯股份有限公司 | 一种64bit位宽的并行CRC32校验方法及装置 |
CN102263612A (zh) * | 2011-07-18 | 2011-11-30 | 杭州晟联通信技术有限公司 | 用于数据块的差错检测方法和设备 |
Non-Patent Citations (1)
Title |
---|
王永庆等: "《一种改进的旋转CRC 数据校验设计方法》", 《国防科技大学学报》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105162551A (zh) * | 2015-07-29 | 2015-12-16 | 中工科安科技有限公司 | 一种针对编码器信号处理的crc安全校验码的计算方法 |
CN105162551B (zh) * | 2015-07-29 | 2018-11-06 | 中工科安科技有限公司 | 一种针对编码器信号处理的crc安全校验码的计算方法 |
WO2017148096A1 (zh) * | 2016-02-29 | 2017-09-08 | 中兴通讯股份有限公司 | 循环冗余校验码的生成方法和装置 |
CN108233944A (zh) * | 2017-12-29 | 2018-06-29 | 北京自动测试技术研究所 | 一种循环冗余校验方法、设备及存储介质 |
CN110750383A (zh) * | 2019-09-29 | 2020-02-04 | 东南大学 | 一种利用crc校验码携带信息的方法 |
CN110750383B (zh) * | 2019-09-29 | 2024-03-15 | 东南大学 | 一种利用crc校验码携带信息的方法 |
CN116701274A (zh) * | 2023-07-26 | 2023-09-05 | 武汉能钠智能装备技术股份有限公司 | 一种热插拔硬盘数据传输系统及方法 |
CN116701274B (zh) * | 2023-07-26 | 2023-11-17 | 武汉能钠智能装备技术股份有限公司 | 一种热插拔硬盘数据传输系统及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8745469B2 (en) | Signal segmentation method and CRC attachment method for reducing undetected error | |
EP2663004B1 (en) | Method of segmenting a transport block into multiple code blocks when one CRC is added to each code block | |
CN104639294A (zh) | 一种改进的crc校验实现方法 | |
CN103380585B (zh) | 输入位错误率推定方法及其装置 | |
CN101702639B (zh) | 循环冗余校验的校验值计算方法及装置 | |
US20100262887A1 (en) | High Integrity Data Network System and Method | |
JPS61102841A (ja) | 回線品質監視装置 | |
CN109347598A (zh) | 校验码处理方法、电子设备及存储接介质 | |
CN108337069B (zh) | 一种改进的降低误码率的末端并行分组crc校验系统 | |
CN109936376A (zh) | 按字节运算循环码crc16-ccitt校验的方法 | |
EP1605621A2 (en) | Data transmission with improved error correction capability | |
US8924829B2 (en) | Device and method for turbo-encoding a block of data | |
CN107231213A (zh) | Crc‑32算法在usb3.0数据包中的实现方法 | |
CN107733568B (zh) | 基于fpga实现crc并行计算的方法及装置 | |
WO2018127234A1 (zh) | 一种极化码编译码方法及装置 | |
CN104471888B (zh) | 突发数据块中的空闲块idle的处理方法、设备及系统 | |
CN102427398A (zh) | 一种基于双向奇偶校验的纠检错方法和系统及装置 | |
CN1119884C (zh) | 高速数据传输中的差错检测方法 | |
CN103138881B (zh) | 编解码方法和设备 | |
EP1271828A1 (en) | Apparatus and method for generating a checkbits for error detection using a pseudo-random sequence | |
CN106664154B (zh) | 确定前向纠错帧边界的方法、装置和解码系统 | |
Gholase et al. | Enhancement of error detection and correction capability using orthogonal code convolution | |
CN101968962B (zh) | 一种基于faac及faad2的单声道固定比特率的音频实时编解码纠错方法 | |
US20230063442A1 (en) | Bit Error Correction for Bluetooth Low Energy | |
CN104243084A (zh) | 应用于人体通信信道的纠错编解码方法及其装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20150520 |