KR100645388B1 - Parallel cyclic redundancy check generator and method capable of parallel processing of arbitrary size - Google Patents

Parallel cyclic redundancy check generator and method capable of parallel processing of arbitrary size Download PDF

Info

Publication number
KR100645388B1
KR100645388B1 KR1020050115419A KR20050115419A KR100645388B1 KR 100645388 B1 KR100645388 B1 KR 100645388B1 KR 1020050115419 A KR1020050115419 A KR 1020050115419A KR 20050115419 A KR20050115419 A KR 20050115419A KR 100645388 B1 KR100645388 B1 KR 100645388B1
Authority
KR
South Korea
Prior art keywords
parallel
crc
size
input data
data
Prior art date
Application number
KR1020050115419A
Other languages
Korean (ko)
Inventor
김영섭
박형준
Original Assignee
한국전자통신연구원
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 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to KR1020050115419A priority Critical patent/KR100645388B1/en
Application granted granted Critical
Publication of KR100645388B1 publication Critical patent/KR100645388B1/en

Links

Images

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/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1822Automatic repetition systems, e.g. Van Duuren systems involving configuration of automatic repeat request [ARQ] with parallel processes
    • 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

Abstract

A parallel cyclic redundancy check generator and a method to perform a parallel processing of an arbitrary size are provided to perform a parallel process with an arbitrary size by generating a CRC code and integrating the performed CRC calculation. In a parallel cyclic redundancy check generator, a first parallel CRC calculation unit(520) receives parallel input data and calculates the CRC by using a parallel process data size and a CRC code size. A second parallel CRC calculation unit(530) calculates the CRC by using a final parallel input data size and the CRC code size. A register input control multiplexer(516) stores the output of the first CRC calculation unit(520) before the final parallel input data is inputted and controls the stored result information after the output of the second parallel CRC calculation unit(530) is stored. And, an output control multiplexer(515) outputs the parallel input data to parallel output data when the CRC calculation is performed, and outputs the output of the register input control multiplexer(516) when the CRC calculation is finished.

Description

임의의 크기의 병렬 처리가 가능한 병렬 CRC 생성 장치 및 방법{Parallel Cyclic Redundancy Check Generator and Method Capable of Parallel Processing of Arbitrary Size}Parallel Cyclic Redundancy Check Generator and Method Capable of Parallel Processing of Arbitrary Size

도 1은 본 발명의 실시예에 따른 일반적인 직렬 CRC 생성 장치의 내부 구성을 나타낸 도면이다.1 is a view showing the internal configuration of a general serial CRC generating apparatus according to an embodiment of the present invention.

도 2는 본 발명의 실시예에 따른 병렬 처리 데이터의 크기인 m이 CRC 코드의 크기 n보다 작고, CRC 코드를 생성하는 입력 데이터의 비트수가 m의 배수인 경우, 병렬 CRC 생성 장치의 내부 구성을 나타낸 도면이다.2 is a block diagram illustrating an internal configuration of a parallel CRC generating apparatus when m, the size of parallel processing data, is smaller than a size n of a CRC code, and the number of bits of input data generating a CRC code is a multiple of m. The figure shown.

도 3은 본 발명의 실시예에 따른 병렬 처리 데이터의 크기인 m이 CRC 코드의 크기 n이 같고, CRC 코드를 생성하는 입력 데이터의 비트수가 m의 배수인 경우, 병렬 CRC 생성 장치의 내부 구성을 나타낸 도면이다.3 is a diagram illustrating an internal configuration of a parallel CRC generating apparatus when m, the size of parallel processing data, is equal to the size n of a CRC code, and the number of bits of input data generating a CRC code is a multiple of m. The figure shown.

도 4는 본 발명의 실시예에 따른 병렬 처리 데이터의 크기인 m이 CRC 코드의 크기 n보다 크면서 CRC 코드를 생성하는 입력 데이터의 비트수가 m의 배수인 경우, 병렬 CRC 생성 장치의 내부 구성을 나타낸 도면이다.4 is a block diagram illustrating an internal configuration of a parallel CRC generating apparatus when m, the size of parallel processing data, is larger than a size n of a CRC code and the number of bits of input data for generating a CRC code is a multiple of m. Referring to FIG. The figure shown.

도 5는 본 발명의 실시예에 따른 임의의 크기의 병렬 처리가 가능한 CRC 코드를 생성하는 CRC 코드 생성 장치의 내부 구성을 나타낸 도면이다.5 is a diagram illustrating an internal configuration of a CRC code generating apparatus for generating a CRC code capable of parallel processing of any size according to an embodiment of the present invention.

도 6은 본 발명의 실시예에 따른 임의의 크기의 병렬 처리가 가능한 CRC 코 드를 생성하는 CRC 코드 생성 방법을 설명하기 위한 도면이다.6 is a view for explaining a CRC code generation method for generating a CRC code capable of parallel processing of any size according to an embodiment of the present invention.

본 발명은 임의의 크기의 병렬 처리가 가능한 병렬 CRC 생성 장치 및 방법에 관한 것으로, 더욱 상세하게는, 임의의 데이터 크기를 갖는 병렬 입력 데이터가 병렬 처리 데이터 크기의 배수가 아닌 경우, 마지막 병렬 입력 데이터가 입력되기 전의 경우와 마지막 병렬 입력 데이터가 입력되는 경우, 각각 다른 회로 구성을 가지고 CRC 연산을 수행한 후, 수행한 CRC 연산 결과를 통합하여 CRC 코드를 생성함으로써 임의의 크기를 갖는 병렬 입력 데이터에 대해 임의의 병렬 처리 데이터 크기 및 임의의 크기의 CRC 코드를 제공하는 병렬 CRC 생성 장치 및 방법에 관한 것이다.The present invention relates to an apparatus and method for generating a parallel CRC capable of parallel processing of any size, and more particularly, when the parallel input data having any data size is not a multiple of the parallel processing data size, the last parallel input data. In the case of before and the last parallel input data is input, each CRC operation is performed with a different circuit configuration, and then the CRC operation is generated by integrating the CRC operation result to generate parallel CR data. And a parallel CRC generation apparatus and method for providing any parallel processing data size and a CRC code of any size.

일반적으로 고속의 디지털 통신이 발달하면서 디지털 통신 데이터의 오류를 검출하기 위해 가장 많이 사용되는 방법이 CRC(Cyclic Redundancy Check, 이하 'CRC' 라 칭함) 코드를 이용하여 오류를 검출하는 것이다.In general, as high-speed digital communication is developed, the most commonly used method for detecting an error in digital communication data is to detect an error by using a cyclic redundancy check (CRC) code.

CRC 코드를 이용한 오류 검출은 몇 개의 레지스터와 모듈로 2 가산기에 의해 간단하게 구현할 수 있으며, 데이터 오류 검출에 대한 성능이 좋기 때문에 많이 사용된다. Error detection using CRC codes can be easily implemented by a few registers and modulo 2 adders, and is frequently used because of their good performance against data error detection.

일반적인 직렬 CRC 계산에 있어서의 하드웨어 구성은 LFSR(Linear Feedback Shift Resister)를 사용한 직렬 구조이다. CRC 코드에 대한 직렬 계산 방식은 그 구조가 간단하여 널리 사용되었지만 데이터 통신 속도가 빨라지면서 일반적인 FPGA(Field Programmable Gate Array)를 이용하여 CRC 코드 생성 장치를 구현하려면 소자의 동작 속도가 데이터 통신 속도를 만족시키지 못하는 경우가 발생한다.The hardware configuration in general serial CRC calculation is a serial structure using Linear Feedback Shift Resister (LFSR). The serial calculation method for CRC code is widely used because of its simple structure. However, as the data communication speed increases, the operation speed of the device satisfies the data communication speed in order to implement a CRC code generation device using a general field programmable gate array (FPGA). It can't be done.

따라서 고속의 CRC 생성 장치를 구현하기 위해서는 입력 데이터를 병렬로 처리하는 방법들이 사용되고 있다Therefore, in order to implement a high speed CRC generation apparatus, methods for processing input data in parallel have been used.

이러한 병렬 CRC 생성 회로를 구현하는 종래 기술로서, 특허 출원 제2002-19290호 '병렬 CRC 계산 장치 및 그 방법을 들 수 있다. 그러나 종래 기술은 약 150 MHz 정도의 클록 속도를 지원하는 하드웨어 환경 하에서 10 Gbps 이상의 고속으로 전송되는 데이터를 위한 CRC 계산 장치로서, 특정 프로세서 환경에서는 적합하게 사용할 수 있으나 다른 환경에서는 범용으로 사용할 수 없는 문제점이 있다.As a prior art for implementing such a parallel CRC generation circuit, Patent Application No. 2002-19290 'Parallel CRC calculation apparatus and method thereof are mentioned. However, the conventional technology is a CRC calculation device for data transmitted at a high speed of 10 Gbps or more under a hardware environment supporting a clock speed of about 150 MHz, which can be suitably used in a certain processor environment but cannot be used universally in other environments. There is this.

