KR20090038155A - Cyclic redundancy check system and method thereof - Google Patents
Cyclic redundancy check system and method thereof Download PDFInfo
- Publication number
- KR20090038155A KR20090038155A KR1020070103502A KR20070103502A KR20090038155A KR 20090038155 A KR20090038155 A KR 20090038155A KR 1020070103502 A KR1020070103502 A KR 1020070103502A KR 20070103502 A KR20070103502 A KR 20070103502A KR 20090038155 A KR20090038155 A KR 20090038155A
- Authority
- KR
- South Korea
- Prior art keywords
- byte
- unit
- bytes
- value
- information data
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0056—Systems characterized by the type of code used
- H04L1/0057—Block codes
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Theoretical Computer Science (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
Description
본 발명은 순환잉여검사 시스템 및 방법에 관한 것이다. 특히, 본 발명은 병렬처리를 통해 빠른 동작 속도를 가지는 순환잉여검사 시스템 및 방법에 관한 것이다. The present invention relates to a cyclic redundancy inspection system and method. In particular, the present invention relates to a cyclic redundancy inspection system and method having a high operating speed through parallel processing.
유선 혹은 무선 통신 시스템의 통신 오류 검출 방법으로는 패러티 비트에 의한 방법, 체크 섬(check_sum)에 의한 방법 및 순환잉여검사 방법이 있다.Communication error detection methods of wired or wireless communication systems include a parity bit method, a check sum method, and a cyclic redundancy check method.
패러티 비트에 의한 방법은 데이터 중에 한꺼번에 복수의 비트가 변하는 경우, 오류를 검출할 수 없다. 또한, 체크 섬에 의한 방법은 한 바이트에서 +1, 다른 바이트에서 -1로 에러가 생기는 경우, 에러를 검출할 수 없는 등 이들 방법으로는 에러 검출의 확률이 낮다.The parity bit method cannot detect an error when a plurality of bits in the data change at one time. In addition, the method using a checksum has a low probability of error detection by these methods, for example, when an error occurs with +1 in one byte and -1 in another byte.
순환잉여검사 방법은 송신단이 데이터 전송 시 여분의 정보, 즉, 프레임 체크 시퀀스(Frame Check Sequence: FCS)를 원본 데이터의 최하위 비트(Least Significant Bit: LSB) 뒤에 첨부하여 함께 보내는 방식이다. The cyclic redundancy check method is a method in which the transmitting end attaches extra information, that is, a frame check sequence (FCS), after the least significant bit (LSB) of the original data.
프레임 체크 시퀀스(FCS)는 원본 데이터의 최하위 비트 뒤에 0 의 값을 가지 는 일정 길이의 정보를 추가하고, 이를 미리 정의된 제너레이터(generator)로 데이터를 이진 나눗셈한 나머지가 된다. The frame check sequence (FCS) adds a predetermined length of information having a value of 0 after the least significant bit of the original data, and divides the data into a binary generator by using a predefined generator.
예를 들어, 원본 데이터가 11100110 이고, 제너레이터가 11001 인 경우를 살펴본다. 제너레이터가 11001로 5 비트인 경우, 원본 데이터의 최하위 비트 뒤에는 0의 값을 가지는 4 비트가 추가된다. 즉, 수정된 원본 데이터는 111001100000 이 된다. 이후, 수정된 원본 데이터 111001100000을 미리 정의된 제너레이터 11001로 이진 나눗셈 한다. 나머지는 0110이 된다. 이때, 나머지 값이 프레임 체크 시퀀스(FCS)이다. For example, consider the case where the original data is 11100110 and the generator is 11001. If the generator is 5 bits with 11001, 4 bits with a value of 0 are added after the least significant bit of the original data. That is, the modified original data is 111001100000. Thereafter, the modified original data 111001100000 is binary divided into a predefined generator 11001. The rest is 0110. At this time, the remaining value is a frame check sequence (FCS).
송신단은 원본 데이터 11100110 의 전송 시, 프레임 체크 시퀀스(FCS)인 0110을 추가해서 전송한다. 즉, 송신단은 111001100110을 송신한다.When transmitting the original data 11100110, the transmitter adds and transmits 0110, which is a frame check sequence (FCS). That is, the transmitting end transmits 111001100110.
수신단은 수신한 정보 데이터 111001100110 의 에러를 검출하기 위해, 송신단에서 미리 정의된 제너레이터(generator)로 정보 데이터를 이진 나눗셈한다. 이진 나눗셈의 결과가 '0'이면 성공이고, 그 외에는 에러로 처리한다. In order to detect an error of the received information data 111001100110, the receiving end binary divides the information data with a generator that is predefined at the transmitting end. If the result of binary division is '0', then success. Otherwise, it is treated as an error.
순환잉여검사 방법은 간단하고, 에러 검출을 위한 오버헤드(overhead)가 적을 뿐만 아니라 에러 검출 성능도 좋아서 현재 무선랜(WLAN), 초광대역(UWB), 전파식별(RFID) 및 무선 센서 네트워크(WSN) 등의 무선 통신 시스템과 이더넷(ethernet) 등의 유선 통신 시스템에서 널리 사용되고 있다.The cyclic redundancy test method is simple and has low overhead for error detection and good error detection performance, which is why WLAN, UWB, RFID and wireless sensor network (WSN) It is widely used in wireless communication systems such as) and wired communication systems such as Ethernet.
종래의 순환잉여검사 방법은 플랫폼 설계 시 하드웨어 언어(hardware-based)로 기술되어 병렬 방식으로 연산되었다. 왜냐하면 소프트웨어 언어(software-based)로 기술될 경우, 다른 기능 블록(functional block)들에 비해 상대적으로 프 로세서의 로드가 커져, 전체 시스템의 성능을 저하시키기 때문이다.The conventional cyclic redundancy test method is described in hardware language (hardware-based) when the platform design was calculated in a parallel manner. This is because, when written in a software-based language, the processor load is increased relative to other functional blocks, which degrades the performance of the entire system.
최근 반도체 공정 기술이 발전함에 따란 한 칩에 여러 개의 프로세서와 많은 양의 메모리를 탑재하는 엠피 에스오씨(Multi-Processor System-on-Chip: MP SoC)가 비메모리의 핵심으로 부각되고, 이를 기반으로 하는 소프트웨어 방식의 순환잉여검사 방법이 각광받고 있다.With the recent development of semiconductor process technology, multi-processor system-on-chip (MP SoC), which has several processors and a large amount of memory on one chip, has emerged as the core of non-memory. Software-based cyclic redundancy inspection method is in the spotlight.
이중 가장 대표적인 방법은 순환잉여검사 테이블(lookup table)을 이용하는 방법으로, 종래의 1 비트 시프트 레지스터(shift register)를 사용하는 방법에서 고속화가 가능하게 되었다. 이들은 사전에 연산된 순환잉여검사 값을 테이블에 미리 저장해 둠으로써 비트 단위 대신 1 바이트, 4 바이트 또는 8 바이트 단위 등으로 순환잉여검사를 수행한다. 그러나, 이들 방법도 다음 처리할 데이터와 종속되어 연속적으로(serial) 연산되므로, 순환잉여검사의 처리 시간을 줄이는 데에는 한계가 있다.The most typical of these methods is the use of a cyclic redundancy table, which enables high speed in the conventional method using a 1-bit shift register. They store cyclic redundancy check values calculated in advance in a table, and perform cyclic redundancy check in units of 1 byte, 4 bytes, or 8 bytes instead of bits. However, these methods also depend on the data to be processed next and are serialized, and thus there is a limit in reducing the processing time of the cyclic redundancy check.
현재 무선 통신 시스템의 추세 중 하나로 빠른 전송 속도를 들 수 있다. 일례로 무선랜 시스템의 경우 수백 메가(Mbps)의 전송 속도를, 그리고 초광대역 시스템은 수 기가(Gbps)의 전송 속도를 목표로 한다. 따라서, 이러한 시스템에 탑재되는 순환잉여검사 시스템도 고속으로 동작하여야 한다. One of the trends of current wireless communication systems is the high transmission speed. For example, a wireless LAN system aims at a transmission rate of several hundred megabits (Mbps), and an ultra-wideband system aims at a transmission rate of several gigabytes (Gbps). Therefore, the cyclic redundancy inspection system mounted in such a system should also operate at high speed.
순환잉여검사 시스템이 고속의 처리 능력을 갖기 위해서는 이를 구동하는 클럭(clock)의 속도가 빨라지거나, 병렬 처리가 가능해야 한다. 클럭 속도의 경우는 소자 기술의 수준에 의존하므로 그 증가에 한계가 있다.In order for the cyclic redundancy inspection system to have a high processing capacity, the clock driving the clock must be faster or parallel processing is possible. The clock speed is limited by the level of device technology, so the increase is limited.
따라서, 본 발명이 이루고자 하는 기술적 과제는 병렬 처리를 통해 빠른 동작 속도를 가지는 순환잉여검사 시스템 및 방법을 제공하는 것이다. Accordingly, the technical problem to be achieved by the present invention is to provide a cyclic redundancy inspection system and method having a fast operation speed through parallel processing.
본 발명의 한 특징에 의하면, 순환잉여검사 시스템이 제공된다. 순환잉여검사 시스템은 정보 데이터를 N 바이트(N>0이상의 자연수) 단위로 분할하는 분할부; 및 n 개(n>0이상의 자연수)의 블록 연산부 각각이 상기 분할된 N 바이트의 정보 데이터에 대한 연산을 수행하여, (n x N) 바이트의 정보 데이터에 대한 연산을 수행하는 처리부를 포함한다. According to one aspect of the invention, a cyclic redundancy inspection system is provided. The cyclic redundancy inspection system includes a partitioning unit for dividing the information data into units of N bytes (N > 0 or more natural numbers); And a processing unit for performing operations on the divided N bytes of information data by performing operations on the divided N bytes of information data, respectively, by n blocks (n> 0 or more natural numbers).
본 발명의 다른 특징에 의하면, 순환잉여검사 방법이 제공된다. 순환잉여검사 방법은 (a) 정보 데이터를 입력 받는 단계; (b) 상기 정보 데이터를 N 바이트 단위로 분할하는 단계; 및 (c) (n x N) 바이트에 대한 순환잉여연산 값을 구하는 단계를 포함한다. According to another feature of the present invention, a cyclic redundancy inspection method is provided. Cyclic surplus inspection method includes the steps of (a) receiving information data; (b) dividing the information data into units of N bytes; And (c) obtaining a cyclic redundancy value for (n x N) bytes.
본 발명에 의하면, 병렬처리를 통해 빠른 동작 속도를 가지는 순환잉여검사 시스템 및 방법을 제공할 수 있다. According to the present invention, it is possible to provide a cyclic redundancy inspection system and method having a high operating speed through parallel processing.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.DETAILED DESCRIPTION Hereinafter, exemplary embodiments of the present invention will be described in detail with reference to the accompanying drawings so that those skilled in the art may easily implement the present invention. As those skilled in the art would realize, the described embodiments may be modified in various different ways, all without departing from the spirit or scope of the present invention. In the drawings, parts irrelevant to the description are omitted in order to clearly describe the present invention, and like reference numerals designate like parts throughout the specification.
명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다. 또한, 명세서에 기재된 "…부", "…기", "모듈" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다.Throughout the specification, when a part is said to "include" a certain component, it means that it can further include other components, without excluding other components unless specifically stated otherwise. In addition, the terms “… unit”, “… unit”, “module”, etc. described in the specification mean a unit that processes at least one function or operation, which may be implemented by hardware or software or a combination of hardware and software. have.
이제, 본 발명의 실시예에 따른 순환잉여검사 시스템 및 방법에 대하여 도면을 참고하여 상세하게 설명한다.Now, the cyclic redundancy inspection system and method according to an embodiment of the present invention will be described in detail with reference to the drawings.
도 1은 본 발명의 실시예에 따른 순환잉여검사 시스템 및 방법의 개념도이 다.1 is a conceptual diagram of a cyclic redundancy inspection system and method according to an embodiment of the present invention.
본 발명의 실시예에 따른 순환잉여검사 시스템 및 방법은 수신한 정보 데이터를 특정 길이의 블록 별로 분할하여, 복수의 연산부에서 각 블록에 대한 연산을 한 후, 이들을 조합하는 방식으로 순환잉여검사를 수행한다.The cyclic redundancy inspection system and method according to an embodiment of the present invention divides the received information data into blocks of a specific length, performs calculation for each block in a plurality of calculation units, and then performs a cyclic redundancy check by combining them. do.
일반적인 순환잉여검사 방법은 이진 나눗셈을 기반으로 하므로, 정보 데이터 최상위 비트(MSB)부터 최하위 비트(LSB)까지 연속적인 연산이 필요하다. Since the general cyclic redundancy check method is based on binary division, continuous operation from the most significant bit (MSB) to the least significant bit (LSB) of information data is required.
본 발명의 실시예에 따른 순환잉여검사 시스템 및 방법은 n 개의 블록 연산부가 N 바이트 데이터를 병렬적으로 처리하고, 해당 N 바이트의 위치에 따라 제로 블록의 연산값을 찾은 후, 이들의 배타적 논리합 연산(이하, '배타적 논리합 연산(Exclusive OR)'는 'XOR 연산'이라 함)을 통해 조합한다. In the cyclic redundancy check system and method according to an embodiment of the present invention, n block operators process N-byte data in parallel, find an operation value of a zero block according to the position of the N-byte, and then perform an exclusive OR operation thereof. (Hereinafter, 'exclusive OR' is referred to as 'XOR operation').
즉, 본 발명의 실시예에 따른 순환잉여검사 시스템 및 방법은 정보 데이터 최상위 비트(MSB)부터 최하위 비트(LSB)까지 연속적인 연산을 수행하지 않고, 복수의 연산부에 정보 데이터를 특정 길이의 블록 별로 할당하고 연산하여 병렬 처리를 수행한다. That is, the cyclic redundancy inspection system and method according to an embodiment of the present invention does not perform continuous operation from the most significant bit (MSB) to the least significant bit (LSB) of information data, and transmits the information data to each of the plurality of calculation units for each block of a specific length. Allocate and compute to perform parallel processing.
구체적으로, 본 발명의 실시예에 따른 순환잉여검사 시스템 및 방법은 (n x N) 바이트의 정보 데이터에 대해서, n 개의 블록 연산부에서 N 바이트의 데이터에 대한 연산을 병렬적으로 수행한다. Specifically, the cyclic redundancy inspection system and method according to an embodiment of the present invention performs operations on N bytes of data in parallel in the n block calculators for (n x N) bytes of information data.
일반적인 순환잉여검사 방법과 같이 연속적인 연산을 통해 순환잉여검사 값을 구하는 경우, (n x N) 바이트의 데이터 를 제너레이터 로 이진 나눗 셈한 연산값은 이다. When the cyclic redundancy check value is obtained through continuous operation as in the general cyclic redundancy check method, (nx N) bytes of data Generator The binary division by to be.
그런데, 연속적인 연산을 통해 순환잉여검사 값은 아래의 식 1과 같이 표현될 수 있다. However, the cyclic redundancy test value may be expressed as shown in
[식 1][Equation 1]
는 N 바이트 단위로 나누어져 , ,...의 XOR 연산으로 이루어진다. 이때, , ,...는 각각 자신에게 할당된 N 바이트 이외에는 0의 값을 가진다. 식 1과 같이, (n x N) 바이트의 데이터 를 제너레이터 로 이진 나눗셈한 연산값은 는, 각각의 , ,...를 제너레이터 로 이진 나눗셈한 연산값의 XOR 연산값과 같다. Is divided into N bytes , , ... Consists of an XOR operation. At this time, , , ... Each has a value of 0, except for the N bytes allocated to it. As in
본 발명의 실시예에 따른 순환잉여검사 시스템 및 방법은 식 1을 이용하여, (n x N) 바이트의 데이터에 대해, 자신에게 할당된 N 바이트 이외에는 0의 값을 가지는 , ,...로 분할한다. Cyclic redundancy inspection system and method according to an embodiment of the present invention using (1), (nx N) bytes of data Has a value of 0 other than the N bytes allocated to it. , , ... Split into
이후, n 개의 블록 연산부에서 , ,...에 대한 이진 나눗셈 연산을 수행한다. 이때, n 개의 블록 연산부는 각 블록 연산부에 할당된 N 바이트에 대한 연산을 수행한 후, N 바이트 하위의 0 의 값을 가지는 제로 블록에 대한 연산을 수행한다.Then, in n block operations , , ... Perform a binary division operation on. In this case, the n block operations units perform operations on N bytes allocated to each block operation unit, and then perform operations on zero blocks having a value of 0 below N bytes.
즉, 각 블록 연산부의 연산은 할당 받은 N 바이트에 대한 연산을 수행한 후, N 바이트 하위에서 0 의 값을 가지는 제로 블록에 대한 연산을 수행한다. 다만, 최하위 N 바이트를 할당 받은 의 경우는 할당 받은 N 바이트 하위에서 0 의 값을 가지는 제로 블록이 없다. 따라서, 의 경우는 N 바이트에 대한 연산만을 수행한다. That is, the operation of each block operation unit performs an operation on the allocated N bytes, and then performs an operation on the zero block having a value of 0 below the N bytes. However, the lowest N bytes allocated In the case of, there is no zero block with a value of 0 below the allocated N bytes. therefore, In the case of, only operation on N bytes is performed.
이후, n 개의 블록 연산부의 연산값의 XOR 연산을 통해 (n x N) 바이트의 데이터에 대한 순환잉여검사 값을 구한다. Then, the cyclic redundancy check value for the data of (n x N) bytes is obtained through XOR operation of the operation values of the n block operations units.
정리하면, (n x N) 바이트의 정보 데이터에 대한 순환잉여검사 값 C 는, (n x N) 바이트의 데이터 중 최상위 N 바이트를 할당 받고, 할당 받은 N 바이트 하위에서 0 의 값을 가지는 ((n-1) x N) 바이트의 제로 블록을 가지는 에 대한 연산값 C1', 최상위 N 바이트를 제외하고 가장 상위의 N 바이트를 할당 받고, 할당 받은 N 바이트 하위에서 0 의 값을 가지는 ((n-2) x N) 바이트의 제로 블록을 가지는 에 대한 연산값 C2', . . . 최하위에서 두 번째 N 바이트를 할당 받고, 할당 받은 N 바이트 하위에서 0 의 값을 가지는 N 바이트의 제로 블록을 가지는 에 대한 연산값 Cn -1' 및 최하위 N 바이트를 할당 받은 에 대한 연산값 Cn 의 XOR 연산으로 구해진다. In short, (nx N) bytes of information data The cyclic redundancy check value C for is given the highest N bytes of (nx N) bytes of data and has a zero block of ((n-1) x N) bytes with a value of 0 below the allocated N bytes. The operation value for C 1 ', which is allocated the highest N bytes except the most significant N bytes, and has a zero block of ((n-2) x N) bytes with a value of 0 below the allocated N bytes. Calculated value for C 2 ',. . . Is allocated the lowest N second bytes, and has N bytes of zero blocks Assigned the operation value C n -1 'and least significant N bytes for It is obtained by XOR operation of operation value C n for.
도 2는 본 발명의 실시예에 따른 순환잉여검사 시스템의 개략도이다.2 is a schematic diagram of a cyclic redundancy inspection system according to an embodiment of the present invention.
정보 데이터는 N 바이트 단위로 분할되고, 분할된 N 바이트 데이터는 해당 N 바이트 하위의 0 의 값을 가지는 제로 블록과 함께 블록 연산부로 할당된다. The information data is divided in units of N bytes, and the divided N byte data is allocated to the block operation unit together with a zero block having a value of 0 below the corresponding N bytes.
각 블록 연산부는 N 바이트 데이터와 하위의 제로 블록을 할당 받고, 우선 N 바이트 데이터에 대한 연산을 수행하여 N 바이트 연산의 결과값인 Cn(n=1,2,...n)을 구한다. 이때, N 바이트에 대한 연산은 4 바이트 단위로 수행되고, (N/4) 번의 반복 연산을 거친 후, Cn(n=1,2,...n) 값이 구해진다.Each block operation unit receives N byte data and a lower zero block, and first performs operations on the N byte data to obtain C n (n = 1, 2, ... n), which is a result of the N byte operation. At this time, the operation for N bytes is performed in units of 4 bytes, and after (N / 4) iterations, C n (n = 1, 2, ... n) values are obtained.
블록 연산부는 N 바이트에 대한 연산을 수행한 후, 제로 블록에 대한 연산을 수행한다. 이때, 가장 하위의 N 바이트를 할당 받은 블록 연산부는 제로 블록을 포함하지 않으므로 제로 블록 연산을 수행하지 않는다.The block operator performs an operation on the zero block after performing an operation on N bytes. In this case, since the block operation unit allocated the lowest N bytes does not include the zero block, the block operation unit does not perform the zero block operation.
마지막 블록 연산부를 제외한 블록 연산부들은 사전에 연산값이 저장되어 있는 순환잉여검사 테이블, 즉 제로 블록 테이블을 이용하여 Cn'(n=1,2,...n-1)를 구한다. The block operators except for the last block calculator calculate C n '(n = 1,2, ... n-1) using a cyclic redundancy check table, that is, a zero block table, in which operation values are stored in advance.
XOR 연산부는 제로 블록 테이블을 이용한 제로 블록 연산값 Cn'(n=2,3,..,n-1)과 마지막 블록 연산부의 연산값 Cn 에 대해 XOR 연산을 수행하고, 그 결과값은 C 로 정의된다. 식 2는 (n x N) 바이트 정보 데이터에 대한 연산값 C를 나타내고 있다.XOR operation unit calculates zero-zero blocks with block table value C n '(n = 2,3, .., n-1) and the calculated value of the last block computing section C n Performs an XOR operation on, and the result is defined as
[식 2][Equation 2]
(n x N) 바이트의 연산으로 정보 데이터가 모두 연산된 경우는, 이때의 연산값 C가 전체 정보 데이터의 순환잉여검사 값이 된다. 그러나, 한번의 (n x N) 바이트의 연산으로 정보 데이터가 끝나지 않은 경우는, 이번의 (n x N) 바이트에 대한 연산값 C는 다음에 처리할 (n x N) 바이트의 최상위 4 바이트와 XOR 되어 다음에 따라오는 정보 데이터와 연속성을 유지한다. In the case where all of the information data has been calculated by operation of (n x N) bytes, the operation value C at this time becomes a cyclic redundancy check value of all the information data. However, if the information data is not finished in one (nx N) byte operation, the operation value C for this (nx N) byte is XORed with the most significant 4 bytes of the next (nx N) byte to be processed. Maintain continuity with the information data that follows.
4 바이트를 처리하는데 걸리는 시간을 S4 사이클로 정의한다. 따라서, N 바이트를 4 바이트 단위로 처리하는데 걸리는 시간은 (N/4) x S4 사이클이 걸린다. 또한, 제로 블록 테이블을 이용하여 제로 블록 연산을 수행하고, 다음의 (n x N) 바이트의 최상위 4 바이트와 XOR 연산을 수행하는데 걸리는 시간을 Z 사이클로 정의한다. The time taken to process 4 bytes is defined as S 4 cycles. Therefore, it takes (N / 4) x S 4 cycles to process N bytes in 4 byte units. In addition, the zero block operation is performed using the zero block table, and the time taken to perform the XOR operation with the most significant 4 bytes of the next (nx N) bytes is defined as Z cycles.
블록 연산부에서 N 바이트 데이터를 병렬로 처리하는데 걸리는 (N/4) x S4 사이클과 각 블록 연산부의 제로 블록 연산 및 이들의 결과를 결합하기 위한 XOR 연산을 수행하는데 걸리는 Z 사이클은 (n x N) 바이트의 데이터를 처리할 때마다 한번씩 발생한다. (N / 4) x S 4 cycles in parallel processing of N-byte data in the block operation unit and zero block operations in each block operation unit and Z cycles in order to perform XOR operation to combine the results thereof are (nx N). Occurs once each time a byte of data is processed.
이들 [((N/4) x S4) + Z ] 사이클은 정보 데이터가 끝날 때까지 반복되고, 최종 결과의 C 가 전체 정보 데이터의 순환잉여검사 값이 된다. These [((N / 4) x S 4 ) + Z] cycles are repeated until the end of the information data, where C of the final result is the cyclic redundancy check value of the entire information data.
따라서, 전체 정보 데이터 L 바이트에 대해 순환잉여검사 값을 연산하는데 걸리는 회전지연시간(latency)는 식 3과 같다.Accordingly, the rotation delay time required to calculate the cyclic redundancy check value for the entire information data L bytes is expressed by
[식 3][Equation 3]
식 3을 참고하면, 정보 데이터의 길이(L)가 일정할 때, 블록 연산부의 개수(n)과 블록 연산부에서 처리하는 데이터의 길이(N)에 대해 회전지연시간은 반비례관계에 있다.Referring to
도 3은 본 발명의 실시예에 따른 순환잉여검사 시스템의 블록도이다.3 is a block diagram of a cyclic redundancy inspection system according to an embodiment of the present invention.
도 3에 따르면, 순환잉여검사 시스템은 입력부(100), N 바이트 분할부(200), 처리부(300), 정보 데이터 판단부(400) 및 출력부(500)를 포함하고, 처리부(300)는 블록 연산부(600(1)~600(n)), XOR연산부(700)를 포함한다. 이때, 각 구성에 대해 설명하면 다음과 같다.According to FIG. 3, the cyclic redundancy inspection system includes an
입력부(100)는 정보 데이터를 입력 받고, 입력 받은 정보 데이터를 N 바이트 분할부(200)로 출력한다. The
N 바이트 분할부(200)는 연속성 유지부(210)를 포함하고, 정보 데이터를 N 바이트 단위로 분할한다. N 바이트는 각 블록 연산부가 연산하는 데이터의 길이를 나타낸다. 순환잉여검사를 할 정보 데이터의 길이가 L 바이트일 때, 각 블록 연산부는 N 바이트 단위로 정보 데이터를 할당 받아 병렬적으로 연산을 수행한다. The
블록 연산부의 개수가 n 개일 때, 정보 데이터의 길이 L 바이트는 (n x N) 바이트의 배수가 된다. 만약, 정보 데이터의 길이가 (n x N) 바이트의 배수가 되지 않을 경우에는, 정보 데이터가 (n x N) 바이트의 배수가 되도록 정보 데이터의 상위에 0을 채워준다. 이때, N 은 사용자가 설정할 수 있는 길이로 4의 배수로 선택한다. When the number of block arithmetic units is n, the length L bytes of the information data becomes a multiple of (n x N) bytes. If the length of the information data is not a multiple of (n x N) bytes, 0 is filled in the upper portion of the information data so that the information data is a multiple of (n x N) bytes. In this case, N is a length that can be set by the user and is selected in multiples of four.
연속성 유지부(210)는 정보 데이터 L 바이트가 복수의 (n x N) 바이트로 이루어질 때, 이번에 연산한 (n x N) 바이트 연산값이 다음의 (n x N) 바이트 연산과 연속성을 유지하도록, 이번에 연산한 (n x N) 바이트 연산값 C를 다음에 처리할 (n x N) 바이트의 최상위 4 바이트와 XOR 연산을 수행한다. When the information data L byte is composed of a plurality of (nx N) bytes, the
처리부(300)는 (n x N) 바이트에 대한 연산을 복수의 연산부에서 병렬적으로 수행한다. 처리부(300)는 n 개의 블록 연산부(600(1)~600(n)) 및 XOR 연산부(700)를 포함하고, 블록 연산부(600(1)~600(n))는 N 바이트 연산부(800(1)~800(n)) 및 제로 블록 연산부(900(1)~900(n-1))를 포함한다. 이때, 최하위 N 바이트 데이터를 할당 받는 블록 연산부(600(n))는 제로 블록을 포함하지 않으므로, 제로 블록 연산부를 포함하지 않는다. The
블록 연산부(600(1)~600(n)) 각각은 자신에게 할당된 N 바이트 데이터와 할당 받은 N 바이트 하위의 바이트는 0의 값을 가지는 제로 블록을 받고, 받은 데이터에 대한 연산을 수행한다. Each of the block operation units 600 (1) to 600 (n) receives a zero block having a value of 0 for the N-byte data allocated to the byte and the lower byte of the allocated N-byte, and performs an operation on the received data.
N 바이트 연산부(800(1)~800(n))는 할당 받은 N 바이트에 대한 연산을 수행하고, 제로 블록 연산부(900(1)~900(n-1))는 N 바이트 연산부(800(1)~800(n))의 연산값을 기초로 N 바이트 하위의 제로 블록에 대한 연산을 수행한다. N 바이트 연산부(800(1)~800(n)) 및 제로 블록 연산부(900(1)~900(n-1))의 구체적인 구성은 도 4 내지 도 7에서 상세히 설명한다.The N byte calculators 800 (1) to 800 (n) perform operations on the allocated N bytes, and the zero block calculators 900 (1) to 900 (n-1) perform the N byte calculators 800 (1). Based on the operation value of) ~ 800 (n)), the operation is performed on the zero block below N bytes. Detailed configurations of the N byte calculators 800 (1) to 800 (n) and the zero block calculators 900 (1) to 900 (n-1) will be described in detail with reference to FIGS. 4 to 7.
XOR 연산부(700) 블록 연산부(600(1)~600(n))의 연산값을 기초로 XOR 연산을 수행하여 (n x N) 바이트에 대한 연산값을 구하고, (n x N) 바이트에 대한 연산값을 정보 데이터 판단부(400)로 전달한다.
정보 데이터 판단부(400)는 처리부(300)의 (n x N) 바이트에 대한 연산으로 전체 정보 데이터에 대한 연산이 완료했는지 여부를 판단한다. 정보 데이터 L 바이트에 대한 연산이 완료된 경우, 정보 데이터 판단부(400)는 처리부(300)로부터 받은 연산값을 출력부(500)로 전달한다. 반면, 정보 데이터 L 바이트에 대한 연산이 완료되지 않은 경우, 정보 데이터 판단부(400)는 처리부(300)로부터 받은 연산값을 N 바이트 분할부(200)의 연속성 유지부(210)로 전달한다.The information
출력부(500)는 정보 데이터 판단부(400)로부터 받은 연산값을 출력한다. The
도 4는 본 발명의 실시예에 따른 N 바이트 연산부에서 수행하는 동작의 개념도이고, 도 5는 본 발명의 실시예에 따른 N 바이트 연산부의 블록도이다. 4 is a conceptual diagram of an operation performed by an N-byte operation unit according to an embodiment of the present invention, and FIG. 5 is a block diagram of an N-byte operation unit according to an embodiment of the present invention.
도 4를 참고하면, N 바이트 연산부는 할당된 N 바이트에 대해 상위부터 32비트(4 바이트) 단위로 데이터를 읽어 연산을 수행하며, 이를 위해 8비트(1바이트)에 대한 순환잉여검사 값이 미리 계산된 4 개의 연산값 테이블을 가진다. Referring to FIG. 4, the N-byte operation unit reads data in units of 32 bits (4 bytes) from the upper part with respect to the allocated N bytes, and for this purpose, the cyclic redundancy check value for 8 bits (1 byte) is preliminarily. It has four calculated values table.
즉, N 바이트 연산부는 (임의의 8비트 데이터 x 256), (임의의 8비트 데이터 x 248), (임의의 8비트 데이터 x 240), (임의의 8비트 데이터 x 232)각각을 정해진 제너레이터 로 이진 나눗셈한 256가지를 각각 1킬로바이트(KByte) 크기의 256 연산 값 테이블, 248 연산값 테이블, 240 연산값 테이블, 232 연산값 테이블에 저장해두고 해당하는 8비트에 대한 결과를 검색하여 연산하는데 소모되는 시간을 줄인다.That is, the N byte arithmetic unit (random 8-bit data x 2 56 ), (arbitrary 8-bit data x 2 48 ), (arbitrary 8-bit data x 2 40 ), (arbitrary 8-bit data x 2 32 ), respectively
N 바이트 연산부는 이전에 32비트(4바이트) 연산을 수행한 경우, 이전 연산의 결과값인 에 이번에 연산을 수행할 32비트(4바이트)의 데이터 를 더해서 연산대상 값 를 결정한다.If the N byte operation unit previously performed 32 bit (4 byte) operation, the result value of the previous operation is 32 bits (4 bytes) of data at this time Calculation Target Value Determine.
이후, N 바이트 연산부는 연산대상 값 를 8비트(1바이트)씩 4개 로 분리되고, 각 8 비트에 해당하는 연산값 테이블의 순환잉여검사 값을 연산값 테이블에서 차례로 불러온다. 각 8 비트에 대한 연산값은 , , , 로 32비트(4바이트)의 값을 가진다. 식 4는 각 8비트에 대한 연산값을 나타낸 식이다.After that, the N byte arithmetic unit 4 x 8 bits (1 byte) Separated by, the cyclic redundancy check value of the operation value table corresponding to each 8 bit is read in order from the operation value table. The operation value for each 8 bits is , , , It has a value of 32 bits (4 bytes).
[식 4][Equation 4]
4 개의 32비트 연산값 , , , 는 XOR 연산되고, XOR 연산의 결과인 는 N 바이트 연산부에서 다음에 연산될 4 바이트 데이터 와 다 시 XOR 연산되어 이상에서 설명한 과정이 반복된다. 이때, 는 4 바이트뿐만 아니라 8 바이트, 16 바이트 등으로 확장 가능하다. Four 32-bit math values , , , Is an XOR operation, which is the result of the XOR operation Is the 4 byte data to be computed next in the N byte operation unit. XOR operation is repeated and the process described above is repeated. At this time, Can be extended to 8 bytes, 16 bytes, etc. as well as 4 bytes.
도 5는 본 발명의 실시예에 따른 N 바이트 연산부의 블록도이다.5 is a block diagram of an N-byte calculation unit according to an embodiment of the present invention.
본 발명의 실시예에 따른 순환잉여검사 시스템은 n 개의 N 바이트 연산부를 포함하며, n 개의 N 바이트 연산부는 모두 동일하므로 여기서는 설명의 편의상 첫 번째 N 바이트 연산부(800(1))만을 설명한다.The cyclic redundancy check system according to the embodiment of the present invention includes n N-byte arithmetic units, and since the n N-byte arithmetic units are all the same, only the first N-byte arithmetic unit 800 (1) will be described here for convenience of description.
도 5를 참고하면, N 바이트 연산부(800(1))는 입력부(810), 4 바이트 분할부(820), 처리부(830), N 바이트 데이터 판단부(840) 및 출력부(850)를 포함하고, 처리부(830)는 8 비트 분할부(860), 256 연산부(870(1)), 248 연산부(870(2)), 240 연산부(870(3)), 232 연산부(870(4)) 및 XOR 연산부(880)를 포함한다.Referring to FIG. 5, the N byte calculator 800 (1) includes an
입력부(810)는 N 바이트의 데이터를 입력 받고, 입력 받은 N 바이트의 데이터를 4 바이트 분할부(820)로 출력한다.The
4 바이트 분할부(820)는 연속성 유지부(821)를 포함하고, N 바이트 데이터를 4 바이트 단위로 분할한다. 4 바이트는 처리부(830)에서 연산하는 데이터의 길이를 나타낸다. 연속성 유지부(821)는 처리부(830)의 연산값이 N 바이트의 데이터 중 처리부(830)에서 연산한 값의 다음 데이터와 연속성을 유지하도록, 처리부(830)의 연산값을 다음 4 바이트와 XOR 연산을 수행한다.The 4
처리부(830)는 4 바이트에 대한 연산을 4 개의 256 연산부(870(1)), 248 연산 부(870(2)), 240 연산부(870(3)), 232 연산부(870(4))에서 병렬적으로 수행한다. The
처리부(830)는 8비트 분할부(860), 256 연산부(870(1)), 248 연산부(870(2)), 240 연산부(870(3)), 232 연산부(870(4)) 및 XOR 연산부(880)를 포함하고, 256 연산부(870(1)), 248 연산부(870(2)), 240 연산부(870(3)) 각각은 연산값 테이블(871(1)~871(4)) 및 8비트 연산값 검색부(872(1)~872(4))를 포함한다.The
8비트 분할부(860)는 4 바이트 분할부(820)로부터 받은 32비트(4 바이트)를 8 비트 단위의 네 개로 분할하고, 각각의 8 비트를 256 연산부(870(1)), 248 연산부(870(2)), 240 연산부(870(3)) 및 232 연산부(870(4))로 전달한다.The 8-
이때, 32 비트는 최상위 8 비트부터 최하위 8 비트까지 순차적으로 256 연산부(870(1)), 248 연산부(870(2)), 240 연산부(870(3)) 및 232 연산부(870(4))로 전달된다.At this time, the 32 bits are sequentially performed from the most significant 8 bits to the least significant 8 bits, such as 2 56 arithmetic unit 870 (1), 2 48 arithmetic unit 870 (2), 2 40 arithmetic unit 870 (3), and 2 32 arithmetic unit 870 (4)).
256 연산부(870(1))는 8 비트 분할부(860)로부터 32 비트 중 최상위 8 비트를 전달받고, 이에 대한 연산값을 XOR 연산부(880)로 출력한다. 256 연산부(870(1))는 256 연산값 테이블(871(1)) 및 8비트 연산값 검색부(872(1))를 포함한다.The 56 operator 870 (1) receives the most significant 8 bits of the 32 bits from the 8
256 연산값 테이블(871(1))은 (임의의 8비트 데이터 x 256)을 정해진 제너레이 터 로 이진 나눗셈한 256 가지의 순환잉여검사 값을 저장하고 있다. 2 56 Arithmetic value table 871 (1) is a generator that defines (arbitrary 8-bit data x 2 56 ). We store 256 different cyclic redundancy test values divided by binary.
8비트 연산값 검색부(872(1))는 입력된 8 비트에 대한 순환잉여검사 값을 256 연산값 테이블(871(1))을 이용하여 검색하고, 검색된 순환잉여검사 값을 XOR 연산부(880)로 출력한다. The 8-bit arithmetic value search unit 872 (1) retrieves the cyclic redundancy check value for the input 8-bit using 2 56 arithmetic value table 871 (1), and retrieves the retrieved cyclic redundancy check value from the XOR operation unit ( 880).
248 연산부(870(2))는 8 비트 분할부(860)로부터 32 비트 중 두 번째 상위 8 비트를 전달받고, 이에 대한 연산값을 XOR 연산부(880)로 출력한다. 248 연산부(870(2))는 248 연산값 테이블(871(2)) 및 8비트 연산값 검색부(872(2))를 포함한다. 2 48 operator 870 (2) receives the second upper 8 bits of the 32 bits from the 8-
248 연산값 테이블(871(2))은 (임의의 8비트 데이터 x 248)을 정해진 제너레이터 로 이진 나눗셈한 256 가지의 순환잉여검사 값을 저장하고 있다. 2 48 Calculated Value Table 871 (2) is a generator that defines (arbitrary 8-bit data x 2 48 ). We store 256 different cyclic redundancy test values divided by binary.
8비트 연산값 검색부(872(2))는 입력된 8 비트에 대한 순환잉여검사 값을 248 연산값 테이블(871(2))을 이용하여 검색하고, 검색된 순환잉여검사 값을 XOR 연산부(880)로 출력한다. The 8-bit arithmetic value search unit 872 (2) retrieves the cyclic redundancy check value for the input 8-bit using 2 48 arithmetic value table 871 (2), and retrieves the retrieved cyclic redundancy check value from the XOR operator ( 880).
240 연산부(870(3))는 8 비트 분할부(860)로부터 32 비트 중 세 번째 상위 8 비트를 전달받고, 이에 대한 연산값을 XOR 연산부(880)로 출력한다. 240 연산부(870(3))는 240 연산값 테이블(871(3)) 및 240 8비트 연산값 검색부(872(3))를 포 함한다. The 40 operation unit 870 (3) receives the third upper 8 bits of the 32 bits from the 8
240 연산값 테이블(871(3))은 (임의의 8비트 데이터 x 240)을 정해진 제너레이터 로 이진 나눗셈한 256 가지의 순환잉여검사 값을 저장하고 있다. 2 40 Arithmetic value table 871 (3) is a generator that defines (arbitrary 8-bit data x 2 40 ) We store 256 different cyclic redundancy test values divided by binary.
8비트 연산값 검색부(872(3))는 입력된 8 비트에 대한 순환잉여검사 값을 240 연산값 테이블(871(3))을 이용하여 검색하고, 검색된 순환잉여검사 값을 XOR 연산부(880)로 출력한다. The 8-bit arithmetic value search unit 872 (3) retrieves the cyclic redundancy check value for the input 8-bit using 2 40 arithmetic value table 871 (3), and retrieves the found cyclic redundancy check value. 880).
232 연산부(870(4))는 8 비트 분할부(860)로부터 32비트 중 최하위 8 비트를 전달받고, 이에 대한 순환잉여검사 값을 XOR 연산부(880)로 출력한다. 232 연산부(870(4))는 232 연산값 테이블(871(4)) 및 232 8비트 연산값 검색부(872(4))를 포함한다. 2 32 operator 870 (4) receives the lowest 8 bits of 32 bits from the 8-
232 연산값 테이블(871(4))은 (임의의 8비트 데이터 x232)을 정해진 제너레이터 로 이진 나눗셈한 256 가지의 순환잉여검사 값이 저장되어 있다. 2 32 Arithmetic value table 871 (4) is a generator that defines (arbitrary 8-bit data x2 32 ). 256 cyclic redundancy check values stored in binary are stored.
8비트 연산값 검색부(872(4))는 입력된 8 비트에 대한 순환잉여검사 값을 232 연산값 테이블(871(4))을 이용하여 검색하고, 검색된 순환잉여검사 값을 XOR 연산부(880)로 출력한다. The 8-bit arithmetic value search unit 872 (4) retrieves the cyclic redundancy check value for the input 8-bit using 2 32 arithmetic value table 871 (4), and retrieves the retrieved cyclic redundancy check value from the XOR operation unit ( 880).
XOR 연산부(880)는 256 연산부(870(1)), 248 연산부(870(2)), 240 연산 부(870(3)) 및 232 연산부(870(4))로부터 각각 32 비트(4 바이트)의 순환잉여검사 값을 전달받고 XOR 연산을 수행한다. 이후, XOR 연산의 결과 값을 N 바이트 데이터 판단부(840)로 출력한다. The
N 바이트 데이터 판단부(840)는 처리부(830)의 4 바이트 연산으로 N 바이트 데이터에 대한 연산이 종료하였는지 여부를 판단한다. N 바이트 데이터에 대한 연산이 완료된 경우, N 바이트 데이터 판단부(840)는 처리부(830)로부터 받은 XOR 연산값을 출력부(850)로 전달한다. 반면, N 바이트 데이터에 대한 연산이 완료되지 않은 경우, N 바이트 데이터 판단부(840)는 처리부(830)로부터 받은 XOR 연산 값을 4 바이트 분할부(820)의 연속성 유지부(821)로 전달한다.The N-byte
출력부(850)는 N 바이트 데이터 판단부(840)로부터 받은 연산값을 출력한다.The
도 6은 본 발명의 실시예에 따른 제로 블록 연산부에서 수행하는 동작의 개념도이고, 도 7은 본 발명의 실시예에 따른 제로 블록 연산부의 블록도이다.6 is a conceptual diagram of an operation performed by a zero block calculator according to an embodiment of the present invention, and FIG. 7 is a block diagram of a zero block calculator according to an embodiment of the present invention.
마지막 블록 연산부(600(n))를 제외한 블록 연산부(600(1)~600(n-1))는 할당 받은 N 바이트 데이터에 대한 순환잉여검사 값을 구한 후, 하위 제로 블록에 대한 연산을 수행한다. Block operation units 600 (1) to 600 (n-1), except for the last block operation unit 600 (n), calculate a cyclic redundancy check value for the allocated N-byte data and then operate on the lower zero block. do.
각 블록 연산부(600(1)~600(n-1))에는 각각 할당 받은 N 바이트 데이터의 위치에 따라 뒤에 따라오는 제로 블록의 길이가 고정되어 있다. 즉, N 바이트 데이터 연산 결과 값인 Cn(n=1,2,3,...) 4 바이트에 고정된 크기의 제로 블록이 따라오고, 이에 대한 순환잉여검사 값(Cn')도 고정되므로 제로 블록 연산값 테이블로 저장 해 놓을 수 있다. The lengths of the following zero blocks are fixed to each of the block computing units 600 (1) to 600 (n-1) according to the positions of the allocated N-byte data. That is, a zero block of fixed size is followed by four bytes of C n (n = 1,2,3, ...), the result of N byte data operation, and the cyclic redundancy check value (C n ') is also fixed. It can be stored as a zero block operation value table.
도 6을 참고하면, 가장 최상위 N 바이트에 대한 연산을 수행하는 블록 연산부(600(1))는 N 바이트 연산부(800(1))에서 할당 받은 N 바이트 연산값 C1을 구하고, N 바이트 연산값 C1 을 ((n-1) x N) 바이트의 제로 블록과 XOR 연산을 수행한다. Referring to FIG. 6, the block operation unit 600 (1) performing the operation on the most significant N bytes obtains the N byte operation value C 1 allocated by the N byte operation unit 800 (1), and calculates the N byte operation value. Performs an XOR operation on C 1 with a zero block of ((n-1) x N) bytes.
그러면, ((n-1) x N) 바이트는 상위의 4 바이트는 N 바이트 연산값 C1에 기초한 값을 가지며, 나머지 [((n-1) x N) - 4] 바이트는 0의 값을 가진다. Then, ((n-1) x N) bytes have the upper four bytes based on the N byte operation value C 1 , and the remaining [((n-1) x N)-4] bytes have a value of 0. Have
이때, 상위 4 바이트에 대한 제로 블록 연산값 테이블을 가지면 즉, (임의의 4 바이트 데이터 바이트의 제로 블록)에 대한 연산값 테이블을 가지면 메모리가 너무 커지므로(약 17GByte), 1 바이트씩 나눈 결과 (Cn1', Cn2', Cn3', Cn4')를 1 KByte 크기의 연산값 테이블 4 개에 저장한다. At this time, if it has a zero block operation value table for the high 4 bytes, that is (random 4 byte data Having an operation table for zero blocks of bytes) makes the memory too large (approximately 17 GBytes), so the result of dividing by one byte (C n1 ', C n2 ', C n3 ', C n4 ') is 1 KByte in size. Stored in four value tables.
N 바이트 데이터의 순환잉여검사 값 Cn을 N 바이트 하위의 제로 블록 중 상위 4 바이트에 XOR 연산을 수행하고, XOR 연산값을 1 바이트씩 나누어, 상위부터 순차적으로 제로 블록 연산값 테이블에서 호출해 XOR 연산을 수행하면, 제로 블록 연산 값 Cn' (n=1,2,3,...n-1)이 구해진다.By performing an XOR operation of cyclic redundancy check values of the N-byte data C n to block high-
도 7은 본 발명의 실시예에 따른 제로 블록 연산부의 블록도이다.7 is a block diagram of a zero block calculator according to an exemplary embodiment of the present invention.
본 발명의 실시예에 따른 순환잉여검사 시스템은 마지막 블록 연산 부(600(n))를 제외한 블록 연산부(600(1)~600(n-1))는 제로 블록 연산부를 포함하며, 제로 블록 연산부는 제로 블록 연산값 테이블에 저장된 값을 제외하고는 동일하므로, 여기서는 첫 번째 제로 블록 연산부(900(1))만을 설명한다. In the cyclic redundancy inspection system according to the embodiment of the present invention, except for the last block calculator 600 (n), the block calculators 600 (1) to 600 (n-1) include a zero block calculator and a zero block calculator. Since is the same except for the value stored in the zero block operation value table, only the first zero block operation unit 900 (1) will be described here.
도 7을 참고하면, 제로 블록 연산부(900(1))는 입력부(910), 4 바이트 분할부(920), 첫 번째 바이트 제로 블록 연산부(930(1)), 두 번째 바이트 제로 블록 연산부(930(2)), 세 번째 바이트 제로 블록 연산부(930(3)), 네 번째 바이트 제로 블록 연산부(930(4)), XOR 연산부(940) 및 출력부(950)를 포함한다. Referring to FIG. 7, the zero block calculator 900 (1) includes an input unit 910, a four
입력부(910)는, N 바이트 연산부(800(1))의 연산값을 입력 받고, 할당 받은 N 바이트의 위치에 따라, 상위 4 바이트의 제로 블록과 XOR 연산을 수행한다. 이후, XOR 연산을 수행한 결과 값인 ((n-1) x N) 바이트를 4 바이트 분할부(920)로 출력한다.The input unit 910 receives an operation value of the N-byte operation unit 800 (1), and performs an XOR operation with the zero block of the upper 4 bytes according to the allocated N-byte position. Thereafter, the result of performing the XOR operation is output ((n-1) x N) bytes to the 4-
4 바이트 분할부(920)는 입력 받은 ((n-1) x N) 바이트의 상위 4 바이트를 각각 1 바이트 단위로 분할하고, 각각의 1 바이트를 최상위 1 바이트부터 첫 번째 바이트 제로 블록 연산부(930(1)), 두 번째 바이트 제로 블록 연산부(930(2)), 세 번째 바이트 제로 블록 연산부(930(3)) 및 네 번째 바이트 제로 블록 연산부(930(4))로 순차적으로 전달한다. The 4
첫 번째 바이트 제로 블록 연산부(930(1))는 4 바이트 분할부(920)로부터 최상위 1 바이트를 전달 받고, 이에 대한 연산값을 XOR 연산부(940)로 출력한다. 첫 번째 바이트 제로 블록 연산부(930(1))는 제로 블록 연산값 테이블(931(1)) 및 연산값 검색부(932(1))를 포함한다.The first byte zero block operation unit 930 (1) receives the most significant 1 byte from the 4
제로 블록 연산값 테이블(931(1))은 임의의 1 바이트 데이터 바이트의 제로 블록을 정해진 제너레이터 로 나눗셈한 순환잉여검사 값을 저장하고 있다. The zero block arithmetic table 931 (1) is a random one-byte data Generator defined for zero blocks of bytes The cyclic redundancy test value divided by is stored.
연산값 검색부(932(1))는 입력된 1 바이트에 대한 순환잉여검사 값을 제로 블록 연산값 테이블(931(1))을 이용하여 검색하고, 검색된 순환잉여검사 값을 XOR 연산부(940)로 출력한다. The arithmetic value search unit 932 (1) retrieves the cyclic redundancy check value for the
두 번째 바이트 제로 블록 연산부(930(2))는 4 바이트 분할부(920)로부터 두 번째 상위 1 바이트를 전달 받고, 이에 대한 연산값을 XOR 연산부(940)로 출력한다. 두 번째 바이트 제로 블록 연산부(930(2))는 제로 블록 연산값 테이블(931(2)) 및 연산값 검색부(932(2))를 포함한다.The second byte zero block operation unit 930 (2) receives the second upper 1 byte from the 4
제로 블록 연산값 테이블(931(2))은 임의의 1 바이트 데이터 바이트의 제로 블록을 정해진 제너레이터 로 나눗셈한 순환잉여검사 값을 저장하고 있다. The zero block arithmetic value table 931 (2) is an arbitrary one-byte data. Generator defined for zero blocks of bytes The cyclic redundancy test value divided by is stored.
연산값 검색부(932(2))는 입력된 1 바이트에 대한 순환잉여검사 값을 제로 블록 연산값 테이블(931(2))을 이용하여 검색하고, 검색된 순환잉여검사 값을 XOR 연산부(940)로 출력한다. The arithmetic value search unit 932 (2) retrieves the cyclic redundancy check value for the
세 번째 바이트 제로 블록 연산부(930(3))는 4 바이트 분할부(920)로부터 세 번째 상위 1 바이트를 전달 받고, 이에 대한 연산값을 XOR 연산부(940)로 출력한다. 세 번째 바이트 제로 블록 연산부(930(3))는 제로 블록 연산값 테이블(931(3)) 및 연산값 검색부(932(3))를 포함한다.The third byte zero block operation unit 930 (3) receives the third upper 1 byte from the 4
제로 블록 연산값 테이블(931(3))은 임의의 1 바이트 데이터 바이트의 제로 블록을 정해진 제너레이터 로 나눗셈한 순환잉여검사 값을 저장하고 있다. The zero block arithmetic value table 931 (3) is a random one-byte data Generator defined for zero blocks of bytes The cyclic redundancy test value divided by is stored.
연산값 검색부(932(3))는 입력된 1 바이트에 대한 순환잉여검사 값을 제로 블록 연산값 테이블(931(3))을 이용하여 검색하고, 검색된 순환잉여검사 값을 XOR 연산부(940)로 출력한다. The arithmetic value search unit 932 (3) retrieves the cyclic redundancy check value for the
네 번째 바이트 제로 블록 연산부(930(4))는 4 바이트 분할부(920)로부터 네 번째 상위 1 바이트를 전달 받고, 이에 대한 연산값을 XOR 연산부(940)로 출력한다. 네 번째 바이트 제로 블록 연산부(930(4))는 제로 블록 연산값 테이블(931(4)) 및 연산값 검색부(932(4))를 포함한다.The fourth byte zero block operation unit 930 (4) receives the fourth upper 1 byte from the 4
제로 블록 연산값 테이블(931(4))은 임의의 1 바이트 데이터 바이트의 제로 블록을 정해진 제너레이터 로 나눗셈한 순환잉여검사 값을 저장하고 있다. The zero block arithmetic table 931 (4) is a random one-byte data Generator defined for zero blocks of bytes The cyclic redundancy test value divided by is stored.
연산값 검색부(932(4))는 입력된 1 바이트에 대한 순환잉여검사 값을 제로 블록 연산값 테이블(931(4))을 이용하여 검색하고, 검색된 순환잉여검사 값을 XOR 연산부(940)로 출력한다. The arithmetic value search unit 932 (4) retrieves the cyclic redundancy check value for the
XOR 연산부(940)는 첫 번째 바이트 제로 블록 연산부(930(1)), 두 번째 바이트 제로 블록 연산부(930(2)), 세 번째 바이트 제로 블록 연산부(930(3)) 및 네 번 째 바이트 제로 블록 연산부(930(4))로부터 각 4 바이트의 순환잉여검사 값을 전달 받고, XOR 연산을 수행한다. 이후, XOR 연산의 결과 값을 출력부(950)로 전달한다. The
출력부(950)는 XOR 연산부(940)로부터 받은 연산값을 출력한다. The
이제, 본 발명의 실시예에 따른 순환잉여검사 방법에 대해서 상세하게 설명한다. Now, the cyclic redundancy inspection method according to an embodiment of the present invention will be described in detail.
도 8은 본 발명의 실시예에 따른 순환잉여검사 방법을 개략적으로 나타낸 도면이다.8 is a view schematically showing a cyclic redundancy inspection method according to an embodiment of the present invention.
정보 데이터를 입력(S101) 받으면, 입력 받은 정보 데이터를 N 바이트로 분할(S102)한다. n 개의 블록 연산부에서 각각 N 바이트씩 연산을 수행하여, (n x N) 바이트에 대한 연산을 수행한다(S103). Upon receiving the information data (S101), the received information data is divided into N bytes (S102). The n block arithmetic units each perform N bytes, and perform operations on (n x N) bytes (S103).
이후, (n x N) 바이트에 대한 연산값이 도출되면, (n x N) 바이트 연산으로 정보 데이터에 대한 연산이 완료되었는지 여부를 판단한다(S104). (n x N) 바이트 연산으로 정보 데이터에 대한 연산이 완료된 경우는 도출된 연산값이 입력 받은 정보 데이터에 대한 순환잉여연산 값으로 결정된다(S104).Thereafter, when an operation value for (n x N) bytes is derived, it is determined whether the operation on the information data is completed using the (n x N) byte operation (S104). When the operation on the information data is completed by the (n x N) byte operation, the derived operation value is determined as the cyclic redundancy operation value for the received information data (S104).
반면, 정보 데이터에 대한 연산이 완료되지 않은 경우는, 다음에 연속된 정보 데이터와 연속성 유지를 위한 처리(S106)를 하고, 이후, 다시 (n x N) 바이트에 대한 연산을 수행한다. On the other hand, when the operation on the information data is not completed, the process (S106) for maintaining the continuity with the subsequent information data is performed next, and then the operation on (n x N) bytes is performed again.
도 9는 본 발명의 실시예에 따른 순환잉여검사 방법을 구체적으로 나타낸 도면이다.9 is a view showing in detail the cyclic redundancy inspection method according to an embodiment of the present invention.
정보 데이터를 입력(S201) 받으면, 입력 받은 정보 데이터를 N 바이트로 분할(S202)한다. 이후, n 개의 블록 연산부에서 각각 N 바이트씩 연산을 수행한다.Upon receiving the information data (S201), the received information data is divided into N bytes (S202). Subsequently, the n block arithmetic units each perform N bytes.
n 개의 블록 연산부는 자신에게 할당된 N 바이트 및 N 바이트 하위의 제로 블록에 대한 연산을 수행한다. 이때, 마지막 N 바이트를 할당 받은 블록 연산부는 제로 블록을 포함하지 않는다. The n block arithmetic units perform operations on N bytes allocated to them and zero blocks below the N bytes. In this case, the block calculator that is allocated the last N bytes does not include the zero block.
따라서, 입력 받은 정보 데이터를 N 바이트로 분할한 이후, 각 N 바이트가 할당된 N 바이트 중 마지막 N 바이트인지 여부를 판단한다(S203). 할당 받은 N 바이트가 마지막 N 바이트인 경우에는 N 바이트 연산만을 수행한다(S204). 그러나, 할당 받은 N 바이트가 마지막 N 바이트가 아닌 경우에는 N 바이트 연산을 수행(S205)한 후, 제로 블록에 대한 연산을 수행(S206)한다. 이후, 각 블록 연산부에서 수행된 결과값을 XOR 연산을 수행한다(S207). Therefore, after dividing the received information data into N bytes, it is determined whether each N byte is the last N byte among the allocated N bytes (S203). If the allocated N bytes are the last N bytes, only N byte operations are performed (S204). However, if the allocated N bytes are not the last N bytes, after performing an N byte operation (S205), the operation for the zero block is performed (S206). Thereafter, an XOR operation is performed on the result value performed by each block operation unit (S207).
XOR 연산값이 도출되면, 정보 데이터에 대한 연산이 완료되었는지 여부를 판단한다(S208). (n x N) 바이트 연산으로 정보 데이터에 대한 연산이 완료된 경우는 도출된 연산값이 입력 받은 정보 데이터에 대한 순환잉여연산 값으로 결정된다(S209).When the XOR operation value is derived, it is determined whether the operation on the information data is completed (S208). When the operation on the information data is completed by the (n x N) byte operation, the derived operation value is determined as a cyclic redundancy operation value for the received information data (S209).
반면, 정보 데이터에 대한 연산이 완료되지 않은 경우는, 다음에 연속된 4 바이트와 XOR 연산을 수행(S210)를 하고, N 바이트에 대한 연산을 수행한다. On the other hand, when the operation on the information data is not completed, the next XOR operation is performed with 4 consecutive bytes (S210), and the operation on N bytes is performed.
도 10은 본 발명의 실시예에 따른 N 바이트 연산 방법을 나타낸 도면이다.10 is a diagram illustrating a method of calculating an N byte according to an embodiment of the present invention.
N 바이트 연산부에서 자신에게 할당된 N 바이트를 입력 받으면, 입력 받은 N 바이트를 4 바이트 단위로 분할한다(S301). 이후, 4 바이트를 8 비트 단위로 분 할(S302)하고, 각 8 비트에 대한 연산값을 연산값 테이블을 이용하여 검색(S303)한다. 이후, 각 8 비트에 대한 연산값에 대해 XOR 연산을 수행한다(S304). When the N byte arithmetic unit receives the N bytes allocated to itself, the N bytes are divided into 4 byte units (S301). Thereafter, 4 bytes are divided into 8 bit units (S302), and an operation value for each 8 bit is searched using an operation value table (S303). Thereafter, an XOR operation is performed on an operation value for each 8 bit (S304).
XOR 연산값이 도출되면, N 바이트 데이터에 대한 연산이 완료되었는지 여부를 판단한다(S305). 4 바이트 연산으로 N 바이트 데이터에 대한 연산이 완료된 경우는 도출된 연산값이 입력 받은 N 바이트 데이터에 대한 연산 값으로 결정된다(S306).When the XOR operation value is derived, it is determined whether the operation on the N byte data is completed (S305). When the operation on the N byte data is completed by the 4-byte operation, the derived operation value is determined as the operation value on the received N byte data (S306).
반면, N 바이트 데이터에 대한 연산이 완료되지 않은 경우는, 다음에 연속된 4 바이트와 XOR 연산을 수행(S307)를 하고, 4 바이트에 대한 연산을 수행한다. On the other hand, if the operation on the N byte data is not completed, the next XOR operation is performed with 4 consecutive bytes (S307), and the operation for 4 bytes is performed.
도 11은 본 발명의 실시예에 따른 제로 블록 연산 방법을 나타낸 도면이다. 11 is a diagram illustrating a zero block calculation method according to an embodiment of the present invention.
N 바이트 연산부의 연산값을 입력(S401) 받는다. 이후, 입력 받은 연산값을 제로 블록의 상위 4 바이트와 XOR 연산을 수행한다.The operation value of the N-byte operation unit is input (S401). Thereafter, the input operation value is XORed with the upper 4 bytes of the zero block.
이후, 4 바이트의 XOR 연산값을 1 바이트 단위로 분할(S403)하고, 분할된 1 바이트에 대한 제로 블록 연산값을 검색(S404)한다. Thereafter, the XOR operation value of 4 bytes is divided by 1 byte unit (S403), and the zero block operation value for the divided 1 byte is searched (S404).
분할된 각각의 제로 블록 연산값에 대해 XOR 연산을 수행(S405)하여 제로 블록 연산값으로 결정(S406)한다. An XOR operation is performed on each divided zero block operation value in operation S405, and a determination is made as a zero block operation value in operation S406.
이상에서 설명한 본 발명의 실시예는 장치 및 방법을 통해서만 구현이 되는 것은 아니며, 본 발명의 실시예의 구성에 대응하는 기능을 실현하는 프로그램 또는 그 프로그램이 기록된 기록 매체를 통해 구현될 수도 있으며, 이러한 구현은 앞서 설명한 실시예의 기재로부터 본 발명이 속하는 기술분야의 전문가라면 쉽게 구현할 수 있는 것이다. The embodiments of the present invention described above are not implemented only through the apparatus and the method, but may be implemented through a program for realizing a function corresponding to the configuration of the embodiment of the present invention or a recording medium on which the program is recorded. Implementation may be easily implemented by those skilled in the art from the description of the above-described embodiments.
이상에서 본 발명의 실시예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.Although the embodiments of the present invention have been described in detail above, the scope of the present invention is not limited thereto, and various modifications and improvements of those skilled in the art using the basic concepts of the present invention defined in the following claims are also provided. It belongs to the scope of rights.
도 1은 본 발명의 실시예에 따른 순환잉여검사 시스템 및 방법의 개념도이다.1 is a conceptual diagram of a cyclic redundancy inspection system and method according to an embodiment of the present invention.
도 2는 본 발명의 실시예에 따른 순환잉여검사 시스템의 개략도이다.2 is a schematic diagram of a cyclic redundancy inspection system according to an embodiment of the present invention.
도 3은 본 발명의 실시예에 따른 순환잉여검사 시스템의 블록도이다.3 is a block diagram of a cyclic redundancy inspection system according to an embodiment of the present invention.
도 4는 본 발명의 실시예에 따른 N 바이트 연산부에서 수행하는 동작의 개념도이다.4 is a conceptual diagram of an operation performed by an N-byte calculation unit according to an embodiment of the present invention.
도 5는 본 발명의 실시예에 따른 N 바이트 연산부의 블록도이다. 5 is a block diagram of an N-byte calculation unit according to an embodiment of the present invention.
도 6은 본 발명의 실시예에 따른 제로 블록 연산부에서 수행하는 동작의 개념도이다.6 is a conceptual diagram of an operation performed by a zero block calculator according to an embodiment of the present invention.
도 7은 본 발명의 실시예에 따른 제로 블록 연산부의 블록도이다.7 is a block diagram of a zero block calculator according to an exemplary embodiment of the present invention.
도 8은 본 발명의 실시예에 따른 순환잉여검사 방법을 개략적으로 나타낸 도면이다.8 is a view schematically showing a cyclic redundancy inspection method according to an embodiment of the present invention.
도 9는 본 발명의 실시예에 따른 순환잉여검사 방법을 구체적으로 나타낸 도면이다.9 is a view showing in detail the cyclic redundancy inspection method according to an embodiment of the present invention.
도 10은 본 발명의 실시예에 따른 N 바이트 연산 방법을 나타낸 도면이다.10 is a diagram illustrating a method of calculating an N byte according to an embodiment of the present invention.
도 11은 본 발명의 실시예에 따른 제로 블록 연산 방법을 나타낸 도면이다. 11 is a diagram illustrating a zero block calculation method according to an embodiment of the present invention.
Claims (13)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020070103502A KR100937031B1 (en) | 2007-10-15 | 2007-10-15 | Cyclic redundancy check system and method thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020070103502A KR100937031B1 (en) | 2007-10-15 | 2007-10-15 | Cyclic redundancy check system and method thereof |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20090038155A true KR20090038155A (en) | 2009-04-20 |
KR100937031B1 KR100937031B1 (en) | 2010-01-15 |
Family
ID=40762446
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020070103502A KR100937031B1 (en) | 2007-10-15 | 2007-10-15 | Cyclic redundancy check system and method thereof |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR100937031B1 (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102136881A (en) * | 2011-01-24 | 2011-07-27 | 华为技术有限公司 | Cyclic redundancy check processing method and device |
KR20150093060A (en) * | 2014-02-06 | 2015-08-17 | 김정훈 | Binary data compression and restoration method and apparatus |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3269415B2 (en) | 1997-01-22 | 2002-03-25 | 日本電気株式会社 | CRC operation circuit |
US6560742B1 (en) | 1999-12-09 | 2003-05-06 | International Business Machines Corporation | Parallel system and method for cyclic redundancy checking (CRC) generation |
KR100433632B1 (en) * | 2002-04-09 | 2004-05-31 | 한국전자통신연구원 | Apparatus and method for calculating CRC in parallel |
KR100913467B1 (en) * | 2002-11-19 | 2009-08-25 | 엘지전자 주식회사 | System And Method For Generating Parallel Cyclic Redundancy Codes |
-
2007
- 2007-10-15 KR KR1020070103502A patent/KR100937031B1/en not_active IP Right Cessation
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102136881A (en) * | 2011-01-24 | 2011-07-27 | 华为技术有限公司 | Cyclic redundancy check processing method and device |
KR20150093060A (en) * | 2014-02-06 | 2015-08-17 | 김정훈 | Binary data compression and restoration method and apparatus |
Also Published As
Publication number | Publication date |
---|---|
KR100937031B1 (en) | 2010-01-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8959129B2 (en) | Compression of floating-point data | |
JP5945291B2 (en) | Parallel device for high speed and high compression LZ77 tokenization and Huffman encoding for deflate compression | |
US9235651B2 (en) | Data retrieval apparatus, data storage method and data retrieval method | |
CN104008064B (en) | The method and system compressed for multi-level store | |
US20200099958A1 (en) | Efficient length limiting of compression codes | |
US9035809B2 (en) | Optimizing compression engine throughput via run pre-processing | |
KR20030071327A (en) | Improved huffman decoding method and apparatus thereof | |
US8868584B2 (en) | Compression pattern matching | |
KR100937031B1 (en) | Cyclic redundancy check system and method thereof | |
CN114817651A (en) | Data storage method, data query method, device and equipment | |
US9287893B1 (en) | ASIC block for high bandwidth LZ77 decompression | |
CN101361278B (en) | Parity check bit generating circuit, counting circuit and counting method | |
US11275683B2 (en) | Method, apparatus, device and computer-readable storage medium for storage management | |
WO2022247193A1 (en) | Apparatus and method for data processing, chip, computer device, and medium | |
US8775776B2 (en) | Hash table using hash table banks | |
CN110554886A (en) | Data splitting structure, method and on-chip implementation thereof | |
EP3144817A1 (en) | Method and apparatus for multiple accesses in memory and storage system | |
KR20000013760A (en) | Multiple access computer address hashing method of lan switch using cyclic redundancy check and system therefor | |
CN113157695B (en) | Data processing method and device, readable medium and electronic equipment | |
Rauschert et al. | Very fast gzip compression by means of content addressable memories | |
US20240143172A1 (en) | System and method for personal health monitor data compaction using multiple encoding algorithms | |
CN113535709B (en) | Data processing method and device and electronic equipment | |
US20210232341A1 (en) | Method for Updating Stored Information and Apparatus | |
US8381080B2 (en) | Reducing a degree of a polynomial in a polynomial division calculation | |
US20150143058A1 (en) | System, method, and computer program product for utilizing a data pointer table pre-fetcher |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
N231 | Notification of change of applicant | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20130102 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20131231 Year of fee payment: 5 |
|
LAPS | Lapse due to unpaid annual fee |