KR100745863B1 - Crc operation unit and crc operation method - Google Patents

Crc operation unit and crc operation method Download PDF

Info

Publication number
KR100745863B1
KR100745863B1 KR1020010019804A KR20010019804A KR100745863B1 KR 100745863 B1 KR100745863 B1 KR 100745863B1 KR 1020010019804 A KR1020010019804 A KR 1020010019804A KR 20010019804 A KR20010019804 A KR 20010019804A KR 100745863 B1 KR100745863 B1 KR 100745863B1
Authority
KR
South Korea
Prior art keywords
data
crc
polynomial
value
calculation
Prior art date
Application number
KR1020010019804A
Other languages
Korean (ko)
Other versions
KR20010098575A (en
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 마츠시타 덴끼 산교 가부시키가이샤
Publication of KR20010098575A publication Critical patent/KR20010098575A/en
Application granted granted Critical
Publication of KR100745863B1 publication Critical patent/KR100745863B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • 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
    • H03M13/091Parallel or block-wise CRC computation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
    • 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/65Purpose and implementation aspects
    • H03M13/6508Flexibility, adaptability, parametrability and configurability of the implementation
    • H03M13/6516Support of multiple code parameters, e.g. generalized Reed-Solomon decoder for a variety of generator polynomials or Galois fields
    • 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/65Purpose and implementation aspects
    • H03M13/6569Implementation on processors, e.g. DSPs, or software implementations

Abstract

본 발명은 회로규모를 대폭적으로 증가시키지 않고 고속의 CRC 연산을 행하여 여러가지 생성다항식을 유연하게 적용할 수 있도록 하기 위한 CRC 연산장치 및 CRC 연산방법에 관한 것이다. 주요 구성은 일반적으로 DSP가 구비된 회로에 약간의 회로를 부가하여 CRC 연산장치가 구성되는데, 이 CRC 연산장치는 임의의 생성다항식이 저장되는 제 1 범용 레지스터(12), 상기 생성다항식 또는 전체 비트의 값이 0인 데이터를 선택하여 출력하는 셀렉터(13)를 구비한 생성다항식 공급부(11), 메모리(22), 시프트 레지스터(23), 제 2 범용 레지스터(24) 및 배럴시프터(25)를 구비하고, 송수신 데이터에 기초하여 CRC 연산을 위한 연산데이터를 출력하는 연산데이터 공급부(21), 생성다항식 공급부(11) 및 연산데이터 공급부(21)로부터 출력되는 생성다항식 및 연산데이터를 이용하여 CRC 연산을 하는 연산부(31) 및 상기 각부의 동작을 제어하는 연산명령 실행제어부(41)로 구성된다. The present invention relates to a CRC arithmetic unit and a CRC arithmetic method for flexibly applying various generator polynomials by performing high-speed CRC arithmetic without significantly increasing the circuit scale. In general, a CRC calculation device is constructed by adding a circuit to a circuit in which a DSP is provided. The CRC calculation device includes a first general register 12 storing an arbitrary generator polynomial, The memory 22, the shift register 23, the second general purpose register 24, and the barrel shifter 25, which have a selector 13 for selecting and outputting data having a value of 0 A calculation data supply unit 21 for outputting calculation data for CRC calculation based on the transmission / reception data, a generation polynomial supply unit 11, and a generation polynomial and calculation data output from the calculation data supply unit 21, And an arithmetic instruction execution control unit 41 for controlling the operations of the respective units.

생성다항식, 배럴시프터, 연산데이터Generator polynomial, barrel shifter, operation data

Description

씨알씨 연산장치 및 씨알씨 연산방법{CRC OPERATION UNIT AND CRC OPERATION METHOD}{CRC OPERATION UNIT AND CRC OPERATION METHOD}

도 1은 제 1 실시예의 CRC 연산장치의 구성을 도시한 블록도1 is a block diagram showing a configuration of a CRC calculation apparatus according to the first embodiment

도 2는 제 1 실시예의 CRC 연산장치의 동작을 도시한 플로차트2 is a flow chart showing the operation of the CRC calculation apparatus of the first embodiment.

도 3은 제 1 실시예의 CRC 연산장치의 데이터의 단락의 예를 도시한 설명도3 is an explanatory diagram showing an example of a data section of the CRC arithmetic unit of the first embodiment

도 4는 제 1 실시예의 CRC 연산장치의 부호화동작의 구체예를 도시한 설명도4 is an explanatory diagram showing a specific example of the encoding operation of the CRC arithmetic unit of the first embodiment

도 5는 제 1 실시예의 CRC 연산장치의 복호동작의 구체예를 도시한 설명도5 is an explanatory diagram showing a specific example of the decoding operation of the CRC arithmetic unit of the first embodiment

도 6은 제 2 실시예의 CRC 연산장치의 구성을 도시한 블록도6 is a block diagram showing a configuration of a CRC calculation apparatus according to the second embodiment

본 발명은 송수신 데이터가 통신로를 통해 전송될 때 또는 전송을 위한 데이터처리가 이루어질 때 등에 상기 송수신 데이터에 오류가 생겼는지의 여부를 검출하기 위한 오류검출부호인 CRC(Cyclic Redundancy Check ; 순환 리던던시 검사)부호의 생성 또는 그러한 에러검출부호가 부가된 송수신 데이터의 부호에러를 검출하는 CRC 연산장치 및 CRC 연산방법에 관한 것이다. The present invention relates to a CRC (Cyclic Redundancy Check), which is an error detection code for detecting whether or not an error occurs in the transmission / reception data, such as when transmission / reception data is transmitted through a communication path or when data is processed for transmission, And a CRC calculation device and a CRC calculation method for detecting a code error of transmission / reception data added with an error detection code.

CRC는 디지털통신에서 빈번히 사용되는 에러검출방식이다. 이 에러검출방식 은 다음과 같이 에러를 검출한다. 즉 송신측에서는 송신데이터를 고차의 다항식으로 간주하고 소정의 생성다항식으로 제산하여 얻어지는 나머지를 CRC 부호로서 송신데이터의 다음에 부가한다(부호화). 수신측에서는 동일한 생성다항식을 이용하여 제산을 행하여(복호), 나머지가 0이면 전송된 데이터에 에러가 없다고 판정하는 한편 나머지가 0이 아니면 에러가 있다고 판정한다(에러검출). 상기 생성다항식으로서는 예를 들어 다음과 같은 것이 실제의 CRC에 사용된다. CRC is a frequently used error detection method in digital communication. This error detection method detects an error as follows. In other words, the transmission side regards the transmission data as a higher-order polynomial and adds the remainder obtained by dividing the transmission data by a predetermined generating polynomial to a CRC code next to the transmission data (coding). On the receiving side, the same generation polynomial is used to perform division (decode). If the remainder is 0, it is determined that there is no error in the transmitted data. If the remainder is not 0, it is determined that there is an error (error detection). As the generation polynomial, for example, the following is used in the actual CRC.

(1) CRC-12(1) CRC-12

(2) CRC-16(2) CRC-16

(3) CRC-CCITT(3) CRC-CCITT

상기와 같은 부호화나 에러검출, 즉 CRC 연산을 하는 장치로서는 하드웨어로 CRC 연산을 하는 CRC 연산장치가 있다. 이것은 시프트 레지스터와 배타적 논리합 게이트를 조합하여 구성된 제산기를 이용한다. 이 종류의 장치에서는 상기 시프트 레지스터와 상기 배타적 논리합 게이트가 어떻게 접속되는지에 따라 생성다항식이 결정된다. 이 때문에 이 종류의 장치에서는 생성다항식을 변경할 수 없다. 그러므로 적용되는 생성다항식마다 다른 장치를 사용할 필요가 있다. 또 송신측과 수신측에서 동일한 생성다항식이 적용되는 장치를 이용해야 한다. An apparatus for performing the above-described encoding and error detection, that is, a CRC calculation, includes a CRC calculation apparatus that performs CRC calculation in hardware. This uses a divider configured by combining a shift register and an exclusive OR gate. In this kind of apparatus, the generation polynomial is determined according to how the shift register and the exclusive-OR gate are connected. This makes it impossible to change the generator polynomial in this kind of device. Therefore, it is necessary to use a different device for each generation polynomial to be applied. In addition, a device to which the same generating polynomial is applied on the transmitting side and the receiving side should be used.

한편 여러가지 생성다항식을 유연하게 적용할 수 있는 CRC 연산장치로서는 소프트웨어로 CRC 연산을 하는 장치가 있다. 이러한 장치에서는 단지 프로그램 또는 데이터를 교체함으로써 용이하게 여러가지의 생성다항식을 적용할 수 있다. 그런데 통상적으로 상기 CRC 연산은 통신단말의 프로세서에 의해 실행되고, 그 프로 세서에 큰 부하가 걸리기 때문에 통신단말의 처리능력이 저하된다. 또 소프트웨어에 의한 CRC 연산은 연산속도가 느리기 때문에 고속통신에는 적합하지 않다. Meanwhile, as a CRC calculation device capable of flexibly applying various generation polynomials, there is a CRC calculation device using software. In such an apparatus, various generating polynomials can be easily applied simply by replacing a program or data. Conventionally, the CRC calculation is executed by the processor of the communication terminal, and the processing load of the communication terminal is deteriorated because a large load is imposed on the processor. In addition, CRC calculation by software is not suitable for high-speed communication because of low computation speed.

따라서 생성다항식의 유연성과 CRC 연산의 고속성을 양립시킬 수 있는 장치로서는, 예를 들면 일본국 특개평 5-151007호 공보에 개시된 바와 같이 생성다항식 설정레지스터와, 시프트 레지스터와, 배타적 논리합 게이트가 조합되어 구성된 장치가 알려져 있다. 이 장치는 하드웨어에 의해 CRC 연산이 행해지기 때문에 고속 처리가 가능한 동시에 생성다항식 설정레지스터에 설정되는 생성다항식을 변경함으로써 여러가지 생성다항식을 적용할 수 있다. Therefore, for example, as disclosed in Japanese Unexamined Patent Application Publication No. 5-151007, a combination of a generator polynomial setting register, a shift register, and an exclusive OR gate may be used as a device capable of making both the flexibility of the generating polynomial and the high- A device is known. This device can apply various generation polynomials by changing the generator polynomial set in the generator polynomial setting register while enabling high-speed processing because the CRC operation is performed by hardware.

그러나 상기와 같은 CRC 연산장치는 CRC 연산을 위해 특화한 전용회로를 이용하기 때문에 통신장치 등의 회로규모를 증대시키는 문제점이 있다. 또 생성다항식 설정레지스터와 같은 비트길이의 생성다항식에는 여러가지의 것을 적용할 수 있는데, 다른 비트길이의 생성다항식의 적용에 대해서는 고려하지 않는다.However, the above-mentioned CRC calculation device has a problem of increasing the circuit scale of the communication device and the like because it uses a specialized dedicated circuit for CRC calculation. The generator polynomial of the same bit length as the generator polynomial setting register can be applied to various kinds of polynomials, but the application of the generator polynomial of different bit length is not considered.

본 발명은 상기 문제점을 감안하여 대폭적인 회로규모의 증가를 초래하지 않고 고속 CRC 연산을 할 수 있으며, 여러가지의 생성다항식을 유연하게 적용할 수 있는 CRC 연산장치 및 CRC 연산방법을 제공하는 것을 목적으로 한다. SUMMARY OF THE INVENTION In view of the above problems, it is an object of the present invention to provide a CRC calculation device and a CRC calculation method capable of performing a high-speed CRC calculation without causing a significant increase in circuit scale and flexibly applying various generation polynomials do.

상기 목적을 달성하기 위해 본 발명은 CRC 연산장치에 있어서, 생성다항식을 나타내는 데이터를 보유하고, 상기 생성다항식을 나타내는 데이터와 전체 비트의 값이 O인 제로데이터를 선택적으로 출력하는 생성다항식 공급수단과, CRC 연산을 하는 연산데이터를 출력하는 연산데이터 공급수단과, 상기 생성다항식을 나타내는 데이터 또는 제로데이터와, 상기 연산데이터의 배타적 논리합연산을 하는 산술논리 연산수단을 구비하며, 상기 생성다항식 공급수단은 상기 산술논리 연산수단에 의한 연산결과의 최상위비트의 값에 따라 상기 생성다항식을 나타내는 데이터와 제로데이터를 선택하도록 구성되고, 상기 연산데이터 공급수단은 상기 산술논리 연산수단에 의한 연산결과의 최상위비트보다 하위비트의 값을 상위비트의 값으로 하고, 미처리된 CRC 연산대상이 되는 데이터의 최상위비트의 값을 최하위비트의 값으로 하는 데이터를 상기 연산데이터로서 출력하도록 구성되는 것을 특징으로 한다.In order to achieve the above object, according to the present invention, there is provided a CRC arithmetic unit comprising: generating polynomial supplying means for holding data representing a generating polynomial and selectively outputting data representing the generating polynomial and zero data of all bits of O; And an arithmetic logic operation means for performing an exclusive OR operation on the data or zero data indicating the generated polynomial and the operation data, wherein the generating polynomial supplying means comprises: Wherein the arithmetic logic unit is configured to select data and zero data representing the generator polynomial according to a value of a most significant bit of an arithmetic logic operation result by the arithmetic logic unit, The value of the lower bit is set to the value of the upper bit, and the value of the unprocessed CRC year And outputs the data having the value of the most significant bit of the data to be subjected to the multiplication as the value of the least significant bit as the calculation data.

상기 생성다항식 공급수단은 구체적으로는 예를 들어 상기 생성다항식을 나타내는 데이터를 보유하는 제 1 레지스터와, 상기 생성다항식을 나타내는 데이터 또는 상기 제로데이터를 선택적으로 출력하는 셀렉터를 구비하며, 상기 연산데이터 공급수단은 구체적으로는 예를 들어, 상기 산술논리 연산수단에 의한 상기 연산결과를 보유하는 제 2 레지스터와, 상기 제 2 레지스터에 보유되는 상기 연산결과를 1비트 좌시프트하여 출력하는 시프터와, 상기 미처리된 CRC 연산대상이 되는 데이터를 보유하는 메모리와, 상기 메모리로부터 전송된 상기 미처리된 CRC 연산대상이 되는 데이터 중의 일부를 보유하고 상기 보유된 데이터의 최상위비트의 값을 출력하는 동시에 상기 보유된 데이터를 1비트씩 좌시프트하는 시프트 레지스터로 구성된다.Specifically, the generating polynomial supplying means includes, for example, a first register for holding data representing the generating polynomial, and a selector for selectively outputting data representing the generating polynomial or the zero data, More specifically, for example, the means may include: a second register for holding the operation result by the arithmetic logic operation means; a shifter for shifting the operation result held in the second register by one bit to the left and outputting the shifted result; A memory for holding data to be subjected to the CRC operation and a memory for storing a part of the data to be subjected to the unprocessed CRC calculation sent from the memory and outputting a value of a most significant bit of the held data, And a shift register that shifts left by one bit.

이로 인하여 상기 생성다항식 공급수단에 보유시키는 생성다항식을 나타내는 데이터를 변경함으로써 여러가지 생성다항식을 유연하게 적용하기가 쉬워진다. 또 상기 산술논리 연산수단에 입력되며 생성다항식을 나타내는 데이터 또는 제로데이터의 선택이나, CRC 연산을 하는 연산데이터의 생성은 프로그램 명령의 실행에 의하지 않고 자동적으로 행해지므로 고속의 CRC 연산을 할 수 있다. 더구나 상기 생성다항식 공급수단, 공급수단 및 산술논리 연산수단은 주로 통상의 프로세서가 구비된 구성요소를 이용할 수 있으므로 CRC 연산장치를 포함하는 장치 전체의 회로규모의 증대를 작게 억제할 수 있다.This makes it easy to flexibly apply various generation polynomials by changing the data indicating the generation polynomial held in the generation polynomial supplying means. In addition, selection of data or zero data indicating the generator polynomial and input of the arithmetic logic operation means and generation of operation data for performing CRC operation are automatically performed irrespective of the execution of the program command, so that high-speed CRC operation can be performed. In addition, since the generator polynomial supply means, the supply means, and the arithmetic logic operation means can mainly use components provided with a normal processor, the increase in the circuit scale of the entire apparatus including the CRC calculation apparatus can be suppressed to a small extent.

또 연산명령실행 제어수단을 구비하고, 상기 연산명령실행 제어수단은 소정의 연산명령에 따라 상기 생성다항식 공급수단에 의한 상기 생성다항식을 나타내는 데이터 또는 제로데이터의 출력, 상기 연산데이터 공급수단에 의한 상기 연산데이터의 출력 및 상기 산술논리 연산수단에 의한 상기 배타적 논리합 연산의 실행을 제어하도록 구성된다.Wherein said calculation instruction execution control means includes means for outputting data or zero data indicating said generation polynomial by said generation polynomial supply means in accordance with a predetermined calculation instruction, And to control the output of the calculation data and the execution of the exclusive-OR calculation by the arithmetic logic calculation means.

상기 연산명령실행 제어수단은 소정의 연산명령에 따라 1회의 상기 산술논리 연산수단에 의한 상기 배타적 논리합 연산이 행해지기 위한 상기 생성다항식 공급수단, 상기 연산데이터 공급수단 및 상기 산술논리 연산수단에 의한 동작을 제어하도록 구성된다. Wherein said calculation instruction execution control means comprises: a generation polynomial supply means for performing the exclusive-OR computation by said arithmetic logic operation means one time in accordance with a predetermined operation instruction; an operation by said operation data supply means and said arithmetic logic operation means; .

또 소정의 연산명령에 따라 상기 미처리된 CRC 연산대상이 되는 데이터의 전부에 대하여 상기 산술논리 연산수단에 의한 상기 배타적 논리합 연산이 행해지기 위한 상기 생성다항식 공급수단, 상기 연산데이터 공급수단 및 상기 산술논리 연산수단에 의한 동작을 제어하도록 구성된다.Wherein said generation polynomial supply means, said calculation data supply means, and said arithmetic logic means for performing the exclusive-OR calculation by said arithmetic logic calculation means on all of the data to be subjected to said unprocessed CRC calculation in accordance with a predetermined calculation instruction, And to control the operation by the calculation means.

또 소정의 연산명령에 따라 상기 시프트 레지스터에 보유된 모든 비트의 값 에 대하여 상기 산술논리 연산수단에 의한 상기 배타적 논리합 연산이 행해지기 위한 상기 생성다항식 공급수단, 상기 연산데이터 공급수단 및 상기 산술논리 연산수단에 의한 동작을 제어하도록 구성된다.And the arithmetic logic operation means performs the exclusive-OR operation on the values of all the bits held in the shift register in accordance with a predetermined arithmetic operation instruction, the arithmetic data supply means and the arithmetic logic operation And to control operation by means.

이로 인하여 연산명령의 조합의 자유도를 높게 하여 CRC 연산처리의 유연성을 향상시키거나 적은 연산명령으로 CRC 연산처리의 고속성을 향상시킬 수 있다.As a result, it is possible to improve the flexibility of the CRC calculation processing by increasing the degree of freedom of the combination of the calculation instructions, or to improve the CRC calculation processing with the fewer calculation instructions.

또 상기 미처리된 CRC 연산대상이 되는 데이터의 전부에 대하여 상기 산술논리 연산수단에 의한 상기 배타적 논리합 연산이 행해진 후 상기 제 2 레지스터에 보유되어 있는 값을 상기 메모리에 저장하도록 구성된다.And to store, in the memory, a value held in the second register after the exclusive OR operation by the arithmetic logic unit is performed on all of the data to be subjected to the unprocessed CRC operation.

상기 미처리된 CRC 연산대상이 되는 데이터의 전부에 대하여 상기 산술논리 연산수단에 의한 상기 배타적 논리합 연산이 행해진 후 상기 제 2 레지스터에 보유된 값이 0인지의 여부에 따라 상기 미처리된 CRC 연산대상이 되는 데이터에 에러가 있는지의 여부를 판정하도록 구성된다.Wherein the CRC operation is performed on the basis of whether or not the value held in the second register is 0 after the exclusive OR operation by the arithmetic logic operation means is performed on all of the data to be subjected to the unprocessed CRC operation, And to determine whether or not there is an error in the data.

이로 인하여 CRC 부호화나 데이터의 에러 검출을 용이하게 할 수 있다.This makes it easy to perform CRC encoding and error detection of data.

또 상기 생성다항식 공급수단은 상기 생성다항식을 나타내는 데이터의 비트수가 상기 생성다항식 공급수단이 보유할 수 있는 비트수보다 적은 경우에 상기 생성다항식을 나타내는 데이터를 상위패딩으로 보유하는 동시에 하위비트에 O의 값을 보유하도록 구성된다.The generator polynomial supply means holds the data representing the generator polynomial in the upper padding when the number of bits of the data representing the generator polynomial is smaller than the number of bits that the generator polynomial supply means can hold, Value.

이로 인하여 생성다항식의 종류 뿐만아니라 그 비트수에 대해서도 적용되는 생성다항식의 유연성을 향상시킬 수 있다. This makes it possible to improve the flexibility of the generator polynomials applied to the number of bits as well as to the types of generator polynomials.

또 본 발명은 CRC 연산장치에 있어서, 생성다항식을 나타내는 데이터를 보유 하는 생성다항식 보유수단과, 생성다항식을 나타내는 데이터 및 CRC 연산대상이 되는 데이터에 기초하여 CRC 연산을 하는 CRC 연산수단을 구비하며, 상기 생성다항식을 나타내는 데이터의 비트수가 상기 생성다항식 보유수단이 보유할 수 있는 비트수보다 적은 경우에 상기 생성다항식 보유수단에 상기 생성다항식을 나타내는 데이터가 상위패딩으로 보유되는 동시에 하위비트에 O의 값이 보유되도록 구성되는 것을 특징으로 한다.In addition, the present invention provides a CRC arithmetic apparatus comprising generator polynomial holding means for holding data representing a generator polynomial, CRC arithmetic means for performing CRC arithmetic based on data representing a generator polynomial and data subjected to a CRC arithmetic operation, When the number of bits of data representing the generator polynomial is smaller than the number of bits that the generator polynomial holding means can hold, data indicating the generator polynomial is held in the generator polynomial holding means as upper padding, Is held.

이로 인하여 CRC 연산에 특화한 전용회로를 구성하는 경우라도 생성다항식의 종류 뿐만아니라 그 비트수에 대해서도 적용되는 생성다항식의 유연성을 높게 할 수 있다. This makes it possible to increase the flexibility of the generator polynomial to be applied to the number of bits of the generated polynomial as well as the type of the generated polynomial even when a dedicated circuit specialized for CRC calculation is constructed.

(제 1 실시예) (Embodiment 1)

본 발명의 실시예로서 DSP(digital signal processor) 등의 프로세서의 내부에 설치된 CRC 연산장치의 예를 도 1에 기초하여 설명한다. 이 장치는 일반적으로 DSP가 구비된 회로에 약간의 회로를 부가하여 구성된다. An example of a CRC calculation apparatus installed in a processor such as a DSP (digital signal processor) as an embodiment of the present invention will be described with reference to Fig. This device is generally constructed by adding a little circuit to a circuit equipped with a DSP.

도 1에 도시된 바와 같이 이 CRC 연산장치에는 임의의 생성다항식(을 나타내는 데이터)을 보유하고, 출력하는 생성다항식 공급부(11)(생성다항식 공급수단)와, 송수신 데이터에 기초하여 CRC 연산을 위한 연산데이터를 출력하는 연산데이터 공급부(21)(연산데이터 공급수단)와, 상기 생성다항식 공급부(11) 및 연산데이터 공급부(21)로부터 출력되는 생성다항식 및 연산데이터를 이용하여 CRC 연산을 하는 연산부(31)(산술논리 연산수단)와, 상기 각 부의 동작을 제어하는 연산명령 실행제어부(41)(연산명령실행 제어수단)가 설치된다. As shown in Fig. 1, the CRC arithmetic unit is provided with a generator polynomial supply unit 11 (generator polynomial supply unit) for holding and outputting an arbitrary generator polynomial, and a CRC generator 11 for generating CRC An arithmetic data supplying unit 21 for supplying arithmetic data and arithmetic operation unit for performing a CRC operation using the generated polynomial and arithmetic data output from the generating polynomial supplying unit 11 and the arithmetic data supplying unit 21 31 (arithmetic logic operation means), and an operation instruction execution control section 41 (operation instruction execution control means) for controlling the operation of each section.                     

상기 생성다항식 공급부(11)는 생성다항식이 저장되는 제 1 범용 레지스터(12)와, 상기 제 1 범용 레지스터(12)에 저장된 값(생성다항식) 또는 전체 비트의 값이 0인 데이터("0")를 선택하여 출력하는 셀렉터(13)를 구비한다. 상기 셀렉터(13)는 보다 자세하게는 후술하는 제 2 범용 레지스터(24)의 최상위 비트(MSB)의 값이 0일 때에는 " 0"을 선택하고 1일 때에는 제 1 범용 레지스터(12)에 저장된 생성다항식을 선택하도록 되어 있다. 또 상기 셀렉터(13)는 실제로는 제 1 범용 레지스터(12)의 각 비트의 값과 제 2 범용 레지스터(24)의 MSB의 값을 논리곱 연산하는 AND 회로열 등으로 구성해도 된다. The generator polynomial supply unit 11 includes a first general register 12 in which a generator polynomial is stored and a second polynomial in which the value stored in the first general register 12 (generator polynomial) And a selector 13 for selecting and outputting the data. More specifically, the selector 13 selects "0" when the value of the most significant bit (MSB) of the second general-purpose register 24 is 0, and when the value of the most significant bit (MSB) of the second general- As shown in FIG. The selector 13 may actually be constituted by an AND circuit column or the like which performs an AND operation between the value of each bit of the first general purpose register 12 and the value of the MSB of the second general purpose register 24. [

상기 연산데이터 공급부(21)는 메모리(22), 시프트 레지스터(23), 제 2 범용 레지스터(24) 및 배럴시프터(25)를 구비하여 구성된다. The operation data supply unit 21 includes a memory 22, a shift register 23, a second general purpose register 24, and a barrel shifter 25.

상기 메모리(22)에는 송수신 데이터가 저장된다. The memory 22 stores transmission / reception data.

상기 시프트 레지스터(23)는 1사이클의 CRC 연산마다 보유되어 있는 데이터의 MSB의 값을 연산데이터의 LSB의 값으로서 연산부(31)에 출력한 후 그 데이터를 1비트만큼 좌시프트하도록 되어 있다. 그리고 보유되어 있는 데이터의 모든 비트의 값이 출력되었을 때에는 다음 데이터가 메모리(22)로부터 전송된다. The shift register 23 outputs the value of the MSB of the data held for each cycle of the CRC operation to the arithmetic unit 31 as the LSB value of the arithmetic data, and then shifts the data leftward by one bit. When the value of all the bits of the held data is outputted, the next data is transferred from the memory 22.

상기 제 2 범용 레지스터(24)는 CRC 연산이 개시될 때 메모리(22)로부터 초기값으로서 전송된 데이터를 보유하는 동시에 그 후에는 1사이클의 CRC 연산마다 연산부(31)로부터 출력되는 연산결과의 데이터를 보유하도록 되어 있다. The second general purpose register 24 holds the data transferred from the memory 22 as an initial value when the CRC operation is started and at the same time stores the data of the operation result outputted from the operation unit 31 for each one cycle of CRC operation Respectively.

상기 배럴시프터(25)는 제 2 범용 레지스터(24)에 보유된 데이터를 1비트만큼 좌시프트한 후 그 LSB보다 상위비트의 값을 연산데이터의 LSB보다 상위비트의 값으로서 연산부(31)에 출력하도록 되어 있다. 또 상기와 같이 시프트 레지스터(23)의 MSB의 값이 연산부(31)에 직접 입력되는 대신 이 배럴시프터(25)에 입력되어 상기 좌시프트일 때에 연산데이터의 LSB의 값이 되도록 하여도 된다. The barrel shifter 25 left-shifts the data held in the second general-purpose register 24 by one bit, and outputs a value of an upper bit higher than the LSB to the arithmetic unit 31 as a value of a higher-order bit than the LSB of the operation data . The value of the MSB of the shift register 23 may be input to the barrel shifter 25 instead of directly inputting the value of the MSB of the shift register 23 to the value of the LSB of the operation data at the time of the left shift.

또 상기 연산부(31)는 산술논리연산기(32)를 구비하고, 상기 생성다항식 공급부(11)로부터 출력되는 생성다항식 또는 "0"과 상기 연산데이터 공급부(21)로부터 출력되는 연산데이터의 배타적 논리합 연산을 실행하도록 되어 있다. 그 연산결과의 데이터는 상기와 같이 제 2 범용 레지스터(24)에 저장된다. The operation unit 31 includes an arithmetic logic operator 32 and performs an exclusive OR operation on the generated polynomial or "0" output from the generator polynomial supply unit 11 and the operation data output from the operation data supply unit 21 . The data of the operation result is stored in the second general-purpose register 24 as described above.

상기 각부는 각각 예를 들면 M비트의 비트폭을 갖는다. Each of the parts has a bit width of, for example, M bits.

또 연산명령 실행제어부(41)는 프로그램으로서 주어지는 연산명령에 기초하여 DSP를 구성하는 각 부의 동작을 제어하는 동시에 CRC 연산에 관련되는 연산명령에 기초하여 주로 상기 각 부의 동작을 제어한다. The calculation instruction execution control section 41 mainly controls the operations of the respective sections constituting the DSP on the basis of the operation instructions given as the programs, and controls the operations of the respective sections mainly based on the operation instructions related to the CRC operation.

여기에서 상기 제 1 범용 레지스터(12), 메모리(22), 제 2 범용 레지스터(24), 배럴시프터(25) 및 산술논리연산기(32)는 통상 프로세서가 구비하고 있는 것을 이용할 수 있다. 즉 특히 CRC 연산을 위해 설치된 것은 주로 셀렉터(13), 시프트 레지스터(23), 상기 각 부 등과의 사이의 신호패스 및 연산명령 실행제어부(41)에서의 CRC 연산을 위한 제어기능을 갖는 부분이다. 그러므로 일반적인 프로세서에 이들의 구성요소를 부가하는 것 만으로 CRC 연산장치를 구성할 수 있고, CRC 연산장치 전체가 CRC 연산에 특화된 것이 아니기 때문에 DSP 등의 전체의 회로규모의 증가를 적게 억제할 수 있다. The first general purpose register 12, the memory 22, the second general purpose register 24, the barrel shifter 25, and the arithmetic logic unit 32 may be those provided by a processor. That is, in particular, it is a part having a control function for the CRC operation in the operation instruction execution control unit 41 and the signal path between the selector 13, the shift register 23, Therefore, it is possible to construct a CRC arithmetic unit only by adding these components to a general processor, and since the entire CRC arithmetic unit is not specialized in CRC arithmetic, the increase in the overall circuit scale of the DSP and the like can be suppressed to a small extent.

상기한 바와 같이 구성된 CRC 연산장치에서는 연산명령 실행제어부(41)에 주 어지는 연산명령에 따라 CRC 연산이 행해진다. 이하 그 동작에 대하여 도 2의 플로차트에 기초하여 설명한다(또 이하의 각 단계는 설명의 편의를 위한 것으로, 명령사이클이나 머신사이클과 반드시 1 대 1로 대응하는 것은 아니다).In the CRC calculation apparatus configured as described above, the CRC calculation is performed in accordance with the calculation instruction given to the calculation instruction execution control unit 41. [ Hereinafter, the operation will be described on the basis of the flowchart of Fig. 2 (and each of the following steps is for convenience of explanation, and does not necessarily correspond to a command cycle or a machine cycle on a one-to-one basis).

(단계 S1) 우선 전송명령에 의해 제 1 범용 레지스터(12)에 생성다항식이 설정된다. 여기에서 설정되는 생성다항식의 비트길이를 N으로 하면 N < M(M은 제 1 범용 레지스터(12)의 비트폭)이어도 된다. 그 경우에는 좌시프트명령 등에 의해 상위패딩되어 하위비트에 0이 매설된 값이 제 1 범용 레지스터(12)에 설정된다. (Step S1) The generator polynomial is set in the first general register 12 by the first transfer instruction. If the bit length of the generator polynomial set here is N, then N < M (M is the bit width of the first general purpose register 12). In this case, a value padded by high-order by a left shift instruction or the like and 0 is embedded in the lower bit is set in the first general purpose register 12.

(단계 S2) 마찬가지로 전송명령에 의해 메모리(22)에 저장된 송수신 데이터 중의 최초의 M비트의 데이터(초기데이터)가 제 2 범용 레지스터(24)에 설정된다. (Step S2) Similarly, the first M-bit data (initial data) in the transmission / reception data stored in the memory 22 is set in the second general-purpose register 24 by the transmission instruction.

(단계 S3) 또 전송명령에 의해 다음 M비트의 데이터(입력데이터 1∼X)가 시프트 레지스터(23)에 설정된다. (Step S3) The next M bits of data (input data 1 to X) are set in the shift register 23 by the transfer instruction.

(단계 S4) 다음으로 M사이클의 CRC연산 즉 시프트 레지스터(23)에 보유된 M비트의 송수신 데이터에 대응하는 CRC 연산이 실행된다. 더욱 자세하게는 다음과 같은 동작이 행해진다. (Step S4) Next, the CRC operation of the M cycle, that is, the CRC operation corresponding to the M-bit transmission / reception data held in the shift register 23, is executed. More specifically, the following operations are performed.

즉 산술논리연산기(32)는 제 2 범용 레지스터(24)에 보유된 값이 상기한 바와 같이 배럴시프터(25)로부터 시프트되어 출력되는 값 중의 상위 M-1비트의 값 및 시프트 레지스터(23)로부터 출력되는 MSB의 1비트의 값과의 합계 M비트의 연산데이터와 셀렉터(13)로부터 출력되는 M비트의 생성다항식(N비트와 0의 경우도 포함한다) 또는 전체 비트의 값이 0인 데이터와의 배타적 논리합연산을 하여, 연산결과의 데이터를 제 2 범용 레지스터(24)에 저장한다. 즉 1비트의 송수신 데이터에 대응하 는 1사이클의 CRC 연산이 행해진다. 또 시프트 레지스터(23)에 보유된 값이 1비트 좌시프트되고 LSB에는 0이 매설된다. 그리고 이들의 동작이 예를 들어 반복명령(계속되는 명령을 소정회수 반복하는 것을 나타내는 명령)과, CRC 연산명령의 조합에 의해 M회 반복된다. 이로 인하여 예를 들어 1사이클의 CRC 연산(및 시프트 레지스터(23)의 시프트동작을 1머신사이클로 행하게 하는 것도 가능하게 된다. 또 상기 반복명령과 CRC 연산명령의 조합에 의한 동작과 같은 동작을 단일 명령에 의해 행할 수 있도록 해도 된다. 또 처리속도는 늦어지지만 범용 레지스터에 값 M을 세트하여 1사이클의 CRC 연산마다 감소하여 값이 0이 될 때까지 CRC 연산을 반복하도록 해도 된다. That is, the arithmetic logic operator 32 determines whether the value held in the second general-purpose register 24 is the value of the upper M-1 bit among the values shifted out from the barrel shifter 25 as described above, (Including N bits and 0s) of the M bits output from the selector 13 and the data of which the value of the entire bit is 0 And the data of the operation result is stored in the second general-purpose register 24. The second general- That is, one cycle of CRC calculation corresponding to one-bit transmission / reception data. The value held in the shift register 23 is shifted left by 1 bit, and 0 is embedded in the LSB. These operations are repeated M times, for example, by a repetition instruction (instruction indicating repetition of a subsequent instruction a predetermined number of times) and a CRC operation instruction. This makes it possible, for example, to perform the CRC operation of one cycle (and the shift operation of the shift register 23 in one machine cycle), and the same operation as the operation by the combination of the repetitive instruction and the CRC operation instruction can be performed by a single instruction The CRC operation may be repeated until the value becomes 0 after the value M is set in the general register and decreased for each CRC operation of one cycle.

(단계 S5) M사이클의 CRC 연산이 종료되면 메모리(22)에 보유된 나머지 송수신 데이터가 최종데이터인지의 여부(나머지가 M비트 이하인지의 여부)가 판정된다. 이 판정은 구체적으로는 예를 들어 메모리(22)로부터 시프트 레지스터(23)에 전송되는 송수신 데이터의 어드레스를 나타내는 도시하지 않는 포인터의 값이 최종데이터의 어드레스가 되었는지의 여부가 판정되도록 해도 되고, M사이클의 CRC 연산의 회수를 카운트(다운카운트)하고 송수신 데이터의 전체 비트수 K에서 M을 감산하여 정수의 M으로 나눈 몫 X, (Step S5) When the CRC calculation of the M cycle is completed, it is determined whether or not the remaining transmission / reception data held in the memory 22 is the final data (whether or not the remaining transmission / reception data is M bits or less). Specifically, for example, it may be determined whether or not the value of a pointer (not shown) indicating the address of the transmission / reception data transmitted from the memory 22 to the shift register 23 is the address of the final data. Counts (counts down) the number of CRC calculations in the cycle, subtracts M from the total number of bits K of the transmission / reception data, divides the integer X by M,

X=int((K-M)/M) X = int ((K-M) / M)

의 횟수만큼 반복되었는지의 여부가 판정되도록 해도 된다. 또 상기 CRC 연산횟수의 카운트나 판정은 프로그램 명령에 의해 행해지도록 해도 되고, 하드웨어에 의해 자동적으로 행해지도록 해도 된다(또 상기 K에서 M이 감산되는 것은 최초의 M비트 는 초기데이터로서 제 2 범용 레지스터(24)에 설정되기 때문이다). 메모리(22)에 남아 있는 것이 최종데이터가 아니면 상기 단계 S3∼S5가 반복된다. It may be determined whether or not the number of times of repetition is equal to the number of repetition times. Further, the count or the determination of the number of times of the CRC operation may be performed by a program instruction or may be automatically performed by hardware (and in the case where M is subtracted from K, the first M bits are used as initial data, (24). If it is not the last data remaining in the memory 22, the above steps S3 to S5 are repeated.

(단계 S6) 상기 단계 S6에서 메모리(22)에 남아 있는 송수신 데이터가 최종데이터라고 판정되면 그 최종데이터가 시프트 레지스터(23)에 전송된다. 여기에서 최종데이터의 비트수는 도 3에 도시된 바와 같이 송수신 데이터의 전체 비트수 K에서 M을 감산하여 M으로 나눈 나머지 L, 즉(Step S6) If the transmission / reception data remaining in the memory 22 in the step S6 is determined as the final data, the final data is transferred to the shift register 23. [ Here, as shown in FIG. 3, the number of bits of the final data is the sum of the total number of bits K of the transmission / reception data,

L=(K-M)modM L = (K-M) mod M

이다. 이 나머지 L은 M보다 작으므로 최종데이터는 시프트 레지스터(23)에 상위패딩으로 설정되고 하위비트에 O이 매설된다. to be. Since the remaining L is smaller than M, the final data is set to the upper padding in the shift register 23 and O is embedded in the lower bits.

(단계 S7) 마지막으로 상기 단계 S4와 마찬가지로 M + L 사이클의 CRC 연산이 행해진다. 이로 인하여 전부 M ×X + M + L = K 사이클의 CRC 연산이 행해진다 (또 최종 CRC 연산의 단계수에 있어서 나머지 L에 산술논리연산기(32)의 비트폭 M이 가산되는 것은 송수신 데이터의 마지막 비트가 산술논리연산기(32)의 MSB보다 1개의 상위비트로 시프트될 때까지 연산을 반복하기 때문이다. 이것은 송수신 데이터를 2의 N승배하여 그 LSB까지 CRC 연산을 하는 것에 상당한다). 따라서 단계 S7에서 M + L 사이클(전부 합계는 상기한 바와 같이 K 사이클)의 CRC 연산이 종료되었을 때 제 2 범용 레지스터(24)에 보유되어 있는 값이 송수신 데이터 전체에 대한 CRC 연산결과가 된다. 따라서 송신의 경우에는 이 제 2 범용 레지스터(24)에 보유되어 있는 값이 예를 들어 일단 메모리(22)에 저장되어 송신데이터에 부가됨으로써 CRC 부호화된 송신데이터가 된다. 또 수신의 경우에는 이 제 2 범용 레지스터(24) 에 보유되어 있는 값이 0인지의 여부를 판단함으로써 구체적으로는 예를 들어 제 2 범용 레지스터(24)에 보유된 값과 전체 비트의 값이 0인 제로데이터의 배타적 논리합 연산을 하여 도시하지 않는 제로플래그 레지스터가 세트되는지의 여부 등으로 수신된 데이터에 에러가 없는지의 여부를 판정할 수 있다. (Step S7) Finally, the CRC calculation of the M + L cycle is performed as in the step S4. (And the bit length M of the arithmetic logic operator 32 is added to the remaining L in the number of stages of the final CRC operation) is the end of the transmission / reception data This is because it repeats the operation until the bit is shifted to one higher bit than the MSB of the arithmetic logic operator 32. This corresponds to performing the CRC operation up to the LSB by multiplying the transmit / receive data by 2). Therefore, the value held in the second general-purpose register 24 when the CRC operation of the M + L cycles (all of the K cycles as described above) is completed in step S7 results in the CRC operation on the whole transmission / reception data. Therefore, in the case of transmission, the value held in the second general-purpose register 24 is stored in the memory 22 and added to the transmission data, for example, to become CRC-coded transmission data. In the case of reception, it is judged whether or not the value held in the second general-purpose register 24 is 0. Specifically, for example, if the value held in the second general-purpose register 24 and the value of the whole bit are 0 It is possible to determine whether or not there is an error in the received data by performing an exclusive-OR operation of the in-zero data and determining whether or not a zero flag register (not shown) is set.

다음으로 상기 동작에 대하여 도 4 및 도 5에 기초하여 구체적인 데이터예를 들어 설명한다. Next, the above operation will be described with reference to specific data examples based on Fig. 4 and Fig.

우선 부호화의 예에 대하여 설명한다. 이 예에서는 도 4에 도시된 바와 같이 부호화 전의 송신데이터가「100000110101(2진 표현)」(비트수 K = 12), 생성다항식이「10101(2진 표현)」 (비트수 N = 5)로 한다. 이 경우 5사이클의 CRC 연산의 반복 횟수 X는, First, an example of encoding will be described. In this example, as shown in Fig. 4, when the transmission data before encoding is "100000110101 (binary representation)" (bit number K = 12) and the generation polynomial is "10101 (binary representation) do. In this case, the repetition number X of the CRC calculation in the 5th cycle is

X = int((K-M)/M) = int((12-5)/5) = 1회,X = int ((K-M) / M) = int ((12-5) / 5) = 1,

최종데이터의 비트수 L은, The number of bits L of the final data,

L = (K-M)modM = (12-5)mod5 = 2,L = (K-M) mod M = (12-5) mod 5 = 2,

또 최종 CRC 연산의 사이클수는, In addition, the number of cycles of the final CRC calculation is

M+L = 5+2 = 7 M + L = 5 + 2 = 7

이다. to be.

(1) CRC 연산이 시작될 때에는 제 1 범용 레지스터(12)에 상기 생성다항식「10101」이 설정되는 동시에 제 2 범용 레지스터(24)에 송신데이터의 최초의 5비트의 값「10000」이 설정되고, 시프트 레지스터(23)에는 계속되는 5비트의 값「01101」이 설정된다. (1) When the CRC operation is started, the generator polynomial "10101" is set in the first general purpose register 12 and the value "10000" of the first 5 bits of the transmission data is set in the second general purpose register 24, The 5-bit value &quot; 01101 &quot; is set in the shift register 23.                     

(2) 최초의 CRC 연산사이클 1에서는 제 2 범용 레지스터(24)의 MSB의 값이 「1」이므로 셀렉터(13)에 의해 생성다항식「10101」이 선택되고, 그 생성다항식과 제 2 범용 레지스터(24)의 MSB보다 하위의 4비트(정확하게는 배럴시프터(25)에 의해 좌시프트된 후의 LSB보다 상위의 4비트)의 값「0000」 및 시프트 레지스터(23)의 MSB의 값「0」이 산술논리연산기(32)에 의해 배타적 논리합 연산된다. 그 연산결과는「10101」이 되고 이 연산결과는 제 2 범용 레지스터(24)에 저장된다. (2) In the first CRC operation cycle 1, since the value of the MSB of the second general-purpose register 24 is "1", the generator polynomial "10101" is selected by the selector 13 and the generator polynomial and the second general register 0000 &quot; of the MSB of the shift register 23 and the value &quot; 0 &quot; of the MSB of the shift register 23 are mapped to four bits (more precisely, four bits higher than the LSB after being shifted left by the barrel shifter 25) And the exclusive OR operation is performed by the logical operator 32. [ The operation result is &quot; 10101 &quot;, and the operation result is stored in the second general purpose register 24. [

(3) 또 시프트 레지스터(23)에 보유된 값은 1비트 좌시프트된다. 여기에서 도 4에서는 LSB에 매설되는 값은 O으로 되어 있으나 이것은 O가 아니어도 된다(이것에 대하여 최종 CRC 연산에서는 송신데이터를 2의 N승배하는 것에 대응시키기 위해 0이 매설될 필요가 있다).(3) The value held in the shift register 23 is shifted left by one bit. In FIG. 4, the value embedded in the LSB is 0, but it does not have to be 0 (in contrast, in the final CRC calculation, it is necessary to embed 0 in order to correspond to the N-folding of the transmission data by 2).

(4) 이하 동일한 동작이 반복되고, 5사이클의 CRC 연산이 종료되면 메모리(22)에 저장되어 있는 2비트의 최종데이터「01」이 시프트 레지스터(23)에 상위패딩으로 하위비트에 0이 매설되어 전송된다. 이하 최종 CRC 연산으로 상기 (2), (3)과 같은 동작이 7사이클 반복된다. (4) Hereinafter, the same operation is repeated. When the 5-cycle CRC operation is completed, the 2-bit final data "01" stored in the memory 22 is stored in the shift register 23 as upper padding and 0 And transmitted. The operations of (2) and (3) above are repeated for 7 cycles in the final CRC calculation.

(5) 최종 CRC 연산이 종료되었을 때 제 2 범용 레지스터(24)에 보유되어 있는 값「00010」이 CRC 연산결과이다. 따라서 도 5에 도시된 바와 같이 원래의 송신데이터의 말미에 상기 CRC 연산결과가 에러검출부호로서 부가되고 17비트의 부호화 데이터(「10000011010100010」)가 된다. (5) The value &quot; 00010 &quot; held in the second general-purpose register 24 when the last CRC operation is terminated is a CRC operation result. Therefore, as shown in Fig. 5, the result of the CRC calculation is added as the error detection code at the end of the original transmission data, and 17-bit coded data (&quot; 10000011010100010 &quot;) is obtained.

한편 상기한 바와 같이 하여 부호화된 데이터의 복호가 행해지는 경우의 동작은 도 5에 도시된 바와 같이 상기 부호화의 경우의 (1)∼(4)와 마찬가지이다. 이 복호에 의해 CRC 연산결과가 도 5에 도시된 바와 같이 「00000」이 되면 데이터에 에러가 없다고 판정된다. On the other hand, the operation in the case of decoding the coded data as described above is the same as (1) to (4) in the case of the encoding as shown in Fig. When this CRC calculation result is "00000" as shown in FIG. 5, it is determined that there is no error in the data.

여기에서 이 예에서는 상기한 바와 같이 에러검출부호가 부가되어 데이터의 비트길이가 17비트로 되어 있으므로 5사이클의 CRC 연산의 반복횟수 X는,Here, in this example, since the error detection code is added as described above and the bit length of the data is 17 bits, the repetition number X of the 5-cycle CRC operation is

X = int((K-M)/M) = int((17-5)/5) = 2회,X = int ((K-M) / M) = int ((17-5) / 5)

최종데이터의 비트수 L은, The number of bits L of the final data,

L = (K-M)modM = (17-5)mod5 = 2가 된다.L = (K-M) mod M = (17-5) mod5 = 2.

또 최종 CRC 연산의 사이클수는, In addition, the number of cycles of the final CRC calculation is

M+L = 5+2 = 7 M + L = 5 + 2 = 7

이지만 도 5에 도시된 바와 같이 최종데이터의 비트수 L과 같은 2사이클의 CRC 연산을 한 시점에서 나머지가 0으로 되어 있으면 그 후의 나머지도 O인 채로 되고, 나머지가 0으로 되어 있지 않으면 그 후에 0이 되는 경우도 없으므로 2사이클에서 동작을 정지시켜도 결과는 같다. 단 상기한 바와 같이 7 사이클 반복되도록 하여, 즉 부호화와 복호에서 같은 동작이 행해지도록 하여 구성의 간소화를 도모하도록 해도 된다. 5, if the remainder is 0 at the time of performing the CRC operation of 2 cycles, which is the same as the number of bits of the final data L, the remainder after the CRC operation is 0, and if the remainder is not 0, The result is the same even if the operation is stopped in two cycles. However, seven cycles may be repeated as described above, that is, the same operation may be performed in encoding and decoding, thereby simplifying the configuration.

또 상기의 예에서는 각 구성요소의 비트폭이 서로 같은 예를 나타내었으나, 이것에 한정되지 않고 예를 들어 제 1 범용 레지스터(12) 및 산술논리연산기(32)와 그 밖의 구성요소에서 비트폭이 다르도록 하거나 제 1 범용 레지스터(12) 등과 산술논리연산기(32)에서 비트폭이 다르도록 해도 된다. In the above example, the bit widths of the respective constituent elements are the same, but the present invention is not limited thereto. For example, in the first general purpose register 12 and the arithmetic logic operator 32 and other constituent elements, Or the bit width may be different between the first general purpose register 12 and the like and the arithmetic logic operator 32. [

또 송수신 데이터는 메모리(22)에 저장되는 예를 나타내었으나 예를 들어 수 신데이터가 직렬데이터로서 입력되는 경우에는 시프트 레지스터(23)를 설치하지 않고, 수신데이터가 버퍼(FIFO ; first in first out)로부터 직접 제 2 범용 레지스터(24)나 산술논리연산기(32)에 공급되도록 해도 된다. For example, in the case where received data is input as serial data, the received data may be stored in a buffer (first in first out (FIFO)) without installing the shift register 23, To the second general-purpose register 24 or to the arithmetic logic unit 32 directly.

또 상기 CRC 연산장치에서 배럴시프터(25)는 입력되는 데이터를 1비트 시프트시킬 뿐이므로 사이클 시간에 여유가 있는 경우 등에는 시프트 레지스터를 이용할 수도 있다. Since the barrel shifter 25 only shifts the input data by one bit in the CRC arithmetic unit, a shift register may be used when there is a margin in the cycle time.

또 제 2 범용 레지스터(24) 대신에 CRC 연산 전용의 레지스터를 설치하는 경우에는 입출력을 1비트 어긋나게 함으로써 배럴시프터(25)를 이용하지 않도록 할 수도 있다. When a register dedicated to the CRC operation is provided in place of the second general-purpose register 24, the barrel shifter 25 may not be used by shifting the input / output by one bit.

또 제 1 범용 레지스터(12)나 제 2 범용 레지스터(24) 대신에 메모리를 이용하도록 할 수도 있다.It is also possible to use a memory instead of the first general purpose register 12 or the second general purpose register 24.

또 셀렉터(13)의 교체제어는 상기한 바와 같이 제 2 범용 레지스터(24)의 MSB의 값에 따라 행하는 것에 한정되지 않고, 산술논리연산기(32)에 의해 배타적 논리합 연산이 행해질 때 그 연산결과의 MSB의 값을 보유하는 플래그 레지스터를 설치하고, 그 플래그 레지스터에 보유되는 값에 따라 제어해도 된다. 또 이 경우에 최초 1사이클의 CRC 연산이 행해질 때에는 일단 배럴시프터(25)에서 좌시프트시키지 않고(또는 25를 바이패스시켜) 산술논리연산기(32)에 입력시키도록 하면 최초의 플래그 레지스터의 값을 설정할 수 있다. The selection control of the selector 13 is not limited to the execution according to the value of the MSB of the second general-purpose register 24 as described above. When the exclusive-OR operation is performed by the arithmetic logic operator 32, A flag register holding the MSB value may be provided and controlled according to the value held in the flag register. In this case, when the CRC operation of the first one cycle is performed, the value of the first flag register is set to the first value in the arithmetic logic operator 32 without performing a left shift (or by bypassing 25) in the barrel shifter 25 Can be set.

또 송수신 데이터의 모든 비트에 관한 상기와 같은 일련의 CRC 연산이 연산명령 실행제어부(41)에 내장된 마이크로 프로그램에 의해 실행되도록 하여 1 또는 소수의 프로그램 명령으로 CRC 연산을 지시할 수 있도록 해도 된다. In addition, the above-described series of CRC calculations on all bits of the transmission / reception data may be executed by the microprogram built in the operation instruction execution control unit 41 so that the CRC operation can be instructed by one or a small number of program instructions.

(제 2 실시예) (Second Embodiment)

제 2 실시예로서 생성다항식 설정레지스터를 포함하는 하드웨어에 의해 구성되고, 임의의 비트길이의 생성다항식을 적용할 수 있는 CRC 연산장치의 예를 설명한다. As an example of the second embodiment, an example of a CRC arithmetic unit configured by hardware including a generator polynomial setting register and capable of applying a generator polynomial of arbitrary bit length will be described.

이 CRC 연산장치는 도 6에 도시된 바와 같이 CRC 연산부(51)와 생성다항식 공급부(61)를 구비한다. This CRC calculation apparatus has a CRC calculation unit 51 and a generator polynomial supply unit 61 as shown in FIG.

상기 CRC 연산부(51)(CRC 연산수단)는 소정의 M단(M비트분)의 D형 플립플롭(52...)이 배타적 논리합 게이트(53...)를 통해 접속되어 구성된다. 이 CRC 연산부(51)는 연산데이터가 1비트씩 입력됨으로써 CRC 연산을 행하도록 되어 있다. 연산결과의 몫은 최후단의 D형 플립플롭(52)으로부터 차례로 출력되고, 나머지는 CRC 연산이 종료한 시점에서 각 D형 플립플롭(52)으로부터 출력된다. The CRC arithmetic unit 51 (CRC arithmetic means) is constituted by connecting predetermined D-type flip-flops 52 for M stages (for M bits) through exclusive OR gates 53 .... The CRC operation unit 51 performs CRC operation by inputting operation data one bit at a time. The quotient of the calculation result is sequentially output from the last-stage D-type flip-flop 52, and the rest is output from each D-type flip-flop 52 at the time when the CRC calculation is completed.

또 생성다항식 공급부(61)는 생성다항식이 저장되는 M비트폭의 생성다항식 설정 레지스터(62)(생성다항식 보유수단)와, 셀렉터(63)와, 상위패딩부(64)를 구비한다. 상기 셀렉터(63)는 최후단의 D형 플립플롭(52)으로부터의 출력에 따라 상기 제 1 실시예의 셀렉터(13)와 마찬가지로 생성다항식 설정 레지스터(62)에 저장된 값(생성다항식) 또는 전체 비트의 값이 0인 데이터("0")를 출력하게 되어 있다. 또한 상위패딩부(64)는 적용되는 생성다항식의 비트수 N이 생성다항식 설정 레지스터(62)의 비트폭 M보다 작을 때 생성다항식이 상위패딩되어 하위비트에 O이 매설된 값을 생성다항식 설정레지스터(62)에 저장하도록 되어 있다. 구체적으로는 예를 들어 시프트 레지스터에 의해 좌시프트하도록 해도 되고, 프로그램의 시프트명령 등에 의해 좌시프트하도록 해도 된다. 또 상기 상위패딩부(64)를 설치하는 대신 미리 상위패딩된 생성다항식을 입력하도록 해도 된다. The generator polynomial supply unit 61 includes a generator polynomial setting register 62 (generator polynomial holding means) of M bits wide in which the generator polynomial is stored, a selector 63, and an upper padding unit 64. The selector 63 selects the value (generator polynomial) stored in the generator polynomial setting register 62 or the value of all bits of the all-bits stored in the generator polynomial setting register 62 in the same manner as the selector 13 of the first embodiment in accordance with the output from the D- ("0") whose value is zero. When the number N of bits of the generator polynomial to be applied is smaller than the bit width M of the generator polynomial setting register 62, the upper padding unit 64 high-padds the generator polynomial, (62). Specifically, for example, it may be left-shifted by a shift register, or left-shifted by a shift instruction of a program or the like. Instead of providing the upper padding unit 64, a higher-padded generation polynomial may be input in advance.

상기한 바와 같이 구성됨으로써 생성다항식의 비트수 N이 생성다항식 설정레지스터(62)의 비트폭 M보다 작은 경우 상위의 N비트보다 하위비트에 대해서는 생성다항식 설정레지스터(62)에 0이 매설되어 있으므로 최후단의 D형 플립플롭(52)으로부터의 출력에 관계없이 셀렉터(63)에서는 0이 출력된다. 따라서 상기 하위비트에 대응하는 배타적 논리합 게이트(53)로부터는 전단의 D형 플립플롭(52)으로부터 출력되는 값과 같은 값이 출력되므로 생성다항식의 비트수와 생성다항식 설정레지스터(62)의 비트폭과, D형 플립플롭(52)의 단수가 서로 같은 경우와 같은 결과가 얻어진다. 따라서 비트수에 관해서도 적용되는 생성다항식의 유연성을 향상시킬 수 있다. When the number of bits N of the generator polynomial is smaller than the bit width M of the generator polynomial setting register 62, 0 is embedded in the generator polynomial setting register 62 for the lower bits than the N bits of the generator polynomial, The selector 63 outputs 0 regardless of the output from the D-type flip-flop 52 at the stage. Therefore, since the same value as the value output from the previous D-type flip-flop 52 is outputted from the exclusive OR gate 53 corresponding to the lower bit, the number of bits of the generator polynomial and the bit width of the generator polynomial setting register 62 And the number of stages of the D-type flip-flop 52 are equal to each other. Therefore, the flexibility of the generator polynomial that is applied to the number of bits can be improved.

이상과 같이 본 발명에 의하면 통상적으로 프로세서 등이 구비하는 구성요소를 이용할 수 있도록 함으로써 대폭적인 회로규모의 증가를 초래하지 않고 고속의 CRC 연산을 행할 수 있으며 여러가지 생성다항식을 유연하게 적용할 수 있는 효과를 얻을 수 있다. As described above, according to the present invention, it is possible to use a constituent element of a processor or the like in general, so that it is possible to perform a high-speed CRC operation without causing a significant increase in circuit scale and to apply various generation polynomials flexibly Can be obtained.

Claims (11)

생성다항식을 나타내는 데이터를 보유하고, 상기 생성다항식을 나타내는 데이터와 전체 비트의 값이 O인 제로데이터를 선택적으로 출력하는 생성다항식 공급수단과, Generating polynomial supplying means for holding data representing a generating polynomial and selectively outputting data indicating the generating polynomial and zero data having a value of all bits O, CRC 연산을 하는 연산데이터를 출력하는 연산데이터 공급수단과, A calculation data supply means for outputting calculation data for performing a CRC calculation; 상기 생성다항식을 나타내는 데이터 또는 제로데이터와, 상기 연산데이터의 배타적 논리합연산을 하는 산술논리 연산수단을 구비하며, And arithmetic and logic operation means for performing an exclusive OR operation on the data or zero data indicating the generation polynomial and the operation data, 상기 생성다항식 공급수단은 상기 산술논리 연산수단에 의한 연산결과의 최상위비트의 값에 따라 상기 생성다항식을 나타내는 데이터와 제로데이터를 선택하도록 구성되고, Wherein the generating polynomial supplying means is configured to select data representing the generating polynomial and zero data according to a value of a most significant bit of a calculation result by the arithmetic logic calculating means, 상기 연산데이터 공급수단은 상기 산술논리 연산수단에 의한 연산결과의 최상위비트보다 하위비트의 값을 상위비트의 값으로 하고, 미처리된 CRC 연산대상이 되는 데이터의 최상위비트의 값을 최하위비트의 값으로 하는 데이터를 상기 연산데이터로서 출력하도록 구성되는 것을 특징으로 하는 CRC 연산장치. Wherein the operation data supply means sets the lower bit value to a higher bit value than the most significant bit of the arithmetic logic operation result by the arithmetic logic operation means and sets the value of the most significant bit of the data subject to the unprocessed CRC operation as the value of the least significant bit And outputs the data as the operation data. 제 1항에 있어서,The method according to claim 1, 상기 생성다항식 공급수단은, Wherein the generating polynomial supplying means comprises: 상기 생성다항식을 나타내는 데이터를 보유하는 제 1 레지스터와, A first register for holding data representing the generator polynomial, 상기 생성다항식을 나타내는 데이터 또는 상기 제로데이터를 선택적으로 출 력하는 셀렉터를 구비하며, And a selector for selectively outputting data representing the generation polynomial or the zero data, 상기 연산데이터 공급수단은, Wherein said calculation data supply means comprises: 상기 산술논리 연산수단에 의한 상기 연산결과를 보유하는 제 2 레지스터와, A second register for holding the operation result by the arithmetic logic unit, 상기 제 2 레지스터에 보유되는 상기 연산결과를 1비트 좌시프트하여 출력하는 시프터와, A shifter shifting the result of the operation held in the second register by one bit to the left, 상기 미처리된 CRC 연산대상이 되는 데이터를 보유하는 메모리와, A memory for holding the data to be subjected to the unprocessed CRC calculation; 상기 메모리로부터 전송된 상기 미처리된 CRC 연산대상이 되는 데이터 중의 일부를 보유하고 상기 보유된 데이터의 최상위비트의 값을 출력하는 동시에 상기 보유된 데이터를 1비트씩 좌시프트하는 시프트 레지스터를 구비하는 것을 특징으로 하는 CRC 연산장치. And a shift register for holding a part of the data to be subjected to the unprocessed CRC calculation sent from the memory and for outputting the value of the most significant bit of the held data and for shifting the held data leftward by one bit CRC calculation unit. 제 1항에 있어서,The method according to claim 1, 연산명령실행 제어수단을 구비하고, 상기 연산명령실행 제어수단은 소정의 연산명령에 따라 상기 생성다항식 공급수단에 의한 상기 생성다항식을 나타내는 데이터 또는 제로데이터의 출력, 상기 연산데이터 공급수단에 의한 상기 연산데이터의 출력 및 상기 산술논리 연산수단에 의한 상기 배타적 논리합 연산의 실행을 제어하도록 구성되는 것을 특징으로 하는 CRC 연산장치. Wherein said calculation instruction execution control means includes means for outputting data or zero data indicating said generation polynomial by said generation polynomial supply means in accordance with a predetermined calculation instruction, And outputs the data and the execution of the exclusive-OR operation by the arithmetic logic operation means. 제 3항에 있어서,The method of claim 3, 상기 연산명령실행 제어수단은 소정의 연산명령에 따라 1회의 상기 산술논리 연산수단에 의한 상기 배타적 논리합 연산이 행해지기 위한 상기 생성다항식 공급수단, 상기 연산데이터 공급수단 및 상기 산술논리 연산수단에 의한 동작을 제어하도록 구성되는 것을 특징으로 하는 CRC 연산장치. Wherein said calculation instruction execution control means comprises: a generation polynomial supply means for performing the exclusive-OR computation by said arithmetic logic operation means one time in accordance with a predetermined operation instruction; an operation by said operation data supply means and said arithmetic logic operation means; To the CRC calculation unit. 제 3항에 있어서,The method of claim 3, 상기 연산명령실행 제어수단은 소정의 연산명령에 따라 상기 미처리된 CRC 연산대상이 되는 데이터의 전부에 대하여 상기 산술논리 연산수단에 의한 상기 배타적 논리합 연산이 행해지기 위한 상기 생성다항식 공급수단, 상기 연산데이터 공급수단 및 상기 산술논리 연산수단에 의한 동작을 제어하도록 구성되는 것을 특징으로 하는 CRC 연산장치. Wherein the calculation instruction execution control means comprises the generating polynomial supply means for performing the exclusive OR operation by the arithmetic logic operation means on all of the data to be subjected to the unprocessed CRC operation in accordance with a predetermined operation instruction, And the operation by the supply means and the arithmetic logic operation means. 제 2항에 있어서,3. The method of claim 2, 연산명령실행 제어수단을 구비하며, 상기 연산명령실행 제어수단은 소정의 연산명령에 따라 상기 시프트 레지스터에 보유된 모든 비트의 값에 대하여 상기 산술논리 연산수단에 의한 상기 배타적 논리합 연산이 행해지기 위한 상기 생성다항식 공급수단, 상기 연산데이터 공급수단 및 상기 산술논리 연산수단에 의한 동작을 제어하도록 구성되는 것을 특징으로 하는 CRC 연산장치. Wherein said arithmetic instruction execution control means includes means for executing said exclusive OR operation by said arithmetic logic operation means on the values of all bits held in said shift register in accordance with a predetermined arithmetic instruction, A generating polynomial supplying means, an operation data supplying means, and the arithmetic logic operating means. 제 2항에 있어서,3. The method of claim 2, 상기 미처리된 CRC 연산대상이 되는 데이터의 전부에 대하여 상기 산술논리 연산수단에 의한 상기 배타적 논리합 연산이 행해진 후 상기 제 2 레지스터에 보유되어 있는 값을 상기 메모리에 저장하도록 구성되는 것을 특징으로 하는 CRC 연산장치. And stores the value held in the second register in the memory after the exclusive OR operation by the arithmetic logic operation means is performed for all of the data to be subjected to the unprocessed CRC operation. Device. 제 2항에 있어서,3. The method of claim 2, 상기 미처리된 CRC 연산대상이 되는 데이터의 전부에 대하여 상기 산술논리 연산수단에 의한 상기 배타적 논리합 연산이 행해진 후 상기 제 2 레지스터에 보유된 값이 0인지의 여부에 따라 상기 미처리된 CRC 연산대상이 되는 데이터에 에러가 있는지의 여부를 판정하도록 구성되는 것을 특징으로 하는 CRC 연산장치. Wherein the CRC operation is performed on the basis of whether or not the value held in the second register is 0 after the exclusive OR operation by the arithmetic logic operation means is performed on all of the data to be subjected to the unprocessed CRC operation, And to determine whether or not there is an error in the data. 제 1항에 있어서,The method according to claim 1, 상기 생성다항식 공급수단은 상기 생성다항식을 나타내는 데이터의 비트수가 상기 생성다항식 공급수단이 보유할 수 있는 비트수보다 적은 경우에 상기 생성다항식을 나타내는 데이터를 상위패딩으로 보유하는 동시에 하위비트에 O의 값을 보유하도록 구성되는 것을 특징으로 하는 CRC 연산장치. Wherein the generator polynomial supply means holds data representing the generator polynomial in an upper padding when the number of bits of data representing the generator polynomial is smaller than the number of bits that the generator polynomial supply means can hold, The CRC calculation unit comprising: 생성다항식을 나타내는 데이터를 보유하는 생성다항식 보유수단과, Generating polynomial holding means for holding data representing a generating polynomial, 생성다항식을 나타내는 데이터 및 CRC 연산대상이 되는 데이터에 기초하여 CRC 연산을 하는 CRC 연산수단을 구비하며, And CRC calculation means for performing a CRC calculation based on data indicating a generation polynomial and data to be CRC calculated, 상기 생성다항식을 나타내는 데이터의 비트수가 상기 생성다항식 보유수단이 보유할 수 있는 비트수보다 적은 경우에 상기 생성다항식 보유수단에 상기 생성다항식을 나타내는 데이터가 상위패딩으로 보유되는 동시에 하위비트에 O의 값이 보유되도록 구성되는 것을 특징으로 하는 CRC 연산장치. When the number of bits of data representing the generator polynomial is smaller than the number of bits that the generator polynomial holding means can hold, data indicating the generator polynomial is held in the generator polynomial holding means as upper padding, The CRC calculation unit is configured to hold the CRC calculation result. 생성다항식을 나타내는 데이터와 전체 비트의 값이 O인 제로데이터를 선택적으로 출력하는 생성다항식 공급단계와, A generating polynomial supplying step of selectively outputting data indicating a generating polynomial and zero data having a value of all bits of 0, CRC 연산을 하는 연산데이터를 출력하는 연산데이터 공급단계와, An operation data supply step of outputting operation data for performing a CRC operation; 상기 생성다항식을 나타내는 데이터 또는 제로데이터와, 상기 연산데이터와의 배타적 논리합연산을 하는 산술논리 연산단계를 구비하고, And an arithmetic and logic operation step of carrying out an exclusive logical OR operation of the data or zero data representing the generation polynomial and the operation data, 상기 생성다항식 공급단계는 선행하는 상기 산술논리 연산단계에 의한 연산결과의 최상위비트의 값에 따라 상기 생성다항식을 나타내는 데이터 또는 제로데이터를 선택하며, Wherein the generator polynomial supplying step selects data or zero data representing the generator polynomial according to a value of a most significant bit of an operation result by the arithmetic logic operation step preceding, 상기 연산데이터 공급단계는 상기 산술논리 연산단계에 의한 연산결과의 최상위비트보다 하위비트의 값을 상위비트의 값으로 하고 미처리된 CRC 연산대상이 되는 데이터의 최상위비트의 값을 최하위비트의 값으로 하는 데이터를 상기 연산 데이터로서 출력하는 것을 특징으로 하는 CRC 연산방법. Wherein the operation data supply step sets a lower bit value to a value of a higher bit than a most significant bit of the operation result by the arithmetic logic operation step and sets a value of a most significant bit of data to be subjected to an unprocessed CRC operation as a value of a least significant bit And outputs the data as the operation data.
KR1020010019804A 2000-04-14 2001-04-13 Crc operation unit and crc operation method KR100745863B1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP??2000-113734 2000-04-14
JP2000113734 2000-04-14

Publications (2)

Publication Number Publication Date
KR20010098575A KR20010098575A (en) 2001-11-08
KR100745863B1 true KR100745863B1 (en) 2007-08-02

Family

ID=18625651

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020010019804A KR100745863B1 (en) 2000-04-14 2001-04-13 Crc operation unit and crc operation method

Country Status (3)

Country Link
US (2) US6754870B2 (en)
EP (1) EP1148650A1 (en)
KR (1) KR100745863B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101462157B1 (en) 2009-12-18 2014-11-20 한국전자통신연구원 Arithmetic apparatus including multiplication and accumulation and DSP structure and filtering method using the same

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6836869B1 (en) * 2001-02-02 2004-12-28 Cradle Technologies, Inc. Combined cyclic redundancy check (CRC) and Reed-Solomon (RS) error checking unit
US7216285B2 (en) * 2001-11-09 2007-05-08 Marvell International Ltd. System and method for generating cyclic redundancy check
US7290196B1 (en) * 2003-03-21 2007-10-30 Cypress Semiconductor Corporation Cyclical redundancy check using nullifiers
US7047453B2 (en) * 2003-11-13 2006-05-16 Nokia, Inc. Method and apparatus for managing network traffic using cyclical redundancy check hash functions
US7171604B2 (en) * 2003-12-30 2007-01-30 Intel Corporation Method and apparatus for calculating cyclic redundancy check (CRC) on data using a programmable CRC engine
US7434150B1 (en) 2004-03-03 2008-10-07 Marvell Israel (M.I.S.L.) Ltd. Methods, circuits, architectures, software and systems for determining a data transmission error and/or checking or confirming such error determinations
US7360142B1 (en) 2004-03-03 2008-04-15 Marvell Semiconductor Israel Ltd. Methods, architectures, circuits, software and systems for CRC determination
JP2006060663A (en) * 2004-08-23 2006-03-02 Oki Electric Ind Co Ltd Cyclic code circuit
US7398452B2 (en) * 2004-12-16 2008-07-08 Broadcom Corporation Method and system for determining a signal quality metric in event of a CRC false positive
KR101110625B1 (en) * 2005-03-09 2012-02-16 삼성전자주식회사 Method and apparatus for checking integrity of transmission data
US7512864B2 (en) * 2005-09-30 2009-03-31 Josef Zeevi System and method of accessing non-volatile computer memory
KR100703806B1 (en) * 2006-02-16 2007-04-09 삼성전자주식회사 Nonvolatile memory, apparatus and method for deciding data validity for the same
JP5298621B2 (en) * 2007-12-21 2013-09-25 ソニー株式会社 Transmitting apparatus and method, receiving apparatus and method
US8352835B2 (en) * 2009-06-10 2013-01-08 International Business Machines Corporation Data verification using checksum sidefile
US8417961B2 (en) * 2010-03-16 2013-04-09 Oracle International Corporation Apparatus and method for implementing instruction support for performing a cyclic redundancy check (CRC)
US8468423B2 (en) 2011-09-01 2013-06-18 International Business Machines Corporation Data verification using checksum sidefile
CN104133736A (en) * 2014-07-29 2014-11-05 江苏宏云技术有限公司 Method for designing vector CRC commands
CN114443347B (en) * 2021-12-23 2022-11-22 湖南毂梁微电子有限公司 Configurable CRC code calculation method

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05151007A (en) * 1991-11-28 1993-06-18 Nintendo Co Ltd Crc arithmetic unit
US5390196A (en) 1992-11-12 1995-02-14 Bull Hn Information Systems Inc. Byte-wise determination of a checksum from a CRC-32 polynomial
KR950023184A (en) * 1993-12-09 1995-07-28 양승택 8-Bit Parallel Processing C.C.-32 Code Generation and Detection Circuit
KR19980028168A (en) * 1996-10-21 1998-07-15 김광호 Cyclic Redundancy Inspection (CRC) Circuit
KR19980036814A (en) * 1996-11-19 1998-08-05 정장호 CRC generation circuit of ATM switch
KR19980050154A (en) * 1996-12-20 1998-09-15 양승택 Selective Force CRC-32 Processing Encoder and Decoder and Parallel Processing Method
EP0936537A1 (en) * 1998-02-13 1999-08-18 STMicroelectronics Limited Cyclic redundancy check in a computer system

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4720830A (en) 1985-12-02 1988-01-19 Advanced Micro Devices, Inc. CRC calculation apparatus having reduced output bus size
EP0470451A3 (en) 1990-08-07 1993-01-20 National Semiconductor Corporation Implementation of the high-level data link control cyclic redundancy check (hdlc crc) calculation
JP3252029B2 (en) 1993-08-04 2002-01-28 松下電器産業株式会社 Encoding device and encoding method
US5768291A (en) 1994-12-29 1998-06-16 Motorola, Inc. Method and apparatus for error mitigating a received communication signal
US5878057A (en) * 1995-10-06 1999-03-02 Tektronix, Inc. Highly parallel cyclic redundancy code generator
JPH1098392A (en) 1996-09-25 1998-04-14 Mitsubishi Electric Corp Crc code generating circuit, code error detecting circuit and crc circuit
JPH10107647A (en) 1996-09-25 1998-04-24 Mitsubishi Electric Corp Cyclic redundancy check
JPH10320221A (en) 1997-05-16 1998-12-04 Hitachi Ltd Processor
US6192498B1 (en) * 1997-10-01 2001-02-20 Globepan, Inc. System and method for generating error checking data in a communications system
JP2000081989A (en) 1998-09-07 2000-03-21 Hitachi Ltd Processor and cyclic encoding processing method using the processor
JP3607116B2 (en) 1999-04-28 2005-01-05 松下電器産業株式会社 Arithmetic processing unit
JP2001036414A (en) 1999-07-21 2001-02-09 Nec Corp Crc code generation circuit and crc error detection circuit

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05151007A (en) * 1991-11-28 1993-06-18 Nintendo Co Ltd Crc arithmetic unit
US5390196A (en) 1992-11-12 1995-02-14 Bull Hn Information Systems Inc. Byte-wise determination of a checksum from a CRC-32 polynomial
KR950023184A (en) * 1993-12-09 1995-07-28 양승택 8-Bit Parallel Processing C.C.-32 Code Generation and Detection Circuit
KR19980028168A (en) * 1996-10-21 1998-07-15 김광호 Cyclic Redundancy Inspection (CRC) Circuit
KR19980036814A (en) * 1996-11-19 1998-08-05 정장호 CRC generation circuit of ATM switch
KR19980050154A (en) * 1996-12-20 1998-09-15 양승택 Selective Force CRC-32 Processing Encoder and Decoder and Parallel Processing Method
EP0936537A1 (en) * 1998-02-13 1999-08-18 STMicroelectronics Limited Cyclic redundancy check in a computer system

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101462157B1 (en) 2009-12-18 2014-11-20 한국전자통신연구원 Arithmetic apparatus including multiplication and accumulation and DSP structure and filtering method using the same

Also Published As

Publication number Publication date
KR20010098575A (en) 2001-11-08
US20020002692A1 (en) 2002-01-03
US20040221221A1 (en) 2004-11-04
EP1148650A1 (en) 2001-10-24
US6754870B2 (en) 2004-06-22

Similar Documents

Publication Publication Date Title
KR100745863B1 (en) Crc operation unit and crc operation method
US9071275B2 (en) Method and device for implementing cyclic redundancy check codes
KR100210583B1 (en) Error correction code decoding method and circuit adopting this method
KR100439211B1 (en) The arithmetic processing unit
JP5126230B2 (en) Error detection method
US6081921A (en) Bit insertion approach to convolutional encoding
US6523146B1 (en) Operation processing apparatus and operation processing method
KR20060125837A (en) Encoding and decoding of reed-solomon codes using look-up tables for galois field multiplications
EP1146652B1 (en) High speed coding apparatus for convolutional codes
KR20000000772A (en) Convolution code generator and digital signal processor embedding that
JP2000172520A (en) Galois field operation processor
JP3512175B2 (en) CRC calculation device and CRC calculation method
US5954836A (en) Method and apparatus for pipelined encoding
JP3607116B2 (en) Arithmetic processing unit
JPH0353815B2 (en)
JP2001036414A (en) Crc code generation circuit and crc error detection circuit
US11362679B2 (en) Method and apparatus for generating redundant bits for error detection
JP2008112522A (en) Device and method for detecting error
JP3191442B2 (en) Arithmetic unit for Viterbi decoding
JP2009117883A (en) Calculation processing device
JP3250363B2 (en) Arithmetic unit
JP2003243992A (en) Code generation circuit
KR900000670Y1 (en) Cord word generator of read-solomon encoder
WO2010064205A1 (en) System and method for viterbi decoding using application specific extensions
JPH0537402A (en) Viterbi decoder

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: 20100726

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee