KR101655809B1 - 복수의 룩업테이블을 이용한 crc 연산 장치 및 방법 - Google Patents

복수의 룩업테이블을 이용한 crc 연산 장치 및 방법 Download PDF

Info

Publication number
KR101655809B1
KR101655809B1 KR1020140162449A KR20140162449A KR101655809B1 KR 101655809 B1 KR101655809 B1 KR 101655809B1 KR 1020140162449 A KR1020140162449 A KR 1020140162449A KR 20140162449 A KR20140162449 A KR 20140162449A KR 101655809 B1 KR101655809 B1 KR 101655809B1
Authority
KR
South Korea
Prior art keywords
data
crc
bit
bit group
lut
Prior art date
Application number
KR1020140162449A
Other languages
English (en)
Other versions
KR20160060329A (ko
Inventor
고형일
Original Assignee
(주)에프씨아이
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by (주)에프씨아이 filed Critical (주)에프씨아이
Priority to KR1020140162449A priority Critical patent/KR101655809B1/ko
Publication of KR20160060329A publication Critical patent/KR20160060329A/ko
Application granted granted Critical
Publication of KR101655809B1 publication Critical patent/KR101655809B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/0001Systems modifying transmission characteristics according to link quality, e.g. power backoff
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/0001Systems modifying transmission characteristics according to link quality, e.g. power backoff
    • H04L1/0002Systems modifying transmission characteristics according to link quality, e.g. power backoff by adapting the transmission rate

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Quality & Reliability (AREA)
  • Detection And Correction Of Errors (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)
  • Error Detection And Correction (AREA)

Abstract

복수의 룩업테이블을 이용한 CRC 연산 장치 및 방법을 개시한다.
본 실시예의 일 측면에 의하면, 순환중복검사를 이용한 데이터 송신방법에 있어서, 전송하고자 하는 데이터를 입력받는 과정; 비트 그룹별 LUT(Look Up Table)를 이용하여 상기 데이터의 비트 그룹별 CRC(Cyclic Redundancy Check) 연산을 수행하는 CRC 연산 과정; 상기 비트 그룹별 CRC 연산 결과를 취합하여 CRC 코드를 산출하는 과정; 상기 데이터에 상기 CRC 코드를 삽입하는 과정; 및 상기 CRC 코드가 삽입된 데이터를 송신하는 과정을 포함하는 것을 특징으로 하는 데이터 송신방법을 제공한다.

Description

복수의 룩업테이블을 이용한 CRC 연산 장치 및 방법{Method and Apparatus for Cyclic Redundancy Check Calculation by Using Multiple Look Up Table}
본 실시예는 복수의 룩업테이블을 이용한 CRC 연산 장치 및 방법에 관한 것이다.
이 부분에 기술된 내용은 단순히 본 실시예에 대한 배경정보를 제공할 뿐 종래기술을 구성하는 것은 아니다.
네트워크 등을 통하여 데이터를 전송할 때 전송된 데이터에 오류가 있는지를 확인하기 위한 다양한 오류 검출 방법(Error Detecting Method)이 존재한다. 대표적인 오류 검출 방법에는 패리티 비트(Parity Bit), 체크섬(Check Sum), 순환중복검사(CRC, Cyclic Redundancy Check) 등이 있다.
패리티 비트(Parity Bit)와 체크섬(Check Sum)은 구현하기 쉽지만 오류 검출 성능이 떨어진다는 단점이 있다. 예컨대 패리티 비트(Parity Bit)는 데이터 중 2비트나 4비트에 한꺼번에 오류가 발생하면 오류를 검출할 수 없고, 체크섬(Check Sum)은 한 바이트에서 +1, 다른 바이트에서 -1로 오류가 생기는 경우 등에는 오류를 검출할 수 없다.
순환중복검사에 의한 오류 검출 방법은 패리티 비트, 체크섬에 비해 높은 신뢰도를 가지며, 오류 검출을 위한 오버헤드가 적을 뿐만 아니라, 랜덤 에러나 버스트 에러를 포함한 각종 에러 검출에 뛰어난 성능을 갖는다.
순환중복검사는 송신 시스템과 수신 시스템 사이에 미리 약속된 특정 수를 제수(Divisor)로 사용함으로써 에러를 검출한다. 현재의 데이터 통신 시스템에서는 표준화되어 있는 몇 가지 다항식(Polynomial)을 제수로 이용하며, 표준화된 제수로 모듈로 2(Modulo 2) 나눗셈을 수행하여 나온 나머지를 CRC 코드로 사용한다.
예컨대 CRC-12의 표준화된 제수 중 하나는 g12(x) = x12 + x11 + x3 + x2 + x + 1이다. g12(x)는 x0을 포함하여 모두 13개의 항을 가지고 있으므로 CRC 연산 결과 12비트의 CRC 코드가 생성된다. 다른 예로 CRC-16의 표준화된 제수 중 하나는 g16(x) = x16 + x12 + x5 + 1이다. g16(x)는 x0을 포함하여 모두 17개의 항을 가지고 있으므로 CRC 연산 결과 16비트의 CRC 코드가 생성된다. 또 다른 예로 CRC-32의 표준화된 제수 중 하나는 g32(x) = x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x9 + x7 + x5 + x4 + x2 + x1 + 1이다. g32(x)는 x0을 포함하여 모두 33개의 항을 가지고 있으므로 CRC 연산 결과 32비트의 CRC 코드가 생성된다-.
송신측 시스템은 송신하는 데이터를 이용하여 CRC 코드를 계산한 후 송신하는 데이터의 끝부분에 CRC 코드를 붙여 전송한다. 수신측 시스템은 수신한 데이터를 제수로 나누어 나머지가 0이 되는지를 판단한다. 나머지가 0이 되면 수신한 데이터는 오류가 없는 것으로 판단된다.
구체적으로 순환중복검사에서 CRC 코드를 계산하는 방법(이하, CRC 연산법)은 다음과 같다.
이진수 데이터는 다항식으로 표현 가능하다. 1번째 비트를 x0의 계수, 2번째 비트를 x1의 계수, ... , n번째 비트를 xn-1의 계수로 하면 이진수를 다항식으로 표현할 수 있다. 예컨대 이진수 11010011101100를 다항식으로 표현하면 1x13 + 1x12 + 0x11 + 1x10 + 0x9 + 0x8 + 1x7 + 1x6 + 1x5 + 0x4 + 1x3 + 1x2 + 0x1 + 0x0이 된다. 제수 g(x) = x3 + x1 + 1는 이진수 1011이 된다.
도 1은 송신 시스템에서 이진수 데이터에 CRC 코드를 삽입하는 과정을 예시한 도면이다.
도 1에서 송신하고자 하는 데이터는 11010011101100이고, 제수는 1011이다. 송신하는 데이터를 제수로 나눈 나머지가 CRC 코드이므로 제수가 4비트이면 CRC 코드는 3비트가 된다. 이진수 데이터 끝에 CRC 코드의 길이만큼의 0을 삽입한다. 송신하고자 하는 데이터 11010011101100에서 CRC 코드가 될 위치에 000을 삽입한 결과, 피제수(Dividend)는 11010011101100000이 되었다.
제수를 오른쪽으로 한 비트씩 시프트(Shift)해가며 제수에 1 또는 0을 곱해서 나누기를 수행한다. 제수를 오른쪽으로 시프트하는 기능은 하드웨어적으로는 선형 피드백 쉬프트 레지스터(Linear Feedback Shift Register, LFSR)를 이용하여 구현할 수 있다. 순환중복검사에서 몫은 중요하지 않으므로, 도 1에서 별도로 몫은 표시하지 않았다.
제수를 오른쪽으로 한 비트씩 시프트(Shift)해가며 제수에 1 또는 0을 곱하되, 이전 단계의 나머지에서 제수에 1 또는 0을 곱한 값을 XOR한다. 10진수 나눗셈에서는 빼기 연산을 수행하지만, 모듈로 2 나눗셈에서는 빼기 대신 XOR 연산을 수행한다.
모듈로 2 나눗셈이 끝난 후 최종적으로 남는 나머지 3비트가 CRC 코드가 된다. 도 1을 보면 송신하고자 하는 데이터가 11010011101100이고 제수가 1011일 때 CRC 코드는 100이 됨을 알 수 있다.
순환중복검사는 데이터링크 계층에서 많이 사용되는 기술로서 강력한 오류 검출 성능을 가지면서도 하드웨어로 구현하기 쉽다는 장점이 있다. 대부분의 통신 시스템에서 순환중복검사를 에러 검출을 위한 수단으로 사용하며, 순환중복검사에서 CRC 연산의 속도를 향상시키기 위한 다양한 방법이 모색되고 있다.
본 실시예는 균등 또는 차등분할된 비트 그룹에 독립적으로 적용되는 룩업테이블을 이용함으로써 송신하고자 하는 데이터에 최적화된 CRC 연산을 수행하여 순환중복검사의 처리 속도를 향상시킴과 동시에, 다종의 순환중복검사에 공통적으로 적용될 수 있는 범용적인 구조의 CRC 연산 장치 및 방법을 제공하는 것에 그 목적이 있다.
본 실시예의 일 측면에 의하면, 순환중복검사를 이용한 데이터 송신방법에 있어서, 전송하고자 하는 데이터를 입력받는 과정; 비트 그룹별 LUT(Look Up Table)를 이용하여 상기 데이터의 비트 그룹별 CRC(Cyclic Redundancy Check) 연산을 수행하는 CRC 연산 과정; 상기 비트 그룹별 CRC 연산 결과를 취합하여 CRC 코드를 산출하는 과정; 상기 데이터에 상기 CRC 코드를 삽입하는 과정; 및 상기 CRC 코드가 삽입된 데이터를 송신하는 과정을 포함하는 것을 특징으로 하는 데이터 송신방법을 제공한다.
본 실시예의 다른 측면에 의하면, 순환중복검사를 이용한 데이터 수신방법에 있어서, CRC(Cyclic Redundancy Check) 코드가 삽입된 데이터를 수신하는 과정; 비트 그룹별 LUT(Look Up Table)를 이용하여 상기 데이터의 상기 비트 그룹별 CRC 연산을 수행하는 CRC 연산 과정; 및 상기 비트 그룹별 CRC 연산 결과를 취합하여 상기 데이터의 오류 여부를 판단하는 과정을 포함하는 것을 특징으로 하는 데이터 수신방법을 제공한다.
본 실시예의 또 다른 측면에 의하면, 순환중복검사를 이용한 데이터 송신장치에 있어서, 전송하고자 하는 데이터를 입력받는 입력부; 비트 그룹별 LUT(Look Up Table)를 이용하여 상기 데이터의 상기 비트 그룹별 CRC(Cyclic Redundancy Check) 연산을 수행하고, 상기 비트 그룹별 CRC 연산 결과를 취합하여 CRC 코드를 산출하는 LUT 연산부; 상기 데이터를 비트 정렬(Data Alignment)하는 비트 정렬부; 및 상기 데이터에 상기 CRC 코드를 삽입하여 송신하는 송신부를 포함하는 것을 특징으로 하는 데이터 송신장치를 제공한다.
본 실시예의 또 다른 측면에 의하면, 순환중복검사를 이용한 데이터 수신장치에 있어서, 데이터 송신장치로부터 CRC(Cyclic Redundancy Check) 코드가 삽입된 데이터를 수신하는 수신부; 비트 그룹별 LUT(Look Up Table)를 이용하여 상기 데이터의 상기 비트 그룹별 CRC 연산을 수행하고, 상기 비트 그룹별 CRC 연산 결과를 취합하여 상기 데이터의 오류 여부를 판단하는 LUT 연산부; 상기 데이터를 비트 정렬(Data Alignment)하는 비트 정렬부; 및 상기 데이터의 오류 여부를 표시하는 표시부를 포함하는 것을 특징으로 하는 데이터 수신장치를 제공한다.
본 실시예에 의하면, 균등 또는 차등분할된 비트 그룹에 독립적으로 적용되는 룩업테이블을 이용함으로써, 송신하고자 하는 데이터에 최적화된 CRC 연산을 수행하여 순환중복검사의 처리 속도를 향상시킬 수 있을 뿐만 아니라, 다종의 순환중복검사에 공통적으로 적용될 수 있는 범용적인 구조의 CRC 연산 장치 및 방법을 구현할 수 있다.
도 1은 송신 시스템에서 이진수 데이터에 CRC 코드를 삽입하는 과정을 예시한 도면이다.
도 2는 Sarwate's Algorithm의 원리를 설명하기 위한 도면이다.
도 3은 본 실시예에 의한 CRC 연산법을 소프트웨어로 구현한 코드의 일례이다.
도 4a는 데이터 송신장치가 본 실시예에 의한 CRC 연산법을 이용하여 데이터를 송신하는 방법을 예시한 흐름도이다.
도 4b는 데이터 수신장치가 본 실시예에 의한 CRC 연산법을 이용하여 데이터를 수신하는 방법을 예시한 흐름도이다.
도 5a는 본 실시예에 의한 CRC 연산법을 이용한 데이터 송신장치를 예시한 도면이다.
도 5b는 본 실시예에 의한 CRC 연산법을 이용한 데이터 수신장치를 예시한 도면이다.
이하 본 발명의 일부 실시예를 예시적인 도면을 통해 상세하게 설명한다. 각 도면의 구성요소들에 참조부호를 부가함에 있어서 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 부호를 가지도록 하고 있음에 유의해야 한다. 또한 본 실시예를 설명함에 있어서 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 실시예의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략한다.
본 실시예의 구성요소를 설명하는 데 있어서 제1, 제2, ?), ?), a), b) 등의 부호를 사용할 수 있다. 이러한 부호는 그 구성요소를 다른 구성요소와 구별하기 위한 것일 뿐, 그 부호에 의해 해당 구성요소의 본질 또는 차례 또는 순서 등이 한정되지 않는다. 또한 명세서에서 어떤 부분이 어떤 구성요소를 '포함' 또는 '구비'한다고 할 때, 이는 명시적으로 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다. 또한 명세서에 기재된 '~부', '모듈' 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 '하드웨어' 또는 '소프트웨어' 또는 '하드웨어 및 소프트웨어의 결합'으로 구현될 수 있다.
CRC 연산법에는 하드웨어적 방법과 소프트웨어적 방법이 있다.
하드웨어적 방법은 데이터를 비트단위로 논리 회로에 통과시켜 CRC 코드를 계산하는 방법이다. 선형 피드백 쉬프트 레지스터(Linear Feedback Shift Register, 이하 LFSR)와 XOR 게이트만 있으면 모듈로 2 나눗셈을 수행할 수 있으므로, CRC 연산을 하드웨어적으로 간단히 구현할 수 있다.
초기 CRC 연산은 LFSR와 XOR을 이용하여 하드웨어적으로 구현되어 시리얼 연산만 가능하도록 설계되었다. 이후 CRC 연산의 속도 향상을 위하여 병렬 처리 방법에 대한 연구가 지속되어 왔다.
통신시스템에서 프로토콜 계층이 물리계층에 가까울 수록 직렬 데이터(Serial Data)를 사용하는 경향이 있으며, 직렬 데이터의 경우 그대로 LFSR과 XOR 게이트에 통과시키면 간단히 CRC 연산이 완료된다.
통신시스템에서 프로토콜 계층이 상위계층에 가까울 수록 병렬 데이터(Parallel Data)를 사용하는 경향이 있으며, 하드웨어적 방법을 사용하여 병렬 데이터의 CRC 연산을 수행하는 것은 비효율적이므로, 소프트웨어적으로 CRC 연산의 효율을 향상시키는 다양한 방법들이 연구되어 왔다.
병렬 데이터의 경우 1 Byte(8 Bits) 단위로 데이터를 입력받는데, CRC 연산은 비트별 XOR 연산이므로 1 Byte의 계산도 결국은 비트 단위로 계산하여야 하므로 고속 연산에 한계가 있다. 이 경우 특정 길이의 데이터에 대한 CRC 코드를 미리 계산하여 룩업테이블(Look Up Table, 이하 LUT)에 저장해 놓은 후, LUT를 참조함으로써 복잡한 계산을 대신하는 방법을 사용하게 된다.
LUT를 이용하여 CRC 연산의 속도를 향상시키는 방법에는 ⅰ) Sarwate's Algorithm, ⅱ) Slicing-By-N, ⅲ) Parallel Computation 등이 있다.
Sarwate's Algorithm은 LUT를 이용하여 CRC 연산을 구현하는 대표적인 방법이다. Sarwate는 하드웨어가 아닌 컴퓨팅 연산을 이용하여 CRC 연산을 수행하는 방법을 고민하면서 LUT를 사용하는 방법을 생각해내었다. 1 Byte 길이의 이진수 데이터는 28 = 256개가 존재한다. 256가지 경우의 수에 대하여 특정 제수에 대한 CRC 코드를 미리 계산하여 ROM 테이블에 저장해 놓는다. 테이블이 완성되면 복잡한 연산 과정을 거치지 않고 테이블을 참조하여 CRC 코드를 계산할 수 있다. Sarwate's Algorithm은 CRC 연산의 소프트웨어적 구현 모델의 정석으로서 수많은 알고리즘에 활용되어 왔다.
Slicing-By-N은 인텔사(Intel社)의 엔지니어 Kounavis가 Sarwate's Algorithm을 확장하여 개발한 모델이다. Slicing-By-N은 1 byte 단위로 CRC 연산을 수행하는 기존의 Sarwate's Algorithm 방식에서 4 bytes 또는 8 bytes 단위로 CRC 연산을 수행할 수 있도록 LUT의 크기를 확장시킨 모델이다. Slicing-By-N은 Sarwate's Algorithm보다 속도가 빠르나 LUT 저장에 필요한 메모리의 용량이 증가하여 경량화 시스템에 부적합하다는 단점이 있다. 또한 Slicing-By-N은 Sarwate 방식의 확장이므로 4 바이트 미만의 데이터에 대해서는 기존처럼 Sarwate's Algorithm으로 처리해야 한다는 단점이 있다.
Parallel Computation은 고속 CRC 연산을 위하여 하드웨어를 설계하는 과정에서 도출된 모델로써 병렬 처리할 데이터의 길이 M과 CRC 코드의 길이 N에 대하여 미리 M by N 매트릭스를 구성하여 연산에 반영하는 방법이다. Parallel Computation 또한 LUT 저장에 필요한 메모리의 용량이 증가하므로 경량화 시스템에 적용하기에 부적합하다는 단점이 있다.
이처럼 기존의 모델 중에는 다종의 CRC 연산에 공통적으로 적용 가능한 단일 모델이 존재하지 않는다. 기존의 모델들은 각각 특수한 환경에 적용하기 적합하도록 고안된 방식들로서 다양한 환경에서 구현되는 다종의 CRC 연산에 공통적으로 적용하기 부적합하다는 문제를 가지고 있다.
오늘날의 통신장비에는 다종의 CRC 연산이 적용된다. 특히 네트워크 장비는 통신 방식에 따라 다종의 CRC 연산들이 시스템 내에 구현되어 네트워크 통신 과정에서 호출되도록 되어 있다.
본 실시예에서 제시하는 새로운 CRC 연산법에 의하면 연관성 있는 다수의 CRC 연산을 통합적으로 관리함으로써 중복 실행을 피할 수 있을 뿐만 아니라, 다종의 CRC 연산에 공통적으로 적용 가능하여 다종의 CRC 연산들의 병행 처리가 가능하다.
CRC 연산은 수학식 1을 이용하여 수행된다.
Figure 112014111965215-pat00001
수학식 1에서 나타난 것과 같이 CRC 연산에서 입력 데이터 d(x)와 CRC 코드 b(x)의 합은 CRC 연산의 제수(Divisor) g(x)로 나누어진다.
도 2는 Sarwate's Algorithm의 원리를 설명하기 위한 도면이다.
도 2는 g(x) = x16 + x12 + x5 + 1을 이용하여 CRC-16 연산을 수행하는 과정을 예시하고 있다.
도 2에서 gi(x)는 모듈러 2 나눗셈 과정에서 i번째 입력 비트에 대해 적용되는 제수의 배수값을 의미한다. gi(x)는 수학식 2를 이용하여 간단히 구할 수 있다.
Figure 112014111965215-pat00002
수학식 2에서 gi(x)는 모듈러 2 나눗셈 과정에서 i번째 입력 비트에 대해 적용되는 제수의 배수값을 의미한다. 또한 수학식 2에서 gi-1, 15는 gi-1(x)에서 x15의 계수를 의미한다.
도 2를 참고하면, 8비트 LUT를 가지는 Sarwate's Algorithm은 g0(x) 에서부터 g7(x)까지의 값을 이용하여 생성된 LUT를 가지고 연산을 수행하는 8 bit Parallel CRC의 일례임을 알 수 있다. 즉, Sarwate's Algorithm의 LUT는 8-bits Parallel CRC의 매트릭스를 테이블화(Table化)한 결과로 볼 수 있다.
본 실시예에 의한 CRC 연산법은 Sarwate's Algorithm의 성질을 확장한 것이다. CRC 연산은 모듈로 2 나눗셈의 특성을 가지므로 결과값의 비트 길이(Bit Width)는 항상 동일하며, 병렬 처리하고자 하는 입력 데이터의 비트 길이를 확장하여도 LUT 값의 비트 길이는 동일하다.
또한 gi(x)는 g(x)와 배수 관계가 성립하므로 각 비트 그룹의 길이를 자유롭게 정한 후 각 비트 그룹에 대하여 각기 독립된 LUT를 적용하는 것이 가능하다.
예컨대 입력 데이터가 32비트인 경우, 입력 데이터를 균등분할하여 [0:7]에 해당하는 비트 그룹1에는 LUT1을 적용하고, [8:15]에 해당하는 비트 그룹2에는 LUT2를 적용하며, [16:23]에 해당하는 비트 그룹3에는 LUT3을 적용하고, [24:31]에 해당하는 비트 그룹4에는 LUT4를 적용할 수 있다.
다른 예로 입력 데이터가 32비트인 경우, 입력 데이터를 차등분할하여 [0:5]에 해당하는 비트 그룹1에는 LUT1을 적용하고, [6:12]에 해당하는 비트 그룹2에는 LUT2를 적용하고, [13:18]에 해당하는 비트 그룹3에는 LUT3을 적용하고, [19:25]에 해당하는 비트 그룹4에는 LUT4을 적용하고, [26:31]에 해당하는 비트 그룹5에는 LUT5를 적용할 수 있다.
Sarwate's Algorithm의 LUT는 8-bits Parallel CRC의 매트릭스를 테이블화한 결과로 볼 수 있다. 이를 본 실시예에 의한 CRC 연산법에 적용하면, Sarwate's Algorithm의 LUT는 병렬 처리하고자 하는 입력 데이터를 복수의 비트 그룹으로 나누었을 때 그 중 [0:7]의 비트 그룹에 적용되는 LUT와 같다.
본 실시예에 의한 CRC 연산법을 이용하여 LUT를 생성할 때는 수학식 2를 이용하여 LUT 생성 시간을 줄일 수 있다. Sarwate's Algorithm으로 LUT를 생성하는 경우 28 = 256번의 8비트 데이터에 대한 CRC 연산이 필요하다. 반면 본 실시예에 의한 CRC 연산법을 이용하여 32 bit Parallel CRC를 처리하는 LUT를 생성하면 Sarwate's Algorithm 방식은 물론 Slicing-By-N 방식보다도 빠르다.
표 1은 본 실시예에 의한 CRC 연산법을 이용하여 32 bit Parallel CRC를 처리하는 LUT를 생성하는 과정을 예시한 것이다.
Figure 112014111965215-pat00003
표 1에서 나타난 것과 같이, 본 실시예에서는 상위 4비트 그룹에 대한 LUT 생성시 각 비트당 1회 × 4비트 = 4회의 32비트 CRC 연산을 수행한다.
표 1에서 나타난 것과 같이, 본 실시예에서는 4비트열 중 1이 2번 나오면 XOR 연산을 1회 수행하고(0011, 0101, 0110, 1001, 1010, 1100의 경우), 4비트열 중 1이 3번 나오면 XOR 연산을 2회 수행하며(0111, 1011, 1101, 1110의 경우), 4비트열 중 1이 4번 나오면 XOR 연산을 3회 수행한다(1111의 경우).
4비트열 중 1이 2번 나올 경우의 수는 4C(4-2) = 6이고, 4비트열 중 1이 3번 나올 경우의 수는 4C(4-3) = 4이며, 4비트열 중 1이 4번 나올 경우의 수는 4C(4-4) = 1이다. 따라서 총 XOR 연산의 횟수는 수학식 3과 같다.
Figure 112014111965215-pat00004
즉, 본 실시예에 의하면 하나의 4비트 그룹당 4 번의 32비트 CRC 연산과 17 번의 32비트 XOR 연산을 수행하여 LUT를 생성할 수 있으므로, 8 개 LUT 생성에서는 총 4 × 8 = 32 번의 32비트 CRC 연산과 17 × 8 = 136 번의 32비트 XOR 연산만이 필요하다. 이는 28 = 256번의 32비트 CRC 연산을 4번 수행하여, 총 256 × 4 = 1024 번의 32비트 CRC 연산으로 LUT를 생성하는 Slicing-By-N 방식보다 획기적으로 빠르다.
도 3은 본 실시예에 의한 CRC 연산법을 소프트웨어로 구현한 코드의 일례이다. 도 3의 코드는 32 bit Parallel CRC 연산을 수행하는 함수이며, 임의의 길이를 가진 입력 데이터를 4비트 길이의 비트 그룹 8개로 균등분할하여 각 비트 그룹에 각기 독립된 LUT를 적용하는 과정을 예시하고 있다.
도 3의 코드는 선언단계(310), 반복연산단계(320) 및 최종연산단계(330)로 구분된다.
선언단계(310)에서는 입력된 Seed CRC 값이나 Computed CRC 값을 반복적으로 다음 연산에 반영한다.
반복연산단계(320)에서는 비트 그룹별로 독립된 LUT를 적용하여 CRC 연산을 수행한다.
최종연산단계(330)에서는 비트 정렬(Data Alignment)을 이용하여 CRC 연산을 수행한다. 비트 그룹별로 CRC 연산을 수행하다가 최종적으로 CRC 연산을 수행하는 비트 그룹의 길이는 병행 처리 비트의 길이보다 짧을 수 있다. 최종연산단계(330)는 이러한 문제점을 해결하고 CRC 연산을 마무리하기 위한 것으로서, CRC 연산을 수행해야 하는 비트 길이가 병행 처리 비트 길이보다 짧은 경우 병행 처리 비트의 길이에 맞추어 비트 정렬(Data Alignment)을 수행한다. 비트 정렬(Data Alignment)이 완료되면 반복연산단계(320)와 동일한 방법으로 해당 비트 그룹에 대한 LUT를 적용하여 CRC 연산을 수행한다.
도 3에 예시된 코드는 반복연산단계(320)에서 4비트 단위로 CRC 연산을 수행하다가, 전송되는 데이터가 3비트, 2비트, 1비트인 경우, 최종연산단계(330)에서 비트 정렬(Data Alignment)을 먼저 수행해준 후에 해당 비트 그룹에 대한 LUT를 적용하여 CRC 연산을 수행하는 과정을 예시하고 있다.
본 실시예에 의한 CRC 연산법은 Sarwate's Algorithm 또는 Slicing-By-N에 비해 다음과 같은 장점이 있다.
Slicing-By-N은 Sarwate's Algorithm을 이용하여 하나의 LUT를 생성하는 반면, 본 실시예에 의한 CRC 연산법은 비트 그룹별로 LUT를 생성한다.
Slicing-By-N은 병행 처리 비트 길이보다 짧은 데이터에 대해서는 기존의 Sarwate's Algorithm으로 CRC 연산을 수행하는 반면, 본 실시예에 의한 CRC 연산법은 병행 처리 비트 길이보다 짧은 데이터에 대해서는 비트 정렬(Data Alignment) 후 해당 비트 그룹에 대한 LUT를 적용함으로써 CRC 연산을 수행한다.
Slicing-By-N은 입력 데이터를 균등분할하여 CRC 연산을 수행하는 반면, 본 실시예에 의한 CRC 연산법은 입력 데이터를 균등분할하여 CRC 연산을 수행할 수 있을 뿐만 아니라 필요한 경우 입력 데이터를 차등분할하여 CRC 연산을 수행할 수도 있다.
Slicing-By-N은 LUT의 개수 및 크기가 정해져 있으나, 본 실시예에 의한 CRC 연산법은 비트 그루핑(Bit Grouping) 방법에 따라 LUT의 개수 및 크기를 조절할 수 있다. 나아가 본 실시예에 의한 CRC 연산법을 이용하여 N-bit LUT를 구현하면 N > 8인 경우에는 Slicing-By-N보다 빠르고 4 < N < 8인 경우에는 Sarwate's Algorithm보다 빠르다는 장점이 있다.
Slicing-By-N은 다종의 CRC 연산에 범용적으로 사용할 수 없으나, 본 실시예에 의한 CRC 연산법은 CRC-16-CCIT, CRC-16-ANSI, CRC-32 등 다종의 CRC 연산에 범용적으로 사용할 수 있다.
도 4a는 데이터 송신장치가 본 실시예에 의한 CRC 연산법을 이용하여 데이터를 송신하는 방법을 예시한 흐름도이다.
사용자는 전송하고자 하는 데이터의 특징이나 적용하고자 하는 CRC 연산의 특징을 반영하여 비트 그룹을 분할할 수 있다(S411). 예컨대 32 bit Parallel CRC 구현에 있어서 입력 데이터를 8개의 4비트 그룹으로 균등분할하는 것으로 비트 그룹을 분할할 수 있다. 다른 예로 32 bit Parallel CRC 구현에 있어서 입력 데이터를 6비트 그룹, 7비트 그룹, 6비트 그룹 및 7비트 그룹으로 차등분할하는 것으로 비트 그룹을 분할할 수 있다.
비트 그룹의 분할 형태가 정해지면 비트 그룹별로 CRC 연산을 수행하여 LUT를 생성한다(S412). 비트 그룹별로 LUT를 생성함에 있어서 수학식 2를 이용하여 LUT 생성 시간을 줄일 수 있다.
비트 그룹 설정 과정(S411) 및 LUT 생성 과정(S412)은 전송하고자 하는 데이터의 특징이나 적용하고자 하는 CRC 연산이 바뀌는 등 필요한 경우에만 수행하고, 한 번 수행되어 LUT가 생성된 후에는 비트 그룹 설정 과정(S411) 및 LUT 생성 과정(S412)을 거치지 않고 데이터 입력 과정(S413)으로 넘어갈 수 있다.
비트 그룹 설정 과정(S411) 및 LUT 생성 과정(S412)을 거쳐 비트 그룹별 LUT가 생성되면 전송할 데이터를 입력받는다(S413).
입력 데이터에 대하여 기 설정된 비트 그룹 단위로 LUT를 이용한 CRC 연산을 수행한다. 예컨대 32 bit Parallel CRC 구현에 있어서 입력 데이터를 8개의 4비트 그룹으로 균등분할한 경우, 4비트 그룹 단위로 LUT를 이용한 CRC 연산을 수행한다. 다른 예로 32 bit Parallel CRC 구현에 있어서 입력 데이터를 6비트 그룹, 7비트 그룹, 6비트 그룹 및 7비트 그룹으로 차등분할한 경우, 6비트 그룹, 7비트 그룹, 6비트 그룹, 7비트 그룹 단위로 LUT를 이용한 CRC 연산을 수행한다.
입력 데이터에 대하여 기 설정된 비트 그룹 단위로 LUT를 이용한 CRC 연산을 수행하기 전에, CRC 연산을 수행하지 않은 잔여 비트의 길이가 기 설정된 비트 그룹 단위보다 큰지 작은지를 판단한다(S414).
CRC 연산을 수행하지 않은 잔여 비트의 길이가 기 설정된 비트 그룹 단위보다 크거나 같은 경우, 현재 비트 그룹의 LUT를 이용하여 CRC 연산을 수행한다(S415).
CRC 연산을 수행하지 않은 잔여 비트의 길이가 기 설정된 비트 그룹 단위보다 작은 경우, 비트 정렬(Data Alignment) 후(S416) 현재 비트 그룹의 LUT를 이용하여 CRC 연산을 수행한다(S417).
CRC 연산 결과 CRC 코드가 계산되면, 계산된 CRC 코드를 입력 데이터에 삽입하여(S418) 송신한다(S419).
도 4b는 데이터 수신장치가 본 실시예에 의한 CRC 연산법을 이용하여 데이터를 수신하는 방법을 예시한 흐름도이다.
데이터 수신장치는 데이터 송신장치로부터 CRC 코드가 삽입된 데이터를 수신받는다(S421).
수신 데이터에 대하여 기 설정된 비트 그룹 단위로 LUT를 이용한 CRC 연산을 수행한다. 예컨대 32 bit Parallel CRC 구현에 있어서 수신 데이터를 8개의 4비트 그룹으로 균등분할한 경우, 4비트 그룹 단위로 LUT를 이용한 CRC 연산을 수행한다. 다른 예로 32 bit Parallel CRC 구현에 있어서 수신 데이터를 6비트 그룹, 7비트 그룹, 6비트 그룹 및 7비트 그룹으로 차등분할한 경우, 6비트 그룹, 7비트 그룹, 6비트 그룹, 7비트 그룹 단위로 LUT를 이용한 CRC 연산을 수행한다.
수신 데이터에 대하여 기 설정된 비트 그룹 단위로 LUT를 이용한 CRC 연산을 수행하기 전에, CRC 연산을 수행하지 않은 잔여 비트의 길이가 기 설정된 비트 그룹 단위보다 큰지 작은지를 판단한다(S422).
CRC 연산을 수행하지 않은 잔여 비트의 길이가 기 설정된 비트 그룹 단위보다 크거나 같은 경우, 현재 비트 그룹의 LUT를 이용하여 CRC 연산을 수행한다(S423).
CRC 연산을 수행하지 않은 잔여 비트의 길이가 기 설정된 비트 그룹 단위보다 작은 경우, 비트 정렬(Data Alignment) 후(S424) 현재 비트 그룹의 LUT를 이용하여 CRC 연산을 수행한다(S425).
CRC 연산 결과를 이용하여 오류 여부를 판단한 후(S426) 오류 여부를 표시한다(S427).
도 5a는 본 실시예에 의한 CRC 연산법을 이용한 데이터 송신장치를 예시한 도면이다.
본 실시예에 의한 데이터 송신장치는 비트 그룹 분할부(511), LUT 생성부(512), 입력부(513), LUT 연산부(514), 비트 정렬부(515) 및 송신부(516)를 포함한다.
비트 그룹 분할부(511)는 사용자의 입력을 받아 비트 그룹의 분할 형태를 정한다. 비트 그룹의 분할 형태는 메모리(미도시)에 저장된다.
LUT 생성부(512)는 비트 그룹 분할부(511)에서 정해진 비트 그룹별로 CRC 연산을 수행하여 LUT를 생성한다. 생성된 비트 그룹별 LUT는 메모리(미도시)에 저장된다.
입력부(513)는 전송하고자 하는 데이터를 입력받는다(S413).
LUT 연산부(514)는 입력 데이터에 대하여 기 설정된 비트 그룹 단위로 LUT를 이용한 CRC 연산을 수행한다.
입력 데이터에 대하여 기 설정된 비트 그룹 단위로 LUT를 이용한 CRC 연산을 수행하기 전에, LUT 연산부(514)는 CRC 연산을 수행하지 않은 잔여 비트의 길이가 기 설정된 비트 그룹 단위보다 큰지 작은지를 판단한다. CRC 연산을 수행하지 않은 잔여 비트의 길이가 기 설정된 비트 그룹 단위보다 크거나 같은 경우, LUT 연산부(514)는 현재 비트 그룹의 LUT를 이용하여 CRC 연산을 수행한다. CRC 연산을 수행하지 않은 잔여 비트의 길이가 기 설정된 비트 그룹 단위보다 작은 경우, LUT 연산부(514)는 CRC 연산을 수행하지 않은 잔여 비트를 비트 정렬부(515)로 전달하여 비트 정렬(Data Alignment)을 수행한 후에 현재 비트 그룹의 LUT를 이용하여 CRC 연산을 수행한다.
송신부(516)는 계산된 CRC 코드를 입력 데이터에 삽입한 후 전송한다.
도 5b는 본 실시예에 의한 CRC 연산법을 이용한 데이터 수신장치를 예시한 도면이다.
본 실시예에 의한 데이터 수신장치는 수신부(521), LUT 연산부(522), 비트 정렬부(523) 및 표시부(524)를 포함한다.
수신부(521)는 데이터 송신장치로부터 CRC 코드가 삽입된 데이터를 수신한다.
LUT 연산부(522)는 수신 데이터에 대하여 기 설정된 비트 그룹 단위로 LUT를 이용한 CRC 연산을 수행한다.
수신 데이터에 대하여 기 설정된 비트 그룹 단위로 LUT를 이용한 CRC 연산을 수행하기 전에, LUT 연산부(522)는 CRC 연산을 수행하지 않은 잔여 비트의 길이가 기 설정된 비트 그룹 단위보다 큰지 작은지를 판단한다. CRC 연산을 수행하지 않은 잔여 비트의 길이가 기 설정된 비트 그룹 단위보다 크거나 같은 경우, LUT 연산부(514)는 현재 비트 그룹의 LUT를 이용하여 CRC 연산을 수행한다. CRC 연산을 수행하지 않은 잔여 비트의 길이가 기 설정된 비트 그룹 단위보다 작은 경우, LUT 연산부(514)는 CRC 연산을 수행하지 않은 잔여 비트를 비트 정렬부(523)로 전달하여 비트 정렬(Data Alignment)을 수행한 후에 현재 비트 그룹의 LUT를 이용한 CRC 연산을 수행한다.
LUT 연산부(522)는 CRC 연산 결과를 이용하여 오류 여부를 판단한 후, 표시부(524)에 오류 여부를 표시한다.
본 실시예는 본 발명의 기술 사상을 예시적으로 설명한 것에 불과하고, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 본 실시예의 다양한 수정 및 변형이 가능할 것이다.
본 실시예는 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 따라서 본 실시예에 의하여 본 발명의 권리범위가 한정되는 것은 아니다. 본 발명의 보호범위는 청구범위에 의하여 해석되어야 하며, 그와 동등하거나 균등하다고 인정되는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 한다.
310: 선언단계 320: 반복연산단계
330: 최종연산단계 511: 비트 그룹 분할부
512: LUT 생성부 513: 입력부
514: LUT 연산부 515: 비트 정렬부
516: 송신부 521: 수신부
522: LUT 연산부 523: 비트 정렬부
524: 표시부

