KR100731985B1 - 파이프라인 구조 병렬 순환 중복 검사 장치 및 방법 - Google Patents

파이프라인 구조 병렬 순환 중복 검사 장치 및 방법 Download PDF

Info

Publication number
KR100731985B1
KR100731985B1 KR1020050133449A KR20050133449A KR100731985B1 KR 100731985 B1 KR100731985 B1 KR 100731985B1 KR 1020050133449 A KR1020050133449 A KR 1020050133449A KR 20050133449 A KR20050133449 A KR 20050133449A KR 100731985 B1 KR100731985 B1 KR 100731985B1
Authority
KR
South Korea
Prior art keywords
din
crc
xor logic
logic
data
Prior art date
Application number
KR1020050133449A
Other languages
English (en)
Inventor
전기만
박창원
김영환
김기태
이현빈
박성주
Original Assignee
전자부품연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 전자부품연구원 filed Critical 전자부품연구원
Priority to KR1020050133449A priority Critical patent/KR100731985B1/ko
Priority to US11/616,480 priority patent/US7895499B2/en
Application granted granted Critical
Publication of KR100731985B1 publication Critical patent/KR100731985B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • H03M13/091Parallel or block-wise CRC computation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6575Implementations based on combinatorial logic, e.g. Boolean circuits

Abstract

본 발명은 파이프라인 구조 병렬 순환 중복 검사(CRC) 장치로서, w(w는 자연수) 비트 병렬 데이터를 입력으로 하는 데이터 XOR 논리와, 피드백되는 n(n은 w보다 작은 자연수) 비트 CRC 코드를 입력으로 하는 CRC 코드 XOR 논리와, 상기 데이터 XOR 논리와 상기 CRC 코드 XOR 논리의 출력을 XOR 연산하여 n 비트 CRC 코드 결과를 출력하는 XOR 어레이와, 현재 저장된 상기 n 비트 CRC 코드를 피드백하고 상기 XOR 어레이에서 출력되는 상기 n 비트 CRC 코드 결과를 새로운 n 비트 CRC 코드로 저장하는 CRC 레지스터를 포함하는 파이프라인 구조 병렬 순환 중복 검사 장치에 관한 것이다.
본 발명에 따르면, CRC 전체 로직을 CRC 결과 피드백 부분과 입력 데이터 부분으로 분리한 후, 입력 데이터 부분을 파이프라인 구조를 사용하여 분할하되, 각 단계의 로직 레벨이 피드백 부분의 로직 레벨 이하가 되도록 하는 알고리즘과 분할시 삽입되는 레지스터 크기를 최적화하는 알고리즘을 기반으로 입력 데이터 로직 부분을 파이프 라인 구조로 설계함으로써 속도를 향상시켜서 고속의 데이터 통신 시스템에서 수신 데이터 오류 검출을 수행할 수 있다.
순환 중복 검사(CRC), 병렬 CRC, 파이프라인 구조, XOR, 분할 데이터 XOR, 로직 레벨, 임계 경로

Description