이와 같은 문제점을 해결하기 위하여, 임의의 데이터 크기를 갖는 병렬 입력 데이터가 병렬 처리 데이터 크기의 배수가 아닌 경우, 마지막 병렬 입력 데이터가 입력되기 전의 경우와 마지막 병렬 입력 데이터가 입력되는 경우, 각각 다른 회로 구성을 가지고 CRC 연산을 수행한 후, 수행한 CRC 연산을 통합하여 CRC 코드를 생성함으로써 임의의 크기의 병렬 처리가 가능한 병렬 CRC 생성 장치 및 방법을 제공하는 데 그 목적이 있다.In order to solve this problem, when the parallel input data having an arbitrary data size is not a multiple of the parallel processing data size, different circuits are used before the last parallel input data and the last parallel input data are input. It is an object of the present invention to provide a parallel CRC generating apparatus and method capable of performing parallel processing of any size by performing a CRC operation with a configuration and integrating the performed CRC operation to generate a CRC code.

이러한 기술적 과제를 달성하기 위한 본 발명의 하나의 특징에 따른 임의의 크기를 갖는 병렬 입력 데이터에 대해 임의의 병렬 처리 데이터 크기, 임의의 크기 의 CRC(Cyclic Redundancy Check) 코드를 갖는 병렬 CRC 생성 장치는, 병렬 입력 데이터를 전송받고, 마지막 병렬 입력 데이터가 입력되기 전까지 병렬 처리 데이터 크기와 CRC 코드의 크기를 이용하여 CRC를 계산하는 제 1 병렬 CRC 연산부; 마지막 병렬 입력 데이터가 입력되는 경우, 최종 병렬 입력 데이터 크기와 CRC 코드의 크기를 이용하여 CRC를 계산하는 제 2 병렬 CRC 연산부; 마지막 병렬 입력 데이터가 입력되기 전까지 제 1 병렬 CRC 연산부의 출력을 입력받아 저장하고, 마지막 병렬 입력 데이터가 입력되는 경우 제 2 병렬 CRC 연산부의 출력을 입력받아 저장한 후, 저장된 결과 정보를 제어하는 레지스터 입력 제어 다중화기; 및 CRC 연산이 수행되는 경우, 병렬 입력 데이터가 병렬 출력 데이터로 출력되고, CRC 연산이 종료되는 경우 레지스터 입력 제어 다중화기의 출력이 출력되도록 제어하는 출력 제어 다중화기를 포함한다.An apparatus for generating parallel CRC having an arbitrary parallel processing data size and an cyclic redundancy check (CRC) code having an arbitrary size for parallel input data having an arbitrary size according to an aspect of the present invention for achieving the above technical problem is A first parallel CRC calculator configured to receive the parallel input data and calculate a CRC using the size of the parallel data and the size of the CRC code until the last parallel input data is input; A second parallel CRC calculator configured to calculate a CRC using the last parallel input data size and the size of the CRC code when the last parallel input data is input; Register to control the stored result information after receiving and storing the output of the first parallel CRC operation unit until the last parallel input data is input, and receiving and storing the output of the second parallel CRC operation unit when the last parallel input data is input. Input control multiplexer; And an output control multiplexer that controls parallel input data to be output as parallel output data when the CRC operation is performed, and outputs the register input control multiplexer when the CRC operation is terminated.

본 발명의 다른 특징에 따른 임의의 크기를 갖는 병렬 입력 데이터에 대해 임의의 병렬 처리 데이터 크기, 임의의 크기의 CRC(Cyclic Redundancy Check) 코드를 갖는 병렬 CRC를 생성하는 방법은, (a) 병렬 입력 데이터 크기를 병렬 처리 데이터 크기로 나누고, 나누어 떨어지지 않은 나머지 데이터인 최종 병렬 입력 데이터가 존재하는지 판단하는 단계; (b) 단계 (a)에서 최종 병렬 입력 데이터가 존재하는 경우, 마지막 병렬 입력 데이터가 입력되고 있는지 판단하는 단계; (c) 단계 (b)에서 마지막 병렬 입력 데이터가 입력되고 있지 않다고 판단하는 경우, 병렬 처리 데이터 크기와 CRC 코드의 크기를 이용하여 제 1 CRC를 계산하여 출력하는 단계; (d) 단계 (b)에서 마지막 병렬 입력 데이터가 입력되고 있다고 판단하는 경우, 최종 병렬 입력 데이터와 CRC 코드의 크기를 이용하여 제 2 CRC를 계산하여 출력하는 단계; 및 (e) 제 1 CRC와 제 2 CRC의 연산 결과를 통합하여 최종 CRC를 출력하는 단계를 포함한다.According to another aspect of the present invention, a method for generating a parallel CRC having an arbitrary parallel processing data size and an arbitrary size of a cyclic redundancy check (CRC) code for parallel input data having any size includes: (a) parallel input Dividing the data size by the parallel data size, and determining whether there is the final parallel input data which is the remaining data which is not divided; (b) if the final parallel input data exists in step (a), determining whether the last parallel input data is being input; (c) if it is determined in step (b) that the last parallel input data is not being input, calculating and outputting the first CRC using the size of the parallel processing data and the size of the CRC code; (d) if it is determined in step (b) that the last parallel input data is being input, calculating and outputting a second CRC using the size of the last parallel input data and the CRC code; And (e) integrating the calculation result of the first CRC and the second CRC to output the final CRC.

아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다. DETAILED DESCRIPTION Hereinafter, exemplary embodiments of the present invention will be described in detail with reference to the accompanying drawings so that those skilled in the art may easily implement the present invention. As those skilled in the art would realize, the described embodiments may be modified in various different ways, all without departing from the spirit or scope of the present invention. In the drawings, parts irrelevant to the description are omitted in order to clearly describe the present invention, and like reference numerals designate like parts throughout the specification.

또한 어떤 부분이 어떤 구성요소를 ”포함“한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.In addition, when a part is said to "include" a certain component, it means that it may further include other components, without excluding other components unless otherwise stated.

또한, 본 명세서에서 기재한 모듈(module)이란 용어는 특정한 기능이나 동작을 처리하는 하나의 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현할 수 있다.In addition, the term module described herein refers to a unit for processing a specific function or operation, which may be implemented in hardware or software, or a combination of hardware and software.

이제 본 발명의 실시예에 따른 임의의 크기의 병렬 처리 데이터 크기를 갖는 병렬 CRC 생성 장치 및 방법에 대하여 도면을 참고로 하여 상세하게 설명한다.An apparatus and method for generating a parallel CRC having an arbitrary size of parallel processing data according to an embodiment of the present invention will now be described in detail with reference to the accompanying drawings.

도 1은 본 발명의 실시예에 따른 일반적인 직렬 CRC 생성 장치의 내부 구성을 나타낸 도면이다.1 is a view showing the internal configuration of a general serial CRC generating apparatus according to an embodiment of the present invention.

CRC 코드는 입력되는 일정 크기의 입력 데이터를 특정 생성 다항식으로 나누 어 나머지를 계산한다.The CRC code divides a certain amount of input data into a specific generation polynomial and calculates the remainder.

송신측에서는 입력 데이터를 모두 전송하고 난 후, 나머지 데이터를 부가하여 전송한다. 수신측에서는 동일한 생성 다항식으로 CRC 코드를 포함한 전송 데이터를 나눈다.After transmitting all the input data, the transmitting side adds and transmits the remaining data. The receiving side divides the transmission data including the CRC code into the same generated polynomial.

여기서 CRC 코드를 이용한 오류 검출은 수신측에서 동일한 생성 다항식으로 전송 데이터를 나누고, 나머지 데이터가 0이 되어야 하는 원리에 근거하여 전송 데이터의 오류를 검출한다. 즉 CRC 코드를 이용한 오류 검출은 생성 다항식으로 나누어 나머지 데이터가 0이 되지 않으면 수신 데이터에 오류가 있음을 나타낸다. 여기서 나누기는 생성 다항식의 차수와 동일한 개수의 쉬프트 레지스터와 생성 다항식의 계수에 의한 모듈로 2 가산기에 의해 간단하게 구현할 수 있다.Here, the error detection using the CRC code divides the transmission data by the same generation polynomial at the receiving side, and detects an error of the transmission data based on the principle that the remaining data should be zero. That is, the error detection using the CRC code is divided into the generated polynomials and indicates that there is an error in the received data when the remaining data does not become zero. The division can be implemented simply by the modulo 2 adder by the same number of shift registers and the coefficients of the generated polynomial.

