WO2014071658A1 - 一种用于数据传输差错控制的嵌套crc码生成方法及装置 - Google Patents

一种用于数据传输差错控制的嵌套crc码生成方法及装置 Download PDF

Info

Publication number
WO2014071658A1
WO2014071658A1 PCT/CN2012/085163 CN2012085163W WO2014071658A1 WO 2014071658 A1 WO2014071658 A1 WO 2014071658A1 CN 2012085163 W CN2012085163 W CN 2012085163W WO 2014071658 A1 WO2014071658 A1 WO 2014071658A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
channel
calculation
crc
crc code
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.)
Ceased
Application number
PCT/CN2012/085163
Other languages
English (en)
French (fr)
Inventor
周文利
段斌斌
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huazhong University of Science and Technology
Original Assignee
Huazhong University of Science and Technology
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huazhong University of Science and Technology filed Critical Huazhong University of Science and Technology
Priority to US14/117,680 priority Critical patent/US9143276B2/en
Publication of WO2014071658A1 publication Critical patent/WO2014071658A1/zh
Anticipated expiration legal-status Critical
Ceased legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0061Error detection codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/615Use of computational or mathematical techniques
    • H03M13/616Matrix operations, especially for generator matrices or check matrices, e.g. column or row permutations

Definitions

  • the invention belongs to the technical field of communication and computer data transmission error control, and more particularly to a nested CRC code generation method and apparatus for data transmission error control.
  • FCS frame check sequence
  • CRC Cyclic Redundancy Code
  • the transmitting end performs the CRC check code calculation on the data to be transmitted, and attaches the check code to the transmitted data and sends it together.
  • the receiving end needs to perform the check code calculation on the received data by the same calculation method, and then compares the calculated CRC code with the received CRC code. If they match, the data transmission is correct, and the data transmission has an error. If the data is transmitted incorrectly, various automatic repeat-request (ARQ) techniques can be used to allow the sender to retransmit the data.
  • ARQ automatic repeat-request
  • the data block can be pre-segmented, and multiple parallel CRC calculation channels are used to simultaneously calculate each data block, thereby further improving the CRC calculation speed.
  • the Chinese Patent Application Publication No. CN1431594A discloses a multi-channel multi-bit parallel computing CRC code.
  • the entire method will be directly calculated CRC code for each data bit length L s is divided into a plurality of data blocks, the data length of a channel is the last! ⁇ , and each data block is sequentially placed into N channels, and the N channels simultaneously perform CRC calculation on the data blocks in the respective channels to obtain the CRC subcode of the data blocks in the N channels; and then construct the division remainder
  • the conversion table performs a division remainder conversion lookup table on the CRC subcodes of the first N-1 channels (the last channel does not need to perform the remainder conversion) to obtain the transformed CRC subcode; finally, the transformed CRC subcodes are different one by one. Or after calculation, the CRC code of the entire data to be calculated is obtained.
  • the method needs to perform the remainder conversion on the CRC subcodes calculated by the N-1 channels in order to obtain the CRC calculation code required by each channel, and thus has the following disadvantages:
  • the CRC subcode calculated in the first N-1 channels needs to be constructed by dividing the CRC subcode of the N channels by dividing the residual remainder conversion table to obtain the required CRC subcode.
  • CRC subcode The entry in the remainder conversion table of the i-th (i is a positive integer less than N) channel is obtained by performing [(Ni). Q+ P] consecutive lookup tables for each entry in the typical data remainder table.
  • L s is Q times the number of bits R of the calculated CRC code
  • the data length Lp of the last channel is P times the calculated number of bits of the CRC. Therefore, as the length of the data to be calculated changes, the two variables of N and P change, and the remainder table corresponding to a single channel follows these two The parameters change and it is not possible to assign a fixed remainder conversion table to each channel.
  • the object of the present invention is to provide a nested CRC code generation method for data transmission error control, which aims to solve the problem that the storage capacity of the existing multi-channel multi-bit parallel CRC code generation method is large and general. The problem is poor, and the error correction capability of the nested CRC code is better than the traditional CRC code.
  • the present invention provides a nested CRC code generation method for data transmission error control, comprising the following steps:
  • the data splitter segments the calculated data, including the following substeps: (1-1) Initialize the data in the data splitter to 0, and determine the maximum segmentation of the data splitter according to the number of computation channels N. The number is N;
  • the data splitter divides the data to be calculated into m segments and passes the value of m to the channel selector and the reverse channel selector;
  • a channel selection table is generated for the channel selector for assigning corresponding data input channels in each nested calculation of different types of data. Calculate the channel, where Q is a positive integer;
  • the total number of data segments transmitted by the data divider is m, and the channel selector strobes the output and channel selectors of the sequence numbers ( 1, 2, 3, . . . , ⁇ ) used to connect the data dividers.
  • Each calculation channel performs CRC subcode calculation on each data segment to be calculated, and specifically includes the following substeps:
  • the CRC subcode register of the reverse channel selector strobe sequence number (l, 2, 3, ..., m)
  • the connection switch of the reverse channel selector According to the total number of segments m of the data to be calculated transmitted by the data divider, the CRC subcode register of the reverse channel selector strobe sequence number (l, 2, 3, ..., m) The connection switch of the reverse channel selector.
  • the m data outputs of the strobe are respectively connected to the outputs of the corresponding calculation channels;
  • each calculation channel stores the CRC subcode calculated by each calculation channel into the corresponding CRC subcode register, and obtains a new series of data (CRC1, CRC2). , - - ⁇ , CRCi, - - ⁇ , CRCm) , where i is an arbitrary value between 1 and m, and CRCi calculates the obtained CRC subcode corresponding to the i-th data segment;
  • step (5) Determine whether it is necessary to perform multi-channel calculation again. If necessary, return the CRC subcode obtained in step (4) as new data to be calculated, and return to step (1); if not, proceed to step (6). Specifically, the following substeps are included:
  • step (6) Determine whether the value of Q is 0. If the value of Q is 0, proceed to step (6); if the value of Q is not zero, then the CRC subcode data sorted in step (4) is used as New data to be calculated, and return to step (1) for calculation;
  • the Nth computing channel calculates the final Q nested CRC code, specifically including the following a computational channel for parallel computing of w bits;
  • (6-3) Set the initial value for the calculation channel.
  • the calculation channel can be assigned an initial value of all zeros or all ones;
  • step (1-5) the assignment of ( ⁇ , ⁇ , ⁇ , ⁇ ) is:
  • Step (2-1) specifically includes the following substeps:
  • Another object of the present invention is to provide a nested CRC code generating apparatus for data transmission error control, which uses a multi-channel multi-bit parallel computing CRC code on the one hand, and can automatically calculate the type of data to be calculated on the other hand.
  • the combination of different calculation channels is selected for the data to be calculated, so the device has the characteristics of fast calculation speed and high flexibility.
  • the present invention provides a nested CRC code generating apparatus for data transmission error control, comprising: a data segmentation module, a calculation channel selection module, a multi-channel CRC code calculation module, a data sequencing module, a register, Counter, data distributor, single channel CRC code calculation module.
  • the data segmentation module is configured to automatically segment the data to be calculated according to a certain data length and align the lengths of the data segments by zero-padding, and sequentially transmit the data segments according to a certain number of bits under the control of the clock.
  • the calculation channel selection module is used to connect each input data channel to the required calculation channel; the multi-channel CRC code calculation module is used to calculate the CRC code for multiple data segments at the same time; the data sequencing module is used to input each input data channel Connected to the required register; the register is used to store the CRC code; the counter is used to record the number of calculations of the CRC code, and the data output of the data distributor is controlled; the data distributor is used to allocate the input data, and the data is distributed by the counter. Control; The single channel CRC code calculation module is used to calculate the final CRC code.
  • the present invention has the following advantageous effects as compared with the prior art:
  • step (1) since step (1) is employed, nested CRC codes can be generated by the present invention for data of any length whose length is less than or equal to N. L S . 2.
  • the storage resources used are small: In the present invention, since step (7) is adopted, the CRC subcode calculated by each calculation channel is once again calculated by the CRC calculation channel to obtain the nested CRC code, so no remainder conversion table is needed. , can save a lot of storage resources.
  • step (3) and step (6) are employed, it is possible to simultaneously perform multi-bit parallel CRC code calculation for each data block of the data to be calculated, thereby implementing the conventional parallel CRC code. Based on the calculation, the processing speed is further accelerated, and it can be applied to some real-time high-speed data transmission networks, such as 10 GB Ethernet.
  • step (2) and step (4) are adopted, nested CRC codes can be generated by the present invention for different types of data to be calculated, which is suitable for some converged networks.
  • Applications such as FCoE networks built on 10GB Ethernet.
  • FIG. 1 is a flow chart of a method for generating a nested CRC code according to the present invention.
  • FIG. 2 is a schematic block diagram of a method for generating a nested CRC code according to the present invention.
  • FIG. 3 is a block diagram showing the principle of the data splitter in the present invention.
  • FIG. 4 is a schematic block diagram of a channel selector in the present invention.
  • Figure 5 is a schematic block diagram of a reverse channel selector in the present invention.
  • Figure 6 is a schematic block diagram of a nested CRC code generating apparatus of the present invention.
  • Nested CRC code The CRC code calculated by the traditional CRC code calculator is used as the new data to be calculated, and the CRC code is calculated by the traditional CRC code calculator, and the obtained CRC code is a single layer nested CRC. code. If the obtained CRC code is sequentially continued for Q times of CRC code calculation, the final CRC code is Q nested CRC code, where Q is a positive integer.
  • the computational channels mentioned in the present invention are conventional W-bit parallel CRC code calculators, where W is the number of data bits that can be processed by each calculator for a single clock cycle. Each computing channel is independent of each other, and there is no correlation, and the traditional CRC code calculation can be performed independently on the data.
  • the present invention employs a total of N+1 computational channels, where N is any positive integer.
  • the generator polynomial g(x) is used in the CRC code calculation, which is a binary number agreed by the data receiver and the sender. This binary number remains unchanged during data transmission. The number of bits in g(x) determines the number of bits R of the CRC code.
  • the high-speed nested CRC code generation method for error control of the present invention includes the following steps:
  • the data splitter segments the calculated data; specifically, this step includes the following substeps:
  • N+1 pointers are generated for the entire data splitter (P., P ⁇ ., ⁇ ..., P N ⁇ P)
  • N pointers ( ⁇ , ⁇ ⁇ , ⁇ ), where i is a positive integer less than or equal to N, (P., & , ⁇ , ⁇ ) Divide the entire data splitter into ⁇ A data segment of length L S is assigned a pointer for each data segment in the order of N data segments. among them! ⁇ is any positive integer;
  • the data splitter divides the data to be calculated into m segments and passes the value of m to the channel selector and the reverse channel selector;
  • the length of the data to be calculated is [[ml L s + L f ], the pointer of the data divider, ⁇ ..., ⁇ , ⁇ ⁇ values are pre-allocated, and the data to be calculated is put into
  • the data splitter automatically divides the data to be calculated into m segments, the sequence number is (1, 2, 3, ⁇ ,!!!), and assigns a pointer to each of the m segments of data ( Pl , p 2 , p 3 , , p m ), ( ⁇ , ⁇ , ⁇ initial values are set to (P., & , P 2 , P 3 , -, P m — .
  • the data to be calculated is sent to each calculation channel by p m ), and the calculation channel is W-bit parallel calculation, and the data divider sends W-bit data to the calculation channel each time, and ( Pl , p 2 , The values of p 3 , -, p m ) are respectively subtracted from W. If ( Pl , p 2 , p 3 ⁇ , p m ) is equal to the J value, the data in which the data division is indicated is calculated.
  • N data output channels of the N calculation channels and the data divider are sequentially numbered (1, 2, 3, ⁇ , ⁇ , ⁇ , ⁇ ), where i is any value between 1 and N;
  • Table 1 Calculation channel selection table for different data types
  • the total number of data segments is m, so only the value of ( Sl ( X );, S2 ( X );,..., Si ( X );,...,s m ( X );) is passed (in this case)
  • i is any value between 1 and m) to complete the allocation of m calculation channels.
  • Each calculation channel performs CRC subcode calculation on each data segment to be calculated, specifically including the following ( gl (x), g 2 (x), -, gi (x), -, g N (x)), where i is any value between 1 and N, and the same generator polynomial can be used between channels ;
  • the initial value is set for each channel, and the initial value of each calculation channel can be usually all zero or all one;
  • the m data outputs of the strobe are respectively connected to the outputs of the corresponding calculation channels;
  • each calculation channel stores the CRC subcode calculated by each calculation channel into the corresponding CRC subcode register, and obtains a new series of data (CRC1, CRC2). , - - ⁇ , CRCi, - - ⁇ , CRCm) , where i is an arbitrary value between 1 and m, and CRCi calculates the obtained CRC subcode corresponding to the i-th data segment;
  • step (5) Determine whether it is necessary to perform multi-channel calculation again. If necessary, return the CRC subcode obtained in step (4) as new data to be calculated, and return to step (1); if not, proceed to step (6). Specifically, the following substeps are included:
  • step (6) Determine whether the value of Q is 0. If the value of Q is 0, proceed to step (6); if the value of Q is not zero, then the CRC subcode data sorted in step (4) is used as New data to be calculated, and return to step (1) for calculation;
  • the Nth calculation channel calculates the final Q nested CRC code, which specifically includes the following substeps:
  • the generator polynomial g N+1 (x) is allocated for the N+1th CRC calculation channel ;
  • (6-3) Set the initial value for the calculation channel.
  • the calculation channel can be assigned an initial value of all zeros or all ones;
  • the nested CRC code calculated by the above steps is used to implement error control during data transmission, and the principle of implementing error control by nesting CRC code without changing the number of bits of the conventional CRC code is as follows:
  • m remainder polynomials are ( ri ( x ), r2 ( x ), -, According to the CRC principle, by using the m remainder polynomial, error control can be implemented for each data block of the calculation data, so ( ri ( X ), r 2 ( X ), rm — x rJx)) can be used for the entire data to be calculated. Implement error control.
  • the bit width of ⁇ m is m times the number of bits of the original CRC code.
  • the present invention implements error control by using a nested CRC code. x mW) As a new data to be calculated, a CRC code nesting calculation is performed. Let the number of CRC nesting layers be Q.
  • the new data length is mR
  • the traditional CRC check code digit is R
  • the codeword consisting of the two is ((m+ RmR)
  • the generator polynomial of this set of data is g N+1 (x)
  • Q(x) 1 is the quotient polynomial obtained by dividing ⁇ mW 1 by g N+1 (x)
  • r(x) 1 is the remainder polynomial.
  • error control can be implemented by r(x) 1 for data ( ri ( X ), r2 ( X ), -, r m — xm ), and x rJx)) It is possible to perform error control on the data to be calculated, so that error control can be implemented on the originally calculated data by r(x) 1 .
  • r(x) 1 may be attached to the data tail for transmission, and the same calculation process is performed on the received data by using the nested CRC code generation method of the present invention at the receiving end, thereby utilizing the received nested CRC.
  • the code r(x) 1 implements error control.
  • multi-channel calculation Xm has a long length.
  • the number of nesting times is Q, that is, the CRC subcode calculated and sorted by the i-th multi-channel is returned to the multi-channel for CRC calculation as the data to be calculated, and the i+1 is obtained by multi-channel calculation.
  • Group CRC subcode (where i is an arbitrary value between 1 and Q-1), after Q multi-channel calculation, the Q group CRC subcode can be obtained, and the sorted Q group CRC subcode is sent The N+1th CRC calculation channel, and finally r(x) Q can be calculated.
  • the CRC subcode calculated by the i+1th calculation can implement error control on the CRC subcode calculated in the ith time (where i is an arbitrary value between 1 and Q-1)
  • the final CRC calculation is performed on the CRC subcode calculated by the Qth multi-channel from the N+1th channel to obtain r(x) Q , ⁇ ⁇ can implement error on the CRC subcode calculated in the Qth multi-channel calculation Control, and the CRC subcode obtained by the first multi-channel calculation can implement error control on the calculated data, so the error control of the original data can be realized by the nested CRC code obtained by Q nesting calculation.
  • r (x) e may be attached to the data tail for transmission, and the same calculation process is performed on the received data by using the nested CRC code generation method of the present invention at the receiving end, thereby utilizing the received nested CRC.
  • the code r(x) Q is used to implement error control.
  • a nested CRC code generating apparatus for data transmission error control includes: a data segmentation module 1, a calculation channel selection module 2, a multi-channel CRC code calculation module 3, and a data sequencing module 4. Register 5, counter 6, data distributor 7, single channel CRC code calculation module 8.
  • the data segmentation module 1 is configured to automatically segment the data to be calculated according to a certain data length and align the lengths of the data segments by zero-padding, and sequentially transmit the data segments according to a certain number of bits under the control of the clock. Go out.
  • the calculation channel selection module 2 is used to connect each input data channel to the desired calculation channel.
  • the multi-channel CRC code calculation module 3 is configured to calculate a CRC code for a plurality of data segments at the same time.
  • the data sequencing module 4 is used to connect each input data channel to a desired register.
  • Register 5 is used to store the CRC code.
  • the counter 6 is used to record the number of calculations of the CRC code and to control the data output of the data distributor 7.
  • the data distributor 7 is used to allocate input data, and the allocation of data is controlled by the counter 6.
  • the single channel CRC code calculation module 8 is used to calculate the final CRC code.
  • the following example illustrates how the entire nested CRC code is generated.
  • the data to be calculated is [0, 1, 2, ⁇ , 255; 0, 1, 2, ⁇ , 255; 0, 1 , 2, ⁇ , 255 ; ⁇ ; 0, 1, 2, ⁇ , 63]
  • the type of data to be calculated is recorded as type T, and a single layer 32-bit nested CRC code is used.
  • the segmentation length of the data to be calculated! ⁇ is 128 bytes, each data segment of the data to be calculated and the final CRC calculation use the following generator polynomial:
  • the specific calculation process is: Data splitter based! ⁇
  • the data to be calculated is divided into seven data blocks of (128, 128, 128, 128, 128, 64) bytes, and for a data block of length 64 bytes, the length is expanded to 128 bytes by a low-order complement of 64 bytes of 0.
  • the channel selector strobes the first seven data output channels connected to the data divider and the switch of the channel selector, and then according to the S ( , (1, 2, 3, ⁇ ⁇ ⁇ , 7) data in the channel selection table.
  • the input channels are respectively connected to the (1, 2, 3, -, 7) calculation channels.
  • the seven data channels are sequentially sent to the data to be calculated by the pointers ( ⁇ , ⁇ 2 , ⁇ ⁇ ⁇ , ⁇ 7 ). Corresponding calculation channels. Each calculation channel calculates seven CRC subcodes. ( 0x2F18B043, 0x4A68D5AC, 0x2F18B043, 0x4A68D5AC, 0x2F18B043, 0x4A68D 5AC, 0x4C54F7D8 ) o
  • the reverse channel is based on S (the seven results of the calculation are sorted in order, in this case, the results of the calculation have been arranged in order, according to S
  • the case after (x)i sorting is consistent with the calculation channel order.
  • the T-type data is nested in a single layer, so it will be directly
  • 0x3EC09838 is the single-layer nested CRC code of the data to be calculated.
  • the nested CRC code generation method is implemented by multi-channel multi-bit parallel computing.
  • the clock can be calculated, which is about 170 times the speed of the traditional serial CRC calculator, which is about the traditional 32-bit parallel CRC.
  • the code calculator is 7 times faster, so the present invention greatly increases the speed of the calculation.
  • the amount of data controlled by a single CRC code is reduced, so the error correction capability of the nested CRC code is superior to the conventional CRC code.
  • the CRC code generation method can be well applied to data error control required by some high-speed converged networks, such as the FCoE network currently constructed on 10 GB Ethernet.

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Probability & Statistics with Applications (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Algebra (AREA)
  • Computing Systems (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Correction Of Errors (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)

Abstract

提供了一种用于数据传输差错控制的嵌套CRC码生成方法,包括:对待计算数据进行分段,根据数据类型为各数据段分配所需CRC码计算通道,各计算通道进行CRC码计算,对计算得到的各CRC子码进行排序。根据实际需要,排序后的CRC子码可直接送入最终的CRC码计算通道,也可作为新的待计算数据,多次重复上述CRC子码计算再送入最终的CRC码计算通道生成嵌套CRC码。还提供了一种嵌套CRC码生成装置,包括数据分段模块、计算通道选择模块、多通道CRC码计算模块、数据排序模块、寄存器、计数器、数据分配器、单通道CRC码计算模块。本发明的装置计算速度快,灵活性好,并且采用本发明的方法,因此所需存储容量小、纠错能力强,适用的范围广。

Description

一种用于数据传输差错控制的嵌套 CRC码生成^及装置 【技术领域】
本发明属于通信及计算机数据传输差错控制技术领域, 更具体地, 涉 及一种用于数据传输差错控制的嵌套 CRC码生成方法及装置。
【背景技术】
在各种各样的数据通信中, 一般都是将数据分组后进行传输, 在分组 数据后附加数据帧校验序列 (Frame Check Sequence , 简称 FCS ) 进行差错 控制, 以保证传输的正确性。 在帧校验序列的实现中, 循环冗余校验码 (Cyclic Redundancy Code, 简称 CRC) 以其高效率、 高性能获得了广泛应 用, 是目前数据传输过程中普遍采用的一种提高数据通信可靠性的办法。
数据发送过程中, 发送端将需要传送的数据进行 CRC校验码计算, 并 将校验码附在传送数据后一起发送。 接收端需要用同样的计算方法对接收 到的数据进行校验码计算, 然后将计算得到的 CRC码与接收到的 CRC码进 行比较, 如果一致则说明数据传送无误, 反之数据传送有差错。 如果数据 传送有误, 可以采用各种自动重发请求 (Automatic Repeat-request,简称 ARQ ) 技术让发送端重新传送该数据。
在现有的技术中, CRC编码的计算可以由软件和硬件完成。软件和硬件 均分为串行与并行两种方式。 在实时高速数据通信中, 为了达到实时高速 的要求, 多采用并行 CRC编码计算来提高运算速度。 目前通用的并行计算 主要有两种, 一种是通过异或逻辑和余数缓存器及相关控制电路组成, 可 采用可编程逻辑器件 (programmable logic device , 简称 PLD)、 现场可编 程门阵列 (Field Programmable Gate Array,简称 FPGA) 等器件实现。 另 一种是通过查找余数表实现, 该方法可以通过预先计算好余数表, 并储存 余数表, 由软、 硬件查找余数表来实现并行计算。 在第一种实现方式中, 随着并行计算的位数增加, 所需要的逻辑资源也大量增加, 而且随着级联 的逻辑门越来越多, 会导致寄存器之间的延时不断增加, 成为提升计算速 度的瓶颈。 在第二种并行计算方法中, 对于 R位的 CRC并行计算, 需要保 存的余数表容量为 (2 R) bi t, 因此, 随着并行计算位数 R的增加, 存储的 容量也会呈指数上升, 成为提升计算速度的瓶颈。
在并行计算的基础之上, 为了进一步提升 CRC编码计算的速度, 可以 通过对数据块进行预先分段, 利用多个并行 CRC计算通道对各数据块同时 进行计算, 从而进一步提升 CRC计算速度。
公布号为 CN1431594A的中国发明专利申请公开了一种多通道多位并行 计算 CRC码的方法。该方法直接将整个待计算 CRC码数据按每个长度为 Ls位 分割成多个数据块, 最后一个通道的数据长度为!^, 并将各数据块按顺序 依次放入 N个通道, 由该 N个通道同时对各自通道中的数据块进行 CRC计 算, 得到 N个通道中数据块的 CRC子码; 再通过构建除法余数变换表, 对 前 N-1个通道的 CRC子码进行除法余数变换查表 (最后一个通道不需要进 行余数变换), 得到变换后的 CRC子码; 最后对变换后的 CRC子码逐一进行 异或计算后, 得到整个待计算数据 CRC码。 但是, 该方法需要对 N-1个通 道计算的 CRC子码依次进行余数转后才能得到各通道需要的 CRC计算码, 因而存在以下缺点:
1 ) 按照该专利的说明, 前 N-1个通道中计算得到的 CRC子码, 需要再 通过构建除法余数变换表, 对 N个通道的 CRC子码进行除法余数变换查表, 才能得到需要的 CRC子码。 其中第 i (i为小于 N的正整数)个通道的余数转 换表中的表项, 是通过对典型数据余数表中每一个表项进行 [(N-i) . Q+ P]次 连续查表得到的, 其中 Ls为所计算的 CRC码位数 R的 Q倍, 最后一个通道 的数据长度 Lp为计算 CRC位数 R的 P倍。 因此, 随着待计算数据的长度变 化, 会导致 N、 P两个变量发生变化, 单个通道对应的余数表则随着这两个 参数而发生变化, 从而无法为每个通道分配固定的余数变换表。
2)按照该专利的说明, 需要为前 N-1个通道的每一个通道分配一个余 数转换表, 这使得计算器需要的存储容量大大增加。 如建立一个 N通道的 运算器, 余数转换表需要的存储容量为 [(N-l).2R.R]bit。 因此, 随着所计 算 CRC码位数 R的增加, 整个计算器需要分配给余数转换表的存储容量将 急剧上升。 例如在 32位 CRC计算中, 单个通道需要的余数转换表的存储容 量为 16GB的容量。
【发明内容】
针对现有技术的缺陷, 本发明的目的在于提供一种用于数据传输差错 控制的嵌套 CRC码生成方法, 旨在解决现有多通道多位并行 CRC码生成方 法中存储容量耗费大、 通用性较差的问题, 并且嵌套 CRC码的纠错能力优 于传统的 CRC码。
为实现上述目的,本发明提供了一种用于数据传输差错控制的嵌套 CRC 码生成方法, 包括以下步骤:
(1) 数据分割器对待计算数据进行分段, 具体包括以下子步骤: (1-1) 将数据分割器中的数据初始化为 0, 并根据计算通道的数量 N 确定数据分割器的最大分段数为 N;
(1-2)为整个数据分割器生成 N+1个指针 (P。,P^.,^...,PN^P N个指针
(Pl,p2,-,Pi,-,pN), 其中 i为小于等于 N的正整数, (Ρ^,···,^···^)将整个 数据分割器分成 Ν个长为 LS的数据段, 按照 N个数据段的顺序, 为每个数 据段分配一个指针分别为
Figure imgf000005_0001
, 其中!^为任意正整数;
(1-3)为指针 (Ρ^Ρ^.Ρ^,ΡΝ)分配固定值, 其中 = — 1 +LS, P。的值可 以取任意值, 整个计算过程中, 指针的值固定不变;
(1-4) 为 N 个数据区域的指针(Α,Ρ^.,Ρ^,ΡΝ)分配初始值, 并令 (Ρ ,···,^···^)指针的初始值分别与 (Ρ ,···,^ ^…^― J相等; (1-5) 将待计算数据填充至数据分割器中, 根据数据的填充情况, 改 变(Α,Ρ^ ,Ρ^,ΡΝ)指针的值;
( 1-6) 数据分割器将待计算数据分为 m段, 并将 m的值传递给通道选 择器和反向通道选择器;
(1-7) 利用(P ^wPm)的值, 以及计算通道的并行计算位数 W, 在 每一个时钟周期,向 m个计算通道分别传送 W位数据,并将 (p^p^p^Pm)的 值均减去 W;
(卜 8)判断 (Pl,p2,p3〜pm)是否与 (PoU .P^)的值相等, 若相等, 则 进入步骤 (2), 否则返回步骤 (1-7);
(2) 为分割后的各待计算数据段分配所需的 CRC码计算通道, 具体包 括以下子步骤:
(2-1)针对不同类型数据的 Q次嵌套 CRC码的生成, 为通道选择器生 成一张通道选择表用于在不同类型数据的各次嵌套计算中, 为数据输入通 道分配相应的计算通道, 其中 Q为正整数;
(2-2) 利用数据分割器传递的数据段总数 m, 通道选择器选通用于连 接数据分割器的 m个序号为 (1,2,3,···,ηι)的输出与通道选择器的开关;
(2-3) 根据开关选择表, 将选通的 m个数据输入分别连接至相应的计 算通道之上;
(3)各计算通道对各待计算数据段进行 CRC子码计算, 具体包括以下 子步骤:
( 3-1 ) 为 N 个计算通道分别分配相应的生成多项式为 (gl(x),g2(x),-,gi(x),-,gN(x)), 其中 i为 1到 N之间的任意值, 各通道之间可 以采用同样的生成多项式;
(3-2) 根据相应的生成多项式, 利用逻辑电路或者查找余数表的方法 来实现 W位并行计算的各计算通道; (3-3) 根据各计算通道所采用的生成多项式, 为各通道设置初始值, 通常可以为各计算通道赋初始值为全零或者全一;
(3-4) 对各通道的输入数据完成 CRC子码计算, 得到 m个 CRC子码;
(4)对各通道计算所得到的 CRC子码进行排序,具体包括以下子步骤: (4-1) 反向通道选择器与通道选择器共用一张通道选择表;
(4-2) 依据数据分割器传递的待计算数据的分段总数 m, 反向通道选 择器选通序号为 (l,2,3,...,m)的 CRC 子码暂存器与反向通道选择器的连接开 关。
(4-3) 根据开关选择表, 将选通的 m个数据输出分别连接至相应的计 算通道的输出之上;
(4-4) 各计算通道按照反向通道选择器的选择结果, 将各计算通道计 算所得的 CRC 子码存入相应的 CRC 子码暂存器, 得到一串新的数据为 (CRC1, CRC2, - - ·, CRCi, - - ·, CRCm) , 其中 i为 1到 m之间的任意值, CRCi对应第 i个数据段计算所得到的 CRC子码;
(5) 判断是否需要再次进行多通道计算, 如果需要, 则将步骤 (4) 得到的 CRC子码作为新的待计算数据, 返回步骤 (1); 如果不需要, 则进 入步骤 (6), 具体包括以下子步骤:
(5-1) 将 CRC码的嵌套次数 Q的值减去 1;
(5-2) 判断 Q的值是否为 0, 若 Q的值为 0, 则进入步骤 (6); 若 Q 的值不为零, 则以(4)步骤中排序好的 CRC子码数据作为新的待计算数据, 并返回步骤 (1) 进行计算;
(6)第 N+1个计算通道计算出最终的 Q次嵌套 CRC码, 具体包括以下 w位并行计算的计算通道;
(6-3) 为该计算通道设置初始值, 通常可以为该计算通道赋初始值为 全零或者全一;
(6-4)对多通道第 Q次计算并经过排序所得到的 CRC子码数据进行最 后一次 CRC码计算, 得到最终的 Q次嵌套 CRC码。
步骤 (1-5) 中, (Α,Ρ ,Ρ^,ΡΝ)的赋值情况为:
a)若第 i个数据区域中填充了长度为 Ls的待计算数据, 则将 Pl的值赋 为 P1 ;
b) 若第 i个数据区域未填充数据段, 则保持 Pl的值不变;
c)对于第 m个填充区域, 由于待计算数据并不保证以 Ls对齐, 为了保 证计算的同步性,若第 m个数据区域的填充长度 Lf大于 0且小于 Ls,则将 Pm 的值赋为 Pm, 即将长度为 Lf数据段的长度通过补零扩展至 Ls, 其中 m为待 计算数据的长度除以 Ls后上取整得到的值, Lf为待计算数据的长度除以 Ls 后得到的余数。
步骤 (2-1) 具体包括以下子步骤:
(2-1-1)对于 N个计算通道和数据分割器的 N个数据输出通道, 分别 对其进行顺序编号 α,2,3,···ί,···,Ν), 其中 i为 1到 Ν之间的任意值;
(2-1-2) 为通道选择表的每一个表项分配一个长为 N.「l。g2N]位的矢 量 S(x), 矢量多项式为:
S(x) = mNflog2Nl_1xN^N>1 +mNflog2Nl_2xN^N>2 +- + mix1 + - + ^ +η¾χ° 其中 =1或 0(其中 i = 0,1,2,···, N'「log2N」— l);
(2-1-3 )将 S(x)分成 N段长为「log 2 N]的矢量 (X), s2 (χ),· · ·, (χ),· · ·, sN (χ)), 其中 i为 1到 N之间的任意值, (Sl(X),S2(X), ,Si(X), ,sN(X))对应数据分割器 的 N个数据输出 (1,2,3,···,ί,···,Ν), 其中 Sl(x)为分配给第 i个数据输入的计算 通道的序号;
(2-1-4)固定待计算数据的数据类型,针对每一次嵌套 CRC码的生成, 生成 Q个相应的 S , 作为一行表项保存在开关选择表中;
(2-1-5 ) 针对待计算数据的每一种数据类型, 重复步骤 (2-1-4), 以 构成完整的通道选择表。
本发明的另一目的在于提供一种用于数据传输差错控制的嵌套 CRC码 生成装置, 该装置一方面采用多通道多位并行计算 CRC码, 另一方面可以 自动根据待计算数据的类型, 为待计算数据选择不同的计算通道组合, 因 此该装置具有计算速度快, 灵活性高等特点。
为实现上述目的,本发明提供了一种用于数据传输差错控制的嵌套 CRC 码生成装置, 包括: 数据分段模块、 计算通道选择模块、 多通道 CRC码计 算模块、 数据排序模块、 寄存器、 计数器、 数据分配器、 单通道 CRC码计 算模块。 数据分段模块用于将待计算数据按照一定的数据长度自动分段并 通过补零的方法使各数据段长度对齐, 并在时钟的控制下, 将各数据段按 照一定的位数依次传送出去; 计算通道选择模块用于将各输入数据通道连 接至所需要的计算通道之上; 多通道 CRC码计算模块用于同时对多个数据 段计算 CRC码; 数据排序模块用于将各输入数据通道连接至所需要的寄存 器之上; 寄存器用于存储 CRC码; 计数器用于记录 CRC码的计算次数, 并 控制数据分配器的数据输出; 数据分配器用于对输入数据进行分配, 数据 的分配受到计数器的控制; 单通道 CRC码计算模块用于计算出最终的 CRC 码。
通过本发明所构思的以上技术方案, 与现有技术相比, 本发明具有以 下的有益效果:
1、 通用性好: 在本发明中, 由于采用了步骤 (1 ), 因此对于长度小于 等于 N . LS的任意长度的待计算数据都可以通过本发明来生成嵌套 CRC码。 2、 使用的存储资源少: 在本发明中, 由于采用了步骤 (7), 各计算通 道计算得到的 CRC子码再一次通过 CRC计算通道计算即可得到嵌套 CRC码, 因此无需余数转换表, 可以节省大量的存储资源。
3、 处理速度快: 在本发明中, 由于采用了步骤 (3 ) 和步骤 (6 ), 因 此能够实现对待计算数据的各数据块同时进行多位并行 CRC码计算, 从而 在传统的并行 CRC码计算的基础上, 进一步加快了处理的速度, 可以适用 于一些实时高速的数据传输网络, 例如 10GB以太网。
4、 用途广泛: 在本发明中, 由于采用了步骤 (2 ) 和步骤 (4), 因此 对于不同类型的待计算数据都可以通过本发明来生成嵌套 CRC码, 比较适 合于一些融合型网络的应用, 例如架构在 10GB以太网上的 FCoE网络。
5、 差错控制能力强: 在本发明中, 由于采用了步骤 (3 )、 (5 )、 ( 6 ) 和步骤 (7 ), 因此在计算过程中, 可以为待计算数据的各数据段分配不同 的 CRC码计算生成多项式, 同时根据嵌套 CRC码的差错控制原理, 单个 R 位的 CRC码检测的数据量减小, 因此嵌套 CRC码的差错控制能力优于传统 的 CRC码。
【附图说明】
图 1是本发明嵌套 CRC码生成方法的流程图。
图 2是本发明嵌套 CRC码生成方法的原理框图。
图 3是本发明中数据分割器原理框图。
图 4是本发明中通道选择器的原理框图。
图 5是本发明中反向通道选择器的原理框图。
图 6是本发明嵌套 CRC码生成装置的示意框图。
【具体实舫式】
为了使本发明的目的、 技术方案及优点更加清楚明白, 以下结合附图 及实施例, 对本发明进行进一步详细说明。 应当理解, 此处所描述的具体 实施例仅仅用以解释本发明, 并不用于限定本发明。 以下首先就本发明的技术术语进行解释和说明:
嵌套 CRC码: 将传统的 CRC码计算器计算得到的 CRC码作为新的待计 算数据, 并利用传统的 CRC码计算器对其进行 CRC码计算, 得到的 CRC码 即为单层嵌套 CRC码。 若将得到的 CRC码依次继续进行 Q次 CRC码计算后, 最终得到的 CRC码即为 Q次嵌套 CRC码, 其中 Q为正整数。
计算通道: 本发明中所提及的计算通道均为传统的 W位并行 CRC码计 算器, 其中 W为各计算器单个时钟周期所能处理的数据位数。 各计算通道 之间相互独立, 不存在关联, 均能够独立地对数据进行传统的 CRC码计算。 本发明一共采用 N+1个计算通道, 其中 N为任意正整数。
生成多项式 g(x): 生成多项式 g(x)用于 CRC码计算中, 是数据接收方和 发送方约定好的一个二进制数, 在数据传送过程中, 这个二进制数保持不 变。 g(x)的位数决定了 CRC码的位数 R。
如图 1和图 2所示, 本发明用于差错控制的高速嵌套 CRC码生成方法 包括以下步骤:
(1) 数据分割器对待计算数据进行分段; 具体而言, 本步骤包括以下 子步骤:
(1-1) 将数据分割器中的数据初始化为 0, 并根据计算通道的数量 N 确定数据分割器的最大分段数为 N;
(1-2)参照图 3,为整个数据分割器生成 N+1个指针 (P。,P^.,^...,PN^P
N个指针 (Α,Ρ ··,^···^),其中 i为小于等于 N的正整数,(P。,& ,···,^···^) 将整个数据分割器分成 Ν个长为 LS的数据段, 按照 N个数据段的顺序, 为 每个数据段分配一个指针分别为
Figure imgf000011_0001
其中!^为任意正整数;
(1-3)为指针 ( ,^^,-^)分配固定值, 其中 P^— 1 +LS, P。的值可 以取任意值, 整个计算过程中, 指针的值固定不变;
(1-4) 为 N 个数据区域的指针(Α,Ρ^.,Ρ^,ΡΝ)分配初始值, 并令 (Ρ ,···,^···^)指针的初始值分别与 (Ρ ,···,^ ,ΡΝ J相等;
(1-5) 将待计算数据填充至数据分割器中, 根据数据的填充情况, 改 变 (Ρ ,···,^··^)指针的值;
a)若第 i个数据区域中填充了长度为 Ls的待计算数据, 则将 Pl的值赋 为 P1 ;
b) 若第 i个数据区域未填充数据段, 则保持 P1的值不变;
c)对于第 m个填充区域(其中 m为待计算数据的长度除以!^后上取整 得到的值), 由于待计算数据并不保证以 Ls对齐, 为了保证计算的同步性, 若第 m个数据区域的填充长度 Lf (其中 Lf为待计算数据的长度除以 Ls后得 到的余数) 大于 0且小于 Ls, 则将 Pl 值赋为 Pm, 即将长度为 Lf数据段的 长度通过补零扩展至 Ls, 从而解决待计算数据长度不对齐的问题。
( 1-6) 数据分割器将待计算数据分为 m段, 并将 m的值传递给通道选 择器和反向通道选择器;
(1-7) 利用(P ^wPm)的值, 以及计算通道的并行计算位数 W, 在 每一个时钟周期,向 m个计算通道分别传送 W位数据,并将 (P ^p^Pm)的 值均减去 W;
α-8)判断 (Pl,p2,p3〜pm)是否与 (PoU .P^)的值相等, 若相等, 则 进入步骤 (2), 否则返回步骤 (1-7);
举例而言, 在本步骤中, 设待计算数据的长度为 [(m-l Ls +Lf], 数据 分割器的指针 ,^…, Κ ,ΡΝ ^值预先分配好, 将待计算数据放入数据分 割器后, 数据分割器自动将待计算数据分割成 m段, 序号为 (1,2,3, ···,!!!), 并 为 m段数据各分配一个指针 (Pl,p2,p3, ,pm), (ΡρΡ ,Ρν,ρ^的初始值设置 为(P。,& ,P2,P3,-,Pm— 。 待计算数据填充后, (p^p^ oPm)的值被赋值为 (P1,P2,P3,-,PJ , 其中第 m个数据块的长度为 Lf (l≤Lf ≤Ls), 数据分割器初 始值为 0, 将?111的值由初始值 Pm— i改变为 Pm, 等效于 Pm i的值由 Pm1 +Lf扩展 为 Pm, 从而实现第 m个数据块的长度通过补零扩展为 Ls。 在计算过程中, 通过 pm)来将待计算数据送入各计算通道, 计算通道为 W位并行 计算, 数据分割器每次向计算通道送入 W位数据, 并将 (Pl,p2,p3,-,pm)的值 分别减去 W, 若 (Pl,p2,p3^,pm)与 J值相等时, 则指示数据分 割其中的数据计算完成。
(2) 为分割后的各待计算数据段分配所需的计算通道, 具体包括以下 子步骤:
(2-1 )针对不同类型数据的 Q次嵌套 CRC码的生成 (其中 Q为正整数), 为通道选择器生成一张通道选择表用于在不同类型数据的各次嵌套计算 中, 为数据输入通道分配相应的计算通道, 具体包括以下子步骤:
(2-1-1)对于 N个计算通道和数据分割器的 N个数据输出通道, 分别 对其进行顺序编号 (1,2,3,···,ί,···,Ν), 其中 i为 1到 N之间的任意值;
(2-1-2) 为通道选择表的每一个表项分配一个长为 N.「l。g2N]位的矢 量 S(x), 矢量多项式为:
S(x) = mNflog2Nl_1xN^N>1 +mNflog2Nl_2xN^N>2 +- + mix1 + - + ^ +η¾χ° 其中 =1或 0(其中 i = 0,1,2,···, N'「fog2N,— 1);
(2-1-3 )将 S(x)分成 N段长为「log 2 N]的矢量 (X), s2 (χ),· · ·, (χ),· · ·, sN (χ)), 其中 i为 1到 N之间的任意值, ((χ),82(χ),···,(χ),···,(χ))对应数据分割器 的 Ν个数据输出 (1,2,3,···,ί,···,Ν), 其中 Sl(x)为分配给第 i个数据输入的计算 通道的序号;
(2-1-4)固定待计算数据的数据类型,针对每一次嵌套 CRC码的生成, 生成 Q个相应的 S(x), 作为一行表项保存在开关选择表中;
(2-1-5) 针对待计算数据的每一种数据类型, 重复步骤 (2-1-4), 以 构成完整的通道选择表。 举例而言, 在本子步骤中, 假设待计算数据的类型一共有 F种 (其中 F的值为正整数), 生成的通道选择表如表 1所示:
表 1 不同数据类型的计算通道选择表
Figure imgf000014_0001
(2-2) 通过数据分割器传递的数据段总数 m, 通道选择器选通用于连 接数据分割器的 m个输出 (1,2,3,…,!!!)与通道选择器的开关, 如图 4所示;
(2-3) 根据开关选择表, 将选通的 m个数据输入分别连接至相应的计 算通道之上。
举例而言, 在本步骤中, 当待计算的数据类型为类型 1, 待计算数据被 数据分割器分成 m个数据块, 则通道选择器将连接前 m个数据输入通道与 通道选择器之间的开关选通。 若待计算数据是第一次计算, 则利用通道选 择表中的 S(x);来完成通道分配, 其中 S(X)i = (Sl(x);,S2(x);,...,Si(x);,...,sN(x);), 其中 i为 1到 N之间的任意值, Si(x)i的长度为「l。g2N]位。 由于输入数据段 总数为 m, 因此只需通过 (Sl(X);,S2(X);,...,Si(X);,...,sm(X);)的值 (在该情况下, i 为 1到 m之间的任意值) 来完成 m个计算通道的分配。 设 (^对应的十进 制数为 k (其中, 0<k≤N), 则将第 i个数据输入通道连接至第 k个计算通 道之上, 使第 i个数据块由第 k个计算通道完成 CRC码计算。
(3)各计算通道对各待计算数据段进行 CRC子码计算, 具体包括以下 (gl(x),g2(x),-,gi(x),-,gN(x)), 其中 i为 1到 N之间的任意值, 各通道之间可 以采用同样的生成多项式;
(3-2) 根据相应的生成多项式, 利用逻辑电路或者查找余数表的方法 来实现 W位并行计算的各计算通道;
(3-3) 根据各计算通道所采用的生成多项式, 为各通道设置初始值, 通常可以为各计算通道赋初始值为全零或者全一;
(3-4) 对各通道的输入数据完成 CRC子码计算, 得到 m个 CRC子码; (4)对各通道计算所得到的 CRC子码进行排序,具体包括以下子步骤: (4-1) 反向通道选择器与通道选择器共用一张通道选择表;
(4-2) 依据数据分割器传递的待计算数据的分段总数 m, 反向通道选 择器选通序号为 (l,2,3,...,m)的 CRC 子码暂存器与反向通道选择器的连接开 关。 如图 5所示;
(4-3) 根据开关选择表, 将选通的 m个数据输出分别连接至相应的计 算通道的输出之上;
(4-4) 各计算通道按照反向通道选择器的选择结果, 将各计算通道计 算所得的 CRC 子码存入相应的 CRC 子码暂存器, 得到一串新的数据为 (CRC1, CRC2, - - ·, CRCi, - - ·, CRCm) , 其中 i为 1到 m之间的任意值, CRCi对应第 i个数据段计算所得到的 CRC子码;
举例而言, 在本步骤中, 当待计算的数据类型为流量 1, 待计算数据被 数据分割器分成 m个数据块, 则反向通道选择器将连接前 m个 CRC子码暂 存器与反向通道选择器之间的连接开关选通。 若待计算数据是第一次计算, 则利用通道选择表中 S(x)i来为 m个 CRC 子码暂存器分配计算通道, 其中 S(x); = (s1(x);,s2(x);,---,si(x);,---,sN(x)J),其中 i为 1到 N之间的任意值, Si(x)i的 长度为「l。gN]位。 由于输入数据段总数为 m, 因此只需通过 ( (Χ);, (Χ);,···,δι(χ);,···,δηι(Χ);)的值(在该情况下, i为 1到 m之间的任意值) 来完成 m个 CRC子码的排序。设 Si (x)l对应的十进制数为 k (其中, 0<k≤N), 则将第 k个计算通道的输出连接至第 i个 CRC子码暂存器之上,从而使第 i 个数据块经过第 k个计算通道计算后得到的结果保存在第 i个 CRC子码暂 存器中, 从而使 CRC子码的排列顺序与原数据块的顺序一致。
(5) 判断是否需要再次进行多通道计算, 如果需要, 则将步骤 (4) 得到的 CRC子码作为新的待计算数据, 返回步骤 (1); 如果不需要, 则进 入步骤 (6), 具体包括以下子步骤:
(5-1) 将 CRC码的嵌套次数 Q的值减去 1;
(5-2) 判断 Q的值是否为 0, 若 Q的值为 0, 则进入步骤 (6); 若 Q 的值不为零, 则以(4)步骤中排序好的 CRC子码数据作为新的待计算数据, 并返回步骤 (1) 进行计算;
(6)第 N+1个计算通道计算出最终的 Q次嵌套 CRC码, 具体包括以下 子步骤:
(6-1) 为第 N+1个 CRC计算通道分配生成多项式 gN+1(x);
(6-2) 根据生成多项式, 利用逻辑电路或者查找余数表的方法来实现 W位并行计算的计算通道;
(6-3) 为该计算通道设置初始值, 通常可以为该计算通道赋初始值为 全零或者全一;
(6-4)对多通道第 Q次计算并经过排序所得到的 CRC子码数据进行最 后一次 CRC码计算, 得到最终的 Q次嵌套 CRC码。
本发明中, 由以上步骤计算得到的嵌套 CRC码来实现数据传送过程中 的差错控制, 嵌套 CRC码在不改变传统 CRC码位数的情况下实现差错控制 的原理如下:
(1)设待计算 CRC码的数据比特序列为 2,1¾—3, ···,"¾,···,!¾, 其多项式为 m(x) = mk_1xk_1 2xk2 H κιηχ1 H hrr^x2 +H1JX1 +n¾x° 其中 =1或 0(其中 i = 0,1,2,···, k— 1); (2)将待计算数据分成 m-1个长度为!^位的数据段 (Dm,Dn •D7)和一 个长度为 Lf位 (l≤Lf ≤Ls ) 的数据段 D m段数据的多项式为
Dm(x) = mklX Ls- 1 + mk2xLs- 2 +■■■m. 1 +■■■ + mk_^+2 2 + mk— ^x1 + mk— x°
[(x) = iX^—1 2 xLs2 +---mixi + ··· + !¾— 2Ls+2x2 +mk_2Ls+1x1+mk_2I¾ mk— (m— 2) — 1X S + Ι¾— (m— 2) xLs2 +---IHX1 + · · · +
Figure imgf000017_0001
mk- (m- 1)Ls- 1 +m Lkk -- (m--1)1^-2 ' 1 + ···η¾ +··· + η¾χ2 +m1x1+m0x 其中 n^ =1或 0(¾ψί = 0,1,2,···, k-1); (3)对最后一个长度为 Lf数据段 Dl进行补零, 将其长度扩展为 Ls, 得 到扩展以后的 m段数据的多项式为:
Dm(x) = mk1 + mk2x - 2 +---mixi + ··· + mk+2χ2 + mk— x1 + mk— x°
{
Figure imgf000017_0002
D1(x) = mk— x 1 + mk— (m— — 22 + · · · η¾ x1 + · · · + + 其中 n^ =1或 0(¾ψί = 0,1,2,···, k-1); (4)对于每一个数据段, 数据位数均为 Ls, 传统 CRC校验码的位数为 R,两者组成的码字一般记为 (Ls +R,LS),每个数据段采用独立的生成多项式, 根据 CRC原理有:
xKDm(x) = Qm(x)gm(x) + rm(x)
Dm i (x) = Qm-i (x)gm— i (x) + rm-i (x) xRDi(x) = Qi(x)gi(x) + ri(x) xRD2(x)=Q2(x)g2(x) + r2(x)
xRD1(x) = Q1(x)g1(x) + r1(x) 其中 i为 1到 m之间的任意值, (¾(χ)为 ^D x)除以 gl(x)所得的商多项 式, r x)为余数多项式, 各数据段可采用同样的生成多项式。
(5) m个余数多项式为 (ri(x),r2(x),-,
Figure imgf000018_0001
, 根据 CRC原理, 利用 这 m个余数多项式, 可以分别对待计算数据的各数据块实现差错控制, 因 此 (ri(X),r2(X) ,rm— x rJx))可以对整个待计算数据实现差错控制。
(6)
Figure imgf000018_0002
^m )的位宽是原 CRC码位数的 m倍, 为了提高 信道的编码率, 并保持传统数据帧 FCS域的长度不改变, 本发明通过采用 嵌套 CRC码来实现差错控制, 即将
Figure imgf000018_0003
x mW)作为新的待计算 数据, 进行一次 CRC码嵌套计算。 令 CRC嵌套层数为 Q。
(7) 当 (^χ^ ,-,^ ,^ )的长度不是很大的时候, 一般情况下, 令 Q=l, 则由(Ι^Χ^ ,-,Γ^ ,^ )组成数据的多项式为:
m(x)l:!!!^— 2 "… + Η "… + η¾χ2 + ϊ^χ1十!!!^0 ⑤ 其中 rn^l或 0 (其中 1 = 0,1,2,···, m -l, 其中 m为待计算数据的分段数);
(8) 新的数据长度为 mR,传统 CRC校验码位数为 R, 两者组成的码字 为 ((m+ RmR), 该组数据采用的生成多项式为 gN+1(x), 根据 CRC原理有: 其中 Q(x)1为 ^mW1除以 gN+1(x)所得的商多项式, r(x)1为余数多项式。
(9)在数据的传送过程中, 可以由 r(x)1对数据 (ri(X),r2(X),-,rm— x m ) 实现进行差错控制, 而
Figure imgf000018_0004
x rJx))可以对原待计算数据进行差 错控制, 因此通过 r(x)1可以对原待计算数据实现差错控制。 在数据发送时, 可以将 r(x)1附在数据尾进行发送, 在接收端通过使用本发明的嵌套 CRC码 生成方法对接收数据实施同样的计算过程, 从而利用接收到的嵌套 CRC码 r(x)1实现差错控制。
(10) 若多通道计算得到的
Figure imgf000018_0005
x m )长度较长, 为了解 决第 N+1个计算通道计算 CRC码计算通道使用时间过多的问题, 可以在此 基础上, 使用多次嵌套, 嵌套次数为 Q, 即将第 i次多通道计算并排序以后 的 CRC子码重新作为待计算数据送回多通道进行 CRC计算, 多通道计算得 到第 i+1组 CRC子码 (其中, i为 1到 Q-1之间的任意值), 通过 Q次多通 道计算后, 可以得到第 Q组 CRC子码, 将排序好的第 Q组 CRC子码送入第 N+1个 CRC计算通道, 最后可计算出 r(x)Q
( 11 ) 在数据传送过程中, 第 i+1次计算得到的 CRC子码可以实现对 第 i次计算得到的 CRC子码实现差错控制(其中, i为 1到 Q-1之间的任意 值), 由第 N+1个通道对第 Q次多通道计算得到的 CRC子码进行最终的 CRC 计算得到 r(x)Q, ^ ^可以对第 Q次多通道计算得到的 CRC子码实现差错控 制, 并且第一次多通道计算得到的 CRC子码可以对待计算数据实现差错控 制, 因此可以通过 Q次嵌套计算所得到的嵌套 CRC码 ^ ^实现对原数据的 差错控制。 在数据发送时, 可以将 r(x)e附在数据尾进行发送, 在接收端通 过使用本发明的嵌套 CRC码生成方法对接收数据实施同样的计算过程, 从 而利用接收到的嵌套 CRC码 r(x)Q来实现差错控制。
如图 6所示, 本发明一种用于数据传输差错控制的嵌套 CRC码生成装 置包括: 数据分段模块 1、 计算通道选择模块 2、 多通道 CRC码计算模块 3、 数据排序模块 4、 寄存器 5、 计数器 6、 数据分配器 7、 单通道 CRC码计算 模块 8。
数据分段模块 1 用于将待计算数据按照一定的数据长度自动分段并通 过补零的方法使各数据段长度对齐, 并在时钟的控制下, 将各数据段按照 一定的位数依次传送出去。
计算通道选择模块 2 用于将各输入数据通道连接至所需要的计算通道 之上。
多通道 CRC码计算模块 3用于同时对多个数据段计算 CRC码。
数据排序模块 4用于将各输入数据通道连接至所需要的寄存器之上。 寄存器 5用于存储 CRC码。
计数器 6用于记录 CRC码的计算次数, 并控制数据分配器 7的数据输 出。
数据分配器 7用于对输入数据进行分配, 数据的分配受到计数器 6的 控制。
单通道 CRC码计算模块 8用于计算最终的 CRC码。
【应用实例】
以下举例说明整个嵌套 CRC 码的生成方法。 假设待计算数据为 [0, 1, 2, ··· , 255 ; 0, 1, 2, ··· , 255 ; 0, 1 , 2, ··· , 255 ; ···; 0, 1, 2, ··· , 63]共 832 字节, 左边为高字节, 右边为低字节。 待计算数据的类型记为类型 T, 采用 单层 32位嵌套 CRC码。 待计算数据的分段长度!^为 128个字节, 待计算数 据的各数据段以及最终的 CRC计算均采用以下生成多项式:
/ 、 32 , 26 , 23 , 22 16 , 12 , 11 , 10 , 8 , 7 , 5 , 4 , 2 , g ( x) = X + X + X + X + X + X + X + X + X + X + X + X + X + X + 1 多通道中的各通道以及最终的 CRC计算通道均由硬件逻辑电路实现 32 位的并行 CRC码计算, N+1个通道均采用以上生成多项式来实现, 各通道的 初始值均为 OxFFFFFFFF。 按照以上假设, 数据开关选择表中, 对于 T类数 据, 只有一层嵌套, 分配的开关矢量也只有一个, N个计算通道采用的生成 多项式均为 g(x) ,因此令 S(X = (Sl«, s2(x) .. ^) = (1,2,3,...^)。
具体计算过程为: 数据分割器根据!^将待计算数据分成长为 (128,128,128,128,128,128,64)字节的七个数据块, 对于长度为 64字节的数据块, 通过低位补 64字节的 0将长度扩展为 128字节。通道选择器将连接数据分 割器的前七个数据输出通道与通道选择器的开关选通, 然后根据通道选择 表中的 S( , 将 (1,2,3,· · ·,7)个数据输入通道分别连接到第 (1,2,3,—,7)个计算通 道之上。 七个数据通道通过指针 (Ρι, ρ2,· · ·, ρ7), 将待计算数据依次送入各自 对应的计算通道。 各计算通道计算得到七个 CRC 子码分别是 ( 0x2F18B043, 0x4A68D5AC, 0x2F18B043, 0x4A68D5AC, 0x2F18B043, 0x4A68D 5AC, 0x4C54F7D8 ) o反向通道根据 S ( 将计算的七个结果整理好顺序, 在本 例中, 计算所的结果已经按顺序排好, 按照 S(x)i排序后的情况与计算通道 顺序一致。 在本实施例中, T 类数据采用单层嵌套, 因此直接将
( 0x2F18B043, 0x4A68D5AC, 0x2F18B043, 0x4A68D5AC, 0x2F18B043, 0x4A68D 5AC, 0x4C54F7D8 ) 送入最后一个 CRC 码计算通道, 得到计算结果为 0x3EC09838。 0x3EC09838即为待计算数据的单层嵌套 CRC码。
在以上实例中, 嵌套 CRC码生成方法通过多通道多位并行计算实现, 七个计算通道在单个时钟周期内可以处理 32*7=224位待计算数据, 对于七 个通道计算的结果,通过七个时钟完成最终的 CRC计算得到单层嵌套的 CRC 码, 因此, 对于长度为 832个字节的待计算数据, 单层嵌套下, 本发明的 计算方法只需 32+7=39 (其中, 七个计算通道一共需要 32个时钟, 最终的 CRC码计算通道需要 7个时钟)个时钟即可计算完成, 约是传统串行 CRC计 算器速度的 170倍, 约是传统 32位并行 CRC码计算器速度的 7倍, 因此本 发明大大提升了计算的速度。 数据传送过程中, 单层嵌套 CRC码只需要对 32*7=224位上层 CRC子码数据进行差错控制, 同时, 7个 CRC子码分别对 长度为 128字节的数据块实现差错控制, 相比于传统的 CRC码,单个 CRC码 所控制的数据量降低, 因此嵌套 CRC码的纠错能力优于传统 CRC码。 同时, 还可以通过改变七个数据块的 CRC码计算生成多项式组合,进一步改进 CRC 码的纠错能力, 并且使本发明能够支持多种数据类型的嵌套 CRC码的生成, 因此本发明的嵌套 CRC码生成方法, 可较好地应用于一些高速融合网络所 需的数据差错控制, 例如现今架构在 10GB以太网上的 FCoE网络。
本领域的技术人员容易理解, 以上所述仅为本发明的较佳实施例而已, 并不用以限制本发明, 凡在本发明的精神和原则之内所作的任何修改、 等 同替换和改进等, 均应包含在本发明的保护范围之内。

Claims

权 利 要 求
1、 一种用于数据传输差错控制的嵌套 CRC码生成方法, 其特征在于, 包括以下步骤:
(1) 数据分割器对待计算数据进行分段, 具体包括以下子步骤: (1-1) 将数据分割器中的数据初始化为 0, 并根据计算通道的数量 N 确定数据分割器的最大分段数为 N;
(1-2)为整个数据分割器生成 N+1个指针 (P。,P^.,^...,PN^PN个指针
(Pl,p2,-,Pi,-,pN), 其中 i为小于等于 N的正整数, (Ρ^,···,^···^)将整个 数据分割器分成 Ν个长为 LS的数据段, 按照 N个数据段的顺序, 为每个数 据段分配一个指针分别为
Figure imgf000022_0001
, 其中!^为任意正整数;
(1-3)为指针 (Ρ^Ρ^.Ρ^,ΡΝ)分配固定值, 其中 = — 1 +LS, P。的值可 以取任意值, 整个计算过程中, 指针的值固定不变;
( 1-4) 为 N 个数据区域的指针(Α,Ρ ,-,Ρ^,ΡΝ)分配初始值, 并令 (Ρ ,···,^···^)指针的初始值分别与 (Ρ ,···,^ ^…^― J相等;
(1-5) 将待计算数据填充至数据分割器中, 根据数据的填充情况, 改 变(Α,Ρ^ ,Ρ^,ΡΝ)指针的值;
( 1-6) 数据分割器将待计算数据分为 m段, 并将 m的值传递给通道选 择器和反向通道选择器;
(1-7) 利用(P ^wPm)的值, 以及计算通道的并行计算位数 W, 在 每一个时钟周期,向 m个计算通道分别传送 W位数据,并将 (p^p^p^Pm)的 值均减去 W;
(卜 8)判断 (Pl,p2,p3〜pm)是否与 (PaH .PmJ的值相等, 若相等, 则 进入步骤 (2), 否则返回步骤 (1-7);
(2) 为分割后的各待计算数据段分配所需的 CRC码计算通道, 具体包 括以下子步骤:
(2-1)针对不同类型数据的 Q次嵌套 CRC码的生成, 为通道选择器生 成一张通道选择表用于在不同类型数据的各次嵌套计算中, 为数据输入通 道分配相应的计算通道, 其中 Q为正整数;
(2-2) 利用数据分割器传递的数据段总数 m, 通道选择器选通用于连 接数据分割器的 m个序号为 (1,2,3,···,ηι)的输出与通道选择器的开关;
(2-3) 根据开关选择表, 将选通的 m个数据输入分别连接至相应的计 算通道之上;
(3)各计算通道对各待计算数据段进行 CRC子码计算, 具体包括以下 子步骤:
( 3-1 ) 为 N 个计算通道分别分配相应的生成多项式为 (gl(x),g2(x),-,gi(x),-,gN(x)), 其中 i为 1到 N之间的任意值, 各通道之间可 以采用同样的生成多项式;
(3-2) 根据相应的生成多项式, 利用逻辑电路或者查找余数表的方法 来实现 W位并行计算的各计算通道;
(3-3) 根据各计算通道所采用的生成多项式, 为各通道设置初始值, 通常可以为各计算通道赋初始值为全零或者全一;
(3-4) 对各通道的输入数据完成 CRC子码计算, 得到 m个 CRC子码;
(4)对各通道计算所得到的 CRC子码进行排序,具体包括以下子步骤: (4-1) 反向通道选择器与通道选择器共用一张通道选择表;
(4-2) 依据数据分割器传递的待计算数据的分段总数 m, 反向通道选 择器选通序号为 (l,2,3,...,m)的 CRC 子码暂存器与反向通道选择器的连接开 关。
(4-3) 根据开关选择表, 将选通的 m个数据输出分别连接至相应的计 算通道的输出之上; (4-4) 各计算通道按照反向通道选择器的选择结果, 将各计算通道计 算所得的 CRC 子码存入相应的 CRC 子码暂存器, 得到一串新的数据为 (CRC1, CRC2, - - ·, CRCi, - - ·, CRCm) , 其中 i为 1到 m之间的任意值, CRCi对应第 i个数据段计算所得到的 CRC子码;
(5) 判断是否需要再次进行多通道计算, 如果需要, 则将步骤 (4) 得到的 CRC子码作为新的待计算数据, 返回步骤 (1); 如果不需要, 则进 入步骤 (6), 具体包括以下子步骤:
(5-1) 将 CRC码的嵌套次数 Q的值减去 1;
(5-2) 判断 Q的值是否为 0, 若 Q的值为 0, 则进入步骤 (6); 若 Q 的值不为零, 则以(4)步骤中排序好的 CRC子码数据作为新的待计算数据, 并返回步骤 (1);
(6)第 N+1个计算通道计算出最终的 Q次嵌套 CRC码, 具体包括以下 子步骤:
(6-1) 为第 N+1个 CRC计算通道分配生成多项式 gN+1(x);
(6-2) 根据生成多项式, 利用逻辑电路或者查找余数表的方法来实现 W位并行计算的计算通道;
(6-3) 为该计算通道设置初始值, 通常可以为该计算通道赋初始值为 全零或者全一;
(6-4)对多计算通道第 Q次计算并经过排序所得到的 CRC子码数据进 行最后一次 CRC码计算, 得到最终的 Q次嵌套 CRC码。
2、 根据权利要求 1所述的高速嵌套 CRC码生成方法, 其特征在于, 步 骤 (1-5) 中, (ρ ^···,^···^)的赋值情况为:
a)若第 i个数据区域中填充了长度为 Ls的待计算数据, 则将 Pl的值赋 为 P1 ;
b) 若第 i个数据区域未填充数据段, 则保持 Pl的值不变; c)对于第 m个填充区域, 由于待计算数据并不保证以 Ls对齐, 为了保 证计算的同步性,若第 m个数据区域的填充长度 Lf大于 0且小于 Ls,则将 Pm 的值赋为 Pm, 即将长度为 Lf数据段的长度通过补零扩展至 Ls, 其中 m为待 计算数据的长度除以 Ls后上取整得到的值, Lf为待计算数据的长度除以 Ls 后得到的余数。
3、 根据权利要求 1所述的高速嵌套 CRC码生成方法, 其特征在于, 步 骤 (2-1) 具体包括以下子步骤:
(2-1-1)对于 N个计算通道和数据分割器的 N个数据输出通道, 分别 对其进行顺序编号 α,2,3,···,ί,···,Ν), 其中 i为 1到 N之间的任意值;
(2-1-2) 为通道选择表的每一个表项分配一个长为 N.「l。g2N]位的矢 量 S(x), 矢量多项式为:
S(x) = mNflog2Nl_1xN^N>1 +mNflog2Nl_2xN^N>2 +- + mix1 + - + ^ +η¾χ° 其中 =1或 0(其中 i = 0,1,2,···, N'「fog2N,— 1);
(2-1-3 )将 S(x)分成 N段长为「log 2 N]的矢量 (X), s2 (χ),· · ·, (χ),· · ·, sN (χ)), 其中 i为 1到 N之间的任意值, ((χ),82(χ),···,(χ),···,(χ))对应数据分割器 的 Ν个数据输出 α,2,3,···ί,···,Ν),其中 Sl(x)为分配给第 i个数据输入的计算通 道的序号;
(2-1-4)固定待计算数据的数据类型,针对每一次嵌套 CRC码的生成, 生成 Q个相应的 S , 作为一行表项保存在开关选择表中;
(2-1-5) 针对待计算数据的每一种数据类型, 重复步骤 (2-1-4), 以 构成完整的通道选择表。
4、 一种用于数据传输差错控制的嵌套 CRC码生成装置, 包括数据分段 模块、 计算通道选择模块、 多通道 CRC码计算模块、 数据排序模块、 寄存 器、 计数器、 数据分配器、 单通道 CRC码计算模块, 其特征在于,
数据分段模块用于将待计算数据按照一定的数据长度自动分段并通过 补零的方法使各数据段长度对齐, 并在时钟的控制下, 将各数据段按照一 定的位数依次传送出去;
计算通道选择模块用于将各输入数据通道连接至所需要的计算通道之 上;
多通道 CRC码计算模块用于同时对多个数据段计算 CRC码;
数据排序模块用于将各输入数据通道连接至所需要的寄存器之上; 寄存器用于存储 CRC码;
计数器用于记录 CRC码的计算次数, 并控制数据分配器的数据输出; 数据分配器用于对输入数据进行分配, 数据的分配受到计数器的控制; 单通道 CRC码计算模块用于计算最终的 CRC码。
PCT/CN2012/085163 2012-11-10 2012-11-23 一种用于数据传输差错控制的嵌套crc码生成方法及装置 Ceased WO2014071658A1 (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US14/117,680 US9143276B2 (en) 2012-11-10 2012-11-23 Nested CRC (cyclic redundancy check) code generation method and device for data transmission error control

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201210446605.4A CN102946297B (zh) 2012-11-10 2012-11-10 一种用于数据传输差错控制的嵌套crc码生成方法及装置
CN2012104466054 2012-11-10

Publications (1)

Publication Number Publication Date
WO2014071658A1 true WO2014071658A1 (zh) 2014-05-15

Family

ID=47729209

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2012/085163 Ceased WO2014071658A1 (zh) 2012-11-10 2012-11-23 一种用于数据传输差错控制的嵌套crc码生成方法及装置

Country Status (3)

Country Link
US (1) US9143276B2 (zh)
CN (1) CN102946297B (zh)
WO (1) WO2014071658A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018177427A1 (en) * 2017-04-01 2018-10-04 Qualcomm Incorporated Communication system and method having polar coding with two concatenated cyclic redundancy check codes
US10142060B2 (en) 2017-04-01 2018-11-27 Qualcomm Incorporated Communication system and method having polar coding with two concatenated cyclic redundancy check codes

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103795502B (zh) * 2014-02-28 2017-04-12 杭州华三通信技术有限公司 一种数据帧校验码生成方法和装置
US10171430B2 (en) * 2015-07-27 2019-01-01 Forrest L. Pierson Making a secure connection over insecure lines more secure
CN106354581B (zh) * 2016-08-22 2019-08-23 华为技术有限公司 一种循环冗余校验方法以及多核处理器
CN109274636B (zh) * 2017-07-18 2020-11-06 比亚迪股份有限公司 数据安全传输方法及其装置、系统、列车
KR102609758B1 (ko) 2018-03-27 2023-12-04 삼성전자주식회사 데이터 통신 오류를 검출하는 순환 중복 검사 유닛 데이터 통신 장치 및 검출 방법
US11128742B2 (en) 2019-03-08 2021-09-21 Microsemi Storage Solutions, Inc. Method for adapting a constant bit rate client signal into the path layer of a telecom signal
US11108895B2 (en) * 2019-08-23 2021-08-31 Microchip Technology Inc. Method for providing path signal overhead in the 64B/66B character stream of an itu-t metro transport network using micro-packets
JP2021039672A (ja) * 2019-09-05 2021-03-11 キオクシア株式会社 メモリシステム、パケット保護回路およびcrc計算方法
US11838111B2 (en) 2021-06-30 2023-12-05 Microchip Technology Inc. System and method for performing rate adaptation of constant bit rate (CBR) client data with a variable number of idle blocks for transmission over a metro transport network (MTN)
US12323334B2 (en) 2021-06-30 2025-06-03 Microchip Technology Inc. System and method for performing rate adaptation and multiplexing of constant bit rate (CBR) client data for transmission over a metro transport network (MTN)
US11916662B2 (en) 2021-06-30 2024-02-27 Microchip Technology Inc. System and method for performing rate adaptation of constant bit rate (CBR) client data with a fixed number of idle blocks for transmission over a metro transport network (MTN)
US11736065B2 (en) 2021-10-07 2023-08-22 Microchip Technology Inc. Method and apparatus for conveying clock-related information from a timing device
US12192079B2 (en) 2021-11-23 2025-01-07 Microchip Technology Inc. Method and apparatus for carrying constant bit rate (CBR) client signals using CBR carrier streams comprising frames
US11799626B2 (en) 2021-11-23 2023-10-24 Microchip Technology Inc. Method and apparatus for carrying constant bit rate (CBR) client signals
US12500822B2 (en) 2022-04-04 2025-12-16 Microchip Technology Inc. System and method for rate adaptation of packet-oriented client data for transmission over a metro transport network (MTN)
JP2024061521A (ja) * 2022-10-21 2024-05-07 キオクシア株式会社 判定装置、試験システムおよび生成装置
CN115801185B (zh) * 2022-10-26 2026-02-24 山东云海国创云计算装备产业创新中心有限公司 芯片自适应校验重传的方法、系统、存储介质、及设备
WO2026011375A1 (en) * 2024-07-11 2026-01-15 Qualcomm Incorporated Nested cyclic redundancy check for low complexity

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1324517A (zh) * 1998-08-26 2001-11-28 艾利森电话股份有限公司 用于生成循环冗余校验代码的并行循环冗余校验生成电路
US20040071091A1 (en) * 2002-09-27 2004-04-15 International Business Machines Corporation Method and systems for improving test of data transmission in multi-channel systems
CN1604515A (zh) * 2003-09-30 2005-04-06 国际商业机器公司 为具有n块数据的消息产生循环冗余检验的方法和装置
CN102082577A (zh) * 2010-12-31 2011-06-01 杭州华三通信技术有限公司 一种高速循环冗余校验crc装置及其实现方法
US20110191660A1 (en) * 2010-01-29 2011-08-04 International Business Machines Corporation Apparatus, System, and Method for Specifying Intermediate CRC Locations in a Data Stream

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6101624A (en) * 1998-01-21 2000-08-08 International Business Machines Corporation Method and apparatus for detecting and correcting anomalies in field-programmable gate arrays using CRCs for anomaly detection and parity for anomaly correction
CN1193294C (zh) 2003-01-27 2005-03-16 西安电子科技大学 一种多通道多位并行计算crc码的方法
US8572289B1 (en) * 2003-12-19 2013-10-29 Nvidia Corporation System, method and computer program product for stateless offloading of upper level network protocol operations
US7349537B2 (en) * 2004-03-11 2008-03-25 Teknovus, Inc. Method for data encryption in an ethernet passive optical network
US8739012B2 (en) * 2011-06-15 2014-05-27 Texas Instruments Incorporated Co-hosted cyclical redundancy check calculation
US8683291B2 (en) * 2011-06-16 2014-03-25 Lsi Corporation High throughput frame check sequence module architecture

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1324517A (zh) * 1998-08-26 2001-11-28 艾利森电话股份有限公司 用于生成循环冗余校验代码的并行循环冗余校验生成电路
US20040071091A1 (en) * 2002-09-27 2004-04-15 International Business Machines Corporation Method and systems for improving test of data transmission in multi-channel systems
CN1604515A (zh) * 2003-09-30 2005-04-06 国际商业机器公司 为具有n块数据的消息产生循环冗余检验的方法和装置
US20110191660A1 (en) * 2010-01-29 2011-08-04 International Business Machines Corporation Apparatus, System, and Method for Specifying Intermediate CRC Locations in a Data Stream
CN102082577A (zh) * 2010-12-31 2011-06-01 杭州华三通信技术有限公司 一种高速循环冗余校验crc装置及其实现方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018177427A1 (en) * 2017-04-01 2018-10-04 Qualcomm Incorporated Communication system and method having polar coding with two concatenated cyclic redundancy check codes
US10142060B2 (en) 2017-04-01 2018-11-27 Qualcomm Incorporated Communication system and method having polar coding with two concatenated cyclic redundancy check codes

Also Published As

Publication number Publication date
US20140149821A1 (en) 2014-05-29
CN102946297A (zh) 2013-02-27
US9143276B2 (en) 2015-09-22
CN102946297B (zh) 2015-06-17

Similar Documents

Publication Publication Date Title
WO2014071658A1 (zh) 一种用于数据传输差错控制的嵌套crc码生成方法及装置
CN105264778B (zh) 一种crc计算方法及装置
US8468439B2 (en) Speed-optimized computation of cyclic redundancy check codes
EP2974036B1 (en) Fast cyclic redundancy check computation circuit
CN112039535B (zh) 一种基于准循环生成矩阵的码率兼容ldpc编码器
US8402353B2 (en) Cyclic code processing circuit, network interface card, and cyclic code processing method
US7870466B2 (en) Parallel cyclic code generation device and parallel cyclic code error detection device
CN103795502B (zh) 一种数据帧校验码生成方法和装置
JP5542140B2 (ja) 復号化回路及び符号化回路
CN105490776A (zh) 交织方法及交织器
JPS5949618B2 (ja) 巡回ブロック符号のための直列エンコ−ダ
CN118901212B (zh) 一种数据处理方法和数据处理装置
WO2015100621A1 (zh) 一种加扰方法及加扰装置
CN112468161A (zh) 一种rs高速编码电路
CN1930782B (zh) 用于交织器存储器和去交织器存储器的地址生成器
US20140026022A1 (en) Cyclic redundancy check generation via distributed time multiplexed linear feedback shift registers
US20200412479A1 (en) Polar coding system and parallel computation method for polar coding system
US20210314088A1 (en) Highly parallel and scalable cyclic redundancy check
CN103780250B (zh) 用于高速收发器中改变数据位宽的变速箱电路及其工作方法
CN108628698B (zh) 计算crc编码的方法和装置
WO2012109872A1 (zh) 通信系统中的循环冗余校验处理方法、装置和lte终端
US7225391B1 (en) Method and apparatus for parallel computation of linear block codes
KR100433632B1 (ko) 병렬 crc 계산장치 및 그 방법
KR102353983B1 (ko) 순환 중복 검사(crc)에서 알고리즘의 배열 방법
US12034458B1 (en) Throughput efficient Reed-Solomon forward error correction decoding

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 14117680

Country of ref document: US

121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 12888008

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 12888008

Country of ref document: EP

Kind code of ref document: A1