Claims (14)

  1. 순환중복검사를 이용한 데이터 송신방법에 있어서,
    전송하고자 하는 데이터를 입력받는 과정;
    복수개의 비트 그룹에 대하여, 비트 그룹별 LUT(Look Up Table)를 이용하여 상기 데이터의 비트 그룹별 CRC(Cyclic Redundancy Check) 연산을 수행하는 CRC 연산 과정;
    상기 비트 그룹별 CRC 연산 결과를 취합하여 CRC 코드를 산출하는 과정;
    상기 데이터에 상기 CRC 코드를 삽입하는 과정; 및
    상기 CRC 코드가 삽입된 데이터를 송신하는 과정을 포함하되,
    상기 복수개의 비트 그룹의 길이는 균등하지 않은 것을 특징으로 하는 데이터 송신방법.
  2. 순환중복검사를 이용한 데이터 송신방법에 있어서,
    전송하고자 하는 데이터를 입력받는 과정;
    복수개의 비트 그룹에 대하여, 비트 그룹별 LUT(Look Up Table)를 이용하여 상기 데이터의 비트 그룹별 CRC(Cyclic Redundancy Check) 연산을 수행하는 CRC 연산 과정;
    상기 비트 그룹별 CRC 연산 결과를 취합하여 CRC 코드를 산출하는 과정;
    상기 데이터에 상기 CRC 코드를 삽입하는 과정; 및
    상기 CRC 코드가 삽입된 데이터를 송신하는 과정을 포함하되,
    상기 CRC 연산 과정은, 상기 데이터에서 CRC 연산을 수행하지 않은 잔여 비트의 길이가 기 설정된 비트 그룹의 길이보다 작은 경우, 상기 기 설정된 비트 그룹의 길이에 따라 상기 잔여 비트를 시프트(Shift)시키는 비트 정렬(Data Alignment)을 수행한 후에 상기 CRC 연산을 수행하는 것을 특징으로 하는 데이터 송신방법.
  3. 제1항 또는 제2항에 있어서,
    전송하고자 하는 데이터를 입력 받는 과정 앞에, 상기 비트 그룹별 LUT를 생성하는 과정을 더 포함하는 것을 특징으로 하는 데이터 송신방법.
  4. 삭제
  5. 제1항 또는 제2항에 있어서,
    상기 비트 그룹별 LUT를 생성하는 과정은, 수학식
    Figure 112016020450529-pat00005

    (gi(x)는 모듈러 2 나눗셈 과정에서 i번째 입력 비트에 대해 적용되는 제수의 배수값, gi-1, 15는 gi-1(x)에서 x15의 계수)
    을 이용하는 것을 특징으로 하는 데이터 송신방법.
  6. 순환중복검사를 이용한 데이터 수신방법에 있어서,
    CRC(Cyclic Redundancy Check) 코드가 삽입된 데이터를 수신하는 과정;
    복수개의 비트 그룹에 대하여, 비트 그룹별 LUT(Look Up Table)를 이용하여 상기 데이터의 상기 비트 그룹별 CRC 연산을 수행하는 CRC 연산 과정; 및
    상기 비트 그룹별 CRC 연산 결과를 취합하여 상기 데이터의 오류 여부를 판단하는 과정을 포함하되,
    상기 복수개의 비트 그룹의 길이는 균등하지 않은 것을 특징으로 하는 데이터 수신방법.
  7. 순환중복검사를 이용한 데이터 수신방법에 있어서,
    CRC(Cyclic Redundancy Check) 코드가 삽입된 데이터를 수신하는 과정;
    복수개의 비트 그룹에 대하여, 비트 그룹별 LUT(Look Up Table)를 이용하여 상기 데이터의 상기 비트 그룹별 CRC 연산을 수행하는 CRC 연산 과정; 및
    상기 비트 그룹별 CRC 연산 결과를 취합하여 상기 데이터의 오류 여부를 판단하는 과정을 포함하되,
    상기 CRC 연산 과정은, 상기 데이터에서 CRC 연산을 수행하지 않은 잔여 비트의 길이가 기 설정된 비트 그룹의 길이보다 작은 경우, 상기 기 설정된 비트 그룹의 길이에 따라 상기 잔여 비트를 시프트(Shift)시키는 비트 정렬(Data Alignment)을 수행한 후에 상기 CRC 연산을 수행하는 것을 특징으로 하는 데이터 수신방법.
  8. 순환중복검사를 이용한 데이터 송신장치에 있어서,
    전송하고자 하는 데이터를 입력받는 입력부;
    복수개의 비트 그룹에 대하여, 비트 그룹별 LUT(Look Up Table)를 이용하여 상기 데이터의 상기 비트 그룹별 CRC(Cyclic Redundancy Check) 연산을 수행하고, 상기 비트 그룹별 CRC 연산 결과를 취합하여 CRC 코드를 산출하는 LUT 연산부;
    상기 데이터를 비트 정렬(Data Alignment)하는 비트 정렬부; 및
    상기 데이터에 상기 CRC 코드를 삽입하여 송신하는 송신부를 포함하되,
    상기 복수개의 비트 그룹의 길이는 균등하지 않은 것을 특징으로 하는 데이터 송신장치.
  9. 순환중복검사를 이용한 데이터 송신장치에 있어서,
    전송하고자 하는 데이터를 입력받는 입력부;
    복수개의 비트 그룹에 대하여, 비트 그룹별 LUT(Look Up Table)를 이용하여 상기 데이터의 상기 비트 그룹별 CRC(Cyclic Redundancy Check) 연산을 수행하고, 상기 비트 그룹별 CRC 연산 결과를 취합하여 CRC 코드를 산출하는 LUT 연산부;
    상기 데이터를 비트 정렬(Data Alignment)하는 비트 정렬부; 및
    상기 데이터에 상기 CRC 코드를 삽입하여 송신하는 송신부를 포함하되,
    상기 비트 정렬부는, 상기 데이터에서 CRC 연산을 수행하지 않은 잔여 비트의 길이가 기 설정된 비트 그룹의 길이보다 작은 경우, 상기 기 설정된 비트 그룹의 길이에 따라 상기 잔여 비트를 시프트(Shift)시키는 것을 특징으로 하는 데이터 송신장치.
  10. 제8항 또는 제9항에 있어서,
    사용자의 입력을 받아 비트 그룹의 분할 형태를 정하는 비트 그룹 분할부; 및
    상기 비트 그룹 분할부에서 정해진 비트 그룹별로 CRC 연산을 수행하여 LUT를 생성하는 LUT 생성부
    를 더 포함하는 것을 특징으로 하는 데이터 송신장치.
  11. 삭제
  12. 제8항 또는 제9항에 있어서,
    상기 비트 그룹별 LUT를 생성하는 것은, 수학식
    Figure 112016020450529-pat00006

    (gi(x)는 모듈러 2 나눗셈 과정에서 i번째 입력 비트에 대해 적용되는 제수의 배수값, gi-1, 15는 gi-1(x)에서 x15의 계수)
    을 이용하는 것을 특징으로 하는 데이터 송신장치.
  13. 순환중복검사를 이용한 데이터 수신장치에 있어서,
    데이터 송신장치로부터 CRC(Cyclic Redundancy Check) 코드가 삽입된 데이터를 수신하는 수신부;
    복수개의 비트 그룹에 대하여, 비트 그룹별 LUT(Look Up Table)를 이용하여 상기 데이터의 상기 비트 그룹별 CRC 연산을 수행하고, 상기 비트 그룹별 CRC 연산 결과를 취합하여 상기 데이터의 오류 여부를 판단하는 LUT 연산부;
    상기 데이터를 비트 정렬(Data Alignment)하는 비트 정렬부; 및
    상기 데이터의 오류 여부를 표시하는 표시부를 포함하되,
    상기 복수개의 비트 그룹의 길이는 균등하지 않은 것을 특징으로 하는 데이터 수신장치.
  14. 순환중복검사를 이용한 데이터 수신장치에 있어서,
    데이터 송신장치로부터 CRC(Cyclic Redundancy Check) 코드가 삽입된 데이터를 수신하는 수신부;
    복수개의 비트 그룹에 대하여, 비트 그룹별 LUT(Look Up Table)를 이용하여 상기 데이터의 상기 비트 그룹별 CRC 연산을 수행하고, 상기 비트 그룹별 CRC 연산 결과를 취합하여 상기 데이터의 오류 여부를 판단하는 LUT 연산부;
    상기 데이터를 비트 정렬(Data Alignment)하는 비트 정렬부; 및
    상기 데이터의 오류 여부를 표시하는 표시부를 포함하되,
    상기 LUT 연산부는,상기 데이터에서 CRC 연산을 수행하지 않은 잔여 비트의 길이가 기 설정된 비트 그룹의 길이보다 작은 경우, 상기 기 설정된 비트 그룹의 길이에 따라 상기 잔여 비트를 시프트(Shift)시키는 것을 특징으로 하는 데이터 수신장치.