일반적인 직렬 CRC 생성 장치는 생성 다항식인 [수학식 1]에 의해 구현할 수 있다.A general serial CRC generation device can be implemented by Equation 1, which is a generation polynomial.

Figure 112005069860312-pat00001
Figure 112005069860312-pat00001

여기서, [수학식 1] 중 χ는 도 1에 도시된 레지스터(110)들로 구현되어 입력 스트림 ak(101)을 지연 시키면서 연산 결과를 저장한다. 즉, χn은 입력 스트림 ak(101)가 n번 지연되는 것을 의미한다. 여기서, n은 생성 다항식의 차수이면서 CRC 코드의 길이가 된다.Here, χ in [Equation 1] is implemented by the registers 110 shown in FIG. 1 to store the operation result while delaying the input stream a k 101. That is, χ n means that the input stream a k 101 is delayed n times. Where n is the order of the generation polynomial and the length of the CRC code.

논리 게이트(112)는 CRC 연산을 하는 구간을 표시하는 신호인 ena(103)이 논리적으로 '1'인 경우에만 연산 결과가 레지스터(110)에 저장되게 하는 기능을 한다.The logic gate 112 functions to cause the operation result to be stored in the register 110 only when the ena 103, which is a signal indicating a section for performing a CRC operation, is logically '1'.

논리 게이트들(113)은 생성 다항식의 계수 gk(105)가 1인 경우에만 연산 결과가 궤환도록 하는 기능을 하는 게이트이다. 모듈로 2 가산기(111)는 배타적 논리합(Exclusive OR, XOR) 게이트를 이용하여 구현한다. 다중화기(114)는 mux_control(104) 신호에 의해 제어되며, CRC를 계산하는 동안 입력 스트림 ak(101)가 출력 스트림 bk(102)로 출력되도록 한다.The logic gates 113 are gates that cause the operation result to be feedback only when the coefficient g k 105 of the generated polynomial is 1. The modulo 2 adder 111 is implemented using an exclusive OR (XOR) gate. The multiplexer 114 is controlled by the mux_control 104 signal, causing the input stream a k 101 to be output to the output stream b k 102 while calculating the CRC.

다중화기(114)는 입력 데이터 스트림의 입력이 끝나면 계산된 CRC Code가 출력되도록 하는 기능을 한다.The multiplexer 114 functions to output the calculated CRC code when the input of the input data stream is completed.

도 1에 도시된 회로를 행렬 형태로 다시 표현하면 다음의 [수학식 2]와 같다.Re-expressing the circuit shown in Figure 1 in the form of a matrix as shown in [Equation 2].

Figure 112005069860312-pat00002
Figure 112005069860312-pat00002

이러한 직렬 CRC 생성 장치는 간단한 회로를 이용하여 구현할 수 있기 때문에 많은 통신 시스템 또는 저장 매체 등에 데이터를 저장하는 경우 데이터에 부가적으로 CRC 코드를 전송하거나 저장함으로써 전송 데이터나 저장된 데이터의 오류를 검출할 수 있는 경우에 많이 사용되고 있다.Since the serial CRC generating device can be implemented using a simple circuit, when storing data in many communication systems or storage media, the CRC code can be additionally transmitted or stored in the data to detect errors in transmission data or stored data. It is used a lot when there is.

또한, 직렬 CRC 코드 생성 장치는 입력 데이터를 직렬로 처리하는 반면, 이를 FPGA(Field Programmable Gate Array)나 ASIC(Application Specific Integrated Circuit) 소자를 이용하여 구현하는 경우, FPGA나 ASIC 소자의 동작 특성에 따라 데이터 처리 속도를 높이기 위해 병렬 처리가 가능한 회로로 변환하여 구현하여야 한다.In addition, while the serial CRC code generator processes input data in series, when implemented using a field programmable gate array (FPGA) or an application specific integrated circuit (ASIC) device, the serial CRC code generation device may operate according to the operation characteristics of the FPGA or ASIC device. In order to increase the data processing speed, it must be converted into a circuit capable of parallel processing.

여기서, Dk는 입력 스트림 ak(101)가 입력되어 연산을 마치고 레지스터(110)에 저장된 레지스터의 상태를 나타내는 열 벡터이고, T는 레지스터(110)의 상태 천이 행렬을 나타내며, U는 생성 다항식의 계수들에 대한 열 벡터를 의미한다.Where D k is a column vector representing the state of the register stored in register 110 after input stream a k 101 has been inputted and T is the state transition matrix of register 110, and U is a generation polynomial. Means the column vector for the coefficients of.

도 1에 도시된 직렬 CRC 생성 장치를 행렬 형태로 표현한 [수학식 2]를 이용하여 병렬 처리 데이터 m 개가 동시에 입력되는 경우, 레지스터(110)의 상태를 표현하면 다음의 [수학식 3]과 같다.When m parallel processing data are input at the same time using [Equation 2] in which the serial CRC generating device shown in FIG. 1 is expressed in a matrix form, the state of the register 110 is expressed as Equation 3 below. .

Figure 112005069860312-pat00003
Figure 112005069860312-pat00003

또한, [수학식 3]에서 병렬 처리 데이터의 크기인 m이 CRC 코드의 크기 n보다 작고, CRC 코드를 생성하는 입력 데이터의 비트수가 m의 배수인 경우, 다음의 [수학식 4]와 같이 표현된다.In addition, when the size m of the parallel processing data in [Equation 3] is smaller than the size n of the CRC code, and the number of bits of the input data generating the CRC code is a multiple of m, it is expressed as Equation 4 below. do.

Figure 112005069860312-pat00004
Figure 112005069860312-pat00004

또한, [수학식 3]에서 병렬 처리 데이터의 크기인 m이 CRC 코드의 크기 n과 같고, CRC 코드를 생성하는 입력 데이터의 비트수가 m의 배수인 경우, 다음의 [수학식 5]와 같이 표현된다.In addition, when the size m of the parallel processing data in Equation 3 is equal to the size n of the CRC code, and the number of bits of the input data generating the CRC code is a multiple of m, it is expressed as Equation 5 below. do.

Figure 112005069860312-pat00005
Figure 112005069860312-pat00005

또한, [수학식 3]에서 병렬 처리 데이터의 크기인 m이 CRC 코드의 크기 n보다 크면서 CRC 코드를 생성하는 입력 데이터의 비트수가 m의 배수인 경우, 다음의 [수학식 6]과 같이 표현된다.In addition, when the size m of the parallel processing data in [Equation 3] is larger than the size n of the CRC code and the number of bits of the input data generating the CRC code is a multiple of m, it is expressed as Equation 6 below. do.

Figure 112005069860312-pat00006
Figure 112005069860312-pat00006

따라서, [수학식 4]에서 [수학식 6]에 의하여 병렬 CRC 코드 생성 장치를 구현하면, 도 2에서부터 도 4와 같은 병렬 CRC 생성 장치를 구현할 수 있다.Therefore, when the parallel CRC code generation device is implemented by Equation 6 in Equation 4, the parallel CRC generation device shown in FIGS. 2 to 4 can be implemented.

도 2는 병렬 처리 데이터의 크기인 m이 CRC 코드의 크기 n보다 작고, CRC 코드를 생성하는 입력 데이터의 비트수가 m의 배수인 경우, 병렬 CRC 생성 장치의 내부 구성을 나타낸 도면이다.FIG. 2 is a diagram illustrating an internal configuration of a parallel CRC generating apparatus when m, the size of parallel processing data, is smaller than the size n of the CRC code, and the number of bits of the input data generating the CRC code is a multiple of m.

도 2는 본 발명의 실시예에 따른 병렬 처리 데이터 크기 m이 CRC 코드의 크기 n보다 작고, CRC 코드를 생성하는 입력 데이터의 비트수가 m의 배수인 경우, 병렬 CRC 생성 장치의 내부 구성을 나타낸 것으로, 행렬 형태의 [수학식 4]와 같이 표현할 수 있다.FIG. 2 illustrates an internal configuration of a parallel CRC generating apparatus when the parallel processing data size m is smaller than the size n of the CRC code and the number of bits of the input data generating the CRC code is a multiple of m. , Can be expressed as Equation 4 in the form of a matrix.

도 2를 설명하면, 모듈로 2 가산기(212)는 병렬 입력 스트림 A(201)와 CRC 코드가 저장되어 있는 레지스터 중 상위 m 개의 레지스터(210)의 출력을 이용하여 연산을 수행한다. 이어서, m 번의 상태 천이를 갖는 Tm 블록(211)은 모듈로 2 가산기(212)의 연산 결과와 하위 n-m 개의 레지스터(215)의 출력을 함께 입력받아 연산을 수행하고, 그 연산 결과를 논리 게이트(213)를 통해 레지스터(210)에 저장한다.Referring to FIG. 2, the modulo 2 adder 212 performs an operation using the outputs of the upper m registers 210 among the parallel input stream A 201 and the registers in which the CRC code is stored. Subsequently, the T m block 211 having the state transition of m times receives the operation result of the modulo 2 adder 212 and the output of the lower nm registers 215 and performs the operation, and the operation result is a logic gate. The register 210 is stored in the register 210 through the 213.