파이프라인 구조 병렬 순환 중복 검사 장치 및 방법{DEVICE AND METHOD FOR PIPELINED PARALLEL CRC}
도 1은 종래의 CRC 생성기의 예시적인 구성도.
도 2는 종래의 CRC 생성 알고리즘의 유사코드(pseudo code)를 나타내는 도면.
도 3은 도 2의 유사코드를 적용한 CRC 결과를 나타내는 도면.
도 4는 종래의 병렬 CRC 생성 회로의 예시적인 구성도.
도 5는 본 발명에 따른 파이프라인 구조 병렬 순환 중복 검사 장치의 구성도.
도 6은 본 발명에 따른 파이프라인 구조의 병렬 순환 중복 검사 방법의 흐름도.
<도면의 주요부분에 대한 부호의 설명>
110: Din 레지스터 120: CRC 레지스터
130: XOR 논리 200: 데이터 XOR 논리
210: 레지스터 220: 분할 데이터 XOR 논리
230: CRC 코드 XOR 논리 240: CRC 레지스터
250: XOR 어레이
본 발명은 파이프라인 구조 병렬 순환 중복 검사(Cyclic Redundancy Check, CRC) 장치 및 방법에 관한 것으로, 더욱 구체적으로는 CRC 전체 로직을 CRC 결과 피드백 부분과 입력 데이터 부분으로 분리한 후, 입력 데이터 부분을 파이프라인 구조를 사용하여 분할하되, 각 단계의 로직 레벨이 피드백 부분의 로직 레벨 이하가 되도록 하는 알고리즘과 분할시 삽입되는 레지스터 크기를 최적화하는 알고리즘을 기반으로 입력 데이터 로직 부분을 파이프 라인 구조로 설계함으로써 속도를 향상시켜서 고속의 데이터 통신 시스템에서 수신 데이터 오류 검출을 수행하는 파이프라인 구조 병렬 순환 중복 검사 장치 및 방법에 관한 것이다.
CRC는 데이터 송수신 시스템에서 가장 많이 사용되는 오류 검출 방법이다. 예컨대, 한국전자통신연구원에 의해서 1994년 12월 13일자로 출원되고 1997년 10월 16일자로 등록된 "고속 트랜스포트 프로토콜 체크 코드 생성을 위한 병렬 순환 잉여 감시 코드 생성수단"이라는 명칭의 특허공고 제0126591호는 이러한 CRC 데이터를 생성하는 수단에 대해서 상세히 개시하고 있다.
CRC에 대해서 좀 더 상세히 설명하면, 두 개의 데이터 송신 및 수신 시스템 간에 미리 약속된 특정 수를 제수로 사용하여, 송신측 시스템에서는 보내려는 데이터를 그 수로 나누고, 나눈 나머지를 송신하는 데이터의 끝부분에 함께 실어 전송하면, 수신측 시스템에서는 수신된 데이터를 같은 수로 나누어 나머지를 비교하거 나 나머지까지 포함한 데이터 전체를 나누어 나머지가 '0'이 되는지를 파악하여 데이터의 오류 유무를 판단하게 된다. 이 과정에서, 데이터를 나눈 나머지 자체가 CRC 코드가 되며, 어떤 특정 제수에 의한 나머지 값이므로 CRC 코드는 데이터 크기에 상관없이 항상 그 제수 이하의 수가 된다.
이러한 개념을 바탕으로, 현재의 데이터 통신 시스템에서는, 제수로써 표준화되어 있는 몇 가지 다항식(polynomial)을 주로 사용하며, 이진 모듈로 연산을 수행함으로써 나온 결과를 CRC 코드로 사용한다.
따라서 직렬 데이터 송수신 시스템에서, XOR 게이트를 이용하여 이진 모듈로 연산을 수행할 수 있으므로, 선형 피드백 쉬프트 레지스터(linear feedback shift register, 이하 "LFSR"이라 함)와 XOR 게이트를 이용하여 하드웨어로 구현할 수 있다.
도 1은 종래의 CRC 생성기의 예시적인 구성도이다. 도 1에 도시된 CRC 생성기는 다항식 P(x) = x16 + x12 + x5 + 1(ITU_TSS 표준에 따름)에 대해서 LFSR을 이용하여 구현된 CRC 생성기의 일 예이다.
도시되듯이 복수의 LFSR(F1 내지 F16)에 의해서 쉬프트되는 데이터 값을 더하여 다항식 P(x) = x16 + x12 + x5 + 1에 대응되는 CRC를 생성하게 된다.
도 1에 도시된 바와 같은 직렬 CRC 생성은 시스템 속도 향상에 지장을 주게 된다. 따라서 직렬 데이터를 병렬로 변환 후, 한 클럭 사이클에 의해서 CRC 코드를 생성하려는 방안에 대해서 연구가 진행되었으며, 그 결과로 복수 회의 쉬프트와 XOR 연산 후에 각 플립플롭에 저장되도록 하던 종래의 직렬 CRC 생성 방식 대신에 병렬 데이터를 입력받고 병렬 데이터 입력을 XOR 조합 회로를 통해 한 사이클에 생성될 수 있는 CRC 생성 회로가 개발되었다.
도 2는 종래의 CRC 생성 알고리즘의 유사코드(pseudo code)를 나타내는 도면으로, n번의 쉬프트 후 각 레지스터의 결과를 생성하는 Xi의 조합을 이끌어 내기 위한 알고리즘의 유사코드이다. 여기에 매번 루프를 실행할 때마다 각 F에 저장되는 결과를, 계산된 숫자가 아닌 Xi로 저장하여 나타냄으로써 도 3과 같이 원하는 Xi의 조합을 구할 수 있다. 도 2를 참조로 하면 기본적인 병렬 CRC 회로의 구현은 다음과 같이 일반화할 수 있다.
우선 병렬 데이터의 크기와 CRC 레지스터의 길이가 모두 양의 정수 n인, n-비트 CRC 생성기 구현을 위한 알고리즘을 설명하기 위하여, n 비트 LFSR에 대해서 i를 1 이상 n 이하인 양의 정수로, Fi를 LFSR의 i 번째 레지스터로, Ci를 쉬프트를 시작하기 이전에 Fi 에 저장되어 있는 초기값으로, Di를 i 번째 입력 데이터라 하고, 데이터는 최하위 비트인 D1부터 입력되고, 쉬프트는 도 1과 같이 번호가 낮은 레지스터 방향으로 진행된다고 가정한다.
이 경우 쉬프트를 수행하기 전의 레지스터의 초기값 Ci는 각 CRC 생성 방법에 따라 다르며 일괄적으로 초기값을 '1'로 전부 설정하거나 '0'으로 전부 설정하거나 또는 '1'과 '0'이 교대로 반복되도록 설정할 수도 있을 것이다.
이러한 CRC 생성에 있어서 매 클럭마다 한 비트씩 쉬프트를 하여, 레지스터 Fi에는 쉬프트와 XOR 게이트에 의해 Ci와 Di 각각의 조합으로 이루어진 새로운 값 이 저장된다.
예컨대 도 1에서 한 번의 쉬프트를 수행한 후, F16은 (D1 xor C1), F11은 (D1 xor C1 xor C12), F4는 (D1 xor C1 xor C5), 그 밖에 다른 레지스터는 단순히 Fi+1의 값을 저장하게 된다. 이와 같은 방식으로 n번 쉬프트 후에 각각의 레지스터에 저장되는 값이 n비트 데이터에 대한 CRC 코드가 된다. 또한, Xi를 (Di xor Ci)라고 하면, n번 쉬프트 후, 레지스터의 결과 값이 모두 Xi만의 조합으로 이루어진다는 특징이 있다. 따라서 Xi하나가 2입력 XOR 게이트가 되고 Xi의 조합으로부터 한 클럭에 CRC 코드를 생성하는 병렬 CRC 회로를 구성할 수 있다.
도 3은 도 2의 유사코드를 적용한 CRC 결과를 나타내는 도면이다. 도 3에서는 다항식 P(x) = x16 + x12 + x5 + 1(ITU_TSS 표준에 따름)에 대해서 도 2의 유사코드를 적용한 결과를 도시한다. 도시되듯이, 레지스터 F1에는 X4 XOR X5 XOR X8 XOR X12 XOR X16의 연산값이 저장되며, 마찬가지로 F16에는 X5 XOR X6 XOR X9 XOR X13의 연산값이 저장된다.
한편 도 2 내지 도 3은 병렬 입력 데이터의 크기와 CRC 레지스터의 길이가 모두 양의 정수 n인 경우이지만 병렬 입력 데이터가 w의 크기이고, CRC 레지스터가 n의 길이인 경우 일반적인 경우는 다음과 같은 수학식 1을 이용하여 구현할 수 있다.
Figure 112005077815287-pat00001
변환 행렬 F를 이용하여, w < n 일 때, 병렬 입력 데이터 D = [dw-1, … d1, d0 | 0, …, 0]T이고, w = n 일 때, D = [dw-1, …, d1, d0 ]T , CRC 코드표 C = [cn-1, cn-2, …, c0]T 라 하면,
Figure 112005077815287-pat00002
Figure 112005077815287-pat00003
CRC = Fw (C D)
여기서
Figure 112005077815287-pat00004
는 행렬곱,
Figure 112005077815287-pat00005
는 행렬의 XOR 연산을 나타내는 연산자이다.
이러한 방식에 대한 좀더 상세한 사항은 캄포벨로 등의 논문(G. Campobello, G. Patane and M. Russo, "Parallel CRC Realization," IEEE Transactions on Computers, Vol. 52, pp. 63-71, Oct. 2003)을 참조할 수 있다.
도 4는 종래의 병렬 CRC 생성 회로의 예시적인 구성도이다.
도 4의 CRC 생성 회로는 수학식 1을 기초로 구성된 것이며, w 비트의 레지스터(Din Reg, 110)와, n 비트의 레지스터(CRC Reg, 120)와, CRC 결과표를 이용한 기본적인 병렬 CRC 회로가 도시된다.
즉 입력 데이터는 w 비트의 Din이며, 이는 Din 레지스터(110)에 저장된다. 또한 CRC 결과표를 저장하는 n 비트의 CRC 레지스터(120)와, n비트의 CRC 표와 w비트의 Din을 기초로 XOR 연산을 수행하는 XOR 논리(130)에 의해서 n비트의 CRC_코드가 출력된다.
이러한 종래의 CRC 생성의 구현예로서는 다음과 같은 다수의 논문을 참조할 수 있다.
사와테의 논문(D. V. Sarwate, "Computation of Cyclic Redundancy Checks via Table Look-Up, "Comm. ACM, Aug. 1988)과, 조시 등의 논문(S. M. Joshi, P. K. Dubey and M. A. Kaplan, "A New Parallel Algorithm for CRC Generation," IEEE International Conference on Communications, Vol. 3, pp. 18-22, Jun. 2000.)은 표 검색 방식을 사용하여 CRC 생성을 개시하였는데, 코드 생성 다항식의 차수와 데이터 폭이 증가함에 따라 표 검색 시간이 증가하는 문제점이 있다.
또한 페이 등의 논문( T. B. Pei and C. Zukowski, "High-Speed Parallel CRC Circuits in VLSI,"IEEE Transaction on Communications, Vol. 40, no. 4, pp. 653-657, 1992)에서는 32 비트 LFSR의 8번 쉬프트 후의 결과를 이용하여, 입력 데이터 폭이 8 비트인 32 비트 CRC 회로를 개시하고 있다.
또한 홉슨 등의 논문(R. F. Hobson and K. L. Cheng, "A High-Performance CMOS 32-Bit Parallel CRC Engine," IEEE Journal of Solid-State Circuits, Vol. 34, No. 2, pp. 233-235, Feb. 1999)에서는 데이터 폭을 32 비트로 확장하고, 속도를 향상시키기 위하여, 프리디코딩(Pre-decoding) 로직과 이진트리 축소 기법을 사 용하여 논리 단을 최소화하고, 팬 아웃(fan-out)을 줄인 XOR 게이트를 사용하여 매핑하는 기술을 개시하였다.
또한 시에 등의 논문(M. D. Shieh et al., "A Systematic Approach for Parallel CRC Computations,"J. Information Science and Engineering, May 2001)에서는 갈로와 필드(Galois Field) 이론을 바탕으로 병렬 CRC 회로를 구현하였으며, 스팩만의 논문(M. Spachmann, "Automatic Generation of Parallel CRC Circuits," IEEE Design and Test of Computers, Vol. 18, pp. 108-114, May 2001)은 다양한 생성 다항식과 데이터 폭에 적용 가능한 VHDL 코드를 제시하였다.
캄포벨로 등의 논문(G. Campobello, G. Patane and M. Russo, "Parallel CRC Realization," IEEE Transactions on Computers, Vol. 52, pp. 63-71, Oct. 2003)에서는 상기 시에 등의 논문을 개선하여 데이터 폭이 생성 다항식의 차수 이하인 경우에 최적화된 식을 제시하고, 기존의 논문에서 제시하는 CRC 구현 방식에 비해 좋은 성능을 나타내는 것을 개시하였다.
그러나 이러한 종래 병렬 CRC회로 구현 기술은 회로의 중복성을 피하거나 빠른 클럭 주파수에서 사용하기 위한 로직 레벨을 줄이는 시도가 되어 있지 않기 때문에 고속의 데이터 통신 시스템에 적용하기 쉽지 않다는 문제점이 있다.
따라서 모든 CRC 회로에 적용할 수 있는 최적화된 CRC 회로를 구현하기 위한 방안의 필요성이 커지고 있다.
본 발명의 목적은 CRC 전체 로직을 CRC 결과 피드백 부분과 입력 데이터 부 분으로 분리한 후, 입력 데이터 부분을 파이프라인 구조를 사용하여 분할하되, 각 단계의 로직 레벨이 피드백 부분의 로직 레벨 이하가 되도록 하는 알고리즘과 분할시 삽입되는 레지스터 크기를 최적화 하는 알고리즘을 기반으로 입력 데이터 로직 부분을 파이프 라인 구조로 설계함으로써 속도를 향상시켜서 고속의 데이터 통신 시스템에서 수신 데이터 오류 검출을 수행할 수 있는 파이프라인 구조 병렬 순환 중복 검사 장치를 제공하는 데 있다.
본 발명의 다른 목적은 CRC 전체 로직을 CRC 결과 피드백 부분과 입력 데이터 부분으로 분리한 후, 입력 데이터 부분을 파이프라인 구조를 사용하여 분할하되, 각 단계의 로직 레벨이 피드백 부분의 로직 레벨 이하가 되도록 하는 알고리즘과 분할시 삽입되는 레지스터 크기를 최적화하는 알고리즘을 기반으로 입력 데이터 로직 부분을 파이프 라인 구조로 설계함으로써 속도를 향상시켜서 고속의 데이터 통신 시스템에서 수신 데이터 오류 검출을 수행할 수 있는 파이프라인 구조 병렬 순환 중복 검사방법을 제공하는 데 있다.
상기 기술적 과제를 달성하기 위하여, 본 발명은 파이프라인 구조 병렬 순환 중복 검사(CRC) 장치로서, w(w는 자연수) 비트 병렬 데이터를 입력으로 하는 데이터 XOR 논리와, 피드백되는 n(n은 w보다 작은 자연수) 비트 CRC 코드를 입력으로 하는 CRC 코드 XOR 논리와, 상기 데이터 XOR 논리와 상기 CRC 코드 XOR 논리의 출력을 XOR 연산하여 n 비트 CRC 코드 결과를 출력하는 XOR 어레이와, 현재 저장된 상기 n 비트 CRC 코드를 피드백하고 상기 XOR 어레이에서 출력되는 상기 n 비트 CRC 코드 결과를 새로운 n 비트 CRC 코드로 저장하는 CRC 레지스터를 포함하는 파이프라인 구조 병렬 순환 중복 검사 장치를 제공한다.
또한 본 발명은 파이프라인 구조의 병렬 순환 중복 검사(CRC) 방법으로서, CRC 계산을 위한 XOR 논리를 w(w는 자연수) 비트 병렬 데이터를 입력으로 하는 데이터 XOR 논리와 피드백되는 n(n은 자연수) 비트 CRC 코드를 입력으로 하는 CRC 코드 XOR 논리로 분리하는 단계와, w>n이면 상기 데이터 XOR 논리와 상기 CRC 코드 XOR 논리의 로직 레벨을 비교하여 상기 데이터 XOR 논리의 로직 레벨이 상기 CRC 코드 XOR 논리의 로직 레벨보다 큰 경우 상기 데이터 XOR 논리를 상기 다수개의 분할 데이터 XOR 논리로 분할하는 단계와, 상기 다수개의 분할 데이터 XOR 논리에 대응하는 분할 레지스터의 크기를 결정하는 단계와, 상기 다수개의 분할 데이터 XOR 논리의 최종 출력과 상기 CRC 코드 XOR 논리의 최종 출력을 XOR 연산하여 n 비트 CRC 코드 결과를 출력하는 단계를 포함하는 파이프라인 구조의 병렬 순환 중복 검사 방법을 제공한다.
이하, 본 발명의 파이프라인 구조 병렬 순환 중복 검사 장치 및 방법을 첨부한 도면을 참조로 보다 구체적으로 설명한다.
도 5는 본 발명에 따른 파이프라인 구조 병렬 순환 중복 검사 장치의 구성도이다.
도시되듯이, 본 발명에 따른 파이프라인 구조 병렬 순환 중복 검사 장치는, 레지스터(210a 내지 210k)와 분할 데이터 XOR 논리(220a 내지 220k)로 구성된 데이터 XOR 논리(200)와, CRC 코드 XOR 논리(230)와, CRC 레지스터(240)와, XOR 어레이 (250)를 포함한다.
입력 데이터 비트 w가 피드백되는 CRC 결과 비트 n 보다 작거나 같은 경우 도 4의 XOR 논리(120)의 임계경로의 로직 레벨이 CRC에 의해 결정된다. 그러나 w가 n보다 큰 경우는, 입력 데이터의 크기가 CRC보다 크므로 XOR 논리(120)의 임계경로의 로직 레벨이 입력 데이터에 의해 좌우된다.
따라서 본 발명에 따른 파이프라인 구조 병렬 순환 중복 검사 장치에서는, n 비트 CRC 회로에 대해서, w가 n보다 클 경우, 도 4의 XOR 논리(120)를 피드백되는 CRC_Code를 입력으로 하는 로직과 병렬 데이터 Din을 입력으로 하는 로직으로 분리하고, Din을 입력으로 하는 로직을, 한 단계의 로직 레벨이 CRC_Code를 입력으로 하는 로직의 최대 로직 레벨의 이하가 되도록 파이프라인으로 구성하여 성능을 향상시키는 방법을 제시한다.
도 4의 XOR 논리(120)의 각 출력은 CRC_Code n 비트 전체 또는 그 중 일부 비트와, Din w 비트 전체 또는 그 중 일부 비트와의 XOR로 구성된다. 따라서 도 5에 도시된 바와 같이 CRC 코드 XOR 논리(230)와, 데이터 XOR 논리(220a 내지 220k) 및 XOR 어레이(250)로 분리할 수 있다.
이 중 CRC 코드 XOR 논리(230)는 매 클럭마다 업데이트되는 값이 피드백되기 때문에 파이프라인으로 구현하기 어렵다. 따라서 데이터 XOR 논리(220)를 여러 단계의 파이프라인으로 나누되, 각 단계의 데이터 XOR 논리(220a 내지 220k)의 로직 레벨이 CRC 코드 XOR 논리(230)의 로직 레벨의 이하가 되도록 함으로써, w의 사이즈가 증가하더라도 보다 높은 주파수의 클럭을 사용할 수 있다.
도 5의 분리된 두 로직, 즉 CRC 코드 XOR 논리(230)와, 데이터 XOR 논리(220)를 각각 CX와 DX라고 하고 수학식 2를 w > n인 경우로 확장하여, CRC 코드 XOR 논리(230)와, 데이터 XOR 논리(220a 내지 220k) 구현을 위한 식을 유도한다.
우선, 정수 i = 0, 1, …, n-1 에 대해서, 병렬 입력 데이터 Din, CX의 결과 Cr, DX의 결과 Dr, CRC 결과 CRC_Code는 각각 수학식 3과 같이 표시할 수 있다.
Din = [dinw -1, dinw -2, …, din0]T,
Cr = [cn-1, cn-2, …, c0]T,
Dr = [dn-1, dn-2, …, d0]T,
CRC_Code = [crcn-1, crcn-2, …, crc0]T
이 경우, crci(t+1) = ci(t)
Figure 112005077815287-pat00006
XOR di(t)가 된다. 즉, 다음 상태에 CRC 레지스터(240)에 저장될 CRC_Code(t+1)은 현재 Cr(t)와 Dr(t)의 XOR에 의해 생성되므로 다음 수학식 4를 얻을 수 있다.
Figure 112005077815287-pat00007
CRC_Code(t+1) = Cr(t)Dr(t)
CX는, Din의 원소가 모두 0인 경우에 해당되므로 Dr 또한 모두 0이 되어 수학식 2와 수학식 4에 의해서 Cr(t)는 다음 수학식 5로 표시될 수 있다.
Figure 112005077815287-pat00008
Cr(t) = Fw CRC_Code(t)
여기서 CRC_Code(t+1) = Cr(t)이다.
DX는 w가 n이상이므로, 수학식 2를 기초로 한 수학식 5에 적용하기 위해서는 w-비트의 입력 데이터를 n-비트 단위로 그룹화할 필요가 있다. 만일, w가 정확하게 n으로 나누어떨어진다면, 즉, k가 양의 정수라 할 때, w = n * k 이면, 다음과 같이 Din을, 원소의 개수가 n-비트인 k개의 그룹으로 나눈다.
Din1 = [dinw-1, dinw-2, …, dinw-n]T
Din2 = [dinw-n-1, dinw-n-2, …, dinw-2n]T
: :
Dink = [dinw -(k-1)n-1, dinw -(k-1)n-2, …, din0]T
만일, w가 n으로 나누어 떨어지지 않는다면 즉, j를 n 이하의 양의 정수라고 할 때, (w = n* (k-1) + j)이면, Dink에 아래 수학식 7과 같이 j개의 0을 포함시킴으로써 Dink를 n 비트의 한 그룹으로 구성한다.
Dink = [dinw-(k-1)n-1, dinw-(k-1)n-2, …, din0, 0, …, 0]T
이와 같이 분리된 입력 데이터 그룹을 이용하여 DX를 구현하기 위하여, LFSR에 데이터를 쉬프트 입력을 할 때, 매 사이클 후 LFSR에 저장되어 있는 결과가 다음 입력될 데이터에 대해서 LFSR의 초기값이 됨을 이용한다.
LFSR에 저장되는 변수값 V = [vn -1, vn -2, …, v0]T라하고, D'ink = Fn
Figure 112005077815287-pat00009
(V
Figure 112005077815287-pat00010
Dink) 라고 정의하자. DX에서는, Cr이 0이므로, 초기 값은 V= [0, …, 0]T 이 된다. 따라서 Din1에 대해서 V = [0, …, 0]T이 되고, Din2에 대해서 V = D'in1이 되어, Dink에 대해서 V = D'ink - 1이됨을 알 수 있다. 이와 같은 과정을 수학식 2에 적용하면 다음 수학식 8과 같다.
Figure 112005077815287-pat00011
Figure 112005077815287-pat00012
Figure 112005077815287-pat00013
D'in1 = Fn([0 …0]TDin1) = FnDin1
D'in2 = Fn
Figure 112005077815287-pat00014
(D'in1
Figure 112005077815287-pat00015
Din2)
: :
D'ink = Fn
Figure 112005077815287-pat00016
(D'ink-1
Figure 112005077815287-pat00017
Dink)
여기에서, 최종적으로 얻은 D'ink 가 곧 Dr(t)가 된다. 다시 정리하면, Dr(t)는 다음 수학식 9와 같이 나타낼 수 있다.
Figure 112005077815287-pat00018
Figure 112005077815287-pat00019
Figure 112005077815287-pat00020
Figure 112005077815287-pat00021
Figure 112005077815287-pat00022
Figure 112005077815287-pat00023
Dr(t) = Fn(Fn…(Fn((FnDin1(t))Din2(t))) …Dink(t))
이와 같은 수학식 9를 이용하여 데이터 XOR 논리를 분할하면, 도 5에 도시된 바와 같이 레지스터(210a 내지 210k)와, 데이터 XOR 논리(220a 내지 220k)의 연속으로 구현할 수 있다.
이 경우 각 레지스터(210a 내지 210k)의 크기와, 데이터 XOR 논리(220a 내지 220k)의 레벨을 어떻게 결정하느냐가 본 발명에 따른 파이프라인 구조 병렬 순환 중복 검사 장치를 실제로 구현하는 데 핵심적인 사항이 된다. 이 경우 각 논리 게이트의 연결정보, 즉 네트리스트(net list)를 분석하여 적절한 위치에 레지스터를 삽입하는 방법을 고려할 수 있지만, 회로가 크고 복잡해지면 체계적인 방법이 없는 경우 이러한 분석은 매우 어려울 것이다.
따라서 아래의 과정에서와 같은 간단한 방법으로 구현할 수 있다.
구현하고자 하는 CRC 회로의 CX와 DX의 로직 레벨을 분석하여 DX 분할의 필요성 여부를 파악하여야 한다.
표 1은 현재 주로 사용되고 있는 세 가지 16 비트 CRC와 하나의 32 비트 CRC 각각에 대하여, 입력 데이터 폭 w 가 32, 64, 128, 256 비트인 경우에 대해서, CX 와 DX의 임계경로를 구성하는 입력 수 N과, 로직 레벨 L을 정리하였다.
CRC 유형 CRC16-A (ITU-TSS) CRC16-B (HDLC) CRC16-C (PCI-Express, InfiniBand, 등.) CRC32 (Ethernet, ATM, PCI-Express, InfiniBand, 등)
생성되는 다항식l 1+x 5 +x 12 +x 16 1+x 2 +x 15 +x 16 1+x+x 3 +x 12 +x 16 1+x+x 2 +x 4 +x 5 +x 7 +x 8 +x 10 +x 11 +x 12 +x 16 +x 22 +x 23 +x 26 +x 32
XOR 논리 CX DX CX DX CX DX CX DX
계산 N L N L N L N L N L N L N L N L
w (비트) 32 11 4 18 5 14 4 29 5 15 4 24 5 17 5 17 5
64 12 4 25 5 12 4 56 6 12 4 47 6 19 5 34 6
128 9 4 70 7 8 3 100 7 10 4 77 7 20 5 69 7
256 10 4 132 8 13 4 175 8 10 4 146 8 20 5 138 8
여기서, ITU-TSS(International Telecommunications Union - Telecommunication Standardization Sector), HDLC(High-Level Data Link Control), CX는 CRC 코드 XOR 논리, DX는 Data XOR 논리, N은 임계 경로에 영향을 미치는 입력 비트의 수, L은 임계 경로의 로직 레벨, w 는 병렬 입력 데이터 폭(width)이다.
단, 모든 로직이 완전 이진 트리 (complete binary tree)로 합성된다고 가정하면, L은 다음 수학식 10과 같이 계산된다.
Figure 112005077815287-pat00024
Figure 112005077815287-pat00025
Figure 112005077815287-pat00026
L = log2 N ( 연산자는 소수점 첫째 자리에서 올림을 의미함)
또한 표 1을 참조로 로직 레벨 분석 결과로부터 각 레벨을 적절히 분할하고, i = 0, 1, …, k-1이라고 하고, 각 로직의 로직 레벨을 DL(0), DL(1), …, DL(k-1)라고 정의하자.
DL(i)는 결국, DX의 임계경로의 로직 레벨이 분할된 결과이므로, DX의 임계경로에 해당되는 한 출력을 기준으로 하여 각 로직의 입출력에 필요한 레지스터의 크기를 결정하고, 나머지 출력에 대해서도 각각 그와 같은 방법을 적용하도록 한다.
출력 Dr 중에서 임계경로의 출력을 dc라 하고 DX(i)의 입력 중에서 dc에 영향을 미치는 입력수를 wc(i)라고 하자.
wc(k-1)은 Din 중에서 dc에 영향을 주는 입력 수가 되며, 표 2에 의해 주어진다.
예를 들어, CRC16-A, w = 32인 경우, wc(k-1)은 18이다. wc(i) 중에서 DX(i)의 임계경로에 영향을 주는 입력 수를 wdc(i)라고 하면, 수학식 10에 의해 wdc(i)는 다음과 같이 나타낼 수 있다.
2DL(i)-1 +1 ≤ wdc(i)≤ 2DL(i)
각 DX의 입력 레지스터를 도 5에서와 같이, Reg(0), Reg(1), …, Reg(k-1)이라 할 때, Reg(i) 중에서 dc에 영향을 주는 부분을 Regdc(i)라고 하자.
DL(i)는 Regdc(i-1) 중 임계경로에 해당되는 한 레지스터에 대한 로직레벨이 된다. 따라서 wc(k-1)은 표 2에 의해 주어지므로, Regdc(i)는 다음 수학식 12와 같이 구할 수 있다.
If i = k-1, Regdc(i) = wc(i)
Otherwise, Regdc(i) =
Figure 112005077815287-pat00027
wc(i+1) / wdc(i+1)
Figure 112005077815287-pat00028
(
Figure 112005077815287-pat00029
연산자는 소수점 첫째 자리에서 올림을 의미함)
단, wdc(i)의 범위가 수학식 11과 같으므로, wdc(i) = 2DL(i)로 계산함으로써 Regdc(i)의 크기를 최소화할 수 있다. 나머지 다른 출력에 대해서도 각각 이와 같은 과정을 적용하여 결정한다.
표 1에 나열한 4가지 종류의 CRC를 w = 32, 64, 128, 256인 경우에 대해서 각각 도 4와 같이 하나의 로직으로 구현하고, 도 8과 같이 파이프라인 구조를 사용하여 구현하여 성능을 분석 및 비교한 결과가 표 2에 정리되었다.
이 경우 TMS 0.25 um 공정 라이브러리를 사용하여 "Synopsys Design Analyzer" 로 매핑 하였으며, Prime Time을 사용하여 임계경로의 지연시간을 분석하였다.
CRC 유형 CRC16-A CRC16-B CRC16-C CRC32
구조 기존 파이프라인 기존 파이프라인 기존 파이프라인 기존 파이프라인
계산 지연 (ns) 지연 (ns) 감소분 (%) 지연 (ns) 지연 (ns) 감소분(%) 지연 (ns) 지연 (ns) 감소분 (%) 지연 (ns) 지연 (ns) 감소분 (%)
w (비트) 32 2.70 2.28 15.56 3.22 2.28 29.19 3.23 3.03 6.19 2.90 2.88 0.69
64 3.06 2.34 23.53 3.32 2.43 26.81 3.05 2.25 26.23 3.24 2.55 21.30
128 3.39 2.31 31.86 3.47 2.38 31.41 3.50 2.45 30.00 3.68 2.91 20.92
256 3.84 2.18 43.23 3.99 2.63 34.09 3.92 2.18 44.39 4.28 2.94 31.31
여기서 "기존"은 도 4를 참조로 한 종래의 병렬 CRC 회로이며, "파이프라인"은 도 5를 참조로 한 본 발명의 CRC 생성 회로를 의미한다. 또한 "지연"은 임계 경로에서의 데이터 도달 시간(arrival time)이며, "감소분"은 지연 감소 정도를 %로 나타낸 것이다.
도시된 바와 같이 종래의 회로에 비해서 임계 경로에서의 데이터 도달 시간, 즉 지연이 특히 w가 큰 경우 큰 폭으로 감소하는 것을 확인할 수 있다.
도 6은 본 발명에 따른 파이프라인 구조의 병렬 순환 중복 검사 방법의 흐름도이다.
우선 종래의 CRC 연산을 위해서 사용되던 XOR 논리를 분리한다(S110).
즉 CRC 계산을 위한 XOR 논리를 w(w는 자연수) 비트 병렬 데이터를 입력으로 하는 데이터 XOR 논리와 피드백되는 n(n은 자연수) 비트 CRC 코드를 입력으로 하는 CRC 코드 XOR 논리로 분리한다.
이후 w>n이면 데이터 XOR 논리와 CRC 코드 XOR 논리의 로직 레벨을 비교한 후(S120), 상기 데이터 XOR 논리의 로직 레벨이 상기 CRC 코드 XOR 논리의 로직 레벨보다 큰 경우 상기 데이터 XOR 논리를 상기 다수개의 분할 데이터 XOR 논리로 분할한다(S130).
이후 다수개의 분할 데이터 XOR 논리에 대응하는 분할 레지스터의 크기를 결정한다(S140).
이후 다수개의 분할 데이터 XOR 논리의 최종 출력과 CRC 코드 XOR 논리의 출력을 XOR 연산하여 CRC 코드의 최종 결과를 출력한다(S150).
본 발명에 따른 파이프라인 구조의 병렬 순환 중복 검사 방법은 도 5를 참조로 설명한 본 발명에 따른 파이프라인 구조 병렬 순환 중복 검사 장치의 설명과 중복되므로 상세한 설명은 생략한다.
이와 같이 파이프라인 병렬 CRC를 구현함으로써 기존의 병렬 CRC의 결과에 비해 많은 성능 향상을 가져올 수 있다.
비록 본 발명이 구성이 구체적으로 설명되었지만 이는 단지 본 발명을 예시하기 위한 것이며, 본 발명의 보호 범위가 이들에 의해 제한되는 것은 아니며, 본 발명의 보호 범위는 청구범위의 기재를 통하여 정하여진다.
이상 설명한 바와 같이, 본 발명에 따르면 CRC 전체 로직을 CRC 결과 피드백 부분과 입력 데이터 부분으로 분리한 후, 입력 데이터 부분을 파이프라인 구조를 사용하여 분할하되, 각 단계의 로직 레벨이 피드백 부분의 로직 레벨 이하가 되도록 하는 알고리즘과 분할시 삽입되는 레지스터 크기를 최적화하는 알고리즘을 기반으로 입력 데이터 로직 부분을 파이프 라인 구조로 설계함으로써 속도를 향상시켜서 고속의 데이터 통신 시스템에서 수신 데이터 오류 검출을 수행할 수 있다.