KR1020140162449A 2014-11-20 2014-11-20 복수의 룩업테이블을 이용한 crc 연산 장치 및 방법 KR101655809B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020140162449A KR101655809B1 (ko) 2014-11-20 2014-11-20 복수의 룩업테이블을 이용한 crc 연산 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140162449A KR101655809B1 (ko) 2014-11-20 2014-11-20 복수의 룩업테이블을 이용한 crc 연산 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20160060329A KR20160060329A (ko) 2016-05-30
KR101655809B1 true KR101655809B1 (ko) 2016-09-08

Family

ID=56950577

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140162449A KR101655809B1 (ko) 2014-11-20 2014-11-20 복수의 룩업테이블을 이용한 crc 연산 장치 및 방법

Country Status (1)

Country Link
KR (1) KR101655809B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101917312B1 (ko) * 2017-09-15 2018-11-13 보험계리법인지아컨설팅 주식회사 보험의 현금흐름 산출방법, 보험의 현금흐름 산출장치 및 기록 매체

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6195780B1 (en) * 1997-12-10 2001-02-27 Lucent Technologies Inc. Method and apparatus for generating cyclical redundancy code
US8555148B2 (en) * 2007-09-18 2013-10-08 Samsung Electronics Co., Ltd. Methods and apparatus to generate multiple CRCs

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101917312B1 (ko) * 2017-09-15 2018-11-13 보험계리법인지아컨설팅 주식회사 보험의 현금흐름 산출방법, 보험의 현금흐름 산출장치 및 기록 매체