mux_control(203) 신호에 의해 제어되는 다중화기(214)는 CRC 연산이 수행되는 경우 병렬 입력 스트림(201)이 병렬 출력 스트림(204)으로 출력되도록 제어되고, CRC 연산이 종료되는 경우 먼저 상위 m 개의 레지스터(210) 출력이 출력되도록 하고, 다음에 하위 n-m 개의 레지스터(215) 출력이 출력되도록 제어한다.The multiplexer 214 controlled by the mux_control 203 signal is controlled such that the parallel input stream 201 is output to the parallel output stream 204 when the CRC operation is performed, and if the CRC operation is terminated, first the top m The output of the register 210 is output, and then the output of the lower nm registers 215 is controlled.

도 3은 본 발명의 실시예에 따른 병렬 처리 데이터의 크기인 m이 CRC 코드의 크기 n과 같고, CRC 코드를 생성하는 입력 데이터의 비트수가 m의 배수인 경우, 병렬 CRC 생성 장치의 내부 구성을 나타낸 도면이다.3 is a block diagram illustrating an internal configuration of a parallel CRC generating apparatus when m, the size of parallel processing data, is equal to the size n of a CRC code, and the number of bits of input data generating a CRC code is a multiple of m. The figure shown.

도 3은 병렬 처리 데이터 크기 m이 CRC 코드의 크기 n과 같고, CRC 코드를 생성하는 입력 데이터의 비트수가 m의 배수인 경우, 병렬 CRC 생성 장치의 내부 구성을 나타낸 것으로, 행렬 형태의 [수학식 5]와 같이 표현할 수 있다.3 illustrates the internal configuration of the parallel CRC generating apparatus when the parallel processing data size m is equal to the size n of the CRC code and the number of bits of the input data generating the CRC code is a multiple of m. 5].

도 3을 설명하면, 모듈로 2 가산기(312)는 병렬 입력 스트림 A(301)와 CRC 코드가 저장되어 있는 레지스터(310)의 출력을 함께 입력받아 연산을 수행한다. 이어서, 모듈로 2 가산기(312)의 연산 결과를 입력받은 Tn블록(311)은 n 번의 상태 천이를 하고, 그 결과 정보를 논리 게이트(313)를 통해 레지스터(310)에 저장한다.Referring to FIG. 3, the modulo 2 adder 312 receives a parallel input stream A 301 and an output of a register 310 in which a CRC code is stored and performs an operation. Subsequently, the T n block 311 receiving the operation result of the modulo 2 adder 312 performs n state transitions, and stores the result information in the register 310 through the logic gate 313.

mux_control(303) 신호에 의해 제어되는 다중화기(314)는 CRC 연산이 수행되는 경우 병렬 입력 스트림(301)이 병렬 출력 스트림(304)로 출력되도록 제어되고, CRC 연산이 종료되는 경우 레지스터(310) 출력이 출력되도록 제어한다.The multiplexer 314 controlled by the mux_control 303 signal is controlled such that the parallel input stream 301 is output to the parallel output stream 304 when the CRC operation is performed, and the register 310 when the CRC operation is terminated. Control the output.

도 4는 본 발명의 실시예에 따른 병렬 처리 데이터의 크기인 m이 CRC 코드의 크기 n보다 크면서 CRC 코드를 생성하는 입력 데이터의 비트수가 m의 배수인 경우, 병렬 CRC 생성 장치의 내부 구성을 나타낸 도면이다.4 is a block diagram illustrating an internal configuration of a parallel CRC generating apparatus when m, the size of parallel processing data, is larger than a size n of a CRC code and the number of bits of input data for generating a CRC code is a multiple of m. Referring to FIG. The figure shown.

도 4는 병렬 처리 데이터 크기 m이 CRC 코드의 크기 n보다 크고, CRC 코드를 생성하는 입력 데이터의 비트수가 m의 배수인 경우, 병렬 CRC 생성 장치의 내부 구성을 나타낸 것으로, 행렬 형태의 [수학식 6]과 같이 표현할 수 있다.4 illustrates an internal configuration of a parallel CRC generating device when the parallel data size m is larger than the size n of the CRC code and the number of bits of the input data generating the CRC code is a multiple of m. 6].

도 4를 설명하면, 모듈로 2 가산기(412)는 상위 병렬 입력 스트림(401)과 CRC 코드가 저장되어 있는 레지스터(410)의 출력을 함께 입력받아 연산을 수행한다. 이어서 H 블록(411)은 모듈로 2 가산기(412)의 연산 결과와 하위 병렬 입력 스트림(405)의 출력을 입력받아 연산을 수행하고, 그 연산 결과를 논리 게이트(413)를 통해 레지스터(410)에 저장한다.Referring to FIG. 4, the modulo 2 adder 412 receives an upper parallel input stream 401 and an output of a register 410 in which a CRC code is stored and performs an operation. Subsequently, the H block 411 receives an operation result of the modulo 2 adder 412 and an output of the lower parallel input stream 405 and performs an operation, and the operation result is registered through the logic gate 413. Store in

mux_control(403) 신호에 의해 제어되는 다중화기(414)는 CRC 연산이 수행되는 경우 상위 병렬 입력 스트림(401)과 하위 병렬 입력 스트림(405)이 병렬 출력 스트림(404)로 출력되도록 제어되고, CRC 연산이 종료되는 경우 레지스터(410) 출력이 출력되도록 제어한다.The multiplexer 414 controlled by the mux_control 403 signal is controlled such that the upper parallel input stream 401 and the lower parallel input stream 405 are output to the parallel output stream 404 when the CRC operation is performed. When the operation ends, the output of the register 410 is controlled.

전술한 도 2에서 도 4까지는 CRC 코드 생성 장치의 입력 데이터 크기가 병렬 처리 데이터의 크기 m의 배수인 경우 병렬 CRC 생성 장치의 실시예를 설명하였다.2 to 4, the embodiment of the parallel CRC generation device when the input data size of the CRC code generation device is a multiple of the size m of the parallel processing data has been described.

그러나, 도 2에서 도 4까지의 실시예는 입력 데이터의 크기 k가 병렬 처리 데이터의 크기 m의 배수가 아닌 경우 적용할 수 없는 병렬 CRC 생성 장치이다.However, the embodiment of FIGS. 2 to 4 is an apparatus for generating parallel CRC that is not applicable when the size k of the input data is not a multiple of the size m of the parallel processing data.

이하, 도 5를 참조하여 CRC 코드 생성 장치의 입력 데이터 크기가 병렬 처리 데이터 크기 m의 배수가 아닌 경우, 즉 임의의 크기를 갖는 병렬 처리 데이터와 임의의 크기를 갖는 CRC 코드를 생성하는 CRC 코드 생성 장치를 상세하게 설명한다.Hereinafter, referring to FIG. 5, when the input data size of the CRC code generating apparatus is not a multiple of the parallel processing data size m, that is, generating a CRC code for generating parallel processing data having an arbitrary size and a CRC code having an arbitrary size The apparatus will be described in detail.

도 5를 설명하기 전에 도 2, 도 3 및 도 4에서 설명했던 중복되는 내용은 생략하기로 한다.Before describing FIG. 5, overlapping contents described with reference to FIGS. 2, 3, and 4 will be omitted.

제 1 병렬 CRC 연산부(520)는 전처리 블록 1(510)과 상태 천이 블록 1(511)으로 구성되며, 제 2 병렬 CRC 연산부(530)는 전처리 블록 2(512)와 상태 천이 블록 2(513)로 구성된다.The first parallel CRC calculator 520 is composed of a preprocessing block 1 510 and a state transition block 1 511, and the second parallel CRC calculator 530 is a preprocessing block 2 512 and a state transition block 2 513. It consists of.

도 5에 도시된 바와 같이 병렬 입력 스트림(501)은 전처리 블록 1(510)과 전처리 블록 2(512) 및 출력 제어 다중화기(515)로 입력된다.As shown in FIG. 5, parallel input stream 501 is input to preprocessing block 1 510, preprocessing block 2 512, and output control multiplexer 515.

전처리 블록 1(510), 전처리 블록 2(512), 상태 천이 블록 1(511) 및 상태 천이 블록(2)는 도 2로부터 도 4까지 나타난 입력, 출력 데이터 스트림 및 레지스터들의 연산을 실행하는 모듈과 동일한 기능을 한다.Preprocessing block 1 510, preprocessing block 2 512, state transition block 1 511, and state transition block 2 comprise a module that executes the operation of the input, output data streams and registers shown in Figs. Do the same.