Claims (11)

  1. 파이프라인 구조 병렬 순환 중복 검사(CRC) 장치로서,
    w(w는 자연수) 비트 병렬 데이터를 입력으로 하는 데이터 XOR 논리와,
    피드백되는 n(n은 w보다 작은 자연수) 비트 CRC 코드를 입력으로 하는 CRC 코드 XOR 논리와,
    상기 데이터 XOR 논리와 상기 CRC 코드 XOR 논리의 출력을 XOR 연산하여 n 비트 CRC 코드 결과를 출력하는 XOR 어레이와,
    현재 저장된 상기 n 비트 CRC 코드를 피드백하고 상기 XOR 어레이에서 출력되는 상기 n 비트 CRC 코드 결과를 새로운 n 비트 CRC 코드로 저장하는 CRC 레지스터
    를 포함하는 파이프라인 구조 병렬 순환 중복 검사 장치.
  2. 제1항에 있어서,
    상기 데이터 XOR 논리는,
    상기 데이터 XOR 논리의 로직 레벨이 상기 CRC 코드 XOR 논리의 로직 레벨 이하가 되도록 분리한 다수개의 분할 데이터 XOR 논리와,
    상기 다수개의 분할 데이터 XOR 논리 각각의 데이터 입출력을 수행하는 다수개의 분할 레지스터
    를 포함하는 것인 파이프라인 구조 병렬 순환 중복 검사 장치.
  3. 제2항에 있어서,
    상기 병렬 입력 데이터를 Din = [dinw-1, dinw-2, …, din0]T이라 표시하고,
    상기 CRC 코드를 Cr = [cn-1, cn-2, …, c0]T이라 표시하고,
    상기 분할 데이터 XOR 논리의 출력을 Dr = [dn-1, dn-2, …, d0]T이라 표시하고,
    상기 n 비트 CRC 코드 결과를 CRC_Code = [crcn -1, crcn -2, …, crc0]T라 표시할 때,
    상기 w=n*k(k는 양의 정수)이면,
    상기 Din은 다음과 같이 원소의 개수가 n 비트인 k개의 그룹으로 나누어 표시되며,
    Din1 = [dinw-1, dinw-2, …, dinw-n]T,
    Din2 = [dinw-n-1, dinw-n-2, …, dinw-2n]T,
    : :
    Dink = [dinw-(k-1)n-1, dinw-(k-1)n-2, …, din0]T,
    상기 각각의 k개의 그룹이 상기 다수개의 분할 데이터 XOR 논리의 입출력에 대응하며,
    상기 다수개의 분할 데이터 XOR 논리의 최종 출력 Dr은,
    Dr(t) = Fn
    Figure 112005077815287-pat00030
    (Fn
    Figure 112005077815287-pat00031
    …(Fn
    Figure 112005077815287-pat00032
    ((Fn
    Figure 112005077815287-pat00033
    Din1(t))
    Figure 112005077815287-pat00034
    Din2(t))) …
    Figure 112005077815287-pat00035
    Dink(t))로 표시되며,
    상기 F는
    Figure 112005077815287-pat00036
    로 표시되는 CRC 변환 행렬인 것인 파이프라인 구조 병렬 순환 중복 검사 장치.
  4. 제2항에 있어서,
    상기 병렬 입력 데이터를 Din = [dinw-1, dinw-2, …, din0]T이라 표시하고,
    상기 CRC 코드를 Cr = [cn-1, cn-2, …, c0]T이라 표시하고,
    상기 분할 데이터 XOR 논리의 출력을 Dr = [dn -1, dn -2, …, d0]T이라 표시하고,
    상기 n 비트 CRC 코드 결과를 CRC_Code = [crcn-1, crcn-2, …, crc0]T라 표시할 때,
    상기 w=n*(k-1)+j(k는 양의 정수, j는 n이하의 양의 정수)이면,
    상기 Din은 다음과 같이 원소의 개수가 n 비트인 k개의 그룹으로 나누어 표시되며,
    Din1 = [dinw-1, dinw-2, …, dinw-n]T,
    Din2 = [dinw-n-1, dinw-n-2, …, dinw-2n]T,
    : :
    Dink = [dinw-(k-1)n-1, dinw-(k-1)n-2, …, din0, 0, …, 0]T,
    상기 각각의 k개의 그룹이 상기 다수개의 분할 데이터 XOR 논리의 입출력에 대응하며,
    상기 다수개의 분할 데이터 XOR 논리의 최종 출력 Dr은,
    Dr(t) = Fn
    Figure 112005077815287-pat00037
    (Fn
    Figure 112005077815287-pat00038
    …(Fn
    Figure 112005077815287-pat00039
    ((Fn
    Figure 112005077815287-pat00040
    Din1(t))
    Figure 112005077815287-pat00041
    Din2(t))) …
    Figure 112005077815287-pat00042
    Dink(t))로 표시되며,
    상기 F는
    Figure 112005077815287-pat00043
    로 표시되는 CRC 변환 행렬인 것인 파이프라인 구조 병렬 순환 중복 검사 장치.
  5. 제2항에 있어서,
    상기 데이터 XOR 논리를 상기 다수개의 분할 데이터 XOR 논리로 분할하는 기준은 상기 데이터 XOR 논리와 상기 CRC 코드 XOR 논리의 임계 경로를 구성하는 입력 수 N에 대해서, 로직 레벨 L은
    L =
    Figure 112005077815287-pat00044
    log2 N
    Figure 112005077815287-pat00045
    (
    Figure 112005077815287-pat00046
    연산자는 소수점 첫째 자리에서 올림을 의미함)
    으로 표시되며,
    상기 데이터 XOR 논리와 상기 CRC 코드 XOR 논리 각각에 대해서 계산된 로직 레벨 L을 비교하여 상기 데이터 XOR 논리의 로직 레벨이 상기 CRC 코드 XOR 논리의 로직 레벨보다 큰 경우 상기 데이터 XOR 논리를 상기 다수개의 분할 데이터 XOR 논리로 분할하는 것인 CRC 변환 행렬인 것인 파이프라인 구조 병렬 순환 중복 검사 장치.
  6. 제2항에 있어서,
    상기 다수개의 분할 레지스터 중에서 임계 경로의 출력에 영향을 주는 부분을 Regdc(i)라 하면,
    상기 Regdc(i)는 다음 수학식
    If i = k-1, Regdc(i) = wc(i)
    Otherwise, Regdc(i) =
    Figure 112005077815287-pat00047
    wc(i+1) / wdc(i+1)
    Figure 112005077815287-pat00048
    (
    Figure 112005077815287-pat00049
    연산자는 소수점 첫째 자리에서 올림을 의미함)
    에 의해서 정해지고,
    상기 wc(i)는 상기 데이터 XOR 논리의 출력 Dr 중에서 임계경로의 출력을 dc라 할때 상기 데이터 XOR 논리(DX)의 입력 중에서 dc에 영향을 미치는 입력수로 정의되는 것인 파이프라인 구조 병렬 순환 중복 검사 장치.
  7. 파이프라인 구조의 병렬 순환 중복 검사(CRC) 방법으로서,
    CRC 계산을 위한 XOR 논리를 w(w는 자연수) 비트 병렬 데이터를 입력으로 하는 데이터 XOR 논리와 피드백되는 n(n은 자연수) 비트 CRC 코드를 입력으로 하는 CRC 코드 XOR 논리로 분리하는 단계와,
    w>n이면 상기 데이터 XOR 논리와 상기 CRC 코드 XOR 논리의 로직 레벨을 비교하여 상기 데이터 XOR 논리의 로직 레벨이 상기 CRC 코드 XOR 논리의 로직 레벨 보다 큰 경우 상기 데이터 XOR 논리를 상기 다수개의 분할 데이터 XOR 논리로 분할하는 단계와,
    상기 다수개의 분할 데이터 XOR 논리에 대응하는 분할 레지스터의 크기를 결정하는 단계와,
    상기 다수개의 분할 데이터 XOR 논리의 최종 출력과 상기 CRC 코드 XOR 논리의 최종 출력을 XOR 연산하여 n 비트 CRC 코드 결과를 출력하는 단계
    를 포함하는 파이프라인 구조의 병렬 순환 중복 검사 방법.
  8. 제7항에 있어서,
    상기 병렬 입력 데이터를 Din = [dinw-1, dinw-2, …, din0]T이라 표시하고,
    상기 CRC 코드를 Cr = [cn-1, cn-2, …, c0]T이라 표시하고,
    상기 데이터 XOR 논리의 출력을 Dr = [dn-1, dn-2, …, d0]T이라 표시하고,
    상기 n 비트 CRC 코드 결과를 CRC_Code = [crcn-1, crcn-2, …, crc0]T라 표시할 때,
    상기 w=n*k(k는 양의 정수)이면,
    상기 Din은 다음과 같이 원소의 개수가 n 비트인 k개의 그룹으로 나누어 표시되며,
    Din1 = [dinw-1, dinw-2, …, dinw-n]T,
    Din2 = [dinw-n-1, dinw-n-2, …, dinw-2n]T,
    : :
    Dink = [dinw -(k-1)n-1, dinw -(k-1)n-2, …, din0]T,
    상기 각각의 k개의 그룹이 상기 다수개의 분할 데이터 XOR 논리의 입출력에 대응하며,
    상기 다수개의 분할 데이터 XOR 논리의 최종 출력 Dr은,
    Dr(t) = Fn
    Figure 112005077815287-pat00050
    (Fn
    Figure 112005077815287-pat00051
    …(Fn
    Figure 112005077815287-pat00052
    ((Fn
    Figure 112005077815287-pat00053
    Din1(t))
    Figure 112005077815287-pat00054
    Din2(t))) …
    Figure 112005077815287-pat00055
    Dink(t))로 표시되며,
    상기 F는
    Figure 112005077815287-pat00056
    로 표시되는 CRC 변환 행렬인 것인 파이프라인 구조 병렬 순환 중복 검사 방법.
  9. 제7항에 있어서,
    상기 병렬 입력 데이터를 Din = [dinw-1, dinw-2, …, din0]T이라 표시하고,
    상기 CRC 코드를 Cr = [cn-1, cn-2, …, c0]T이라 표시하고,
    상기 데이터 XOR 논리의 출력을 Dr = [dn-1, dn-2, …, d0]T이라 표시하고,
    상기 n 비트 CRC 코드 결과를 CRC_Code = [crcn-1, crcn-2, …, crc0]T라 표시할 때,
    상기 w=n*(k-1)+j(k는 양의 정수, j는 n이하의 양의 정수)이면,
    상기 Din은 다음과 같이 원소의 개수가 n 비트인 k개의 그룹으로 나누어 표시되며,
    Din1 = [dinw-1, dinw-2, …, dinw-n]T,
    Din2 = [dinw-n-1, dinw-n-2, …, dinw-2n]T,
    : :
    Dink = [dinw-(k-1)n-1, dinw-(k-1)n-2, …, din0, 0, …, 0]T,
    상기 각각의 k개의 그룹이 상기 다수개의 분할 데이터 XOR 논리의 입출력에 대응하며,
    상기 다수개의 분할 데이터 XOR 논리의 최종 출력 Dr은,
    Dr(t) = Fn
    Figure 112005077815287-pat00057
    (Fn
    Figure 112005077815287-pat00058
    …(Fn
    Figure 112005077815287-pat00059
    ((Fn
    Figure 112005077815287-pat00060
    Din1(t))
    Figure 112005077815287-pat00061
    Din2(t))) …
    Figure 112005077815287-pat00062
    Dink(t))로 표시되며,
    상기 F는
    Figure 112005077815287-pat00063
    로 표시되는 CRC 변환 행렬인 것인 파이프라인 구조 병렬 순환 중복 검사 방법.
  10. 제7항에 있어서,
    상기 데이터 XOR 논리를 상기 다수개의 분할 데이터 XOR 논리로 분할하는 기준은 상기 데이터 XOR 논리와 상기 CRC 코드 XOR 논리의 임계 경로를 구성하는 입력 수 N에 대해서, 로직 레벨 L은
    L =
    Figure 112005077815287-pat00064
    log2 N
    Figure 112005077815287-pat00065
    (
    Figure 112005077815287-pat00066
    연산자는 소수점 첫째 자리에서 올림을 의미함)
    으로 표시되며,
    상기 데이터 XOR 논리와 상기 CRC 코드 XOR 논리 각각에 대해서 계산된 로직 레벨 L을 비교하여 상기 데이터 XOR 논리의 로직 레벨이 상기 CRC 코드 XOR 논리의 로직 레벨보다 큰 경우 상기 데이터 XOR 논리를 상기 다수개의 분할 데이터 XOR 논 리로 분할하는 것인 CRC 변환 행렬인 것인 파이프라인 구조 병렬 순환 중복 검사 방법.
  11. 제7항에 있어서,
    상기 다수개의 분할 레지스터 중에서 임계 경로의 출력에 영향을 주는 부분을 Regdc(i)라 하면,
    상기 Regdc(i)는 다음 수학식
    If i = k-1, Regdc(i) = wc(i)
    Otherwise, Regdc(i) =
    Figure 112005077815287-pat00067
    wc(i+1) / wdc(i+1)
    Figure 112005077815287-pat00068
    (
    Figure 112005077815287-pat00069
    연산자는 소수점 첫째 자리에서 올림을 의미함)
    에 의해서 정해지고,
    상기 wc(i)는 상기 데이터 XOR 논리의 출력 Dr 중에서 임계경로의 출력을 dc라 할때 상기 데이터 XOR 논리(DX)의 입력 중에서 dc에 영향을 미치는 입력수로 정의되는 것인 파이프라인 구조 병렬 순환 중복 검사 방법.