Also Published As

Publication number Publication date
KR20160060329A (ko) 2016-05-30

Similar Documents

Publication Publication Date Title
US8468439B2 (en) Speed-optimized computation of cyclic redundancy check codes
US4494234A (en) On-the-fly multibyte error correcting system
US6640327B1 (en) Fast BCH error detection and correction using generator polynomial permutation
JP2006244259A (ja) 誤りバイト数を制限したバイト内複数スポッティバイト誤り訂正・検出方法及び装置
EP0840461A2 (en) Galois field multiplier for Reed-Solomon decoder
US7243289B1 (en) Method and system for efficiently computing cyclic redundancy checks
US6467063B1 (en) Reed Solomon coding apparatus and Reed Solomon coding method
JPH0452556B2 (ko)
CN102096609A (zh) 可编程循环冗余校验(crc)计算的指令集架构
CN107239362B (zh) 一种并行crc校验码的计算方法及系统
US7168024B2 (en) Data processing system and method
US8099655B1 (en) Galois field multiplier system and method
JP7116374B2 (ja) 短縮レイテンシ誤り訂正復号
KR101655809B1 (ko) 복수의 룩업테이블을 이용한 crc 연산 장치 및 방법
Lin et al. A cyclic weight algorithm of decoding the (47, 24, 11) quadratic residue code
KR100731985B1 (ko) 파이프라인 구조 병렬 순환 중복 검사 장치 및 방법
Babaie et al. Double bits error correction using CRC method
JP2017139738A (ja) 復号化装置、プログラム、及び情報伝送システム
Chen et al. A lookup table decoding of systematic (47, 24, 11) quadratic residue code
CN100517214C (zh) 一种实现二进制多项式运算的硬件配置方法及硬件系统
US7181671B2 (en) Parallelized CRC calculation method and system
KR101619049B1 (ko) 병렬 bch 디코더
US7225391B1 (en) Method and apparatus for parallel computation of linear block codes
KR20140091087A (ko) 병렬 bch 복호기를 위한 고속 소면적의 수정된 스텝-바이-스텝 복호 방법 및 그 연산 회로
US10623018B2 (en) Method of arrangement of an algorithm in cyclic redundancy check

Legal Events

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

Payment date: 20190902

Year of fee payment: 4