전처리 블록 1(510)은 CRC 코드를 생성하는 입력 데이터 크기가 병렬 처리 데이터의 크기 m의 배수인 경우, 병렬 처리 데이터의 크기 m과 CRC 코드의 크기 n과 비교한 후, 병렬 처리 데이터의 크기 m이 CRC 코드의 크기 n보다 작은 경우, 도 2에 나타난 병렬 CRC 생성 장치의 내부 구성을 적용하여 CRC 연산을 수행한다.The preprocessing block 1 510 compares the size m of the parallel data with the size n of the CRC code and then the size m of the parallel data when the size of the input data generating the CRC code is a multiple of the size m of the parallel data. If the size of the CRC code is smaller than n, the CRC operation is performed by applying the internal configuration of the parallel CRC generating apparatus shown in FIG. 2.

또한, 전처리 블록 1(510)은 병렬 처리 데이터의 크기 m이 CRC 코드의 크기 n과 같은 경우, 도 3에 나타난 병렬 CRC 생성 장치의 내부 구성을 적용하여 CRC 연산을 수행한다.Also, when the size m of the parallel processing data is equal to the size n of the CRC code, the preprocessing block 1 510 performs a CRC operation by applying the internal configuration of the parallel CRC generating apparatus shown in FIG. 3.

또한, 전처리 블록 1(510)은 병렬 처리 데이터의 크기 m이 CRC 코드의 크기 n보다 큰 경우, 도 4에 나타난 병렬 CRC 생성 장치의 내부 구성을 적용하여 CRC 연산을 수행한다.In addition, when the size m of the parallel processing data is larger than the size n of the CRC code, the preprocessing block 1 510 performs a CRC operation by applying the internal configuration of the parallel CRC generating apparatus illustrated in FIG. 4.

전처리 블록 1(510)은 입력, 출력 데이터 스트림, 레지스터들의 연산을 수행하는 전처리를 수행한 후, 수행된 결과 정보를 상태 천이 블록 1(511)로 전송한다. 즉, 전처리 블록 1(510)은 병렬 처리 데이터의 크기 m과 CRC 코드의 크기 n의 관계에 의해 도 2에서 도 4까지 나타난 입력,출력 데이터 스트림과 레지스터들의 연산을 수행하는 전처리 기능을 수행하고, 수행한 연산 결과 정보를 상태 천이 블록 1(511)로 전송한다.The preprocessing block 1 510 performs preprocessing to perform an operation of an input, an output data stream, and registers, and then transfers the result information to the state transition block 1 511. That is, the preprocessing block 1 510 performs a preprocessing function of performing operations of the input and output data streams and registers shown in FIGS. 2 to 4 by the relationship between the size m of the parallel processing data and the size n of the CRC code. The performed operation result information is transmitted to the state transition block 1 511.

상태 천이 블록 1(511)은 병렬 처리 데이터의 크기 m과 CRC 코드의 크기 n의 관계에 의해 도 2에서 도 4까지 나타난 상태 천이 블록으로 구성한다.The state transition block 1 511 is composed of the state transition blocks shown in FIGS. 2 to 4 by the relationship between the size m of the parallel processing data and the size n of the CRC code.

전처리 블록 2(512)는 최종 병렬 입력 데이터의 크기 r과 CRC 코드의 크기 n의 관계에 의해 도 2에서 도 4까지 나타난 입력, 출력 데이터 스트림과 레지스터들의 연산을 수행하는 전처리 기능을 수행하고, 수행한 연산 결과 정보를 상태 천이 블록 2(513)로 전송한다. 여기서, 최종 병렬 입력 데이터 r은 입력 데이터의 크기를 병렬 처리 데이터의 크기 m으로 나눈 나머지 데이터의 크기를 의미한다.The preprocessing block 2 512 performs a preprocessing function of performing operations of the input and output data streams and registers shown in FIGS. 2 to 4 by the relationship between the size r of the final parallel input data and the size n of the CRC code. One operation result information is transmitted to the state transition block 2 (513). Here, the final parallel input data r means the size of the remaining data obtained by dividing the size of the input data by the size m of the parallel processing data.

상태 천이 블록 2(513)는 최종 병렬 입력 데이터의 크기 r과 CRC 코드의 크기 n의 관계에 의해 도 2에서 도 4까지 나타난 상태 천이 블록으로 구성한다.The state transition block 2 513 is composed of the state transition blocks shown in FIGS. 2 to 4 by the relationship between the size r of the final parallel input data and the size n of the CRC code.

레지스터(514)는 레지스터 입력 제어 다중화기(516)의 출력을 저장하는 레지스터이다.Register 514 is a register that stores the output of register input control multiplexer 516.

출력 제어 다중화기(515)는 최종 병렬 입력 데이터의 크기 r이 입력되기 전까지 병렬 입력 스트림(501)이 병렬 출력 스트림(502)로 출력되고, CRC 코드가 출력되어야 하는 경우 레지스터(514)의 출력이 출력되도록 mux_control1(503) 신호에 의해 제어된다.The output control multiplexer 515 outputs the parallel input stream 501 to the parallel output stream 502 until the size r of the final parallel input data is input, and the output of the register 514 if the CRC code is to be output. It is controlled by the mux_control1 503 signal to be output.

레지스터 입력 제어 다중화기(516)는 최종 병렬 입력 데이터의 크기 r이 입력되기 전까지 상태 천이 블록 1(511)의 출력이 선택되고, 최종 병렬 입력 데이터의 크기 r이 입력되는 경우 상태 천이 블록 2(513)의 출력이 선택되도록 mux_control 2(504) 신호에 의해 제어된다.The register input control multiplexer 516 selects the output of the state transition block 1 511 until the size r of the final parallel input data is input, and the state transition block 2 (513) when the size r of the final parallel input data is input. Is controlled by mux_control 2 504 signal to be selected.

따라서, 도 5의 실시예는 마지막 입력 데이터가 입력되기 전까지 병렬 입력 데이터 스트림이 입력되는 경우, 병렬 처리 데이터의 크기 m과 CRC 코드의 크기 n의 관계에 의해 도 2, 도 3, 도 4에 설명했던 [수학식 4], [수학식 5], [수학식 6]을 이용하여 CRC를 연산하고, 마지막 입력 데이터가 입력되는 경우, 최종 병렬 입력 데이터의 크기 r과 CRC 코드의 크기 n의 관계에 따라 도 2, 도 3, 도 4에 설명했던 [수학식 4], [수학식 5], [수학식 6]을 이용하여 CRC를 연산한다.Accordingly, the embodiment of FIG. 5 is described with reference to FIGS. 2, 3, and 4 by the relationship between the size m of the parallel processing data and the size n of the CRC code when the parallel input data stream is input before the last input data is input. CRC is calculated using Equations 4, 5, and 6, and when the last input data is input, the relationship between the size r of the final parallel input data and the size n of the CRC code is calculated. Accordingly, CRC is calculated using [Equation 4], [Equation 5], and [Equation 6] described with reference to FIGS. 2, 3, and 4.

이하, 도 6을 참조하여 CRC 코드 생성 장치의 입력 데이터 크기가 병렬 처리 데이터 크기 m의 배수가 아닌 경우, 즉 임의의 크기를 갖는 병렬 처리 데이터와 임의의 크기를 갖는 CRC 코드를 생성하는 CRC 코드 생성 방법을 상세하게 설명한다.Hereinafter, referring to FIG. 6, when the input data size of the CRC code generating apparatus is not a multiple of the parallel processing data size m, that is, generating a CRC code for generating parallel processing data having an arbitrary size and a CRC code having an arbitrary size The method will be described in detail.

도 5에서도 언급했듯이 종래 병렬 CRC 생성 장치는 병렬 입력 데이터의 크기가 병렬 처리 데이터 크기의 배수인 경우 CRC 코드를 병렬 처리하는 경우가 일반적이다. 본 발명의 실시예는 병렬 입력 데이터, CRC 코드의 크기 및 병렬 처리 데이터 등이 임의의 크기를 가지는 경우에도 간단한 회로 구성을 갖는 병렬 CRC 생성 장치를 이용하여 효율적인 병렬 CRC 코드를 생성하는 방법이다.As mentioned in FIG. 5, the conventional parallel CRC generation apparatus generally processes the CRC codes in parallel when the size of the parallel input data is a multiple of the parallel data size. An embodiment of the present invention is a method for generating an efficient parallel CRC code using a parallel CRC generation apparatus having a simple circuit configuration even when parallel input data, CRC code size, parallel processing data, and the like have arbitrary sizes.

도 6은 도 5의 병렬 CRC 생성 장치의 CRC 코드 생성 방법을 설명한 것으로 서, 먼저 병렬 CRC 생성 장치는 병렬 입력 스트림(501)을 입력받는다(S600). 제어부(미도시)는 병렬 입력 데이터의 크기를 병렬 처리 데이터의 크기로 나누고, 나누어 떨어지지 않은 나머지 데이터인 최종 병렬 입력 데이터가 존재하는지 판단한다(S602). 여기서, 최종 병렬 처리 데이터의 크기는 병렬 입력 데이터의 크기를 병렬 처리 데이터의 크기로 나눈 나머지 데이터의 크기를 의미한다.FIG. 6 illustrates a CRC code generation method of the parallel CRC generation device of FIG. 5. First, the parallel CRC generation device receives a parallel input stream 501 (S600). The controller (not shown) divides the size of the parallel input data by the size of the parallel processing data, and determines whether there is the final parallel input data that is the remaining data that is not divided (S602). Here, the size of the final parallel processing data means the size of the remaining data obtained by dividing the size of the parallel input data by the size of the parallel processing data.

단계 S602에서 최종 병렬 입력 데이터의 크기가 존재한다고 판단하는 경우, 병렬 입력 데이터의 크기가 병렬 처리 데이터 크기의 배수가 아닌 경우, 제어부(미도시)는 마지막 병렬 입력 데이터가 입력되고 있는지 판단한다(S604). 단계 S604에서 마지막 병렬 입력 데이터가 입력되지 않았다고 판단하는 경우, 제 1 병렬 CRC 연산부(520)는 병렬 처리 데이터의 크기와 CRC 코드의 크기를 이용하여 제 1 CRC를 계산한 후(S606), 제 1 CRC의 결과 정보를 레지스터 입력 제어 다중화기(516)로 출력한다.When it is determined in step S602 that the size of the final parallel input data exists, when the size of the parallel input data is not a multiple of the parallel processing data size, the controller (not shown) determines whether the last parallel input data is input (S604). ). If it is determined in step S604 that the last parallel input data is not input, the first parallel CRC calculator 520 calculates the first CRC using the size of the parallel processing data and the size of the CRC code (S606). The result information of the CRC is output to the register input control multiplexer 516.

단계 S604에서 마지막 병렬 입력 데이터가 입력되는 경우라고 판단하는 경우, 제 2 병렬 CRC 연산부(530)는 최종 병렬 입력 데이터의 크기와 CRC 코드의 크기를 이용하여 제 2 CRC를 계산한 후(S612), 제 2 CRC의 결과 정보를 레지스터 입력 제어 다중화기(516)로 출력한다.If it is determined in step S604 that the last parallel input data is input, the second parallel CRC calculator 530 calculates the second CRC using the size of the final parallel input data and the size of the CRC code (S612). The result information of the second CRC is output to the register input control multiplexer 516.

제 1 병렬 CRC 연산부(520)와 제 2 병렬 CRC 연산부(530)에서 계산하는 CRC 연산 방법은 도 2, 도 3, 도 4에서 설명했던 방법을 이용하므로 여기서는 생략하기로 한다.The CRC calculation method calculated by the first parallel CRC calculation unit 520 and the second parallel CRC calculation unit 530 uses the method described with reference to FIGS.

도 5의 레지스터 입력 제어 다중화기(516)는 마지막 병렬 입력 데이터가 입 력되기 전까지 제 1 CRC의 결과 정보를 입력받아 레지스터(514)로 출력하고, 마지막 병렬 입력 데이터가 입력되는 경우, 제 2 CRC의 결과 정보를 입력받아 레지스터(514)로 출력하도록 제어한다.The register input control multiplexer 516 of FIG. 5 receives the result information of the first CRC and outputs the result information to the register 514 until the last parallel input data is input. When the last parallel input data is input, the second CRC is input. The result information of the control is received and output to the register 514.

출력 제어 다중화기(515)는 CRC 연산이 수행되고 있는지 판단하고(S610), CRC 연산이 수행되지 않고 종료되었다고 판단하는 경우, 레지스터(514)로부터 저장되어 있는 제 1 CRC와 제 2 CRC의 결과 정보(최종 CRC)를 입력받아 출력한다(S610).The output control multiplexer 515 determines whether a CRC operation is being performed (S610), and if it is determined that the CRC operation is not performed, the result information of the first CRC and the second CRC stored from the register 514 is determined. (Final CRC) is input and output (S610).

또한, 출력 제어 다중화기(515)는 CRC 연산이 수행되고 있다고 판단하는 경우, 병렬 입력 스트림(501)에 대한 병렬 출력 스트림(502)를 출력한다(S614).In addition, when it is determined that the CRC operation is being performed, the output control multiplexer 515 outputs the parallel output stream 502 for the parallel input stream 501 (S614).

전술한 단계 S602에서 최종 병렬 입력 데이터의 크기가 존재하지 않는다고 판단하는 경우, 병렬 입력 데이터의 크기가 병렬 처리 데이터 크기의 배수인 경우, 제 1 병렬 CRC 연산부(520)는 병렬 처리 데이터의 크기와 CRC 코드의 크기를 이용하여 제 1 CRC를 계산한 후, 제 1 CRC의 결과 정보를 레지스터 입력 제어 다중화기(516), 레지스터(514) 및 출력 제어 다중화기(515)를 통해 출력한다(S616).When it is determined in step S602 that the size of the final parallel input data does not exist, when the size of the parallel input data is a multiple of the parallel data size, the first parallel CRC calculator 520 may determine the size of the parallel data and the CRC. After calculating the first CRC using the size of the code, the result information of the first CRC is output through the register input control multiplexer 516, the register 514, and the output control multiplexer 515 (S616).

이상에서 본 발명의 실시예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.Although the embodiments of the present invention have been described in detail above, the scope of the present invention is not limited thereto, and various modifications and improvements of those skilled in the art using the basic concepts of the present invention defined in the following claims are also provided. It belongs to the scope of rights.

전술한 구성에 의하여, 본 발명은 임의의 크기를 갖는 병렬 입력 데이터에 대해 임의의 병렬 처리 데이터 크기, 임의의 크기의 CRC 코드를 갖는 병렬 CRC 생성 장치를 구성할 수 있어 동작 속도가 빠르지 않은 저가의 FPGA(Field Programmable Gate Array)나 ASIC(Application Specific Integrated Circuit)을 이용하여 고속의 데이터 통신 시스템을 구성하는 경우 경제적이고 효율적인 병렬 CRC 코드 생성 장치를 제공할 수 있는 효과를 기대할 수 있다.According to the above-described configuration, the present invention can configure a parallel CRC generation device having an arbitrary parallel processing data size and an arbitrary size CRC code for parallel input data having any size, so that the operation speed is low. When constructing a high-speed data communication system using a field programmable gate array (FPGA) or an application specific integrated circuit (ASIC), an economical and efficient parallel CRC code generation device can be expected.

Claims (13)