KR1020050133449A 2005-12-29 2005-12-29 파이프라인 구조 병렬 순환 중복 검사 장치 및 방법 KR100731985B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020050133449A KR100731985B1 (ko) 2005-12-29 2005-12-29 파이프라인 구조 병렬 순환 중복 검사 장치 및 방법
US11/616,480 US7895499B2 (en) 2005-12-29 2006-12-27 Method and apparatus for checking pipelined parallel cyclic redundancy

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020050133449A KR100731985B1 (ko) 2005-12-29 2005-12-29 파이프라인 구조 병렬 순환 중복 검사 장치 및 방법

Publications (1)

Publication Number Publication Date
KR100731985B1 true KR100731985B1 (ko) 2007-06-25

Family

ID=38373325

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050133449A KR100731985B1 (ko) 2005-12-29 2005-12-29 파이프라인 구조 병렬 순환 중복 검사 장치 및 방법

Country Status (2)

Country Link
US (1) US7895499B2 (ko)
KR (1) KR100731985B1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7886210B2 (en) * 2007-02-09 2011-02-08 International Business Machines Corporation Apparatus for pipelined cyclic redundancy check circuit with multiple intermediate outputs
US8136010B2 (en) * 2007-12-21 2012-03-13 International Business Machines Corporation Apparatus for pipelined cyclic redundancy check circuit with multiple intermediate outputs
CN101527615A (zh) * 2009-04-07 2009-09-09 华为技术有限公司 一种循环冗余校验crc码的实现方法和装置
US9088300B1 (en) * 2011-12-15 2015-07-21 Marvell International Ltd. Cyclic redundancy check for out-of-order codewords
CN104508983B (zh) * 2012-07-27 2017-08-01 上海贝尔股份有限公司 用于对带反馈的并行输入数据执行流水操作的方法和设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19980026646A (ko) * 1996-10-10 1998-07-15 김광호 Crc 패러렐 루프 프로세싱 방법
KR20040043582A (ko) * 2002-11-19 2004-05-24 엘지전자 주식회사 병렬 순환 중복 검사 코드 발생 시스템 및 방법
KR100578721B1 (ko) * 2004-12-10 2006-05-12 전자부품연구원 XOR 논리를 이용한 n 비트 순환 중복 검사 생성 방법및 이를 이용한 병렬 순환 중복 검사 생성기

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3534331A (en) * 1967-08-15 1970-10-13 Stanford Research Inst Encoding-decoding array
US3678469A (en) * 1970-12-01 1972-07-18 Ibm Universal cyclic division circuit
US4720830A (en) * 1985-12-02 1988-01-19 Advanced Micro Devices, Inc. CRC calculation apparatus having reduced output bus size
US4720831A (en) * 1985-12-02 1988-01-19 Advanced Micro Devices, Inc. CRC calculation machine with concurrent preset and CRC calculation function
US4723243A (en) * 1985-12-02 1988-02-02 Advanced Micro Devices, Inc. CRC calculation machine with variable bit boundary
ES2099789T3 (es) * 1992-07-14 1997-06-01 Alcatel Bell Nv Dispositivo divisor para dividir un primer polinomio por un segundo polinomio.
JP4371520B2 (ja) * 2000-03-06 2009-11-25 三菱電機株式会社 Crc演算装置
US7398449B1 (en) * 2004-06-16 2008-07-08 Azul Systems, Inc. Encoding 64-bit data nibble error correct and cyclic-redundancy code (CRC) address error detect for use on a 76-bit memory module

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19980026646A (ko) * 1996-10-10 1998-07-15 김광호 Crc 패러렐 루프 프로세싱 방법
KR20040043582A (ko) * 2002-11-19 2004-05-24 엘지전자 주식회사 병렬 순환 중복 검사 코드 발생 시스템 및 방법
KR100578721B1 (ko) * 2004-12-10 2006-05-12 전자부품연구원 XOR 논리를 이용한 n 비트 순환 중복 검사 생성 방법및 이를 이용한 병렬 순환 중복 검사 생성기

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
100578721
101998026646
1020040043582

