KR100745863B1 - Crc operation unit and crc operation method - Google Patents
Crc operation unit and crc operation method Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/09—Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
- H03M13/091—Parallel or block-wise CRC computation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
- G06F9/3879—Concurrent 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/65—Purpose and implementation aspects
- H03M13/6508—Flexibility, adaptability, parametrability and configurability of the implementation
- H03M13/6516—Support of multiple code parameters, e.g. generalized Reed-Solomon decoder for a variety of generator polynomials or Galois fields
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/65—Purpose and implementation aspects
- H03M13/6569—Implementation 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
도 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
상기 생성다항식 공급부(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
상기 연산데이터 공급부(21)는 메모리(22), 시프트 레지스터(23), 제 2 범용 레지스터(24) 및 배럴시프터(25)를 구비하여 구성된다. The operation
상기 메모리(22)에는 송수신 데이터가 저장된다. The
상기 시프트 레지스터(23)는 1사이클의 CRC 연산마다 보유되어 있는 데이터의 MSB의 값을 연산데이터의 LSB의 값으로서 연산부(31)에 출력한 후 그 데이터를 1비트만큼 좌시프트하도록 되어 있다. 그리고 보유되어 있는 데이터의 모든 비트의 값이 출력되었을 때에는 다음 데이터가 메모리(22)로부터 전송된다. The
상기 제 2 범용 레지스터(24)는 CRC 연산이 개시될 때 메모리(22)로부터 초기값으로서 전송된 데이터를 보유하는 동시에 그 후에는 1사이클의 CRC 연산마다 연산부(31)로부터 출력되는 연산결과의 데이터를 보유하도록 되어 있다. The second
상기 배럴시프터(25)는 제 2 범용 레지스터(24)에 보유된 데이터를 1비트만큼 좌시프트한 후 그 LSB보다 상위비트의 값을 연산데이터의 LSB보다 상위비트의 값으로서 연산부(31)에 출력하도록 되어 있다. 또 상기와 같이 시프트 레지스터(23)의 MSB의 값이 연산부(31)에 직접 입력되는 대신 이 배럴시프터(25)에 입력되어 상기 좌시프트일 때에 연산데이터의 LSB의 값이 되도록 하여도 된다. The
또 상기 연산부(31)는 산술논리연산기(32)를 구비하고, 상기 생성다항식 공급부(11)로부터 출력되는 생성다항식 또는 "0"과 상기 연산데이터 공급부(21)로부터 출력되는 연산데이터의 배타적 논리합 연산을 실행하도록 되어 있다. 그 연산결과의 데이터는 상기와 같이 제 2 범용 레지스터(24)에 저장된다. The
상기 각부는 각각 예를 들면 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
상기한 바와 같이 구성된 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
(단계 S2) 마찬가지로 전송명령에 의해 메모리(22)에 저장된 송수신 데이터 중의 최초의 M비트의 데이터(초기데이터)가 제 2 범용 레지스터(24)에 설정된다. (Step S2) Similarly, the first M-bit data (initial data) in the transmission / reception data stored in the
(단계 S3) 또 전송명령에 의해 다음 M비트의 데이터(입력데이터 1∼X)가 시프트 레지스터(23)에 설정된다. (Step S3) The next M bits of data (
(단계 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
즉 산술논리연산기(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
(단계 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
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
(단계 S6) 상기 단계 S6에서 메모리(22)에 남아 있는 송수신 데이터가 최종데이터라고 판정되면 그 최종데이터가 시프트 레지스터(23)에 전송된다. 여기에서 최종데이터의 비트수는 도 3에 도시된 바와 같이 송수신 데이터의 전체 비트수 K에서 M을 감산하여 M으로 나눈 나머지 L, 즉(Step S6) If the transmission / reception data remaining in the
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
(단계 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
다음으로 상기 동작에 대하여 도 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)
또 최종 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
(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
(3) 또 시프트 레지스터(23)에 보유된 값은 1비트 좌시프트된다. 여기에서 도 4에서는 LSB에 매설되는 값은 O으로 되어 있으나 이것은 O가 아니어도 된다(이것에 대하여 최종 CRC 연산에서는 송신데이터를 2의 N승배하는 것에 대응시키기 위해 0이 매설될 필요가 있다).(3) The value held in the
(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
(5) 최종 CRC 연산이 종료되었을 때 제 2 범용 레지스터(24)에 보유되어 있는 값「00010」이 CRC 연산결과이다. 따라서 도 5에 도시된 바와 같이 원래의 송신데이터의 말미에 상기 CRC 연산결과가 에러검출부호로서 부가되고 17비트의 부호화 데이터(「10000011010100010」)가 된다. (5) The value " 00010 " held in the second general-
한편 상기한 바와 같이 하여 부호화된 데이터의 복호가 행해지는 경우의 동작은 도 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
또 송수신 데이터는 메모리(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
또 상기 CRC 연산장치에서 배럴시프터(25)는 입력되는 데이터를 1비트 시프트시킬 뿐이므로 사이클 시간에 여유가 있는 경우 등에는 시프트 레지스터를 이용할 수도 있다. Since the
또 제 2 범용 레지스터(24) 대신에 CRC 연산 전용의 레지스터를 설치하는 경우에는 입출력을 1비트 어긋나게 함으로써 배럴시프터(25)를 이용하지 않도록 할 수도 있다. When a register dedicated to the CRC operation is provided in place of the second general-
또 제 1 범용 레지스터(12)나 제 2 범용 레지스터(24) 대신에 메모리를 이용하도록 할 수도 있다.It is also possible to use a memory instead of the first general purpose register 12 or the second
또 셀렉터(13)의 교체제어는 상기한 바와 같이 제 2 범용 레지스터(24)의 MSB의 값에 따라 행하는 것에 한정되지 않고, 산술논리연산기(32)에 의해 배타적 논리합 연산이 행해질 때 그 연산결과의 MSB의 값을 보유하는 플래그 레지스터를 설치하고, 그 플래그 레지스터에 보유되는 값에 따라 제어해도 된다. 또 이 경우에 최초 1사이클의 CRC 연산이 행해질 때에는 일단 배럴시프터(25)에서 좌시프트시키지 않고(또는 25를 바이패스시켜) 산술논리연산기(32)에 입력시키도록 하면 최초의 플래그 레지스터의 값을 설정할 수 있다. The selection control of the
또 송수신 데이터의 모든 비트에 관한 상기와 같은 일련의 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 연산부(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-
또 생성다항식 공급부(61)는 생성다항식이 저장되는 M비트폭의 생성다항식 설정 레지스터(62)(생성다항식 보유수단)와, 셀렉터(63)와, 상위패딩부(64)를 구비한다. 상기 셀렉터(63)는 최후단의 D형 플립플롭(52)으로부터의 출력에 따라 상기 제 1 실시예의 셀렉터(13)와 마찬가지로 생성다항식 설정 레지스터(62)에 저장된 값(생성다항식) 또는 전체 비트의 값이 0인 데이터("0")를 출력하게 되어 있다. 또한 상위패딩부(64)는 적용되는 생성다항식의 비트수 N이 생성다항식 설정 레지스터(62)의 비트폭 M보다 작을 때 생성다항식이 상위패딩되어 하위비트에 O이 매설된 값을 생성다항식 설정레지스터(62)에 저장하도록 되어 있다. 구체적으로는 예를 들어 시프트 레지스터에 의해 좌시프트하도록 해도 되고, 프로그램의 시프트명령 등에 의해 좌시프트하도록 해도 된다. 또 상기 상위패딩부(64)를 설치하는 대신 미리 상위패딩된 생성다항식을 입력하도록 해도 된다. The generator
상기한 바와 같이 구성됨으로써 생성다항식의 비트수 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
이상과 같이 본 발명에 의하면 통상적으로 프로세서 등이 구비하는 구성요소를 이용할 수 있도록 함으로써 대폭적인 회로규모의 증가를 초래하지 않고 고속의 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)
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)
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)
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)
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)
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 |
-
2001
- 2001-04-12 EP EP01109157A patent/EP1148650A1/en not_active Ceased
- 2001-04-13 US US09/833,787 patent/US6754870B2/en not_active Expired - Fee Related
- 2001-04-13 KR KR1020010019804A patent/KR100745863B1/en not_active IP Right Cessation
-
2004
- 2004-06-07 US US10/861,461 patent/US20040221221A1/en not_active Abandoned
Patent Citations (7)
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)
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 |