임의의 크기를 갖는 병렬 입력 데이터에 대해 임의의 병렬 처리 데이터 크기, 임의의 크기의 CRC(Cyclic Redundancy Check) 코드를 갖는 병렬 CRC 생성 장치에 있어서,A parallel CRC generation apparatus having a parallel processing data size, a cyclic redundancy check (CRC) code of any size, for parallel input data having an arbitrary size, 상기 병렬 입력 데이터를 전송받고, 마지막 병렬 입력 데이터가 입력되기 전까지 상기 병렬 처리 데이터 크기와 CRC 코드의 크기를 이용하여 CRC를 계산하는 제 1 병렬 CRC 연산부;A first parallel CRC calculator configured to receive the parallel input data and calculate a CRC by using the size of the parallel data and the size of the CRC code until the last parallel input data is input; 상기 마지막 병렬 입력 데이터가 입력되는 경우, 최종 병렬 입력 데이터 크기와 상기 CRC 코드의 크기를 이용하여 CRC를 계산하는 제 2 병렬 CRC 연산부;A second parallel CRC calculator configured to calculate a CRC by using a final parallel input data size and a size of the CRC code when the last parallel input data is input; 상기 마지막 병렬 입력 데이터가 입력되기 전까지 상기 제 1 병렬 CRC 연산부의 출력을 입력받아 저장하고, 상기 마지막 병렬 입력 데이터가 입력되는 경우 상기 제 2 병렬 CRC 연산부의 출력을 입력받아 저장한 후, 저장된 결과 정보를 제어하는 레지스터 입력 제어 다중화기; 및Receives and stores the output of the first parallel CRC calculator until the last parallel input data is input. When the last parallel input data is input, receives and stores the output of the second parallel CRC calculator, and stores the result information. A register input control multiplexer for controlling the; And CRC 연산이 수행되는 경우, 상기 병렬 입력 데이터가 병렬 출력 데이터로 출력되고, 상기 CRC 연산이 종료되는 경우 상기 레지스터 입력 제어 다중화기의 출력이 출력되도록 제어하는 출력 제어 다중화기An output control multiplexer for controlling the output of the register input control multiplexer to output the parallel input data when the CRC operation is performed and outputting the parallel input data when the CRC operation is terminated. 를 포함하는 병렬 CRC 생성 장치.Parallel CRC generation device comprising a. 제 1 항에 있어서, 상기 제 1 병렬 CRC 연산부는,The method of claim 1, wherein the first parallel CRC calculator, 상기 병렬 입력 데이터 크기가 상기 병렬 처리 데이터 크기의 배수인 경우, 상기 병렬 처리 데이터 크기와 상기 CRC 코드의 대소에 따라 대응되는 CRC 연산을 수행하는 것을 특징으로 하는 병렬 CRC 생성 장치.And when the parallel input data size is a multiple of the parallel data size, performing a CRC operation corresponding to the size of the parallel data size and the size of the CRC code. 제 1 항 또는 제 2 항에 있어서, 상기 제 1 병렬 CRC 연산부는,The method of claim 1 or 2, wherein the first parallel CRC calculator, 상기 병렬 처리 데이터 크기가 상기 CRC 코드의 크기보다 작고, 상기 병렬 입력 데이터 크기가 상기 병렬 처리 데이터 크기의 배수인 경우,
Figure 112005069860312-pat00007
를 이용하여 상기 CRC 연산을 수행하되, n는 CRC 코드의 크기, m은 병렬 처리 데이터 크기, A는 병렬 입력 스트림, B는 병렬 출력 스트림, D는 레지스터의 상태를 나타내는 열 벡터, T는 레지스터의 상태 천이 행렬, d는 레지스터를 의미하는 것을 특징으로 하는 병렬 CRC 생성 장치.
When the parallel data size is smaller than the size of the CRC code and the parallel input data size is a multiple of the parallel data size,
Figure 112005069860312-pat00007
The CRC operation is performed using n, where n is the size of the CRC code, m is the parallel data size, A is the parallel input stream, B is the parallel output stream, D is a column vector representing the state of the register, and T is the register. And a state transition matrix, d denotes a register.
제 1 항 또는 제 2 항에 있어서, 상기 제 1 병렬 CRC 연산부는,The method of claim 1 or 2, wherein the first parallel CRC calculator, 상기 병렬 처리 데이터 크기가 상기 CRC 코드의 크기와 같고, 상기 병렬 입력 데이터 크기가 상기 병렬 처리 데이터 크기의 배수인 경우,
Figure 112005069860312-pat00008
를 이용하여 상기 CRC 연산을 수행하되, n는 CRC 코드의 크기, m은 병렬 처리 데이터 크기, A는 병렬 입력 스트림, D는 레지스터의 상태를 나타내는 열 벡터, T는 레지스터의 상태 천이 행렬을 의미하는 것을 특징으로 하는 병렬 CRC 생성 장치.
When the parallel data size is equal to the size of the CRC code and the parallel input data size is a multiple of the parallel data size,
Figure 112005069860312-pat00008
The CRC operation is performed using n, where n is the size of the CRC code, m is the parallel data size, A is the parallel input stream, D is a column vector representing the state of the register, and T is the state transition matrix of the register. Parallel CRC generating device, characterized in that.
제 1 항 또는 제 2 항에 있어서, 상기 제 1 병렬 CRC 연산부는,The method of claim 1 or 2, wherein the first parallel CRC calculator, 상기 병렬 처리 데이터 크기가 상기 CRC 코드의 크기보다 크고, 상기 병렬 입력 데이터 크기가 상기 병렬 처리 데이터 크기의 배수인 경우,
Figure 112005069860312-pat00009
를 이용하여 상기 CRC 연산을 수행하되, n는 CRC 코드의 크기, m은 병렬 처리 데이터 크기, AA는 상위 병렬 입력 스트림, AB는 하위 병렬 입력 스트림, D는 레지스터의 상태를 나타내는 열 벡터, H는 레지스터의 상태 천이 행렬, a는 입력 스트림 인자를 의미하는 것을 특징으로 하는 병렬 CRC 생성 장치.
When the parallel data size is greater than the size of the CRC code and the parallel input data size is a multiple of the parallel data size,
Figure 112005069860312-pat00009
Perform the CRC operation using n, where n is the size of the CRC code, m is the parallel data size, A A is the upper parallel input stream, A B is the lower parallel input stream, D is a column vector representing the state of the register, Wherein H denotes a state transition matrix of a register, and a denotes an input stream factor.
제 1 항에 있어서, 상기 제 2 병렬 CRC 연산부는,The method of claim 1, wherein the second parallel CRC calculator, 상기 병렬 입력 데이터 크기가 상기 병렬 처리 데이터 크기의 배수가 아닌 경우, 상기 최종 병렬 입력 데이터 크기와 상기 CRC 코드의 대소에 따라 상기 CRC 연산을 수행하는 것을 특징으로 하는 병렬 CRC 생성 장치.And when the parallel input data size is not a multiple of the parallel processing data size, performing the CRC operation according to the magnitude of the final parallel input data size and the CRC code. 제 1 항 또는 제 6 항에 있어서, 상기 제 2 병렬 CRC 연산부는,The method of claim 1 or 6, wherein the second parallel CRC calculation unit, 상기 최종 병렬 입력 데이터 크기가 상기 CRC 코드의 크기보다 작은 경우,
Figure 112005069860312-pat00010
를 이용하여 상기 CRC 연산을 수행하되, n는 CRC 코드의 크기, m은 병렬 처리 데이터 크기, A는 병렬 입력 스트림, B는 병렬 출력 스트림, D는 레지스터의 상태를 나타내는 열 벡터, T는 레지스터의 상태 천이 행렬, d는 레지스터를 의미하는 것을 특징으로 하는 병렬 CRC 생성 장치.
If the final parallel input data size is smaller than the size of the CRC code,
Figure 112005069860312-pat00010
The CRC operation is performed using n, where n is the size of the CRC code, m is the parallel data size, A is the parallel input stream, B is the parallel output stream, D is a column vector representing the state of the register, and T is the register. And a state transition matrix, d denotes a register.
제 1 항 또는 제 6 항에 있어서, 상기 제 2 병렬 CRC 연산부는,The method of claim 1 or 6, wherein the second parallel CRC calculation unit, 상기 최종 병렬 입력 데이터 크기가 상기 CRC 코드의 크기와 같은 경우,
Figure 112005069860312-pat00011
를 이용하여 상기 CRC 연산을 수행하되, n는 CRC 코드의 크기, m은 병렬 처리 데이터 크기, A는 병렬 입력 스트림, D는 레지스터의 상태를 나타내는 열 벡터, T는 레지스터의 상태 천이 행렬을 의미하는 것을 특징으로 하는 병렬 CRC 생성 장치.
If the final parallel input data size is equal to the size of the CRC code,
Figure 112005069860312-pat00011
The CRC operation is performed using n, where n is the size of the CRC code, m is the parallel data size, A is the parallel input stream, D is a column vector representing the state of the register, and T is the state transition matrix of the register. Parallel CRC generating device, characterized in that.
제 1 항 또는 제 6 항에 있어서, 상기 제 2 병렬 CRC 연산부는,The method of claim 1 or 6, wherein the second parallel CRC calculation unit, 상기 최종 병렬 입력 데이터 크기가 상기 CRC 코드의 크기보다 큰 경우,
Figure 112005069860312-pat00012
를 이용하여 상기 CRC 연산을 수행하되, n는 CRC 코드의 크기, m은 병렬 처리 데이터 크기, AA는 상위 병렬 입력 스트림, AB는 하위 병렬 입력 스트림, D는 레지스터의 상태를 나타내는 열 벡터, H는 레지스터의 상태 천이 행렬, a는 입력 스트림 인자를 의미하는 것을 특징으로 하는 병렬 CRC 생성 장치.
If the final parallel input data size is larger than the size of the CRC code,
Figure 112005069860312-pat00012
Perform the CRC operation using n, where n is the size of the CRC code, m is the parallel data size, A A is the upper parallel input stream, A B is the lower parallel input stream, D is a column vector representing the state of the register, Wherein H denotes a state transition matrix of a register, and a denotes an input stream factor.
제 1 항에 있어서,The method of claim 1, 상기 최종 병렬 입력 데이터 크기는 병렬 입력 데이터 크기를 상기 병렬 처리 데이터 크기로 나눈 나머지 데이터의 크기인 것을 특징으로 하는 병렬 CRC 생성 장치.And the final parallel input data size is the size of the remaining data obtained by dividing the parallel input data size by the parallel processing data size. 임의의 크기를 갖는 병렬 입력 데이터에 대해 임의의 병렬 처리 데이터 크기, 임의의 크기의 CRC(Cyclic Redundancy Check) 코드를 갖는 병렬 CRC를 생성하는 방법에 있어서,A method for generating a parallel CRC having an arbitrary parallel processing data size and an arbitrary size of a cyclic redundancy check (CRC) code for parallel input data having an arbitrary size, the method comprising: (a) 병렬 입력 데이터 크기를 병렬 처리 데이터 크기로 나누고, 나누어 떨어지지 않은 나머지 데이터인 최종 병렬 입력 데이터가 존재하는지 판단하는 단계;(a) dividing the parallel input data size by the parallel processing data size and determining whether there is the final parallel input data which is the remaining undivided data; (b) 상기 단계 (a)에서 상기 최종 병렬 입력 데이터가 존재하는 경우, 마지막 병렬 입력 데이터가 입력되고 있는지 판단하는 단계;(b) if the final parallel input data exists in step (a), determining whether the last parallel input data is being input; (c) 상기 단계 (b)에서 상기 마지막 병렬 입력 데이터가 입력되고 있지 않다고 판단하는 경우, 상기 병렬 처리 데이터 크기와 CRC 코드의 크기를 이용하여 제 1 CRC를 계산하여 출력하는 단계;(c) if it is determined in step (b) that the last parallel input data is not being input, calculating and outputting a first CRC using the size of the parallel data and the size of the CRC code; (d) 상기 단계 (b)에서 상기 마지막 병렬 입력 데이터가 입력되고 있다고 판단하는 경우, 상기 최종 병렬 입력 데이터와 상기 CRC 코드의 크기를 이용하여 제 2 CRC를 계산하여 출력하는 단계; 및(d) if it is determined in step (b) that the last parallel input data is being input, calculating and outputting a second CRC using the size of the last parallel input data and the CRC code; And (e) 상기 제 1 CRC와 상기 제 2 CRC의 연산 결과를 통합하여 최종 CRC를 출력하는 단계(e) integrating the calculation result of the first CRC and the second CRC and outputting a final CRC 를 포함하는 병렬 CRC 생성 방법.Parallel CRC generation method comprising a. 제 11 항에 있어서, 상기 (e) 단계 후에,The method of claim 11, wherein after step (e), (f) CRC 연산이 종료되었는지 판단하는 단계;(f) determining whether the CRC operation is finished; (g) 상기 단계 (f)에서 상기 CRC 연산이 종료되었다고 판단하는 경우, 상기 최종 CRC를 출력하는 단계; 및 (g) if it is determined in step (f) that the CRC operation is finished, outputting the final CRC; And (h) 상기 단계 (f)에서 상기 CRC 연산이 종료되지 않았다고 판단하는 경우, 병렬 출력 데이터를 출력하는 단계(h) if it is determined in step (f) that the CRC operation is not finished, outputting parallel output data 를 더 포함하는 것을 특징으로 하는 병렬 CRC 생성 방법.Parallel CRC generation method characterized in that it further comprises. 제 11 항에 있어서,The method of claim 11, 상기 단계 (a)에서 상기 최종 병렬 입력 데이터 크기가 존재하지 않는다고 판단하는 경우, 상기 병렬 처리 데이터 크기와 상기 CRC 코드의 크기를 이용하여 상기 제 1 CRC를 계산하여 출력하는 것을 특징으로 하는 병렬 CRC 생성 방법.If it is determined in step (a) that the final parallel input data size does not exist, the parallel CRC generation may be performed by calculating and outputting the first CRC using the parallel data size and the size of the CRC code. Way.
KR1020050115419A 2005-11-30 2005-11-30 Parallel cyclic redundancy check generator and method capable of parallel processing of arbitrary size KR100645388B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020050115419A KR100645388B1 (en) 2005-11-30 2005-11-30 Parallel cyclic redundancy check generator and method capable of parallel processing of arbitrary size

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020050115419A KR100645388B1 (en) 2005-11-30 2005-11-30 Parallel cyclic redundancy check generator and method capable of parallel processing of arbitrary size