Also Published As

Publication number Publication date
US20070234177A1 (en) 2007-10-04
US7895499B2 (en) 2011-02-22

Similar Documents

Publication Publication Date Title
US9071275B2 (en) Method and device for implementing cyclic redundancy check codes
US8745472B2 (en) Memory with segmented error correction codes
Lee A high-speed low-complexity Reed-Solomon decoder for optical communications
US5440570A (en) Real-time binary BCH decoder
US20050149818A1 (en) High performance CRC calculation method and system with a matrix transformation strategy
JP2006244259A (ja) 誤りバイト数を制限したバイト内複数スポッティバイト誤り訂正・検出方法及び装置
KR19980033277A (ko) 리드-솔로몬 디코더용 갈로아 필드 승산기
US6560742B1 (en) Parallel system and method for cyclic redundancy checking (CRC) generation
US8700971B2 (en) Parallel residue arithmetic operation unit and parallel residue arithmetic operating method
KR100731985B1 (ko) 파이프라인 구조 병렬 순환 중복 검사 장치 및 방법
US7840880B1 (en) Methods and apparatus for error checking code computation
US7886210B2 (en) Apparatus for pipelined cyclic redundancy check circuit with multiple intermediate outputs
KR100260415B1 (ko) 고속시리얼에러위치다항식계산회로
JPH0728227B2 (ja) Bch符号の復号装置
US6295626B1 (en) Symbol based algorithm for hardware implementation of cyclic redundancy check
JP2002335167A (ja) 復号回路、該復号回路を用いる復号装置、復号方法および半導体デバイス
Matsushima et al. Parallel encoder and decoder architecture for cyclic codes
JP2002335165A (ja) 組み合わせ回路、該組み合わせ回路を使用する符号化装置、復号装置、および半導体デバイス
KR100756424B1 (ko) 파이프라인 재귀적인 기술을 이용한 면적 효율적인 리드솔로몬 복호기
US10067821B2 (en) Apparatus and method for cyclic redundancy check
US10009041B2 (en) BCH decorder in which folded multiplier is equipped
US6442747B1 (en) Method of synthesizing a cycle redundancy code generator circuit using hardware description language
CN109462458B (zh) 一种多级流水电路实现并行crc的方法
Zheng et al. An efficient eligible error locator polynomial searching algorithm and hardware architecture for one-pass Chase decoding of BCH codes
Yeon et al. Low-complexity triple-error-correcting parallel BCH 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
LAPS Lapse due to unpaid annual fee