Publications (1)

Publication Number Publication Date
KR100645388B1 true KR100645388B1 (en) 2006-11-14

Family

ID=37654464

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050115419A KR100645388B1 (en) 2005-11-30 2005-11-30 Parallel cyclic redundancy check generator and method capable of parallel processing of arbitrary size

Country Status (1)

Country Link
KR (1) KR100645388B1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102891685A (en) * 2012-09-18 2013-01-23 国核自仪系统工程有限公司 Parallel cyclic redundancy check (CRC) operation circuit based on field programmable gate array (FPGA)
CN105103454A (en) * 2013-03-15 2015-11-25 吉林克斯公司 Modular and scalable cyclic redundancy check computation circuit

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0918354A (en) * 1995-07-04 1997-01-17 Oki Electric Ind Co Ltd Error detection code generator and error detector for cyclic redundancy checking system
JP2003046393A (en) 2001-07-31 2003-02-14 Anritsu Corp Error detector
KR20040043582A (en) * 2002-11-19 2004-05-24 엘지전자 주식회사 System And Methord For Generating Parallel Cyclic Redundancy Codes
KR20050110646A (en) * 2003-03-28 2005-11-23 인터내셔널 비지네스 머신즈 코포레이션 Iterative circuit and method for variable width parallel cyclic redundancy check (crc) calculation

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0918354A (en) * 1995-07-04 1997-01-17 Oki Electric Ind Co Ltd Error detection code generator and error detector for cyclic redundancy checking system
JP2003046393A (en) 2001-07-31 2003-02-14 Anritsu Corp Error detector
KR20040043582A (en) * 2002-11-19 2004-05-24 엘지전자 주식회사 System And Methord For Generating Parallel Cyclic Redundancy Codes
KR20050110646A (en) * 2003-03-28 2005-11-23 인터내셔널 비지네스 머신즈 코포레이션 Iterative circuit and method for variable width parallel cyclic redundancy check (crc) calculation

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102891685A (en) * 2012-09-18 2013-01-23 国核自仪系统工程有限公司 Parallel cyclic redundancy check (CRC) operation circuit based on field programmable gate array (FPGA)
CN102891685B (en) * 2012-09-18 2018-06-22 国核自仪系统工程有限公司 Cardiopulmonary bypass in beating heart redundancy check computing circuit based on FPGA
CN105103454A (en) * 2013-03-15 2015-11-25 吉林克斯公司 Modular and scalable cyclic redundancy check computation circuit
CN105103454B (en) * 2013-03-15 2019-03-29 吉林克斯公司 Modularization and expansible cyclic redundancy check counting circuit

Similar Documents

Publication Publication Date Title
US8510626B2 (en) Data coding apparatus and methods
EP2974036B1 (en) Fast cyclic redundancy check computation circuit
JP2005102213A (en) Method for computing crc of message
KR20180043157A (en) Quantum circuit and method for implementation a heterogeneously encoded logical bell state
KR20140025601A (en) Efficient and scalable cyclic redundancy check circuit using galois-field arithmetic
US20140358979A1 (en) GENERATING A FAST 3x MULTIPLAND TERM FOR RADIX-8 BOOTH MULTIPLICATION
US6295626B1 (en) Symbol based algorithm for hardware implementation of cyclic redundancy check
KR100645388B1 (en) Parallel cyclic redundancy check generator and method capable of parallel processing of arbitrary size
Wang et al. Reliable and secure memories based on algebraic manipulation correction codes
US6725415B2 (en) Arithmetic unit performing cyclic redundancy check at high speed
JP2005086683A (en) Error decoding circuit, data bus control method, and data bus system
EP0661841A2 (en) Parity and syndrome generation for error and correction in digital communication systems
KR100302847B1 (en) Division apparatus of long polynomial expression in finite field
US6012077A (en) Method and apparatus for indicating overflow status of bit-variable data employing pipelining adder
GB2354091A (en) Zero result prediction.
CN101055516A (en) Hardware configuration method implementing binary system polynomial arithmetic and hardware system
US20030041300A1 (en) Universal device for processing Reed-Solomon forward error-correction encoded messages
CN114942861A (en) CRC calculation method, device, computer equipment and storage medium
JP6875661B2 (en) Error detection redundant bit generation method and device
Silva et al. RTL development of a parameterizable Reed–Solomon Codec
US11309994B2 (en) Highly parallel and scalable cyclic redundancy check
El-Medany Reconfigurable CRC IP core design on xilinx spartan 3AN FPGA
US10623018B2 (en) Method of arrangement of an algorithm in cyclic redundancy check
JP3231713B2 (en) Cyclic redundancy check calculation method and apparatus
KR100392370B1 (en) Apaaratus for calculating inversion of multi level structure in the finite field

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20111028

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20120919

Year of fee payment: 20