KR20050110646A - 가변 폭의 병렬 순환 중복 검사 (crc) 연산을 위한 반복회로 및 방법 - Google Patents

가변 폭의 병렬 순환 중복 검사 (crc) 연산을 위한 반복회로 및 방법 Download PDF

Info

Publication number
KR20050110646A
KR20050110646A KR1020057016090A KR20057016090A KR20050110646A KR 20050110646 A KR20050110646 A KR 20050110646A KR 1020057016090 A KR1020057016090 A KR 1020057016090A KR 20057016090 A KR20057016090 A KR 20057016090A KR 20050110646 A KR20050110646 A KR 20050110646A
Authority
KR
South Korea
Prior art keywords
crc
byte
code
blocks
bytes
Prior art date
Application number
KR1020057016090A
Other languages
English (en)
Other versions
KR100745485B1 (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 인터내셔널 비지네스 머신즈 코포레이션
Publication of KR20050110646A publication Critical patent/KR20050110646A/ko
Application granted granted Critical
Publication of KR100745485B1 publication Critical patent/KR100745485B1/ko

Links

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
    • 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6508Flexibility, adaptability, parametrability and configurability of the implementation

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Correction Of Errors (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)

Abstract

CRC 연산이 선택 가능한 버스 폭을 갖는 블록으로 소분할되는 캐스케이드된 반복적 CRC 연산 회로가 개시되고 있다. 임의의 바이트 수의 버스 폭에 대해, 즉 가변 버스 폭에 대해 병렬 CRC 연산을 제공하는 장점이 있다. 일 실시예는 제1 복수의 직렬 결합된 코드 형성 블록 - 각 블록은 2N+M 내지 2N-L+M의 바이트 폭을 갖는 데이터 입력을 수신하도록 구성되고, 이때 N=log2(w)이고, M은 오프세트 값이고, L은 최대 전파 지연 표준에 기초한 전체 수임 -; 제2 복수의 병렬 결합된 코드 형성 블록 - 각 블록은 2N-L-1+M 내지 20 범위의 바이트 폭을 갖는 데이터를 수신하도록 구성됨 - ; 및 CRC 연산에 포함되는 제1 및 제2 복수의 블록 내의 특정 코드 형성 블록을 선택하기 위한 소자를 포함하는, w 바이트 범위까지의 데이터와 관련되는 CRC 코드 워드를 형성하기 위한 시스템이다.

Description

가변 폭의 병렬 순환 중복 검사 (CRC) 연산을 위한 반복 회로 및 방법{ITERATIVE CIRCUIT AND METHOD FOR VARIABLE WIDTH PARALLEL CYCLIC REDUNDANCY CHECK (CRC) CALCULATION}
본 발명은 일반적으로 통신 시스템에서 패킷 기반의 순환 중복 검사의 구현에 관한 것으로, 더욱 특히는 통신 시스템에서 순환 중복 검사 연산을 실행하고 시최적화하기 위한 반복적 회로에 관한 것이다.
많은 패킷 기반의 통신 프로토콜은 패킷 전송에 덧붙여지는 코드 워드를 이용하여 통신 채널에 유입된 에러의 존재를 검사한다. 이런 코드 워드를 형성하기 위해 공통으로 이용되는 방법 중 하나가 순환 중복 검사 (CRC)이다. 전송기는 패킷의 말단에 CRC 코드 워드를 덧붙이는 한편, 수신기는 코드 워드를 포함하는 전체 패킷에 대해 CRC를 재연산한다. 몇 가지 CRC 방법들이 공통으로 이용되는데; 여러 방법은 연산에 대해 다른 다항식을 이용하며, 최종 코드 워드 길이는 다르다.
직렬 데이터 스트림을 통해 전송된 패킷에서는, 전송기나 수신기에서 CRC 코드 워드를 연산하는 데에 필요한 논리 회로는 잘 알려져 있으며 매우 효율적이다. 목표의 다항식을 구현하는 데에 필요로 하는 배타적 OR 게이트를 갖는 선형 피드백 시프트 레지스터라면 충분한 구현이 된다. 시프트 레지스터의 각 상태는 시프트 레지스터의 현재 직렬 비트와 이전 상태에 기초하여 연산되게 된다. 따라서 직렬 데이터 스트림에서는, n개의 래치 (n은 다항식의 차수임)와 몇 배타적 OR 게이트가 필요로 하는 회로의 크기가 된다.
그러나 고속 직렬 데이터 인터페이스는 (예를 들어, 10 Gbps, 40 Gbps 또는 상기 인터페이스)는 직렬 전송 속도로 데이터 신호를 구현하기 위해 더욱 값비싼 기술 (SiGe (실리콘 게르마늄) 등)을 필요로 하는 경우가 있다. 이런 인터페이스는 고속의 인터페이스를 구현하기 위해 고속의 아날로그 회로를 이용하며, 통상 CMOS 칩 내에서의 처리를 위해서 직렬 인터페이스에/로부터의 데이터를 저속의 병렬 데이터 경로로 멀티플렉스/디멀티플렉스한다. 따라서, CRC 연산 회로는 더욱 통상적으로는 병렬 데이터 버스에서 동작하게 된다. 데이터 버스가 "w" 바이트 폭이면, CRC 연산은 CRC 연산의 다음 상태를 판정하기 위해 w 바이트를 동시에 처리해야 한다. 더구나, CRC 연산의 다음 상태가 연산의 이전 상태에 기초하기 때문에, 이 연산은 파이프라이닝 (pipelining)에 알맞지가 않다.
또한, 패킷 데이터가 정수 w 바이트인 것이 보장되지 않을 때, 및/또는 병렬 데이터 버스 상의 일렬 위치에서 시작/정지되는 것이 보장되지 않을 때 복잡성은 더욱 가중된다. 예를 들어, 32 바이트 폭의 데이터 버스라고 가정하면, 이에 따라 CRC 연산 회로는 가능한 최종 연산 폭: w=1, 2, 3, 4,....31, 32 바이트 중 어느 것이나 취급할 수 있어야 한다. 이것은 CRC 연산에 대한 다음 상태 디코드를 상당히 더 복잡하게 한다. 최종 논리 회로는 상당한 양의 칩 영역을 필요로 할 수 있다. 더구나, 이 칩 영역은 많은 팬아웃 (fanout) 연결로 조합 논리에 의해 주로 소모되기 때문에, 와이어빌러티 (wirability) 및 타이밍의 문제가 초래될 수 있다.
시스템 조건을 만족하기 위해서, CRC 연산 논리는 통상적으로 데이터를 임의의 사이클에서 이용되는 각 블록 내로 선택하기 위해 데이터 스티어링 (data steering)하여, 다양한 폭을 갖는 다수의 CRC 연산 블록으로 이루어져야 한다. 종래 기술의 구현중에는 w 바이트 폭의 데이터 버스를 구현하고, 이에 따라 크기 1 바이트, 2 바이트, 3 바이트 등, w 바이트까지 "w" 개의 CRC 연산 블록을 이용하여 기능을 구현하도록 하는 것이 있다. 이 구성에서, 데이터는 이들 블록 모두에 병렬로 공급된다. 임의의 클럭 사이클에서는, CRC 연산 블록 출력 중 하나만을 이용한다. 즉, 이 병렬 방법에서는, 하나 및 오직 하나의 CRC 연산 블록이 각 사이클 동안 선택되므로, 조합 전파 지연이 하나의 CRC 연산 블록의 지연과 항상 동일하게 된다.
CRC 연산이 선택 가능한 버스 폭을 갖는 블록으로 소 분할될 수 있도록 하고, 이 블록들은 임의의 바이트 수의 버스 폭에 대해 연산을 제공하도록 캐스케이드 (cascade)될 수 있도록 하는 CRC 연산 회로의 구조화된 반복적 접근법을 제공하는 것이 매우 요망되고 있다.
임의의 타겟 전파 지연에 대한 회로 영역 감소를 최대화하는 CRC 연산 회로의 구조화된 반복적 접근법을 제공하는 것이 또한 매우 요망되고 있다.
본 발명의 목적, 특성 및 장점은 첨부한 도면과 관련한 이하의 상세 설명에 유의한다면 당업자에게는 명백하게 될 것이다:
도 1은 본 발명의 일 실시예에 따라 형성된, 본 발명이 동작할 수 있는 전체 시스템 아키텍처의 블록도이다.
도 2는 본 발명의 제2 실시예에 따라 형성된, 본 발명이 동작할 수 있는 전체 시스템 아키텍처의 블록도이다.
도 3은 본 발명의 제3 실시예에 따라 형성된, 본 발명이 동작할 수 있는 전체 시스템 아키텍처의 블록도이다.
도 4는 본 발명의 제4 실시예에 따라 형성된, 본 발명이 동작할 수 있는 전체 시스템 아키텍처의 블록도이다.
도 5는 본 발명의 일반 실시예에 따라 형성된, 본 발명이 동작할 수 있는 전체 시스템 아키텍처의 블록도이다.
본 발명은 CRC 연산 블록의 크기가 연산 폭에 정비례하며, 넓은 연산 폭에 대한 블록 수를 감소하는 것이 좁은 연산 폭에 대한 블록 수를 감소시키는 것보다 더 많이 줄일 수 있다는 것을 감안한 CRC 연산 최적화 방법이다.
따라서 본 발명의 목적은 CRC 연산을 선택 가능한 버스 폭을 갖는 블록으로 소분할하고 이 블록이 임의의 바이트 수의 병렬 버스 폭에 대한 연산을 제공하도록 캐스케이드될 수 있게 하는 CRC 연산 회로의 구조화 반복적 접근법을 제공하는 것이다.
본 발명의 다른 목적은 CRC 연산이 2 바이트의 제곱의 선택 가능한 버스 폭을 갖는 블록으로 소 분할되고, 예를 들어, 2N, N=0, 1,..., x이고, 이 블록들은 임의의 바이트 수의 버스 폭에 대한 연산을 제공하도록 캐스케이드될 수 있는 CRC 연산 회로의 구조화 대수 반복적 접근법을 제공하는 것이다.
본 발명의 또 다른 목적은 CRC 연산이 2의 제곱이 아닌 값의 선택 가능한 버스 폭을 허용하는 블록으로 소 분할될 수 있도록 하는 CRC 연산 회로의 구조화 대수 반복적 접근법을 제공하는 것이다.
CRC 연산의 구조화 접근법은 바람직한 실시예에 따르면:
각 블록에의 데이터 입력에 기초하여 CRC 값을 각각 형성하기 위한 제1 복수의 직렬 결합된 코드 형성 블록, - 이 제1 복수의 각 블록은 2N+M 내지 2N-L+M의 범위인 각 바이트 폭을 갖는 데이터 입력을 수신하도록 구성되며, 이때 2N+M=w이고, M은 오프세트 값이고, L은 최대 전파 지연 표준에 기초한 전체 수임 -;
데이터 입력에 기초하여 CRC 값을 각각 형성하기 위한 제2 복수의 병렬 결합된 코드 형성 블록, - 이 제2 블록의 각 블록은 2N-L-1+M 내지 20의 범위인 각 바이트 폭을 갖는 데이터를 수신하도록 구성되어 있음 - ; 및
제1 및 제2 복수의 블록 내에서 데이터 입력에 기초한 CRC 연산에 포함되는 특정 CRC 코드 형성 블록을 선택하여 임의 폭의 데이터 입력 바이트가 처리될 수 있게 하기 위한 수단
을 포함하는,
통신 채널을 통해 통신되는 w 바이트 폭 범위까지의 데이터와 관련되는 CRC 코드 워드를 형성하기 위한 시스템을 제공하고 있는 반복적 회로에 의해 실행된다.
본 발명의 원리에 따르면, 구조화 반복적 접근법에서의 CRC 연산 처리 시간은 CRC 연산 블록의 크기가 연산 폭에 정비례하고, 넓은 연산 폭에 대한 블록 수를 줄이는 것이 좁은 연산 폭에 대한 블록 수를 줄이는 것보다 더 줄일 수 있다는 것을 감안하여 최적화된 것이다. 넓은 데이터 버스 폭에 대해서는, 구조화 대수 반복적 접근법이 연산을 실행하는 데에 필요한 논리 양을 상당히 줄일 수 있다는 장점이 있다.
본 발명은 본 발명의 제1 실시예에 따른 전체 시스템 아키텍처를 나타내는 도 1을 참조하여 더욱 완전히 이해될 수 있다.
제1 실시예는 CRC 연산 블록의 캐스케이딩을 제공하며, 이때 블록의 수가 원하는 연산 폭에 따라 캐스케이딩되어 있는 CRC 연산 회로의 구조화 대수 반복적 접근법에 관한 것이다.
도 1은 본 발명의 제1 변형 예에 따른 CRC 연산 회로(100)의 블록도이다. 이 제1 변형 예에 따르면, CRC 연산 회로(100)는 1 바이트, 2 바이트, 4 바이트, 8 바이트 등 (즉, 2 바이트의 제곱)의 대수적으로 선택된 버스 폭을 갖는 블록으로 소 분할된다. 이들 블록은 임의의 바이트 수의 버스 폭에 대한 연산을 제공하도록 캐스케이드될 수 있다.
도 1에 나타낸 바와 같이, 논리 회로(100)는 몇 개의 CRC 연산 블록(220, 320, 420)을 포함하고, 이들 각각은 시드 (seed) 멀티플렉서(130, 230, 330, 430)로부터 입력된 시드에 기초하고, 데이터 입력(120)에 기초하여 CRC 값을 연산한다. w 바이트의 인입 데이터 입력 경로 폭은 2N과 동일해야 한다. 즉, w 바이트 데이터 버스에서, N=log2(w)이고, 회로는 2N, 2N-1, ..., 21, 20에 대응하는 바이트 폭에 대해 N+1개의 CRC 연산 블록을 포함한다. 연산 실행시, CRC_seed_select 신호는 시드 멀티플렉서(230, 330, 430)를 제어하여 각 CRC 연산 블록이 연산시 포함되는지, 또는 바이패스되었는지를 선택한다. 이들 블록을 선택적으로 포함하거나 바이패스함으로써, 임의의 바이트 수를 처리할 수 있다. 예를 들어, w 바이트를 처리하기 위해서는, 2N 블록이 선택되고, 그 외 모든 블록은 바이패스되며; w-1 바이트를 처리하는 데에는 2N 블록이 바이패스되며, 블록 2N-1, .., 20은 선택되고, w-2 바이트를 처리하는 데에는, 2N 및 20 블록이 바이패스되고, 블록 2N-1,..., 21이 선택되는 등이다. 각 CRC 연산 블록이 조합 XOR 트리이고, 이의 정확한 설계는 구현되고 있는 CRC 다항식에 따라 달라진다는 것이 이해될 것이다.
회로는 처음에 초기 시드 값 0이 멀티플렉서(130)에 의해 선택되도록 명시되는 CRC_reset 신호로 시작한다. 다음에 선택된 CRC 연산은 시드 멀티플렉서(230, 330, 430)에 의해 선택되거나 바이패스된 CRC 연산 블록(220, 320, 420)에 의해 실행된다. 멀티플렉서(430)에서의 CRC 연산의 출력은 CRC 결과 레지스터(110)에 저장된다. CRC 레지스터 값은 데이터 입력(120)에 기초하여 각 사이클에서 갱신된다. 데이터 스티어링 멀티플렉서(210, 310, 410)는 어느 블록이 선택되었는지에 기초하여 각 CRC 연산 블록에서 이용될 데이터를 선택한다. 패킷의 마지막 사이클에서, CRC 출력(510)은 패킷에 대해 연산된 CRC 값을 하류 측 논리에 제공한다.
본 발명의 일 예의 실시예에서는, 32 바이트 폭의 데이터 입력을 제공하고 있다. 따라서 이 N=5 시스템은 폭 32 바이트, 16 바이트, 8 바이트, 4 바이트, 2 바이트, 및 1 바이트의 6개의 CRC 연산 블록을 갖는다. 명목상, 패킷 데이터는 전체 버스 폭을 소모하며, 32 바이트 폭의 CRC 연산 블록이 선택된다. 그러나 패킷은 패킷 전송의 시작과 종료시 버스 폭의 일부를 소모하게 된다. 이 경우, CRC_select 및 Data_select 제어 신호가 버스 상의 예상되는 데이터 정렬에 기초하여 형성된다.
넓은 데이터 버스 폭에 대해서, 제1 변형 예에 따른 접근법은 연산을 행하는 데에 필요한 논리 양을 상당히 감소시킨다. (w=32 바이트의 경우, 88%의 논리 크기 감소를 실현할 수 있다). 블록의 수가 원하는 연산 폭에 따라 캐스케이딩되어 있는 w 바이트 폭의 데이터 버스에서는, w-1의 연산 폭에 대해서 최악의 경우의 전파 지연이 발생하게 되고, 이 동안에 log2(w) CRC 연산 블록이 캐스케이드된다.
이 실시예에 따르면, w 바이트보다 더 긴 인입 데이터 패킷에 대한 CRC가 몇 개의 클럭 사이클 동안 연산되게 된다. R이 임의의 연산 클럭 사이클에서 처리되어야 하는 바이트 수를 나타내는 것으로 한다. R은 어느 클럭 사이클에서나 임의의 값 (R≤w)을 가지지만, CRC 연산은 R=w인 동안의 몇 사이클에 더하여 나머지 바이트가 처리되는 일 사이클을 필요로 한다.
따라서, 제1 실시예의 제어 단계는 R 바이트의 데이터 (R≤w)를 처리할 수 있으며, 이때 연산 회로는 크기 2N, 2(N-1), 2(N-2)..., 4(=22) 및 1(=20) 바이트의 CRC 연산 블록으로 이루어진다. w=32이면, 32 바이트, 16 바이트, 8 바이트, 4 바이트, 2 바이트, 1 바이트의 블록이 있다. 제어 논리는 M R ≤ 32; R=(An-1)*2(N-1)+(An-2)*2(N-2)+....+(A0)*1이 되도록 제어 신호 An -1, An -2,.., A0을 명시한다. 이하 특정된 바와 같이 블록을 선택하도록 제어 신호 An -1, An -2,.., A0=1 또는 0이다.
R=32일 때, 32_byte 또는 16_byte+16_byte CRC가 이용됨.
R=31일 때, 16_byte+8_byte+4_byte+2_byte+1_byte CRC가 이용됨.
R=30일 때, 16_byte+8_byte+4_byte+2_byte CRC가 이용됨.
R=29일 때, 16_byte+8_byte+4_byte+1_byte CRC가 이용됨.
R=28일 때, 16_byte+8_byte+4_byte CRC가 이용됨.
R=27일 때, 16_byte+8_byte+2_byte+1_byte CRC가 이용됨.
R=26일 때, 16_byte+8_byte+2_byte CRC가 이용됨.
R=25일 때, 16_byte+8_byte+1_byte CRC가 이용됨.
R=24일 때, 16_byte+8_byte CRC가 이용됨.
R=23일 때, 16_byte+4_byte+2_byte+1_byte CRC가 이용됨.
R=22일 때, 16_byte+4_byte+2_byte CRC가 이용됨.
R=21일 때, 16_byte+4_byte+1_byte CRC가 이용됨.
R=20일 때, 16_byte+4_byte CRC가 이용됨.
R=19일 때, 16_byte+2_byte+1_byte CRC가 이용됨.
R=18일 때, 16_byte+2_byte CRC가 이용됨.
R=17일 때, 16_byte+1_byte CRC가 이용됨.
R=16일 때, 16_byte CRC가 이용됨.
R=15일 때, 8_byte+4_byte+2_byte+1_byte CRC가 이용됨.
R=14일 때, 8_byte+4_byte+2_byte CRC가 이용됨.
R=13일 때, 8_byte+4_byte+1_byte CRC가 이용됨.
R=12일 때, 8_byte+4_byte CRC가 이용됨.
R=11일 때, 8_byte+2_byte+1_byte CRC가 이용됨.
R=10일 때, 8_byte+2_byte CRC가 이용됨.
R=9일 때, 8_byte+1_byte CRC가 이용됨.
R=8일 때, 8_byte CRC가 이용됨.
R=7일 때, 4_byte+2_byte+1_byte CRC가 이용됨.
R=6일 때, 4_byte+2_byte CRC가 이용됨.
R=5일 때, 4_byte+1_byte CRC가 이용됨.
R=4일 때, 4_byte CRC가 이용됨.
R=3일 때, 2_byte+1_byte CRC가 이용됨.
R=2일 때, 2_byte CRC가 이용됨.
R=1일 때, 1_byte CRC가 이용됨.
32 바이트,.., 1 바이트의 각 CRC 모듈에 대해, 대응하는 바이트 길이의 데이터가 이에 전송되게 된다. 예를 들어: R=10일 때, 8 바이트+2 바이트 모듈이 이용되고, 제어 신호 'Data_select' (도 1에 나타냄)는 데이터의 첫 8 바이트를 8 바이트 CRC 연산 블록으로 데이터의 마지막 2 바이트는 2 바이트 CRC 연산 블록으로 전송되도록 선택되게 된다.
본 발명의 제2 변형 예는 종래 기술과 제1 변형 예 사이에서 최적화된 것, 즉, 대수 반복적 접근법을 제공한다. 이 실시예에 따르면, 면적 감소는 임의의 타겟 전파 지연에 대해 최대화된다. 이것은 CRC 연산 블록의 크기가 연산 폭에 정비례한다는 것을 감안하여 이루어진 것이다. 따라서, 넓은 연산 폭에 대한 CRC 연산 블록의 수를 줄이는 것이 좁은 연산 폭에 대한 블록의 수를 감소하는 것 보다 더 줄이게 해 준다. 동시에, 대수 반복적 접근법의 캐스케이딩 블록의 전파 지연은 주로 좁은 폭의 CRC 연산 블록을 통과하면서 생긴다. 따라서, 더 넓은 연산 폭에 대한 대수 반복적 접근법을 이용하고, 더 작은 연산 폭에 대해서는 평행 접근법을 이용함으로써, 타이밍 대 회로 영역의 최적화를 제공할 수 있다.
w가 데이터 버스의 바이트 폭인 시스템을 가정해 본다. 허용되게 되는 N=log2(w) 및 dmax= 최대 지연 (CRC 연산 블록 지연 단위로)이라고 하면, L=dmax-1이 된다.
제2 변형 예에 따른 CRC 연산 시스템은 2N-L 이상의 CRC 연산 블록 폭에 대해서는 대수 반복적 접근법을 이용하고, 2N-L 이하의 CRC 연산 블록 폭에 대해서는 병렬 접근법을 이용하여 구성된다. 최종 시스템은 2N, 2N-1,..., 2N-L+1, 2N-L-1, 2N-L-2,..., 21, 20의 바이트 폭에 대한 CRC 연산 블록을 포함한다. 최종 시스템은 시스템의 대수 반복적 부분에 L+1개의 CRC 연산 블록 및 회로의 병렬 부분에 2N-1-1개의 CRC 연산 블록을 포함한다. 이런 시스템을 통과하는 최악의 경우의 지연이 2N-1 내지 2N-1+1의 범위에 포함되는 연산 바이트 폭에 대해 발생한다. 이 범위 내에는 L개의 캐스케이딩 반복적 CRC 연산 블록에 더하여 전파가 발생해야 하는 하나의 병렬 CRC 연산 블록이 있다.
개시된 발명의 제2 변형 예는 CRC 연산의 타겟 바이트 폭 (w)이 2의 제곱이라고 가정한다.
도 2는 개시된 발명의 제2 변형 예에 따른 CRC 연산 회로(200)의 블록도이다. 도 2에 나타낸 바와 같이, 논리 회로(200)는 몇 개의 CRC 연산 블록(220, 320, 420, 520, 521)을 포함하고, 이들 각각은 시드 멀티플렉서(130, 230, 330, 430)로부터 입력된 시드에 기초하여, 그리고 데이터 입력(120)에 기초하여 CRC 값을 연산한다. w 바이트 데이터 버스와 최대 지연 dmax를 갖는 시스템에서는, N=log2(w) 및 L=dmax-1이다. 시스템의 대수 반복적 부분은 2N, 2N-1,... 2N-L에 대응하는 바이트 폭에 대한 L+1개의 CRC 연산 블록(220, 320, 420)을 포함한다. 시스템의 병렬 부분은 2N-L-1,..., 20에 대응하는 바이트 폭에 대한 2N-L개의 CRC 연산 블록(520, 521)을 포함한다. 연산 실행시, CRC_seed_select 신호는 시드 멀티플렉서(230, 330, 430)를 제어하여 각 반복적 CRC 연산 블록이 연산에 포함되는지 또는 바이패스되는지를 선택한다. 이들 블록을 선택적으로 포함시키거나 바이패스시킴으로써, 2N-L로 분할 가능한 임의의 바이트 수를 처리할 수 있다. 부가하여, 멀티플렉서(530)는 병렬 CRC 연산 블록(520, 521) 중 어느 것이 출력을 제공하도록 선택되는지를 선택한다. 이것은 임의의 바이트 수까지 처리 능력을 확대시킨다.
예를 들어, w 바이트를 처리하기 위해서는, 2N 블록이 선택되고, 모든 그 외 반복적 블록은 바이패스되며, 멀티플렉서(530)는 바이패스 입력을 선택하고; w-1 바이트를 처리하기 위해서는, 2N 블록이 바이패스되며, 그 외 모든 반복적 블록 (즉, 블록 2N-1, ..., 2N-L+1, 2N-L)이 선택되며, 멀티플렉서(530)는 2N-L-1 블록으로부터의 입력을 선택하는 등이다. 각 CRC 연산 블록은 조합 XOR 트리이고, 이것의 정확한 설계는 구현되고 있는 CRC 다항식에 따라 달라진다.
회로는 먼저 초기 시드 값 0이 멀티플렉서(130)에 의해 선택되도록 명시된 CRC_reset으로 시작한다. 선택된 CRC 연산은 시드 멀티플렉서(230, 330, 430)에 의해 선택되거나 바이패스되어진 반복적 CRC 연산 블록(220, 320, 420)에 의해, 또한 출력 멀티플렉서(530)에 의해 선택되거나 바이패스되어진 병렬 CRC 연산 블록(520, 521)에 의해서 실행된다. 멀티플렉서(530)에서의 CRC 연산의 출력은 CRC 결과 레지스터(110)에 저장된다. CRC 레지스터 값은 데이터 입력(120)에 기초하는 각 사이클에서 갱신된다. 데이터 스티어링 멀티플렉서(210, 310, 410)는 어느 블록이 선택되는지에 기초하여 각 반복 CRC 연산 블록에서 이용되는 데이터를 선택한다. 데이터 스티어링 멀티플렉서(510)는 선택된 병렬 CRC 연산 블록에 의해 이용되는 데이터를 선택한다. 패킷의 마지막 사이클에서, CRC 출력(610)은 패킷에 대해 연산된 CRC 값을 하류 측 논리에 제공한다.
본 발명의 제2 변형 예를 구현하는 예시의 실시예에서, 32 바이트 폭의 데이터 버스 입력에 대해서, dmax=3이다. 이것은 결과적으로 폭 32 바이트, 16 바이트, 및 8 바이트의 세 개의 반복적 CRC 연산 블록; 및 폭 7 바이트에서 1 바이트까지의 7개의 병렬 CRC 연산 블록을 가지는 N=5, L=2의 시스템이 된다. 명목상, 패킷 데이터는 전체 버스 폭을 소모하며, 32 바이트 폭의 CRC 연산 블록이 선택되게 된다. 그러나 패킷은 패킷 전송의 시작과 종료시 버스 폭의 일부를 소모할 수 있다. 이들 경우, CRC_select 및 Data_select 제어 신호는 버스 상에서의 예상되는 데이터 정렬에 기초하여 형성되게 된다.
도 2의 제2 변형 예에 따른 시최적화된 버전에서는, 양호한 타이밍을 성취하기 위해서 중요 경로의 단계가 도 1의 것 보다 적게 있다. 이전의 실시예에서와 같이, w 바이트 이상의 길이를 갖는 데이터 패킷에 대한 CRC 연산은 다수의 클럭 사이클 동안 실행된다. R이 임의의 연산 클럭 사이클에서 처리되어야 하는 바이트의 수를 나타낸다고 하자.
따라서, 제2 실시예의 제어 단계는 R 바이트의 데이터 (R≤w)를 처리할 수 있으며, 이때 연산 회로는 크기 2N, 2(N-1), 2(N-2)..., 2(N-L), 2(N-L)-1, 2(N-L)-2... 및 1 바이트의 CRC 연산 블록으로 이루어진다. w=32, N=5이고 L=2이면, 이때 32 바이트, 16 바이트, 8 바이트, 7 바이트, 6 바이트, 5 바이트, 4 바이트, 3 바이트, 2 바이트 및 1 바이트의 CRC 단계가 있다. 제어 논리는 제어 신호 An -1, An -2, ..., An -L, BK-1, ..., B0을 R 바이트의 처리를 선택하여 R≤32이고, R=(An-1)*2(N-1)+(An-2)*2(N-2)+...+(A0)*2(N-L)+(BK-1)*(2(N-L)-1)+...+(B0)*1이 되게 하도록 명시하고, 이때 K=2N-L이다. 이하 특정하는 바와 같이 블록을 선택하기 위해 제어 신호 An -1, An-2, ..., An -L, BK -1, ..., B0=1 또는 0이다.
R=32일 때, 32_byte 또는 16_byte+16_byte CRC가 이용됨.
R=31일 때, 16_byte+8_byte+7_byte CRC가 이용됨.
R=30일 때, 16_byte+8_byte+6_byte CRC가 이용됨.
R=29일 때, 16_byte+8_byte+5_byte CRC가 이용됨.
R=28일 때, 16_byte+8_byte+4_byte CRC가 이용됨.
R=27일 때, 16_byte+8_byte+3_byte CRC가 이용됨.
R=26일 때, 16_byte+8_byte+2_byte CRC가 이용됨.
R=25일 때, 16_byte+8_byte+1_byte CRC가 이용됨.
R=24일 때, 16_byte+8_byte CRC가 이용됨.
R=23일 때, 16_byte+7_byte CRC가 이용됨.
R=22일 때, 16_byte+6_byte CRC가 이용됨.
R=21일 때, 16_byte+5_byte CRC가 이용됨.
R=20일 때, 16_byte+4_byte CRC가 이용됨.
R=19일 때, 16_byte+3_byte CRC가 이용됨.
R=18일 때, 16_byte+2_byte CRC가 이용됨.
R=17일 때, 16_byte+1_byte CRC가 이용됨.
R=16일 때, 16_byte CRC가 이용됨.
R=15일 때, 8_byte+7_byte CRC가 이용됨.
R=14일 때, 8_byte+6_byte CRC가 이용됨.
R=13일 때, 8_byte+5_byte CRC가 이용됨.
R=12일 때, 8_byte+4_byte CRC가 이용됨.
R=11일 때, 8_byte+3_byte CRC가 이용됨.
R=10일 때, 8_byte+2_byte CRC가 이용됨.
R=9일 때, 8_byte+1_byte CRC가 이용됨.
R=8일 때, 8_byte CRC가 이용됨.
R=7일 때, 7_byte CRC가 이용됨.
R=6일 때, 6_byte CRC가 이용됨.
R=5일 때, 5_byte CRC가 이용됨.
R=4일 때, 4_byte CRC가 이용됨.
R=3일 때, 3_byte CRC가 이용됨.
R=2일 때, 2_byte CRC가 이용됨.
R=1일 때, 1_byte CRC가 이용됨.
순환 중복 검사 연산을 실행하여 시최적화하기 위한 제3 실시예의 회로는 더욱 일반적인 구조화 대수 반복적 접근법에 관한 것으로, 2의 제곱이 아닌 "w" 값을 허용한다.
도 3은 본 발명의 제3 변형 예에 따른 CRC 연산 회로(300)의 블록도이다. 이 제3 변형 예에 따르면, 시스템의 대수 반복적 부분은 바이트 폭이 2N+M, 2N-1+M, ..., 2N-_L+M로 더욱 일반적으로 할당되어진 L+1개의 CRC 연산 블록(220, 320, 420)을 포함하고, 이때 M은 임의의 정수로 이루어지는 양의 오프세트 값 (즉, 0 보다 크거나 같음)이다. 이 제3 변형 예에 따른 일반적인 표시는 시스템의 타겟 바이트 폭 (w)이 2의 제곱 이외의 값이 될 수 있게 한다. 이에 따라, 시스템의 병렬 부분은 2N-L-1+M,..., 20에 대응하는 바이트 폭에 대해 2N-L+M개의 CRC 연산 블록(520, 521)을 포함한다. 상술한 본 발명의 변형 예에서와 같이, 연산 실행시, CRC_seed_select 신호는 시드 멀티플렉서(230, 330, 430)를 제어하여 각 반복적 CRC 연산 블록이 연산에 포함되는지, 또는 바이패스되는지를 선택하게 된다. 이들 블록을 선택적으로 포함시키거나 바이패스시킴으로써, 2N-L로 분할 가능한 임의의 바이트 수를 처리할 수 있다. 부가하여, 멀티플렉서(530)는 병렬 CRC 연산 블록(530, 521) 중 어느 것이 출력을 제공하도록 선택되게 되는지를 선택한다.
도 4는 본 발명의 제4 실시예에 따른 CRC 연산 회로(400)의 블록도로서 여기에서 각 CRC 연산 블록(220, 320, 420)은 S 바이트를 처리할 수 있으며, 이때 S는 임의의 양의 정수이다. 회로의 반복적 부분은 각각 S 바이트를 처리할 수 있는 "k" 개의 블록을 포함하므로, (k+1)*S> w 및 k*S≤w이 된다. 시스템의 병렬 부분은 S-1, S-2,... 1에 대응하는 바이트 폭에 대한 B-1 연산 블록을 포함한다. 연산 실행시, CRC_seed_select 신호는 시드 멀티플렉서(130, 230, 330, 430)를 제어하여 처리되는 다수의 S 바이트를 선택한다. 부가하여, 멀티플렉서(530)는 병렬 CRC 연산 블록(520, 521) 중 어느 것이 출력을 제공하도록 선택되는지를 선택한다. 이것은 임의의 바이트 수까지 처리 능력을 확대시킨다.
제4 실시예는 제1 실시예를 이용하는 구현시의 것 보다 여전히 시최적화하면서, 제2 및 제3 실시예를 이용하는 구현시의 것 보다 논리 양을 줄인다. d가 회로의 지연 (CRC 연산 블록의 단위로)을 나타낸다고 하자. 그러면 이 회로를 통한 최악의 경우의 d 값은 k 블록이 처음 k*S 바이트에 대한 연산을 실행하도록 선택될 때, 범위 k*s 내지 w 바이트에서 x 바이트의 연산에 대해 발생하게 되고, 하나의 병렬 블록은 남은 바이트에서의 연산을 실행하도록 선택되므로, d=k+1이 된다. w=33 바이트, L=2, M=1, k=4인 경우에, 제3 실시예를 이용한 구현은 최악의 경우 지연 d=2 블록을 가지지만, 본 실시예는 최악의 경우의 지연 d=5 블록을 갖는다. 그러나 본 실시예는 더 넓은 폭의 CRC 연산 블록의 수가 제2 실시예의 것 보다 감소하기 때문에 논리 양을 줄이게 된다. 본 실시예에 따르면, 병렬 구성된 CRC 연산 블록의 수는 S-1과 동일하지만, 더욱 적극적인 타이밍 방법을 위해서는, 병렬 구성된 CRC 연산 블록의 수가 S를 초과할 수 있는 것이 일반적인 경우이다.
따라서, 제4 실시예의 제어 단계는 R 바이트의 데이터 (R≤w)를 처리할 수 있으며 연산 회로는 S 바이트의 k개의 블록, 및 S-1, S-2, ..., 1 바이트의 S-1개의 병렬 블록으로 이루어진다. 예를 들어, w=34 및 S=5인 도 4에 도시된 본 발명의 제4 변형 예에 따르면, 제어 논리는 R 바이트에 대한 처리를 선택하여 R≤34, R=(Ak-1)*S+(Ak-2)*S+...+(A0)*S+(BS-1)*(S-1)+...+(B0)*1이 되도록 제어 신호 Ak -1, Ak -2, ..., A0, Bs -1, ..., B0을 명시한다. 이하 특정된 바와 같이 제어 신호 Ak -1, Ak-2,..., BS -1, ..., B0=1 또는 0이다. (이때 X는 임의의 클럭 사이클 동안 선택된 S 바이트의 블록 수를 나타내고, 그렇지 않으면 이것의 선택은 임의적이다):
34 바이트 CRC = S_byte*6+4_byte 이때 X=6 (전 경로)
33 바이트 CRC = S_byte*6+3_byte 이때 X=6
32 바이트 CRC = S_byte*6+2_byte 이때 X=6
31 바이트 CRC = S_byte*6+1_byte 이때 X=6
30 바이트 CRC = S_byte*6 이때 X=6
29 바이트 CRC = S_byte*5+4_byte 이때 X=5
25 바이트 CRC = S_byte*5 이때 X=5
24 바이트 CRC = S_byte*4+4_byte 이때 X=4
23 바이트 CRC = S_byte*4+3_byte 이때 X=4
22 바이트 CRC = S_byte*4+2_byte 이때 X=4
21 바이트 CRC = S_byte*4+1 byte 이때 X=4
20 바이트 CRC = S_byte*4 이때 X=4
19 바이트 CRC = S_byte*3+4_byte 이때 X=3
18 바이트 CRC = S_byte*3+3_byte 이때 X=3
17 바이트 CRC = S_byte*3+2_byte 이때 X=3
16 바이트 CRC = S_byte*3+1_byte 이때 X=3
15 바이트 CRC = S_byte*3 이때 X=3
14 바이트 CRC = S_byte*2+4_byte 이때 X=2
13 바이트 CRC = S_byte*2+3_byte 이때 X=2
12 바이트 CRC = S_byte*2+2_byte 이때 X=2
11 바이트 CRC = S_byte*2+1_byte 이때 X=2
10 바이트 CRC = S_byte*2 이때 X=2
9 바이트 CRC = S_byte+4_byte 이때 X=1
8 바이트 CRC = S_byte+3_byte 이때 X=1
7 바이트 CRC = S_byte+2_byte 이때 X=1
6 바이트 CRC = S_byte+1_byte 이때 X=1
5 바이트 CRC = S_byte 이때 X=1
4 바이트 CRC = 4_byte 이때 X=0
3 바이트 CRC = 3_byte 이때 X=0
2 바이트 CRC = 2_byte 이때 X=0
1 바이트 CRC = 1_byte 이때 X=0
도 5는 도 1 내지 4와 관련하여 기술된 본 발명의 모든 네 개의 변형 예를 포괄하는 CRC 연산 회로(450)의 일반 유형을 제공하며, CRC 연산 블록 바이트 폭은 직렬 캐스케이드된 블록(220, 320, 420 등)의 반복적 부분에 대해서는 Fx, Fx -1, ..., F1 (이때 Fx≥Fx -1≥...≥F1≥0 바이트임)의 크기 범위인 CRC 연산 블록 바이트 폭을; 그리고 병렬 블록 (520, 521 등)에 대해서는 크기 Gy -i 바이트의 CRC 연산 블록 바이트 폭을 갖는다 (이때, i=0 내지 y-1에 대해서 Gy -i=Gy -i-1+1이고 이때 y≥F1-1). 일반적 유형에 따르면, CRC 연산에 포함되는 바이트 수는 다음 관계식에 따라 표현될 수 있다: R=Ax*Fx+Ax -1*Fx-1+...+A1*F1+By*By*Gy+...+B1*G1이고, 이때, 제4 실시예의 것에 따라 기재된 바와 같이 x는 Fx 블록의 수이고 y는 Gy 블록의 수이고 Ax, Ax -1, ..., A1, By, ... B1=0 또는 1이다.
도 5는 본 발명의 모든 변형 예의 일반적 유형을 도시한다. 제1 실시예에서는, Fx=2N, Fx -1=2N-1, ..., F1=20이고; y=F1-1=0이므로 회로의 병렬 부분에서는 CRC 연산 블록이 없다. 제2 실시예에서는, Fx=2N, Fx -1=2N-1, ..., F1=2N-L, Gy=2N-L-1, ..., G1=1이다. 제3 실시예에서는 Fx=2N+M, Fx-1=2N-1+M, ..., F1=2N-L+M, Gy=2N-L+M-1, ..., G1=1이다. 제4 실시예에서는, Fx=Fx -1=...=F1=S 및 Gy=y-1, ..., G1=1이고 이때 y≥S-1이다.
본 발명이 바람직한 실시예의 설명과 관련하여 특정하게 도시 및 기재되었지만, 당업자라면 상술한 것과 그 외 형태와 상세 사항의 변경이 첨부한 청구범위의 영역에 의해서만 제한되어야 하는 본 발명의 정신 및 영역에서 벗어나지 않고 행해질 수 있다는 것이 이해될 것이다.

Claims (17)

  1. 2n 바이트의 병렬 데이터 폭을 갖는 통신 링크를 통해 전송되게 되는 임의의 바이트 폭을 갖는 데이터 패킷에 첨부되는 에러 제어 코드를 형성하기 위한 아키텍처에 있어서,
    복수의 코드 형성 블록을 포함하고 - 상기 코드 형성 블록 중 제1의 것은 2n 바이트에 대해 상기 코드를 형성하고, 상기 코드 형성 블록 중 제2의 것은 2n-1 바이트에 대한 상기 코드를 형성함 -, 상기 제1 코드 형성 블록으로부터의 상기 코드는 상기 제2 코드 형성 블록에 선택적으로 결합되고, 상기 제1 및 제2 코드 형성 블록은 상기 임의의 데이터 패킷의 상기 임의의 바이트 폭에 따라서 임의의 데이터 패킷에 대해 선택적으로 인에이블되는 아키텍처.
  2. 2n 바이트의 병렬 데이터 폭을 갖는 통신 링크를 통해 전송되게 되는 임의의 바이트 폭을 갖는 데이터 패킷에 첨부되는 에러 제어 코드를 형성하기 위한 아키텍처에 있어서:
    제1 복수의 직렬 결합된 코드 형성 블록 - 상기 제1 복수의 코드 형성 블록 중 제1의 것은 2n 바이트에 대해 상기 코드를 형성하고, 상기 제1 복수의 코드 형성 블록 중 제2의 것은 2n-1 바이트에 대해 상기 코드를 형성하고, 상기 제1 코드 형성 블록으로부터의 상기 코드는 상기 제2 코드 형성 블록에 선택적으로 결합됨 - ; 및
    제2 복수의 병렬 결합된 코드 형성 블록 - 상기 제2 복수의 코드 형성 블록 중 제1의 것은 2x 바이트에 대해 상기 코드를 형성하고, 상기 코드 형성 블록 중 제2의 것은 2y 바이트에 대해 상기 코드를 형성하고, x 및 y는 n 및 n-1과 다름 -;
    을 포함하고,
    상기 제1 복수의 직렬 결합된 코드 형성 블록 중 하나 이상, 상기 병렬 결합된 코드 형성 블록 중 하나 또는 전혀 아무것도, 상기 임의의 데이터 패킷의 상기 임의의 바이트 폭에 따라서, 임의의 데이터 패킷에 대해 선택적으로 인에이블되는 아키텍처.
  3. 통신 채널을 통해 전송되는 데이터의 바이트와 관련되는 CRC 코드 워드를 형성하기 위한 회로 - 상기 통신 채널은 w 바이트의 폭까지 데이터를 전송할 수 있음- 에 있어서:
    각각 입력되는 데이터에 기초하여 CRC 값을 형성하기 위한 제1 복수의 직렬 결합된 코드 형성 블록 - 상기 제1 복수의 코드 형성 블록의 각 블록은 2N+M, 2N-1+M, ..., 2N-L+M의 범위인 각 바이트 폭을 갖는 데이터 입력을 수신하도록 구성되고 이때 w=2N+M, M은 오프세트 값이고, L은 상기 제1 복수의 블록의 CRC 값을 처리하기 위한 최대 전파 지연 표준에 기초하는 전체 수임 - ;
    각각 입력되는 데이터에 기초하여 CRC 값을 형성하기 위한 제2 복수의 병렬 결합된 코드 형성 블록 - 상기 제2 복수의 코드 형성 블록의 각 블록은 2N-L-1+M, 2N-L-2+M, ..., 20의 범위인 각 바이트 폭을 갖는 데이터 입력을 수신하도록 구성됨 - ; 및
    상기 데이터 입력에 기초한 CRC 연산에 포함되는 상기 제1 및 제2 복수의 블록 내의 특정 CRC 코드 형성 블록을 선택하기 위해 제어 가능한 멀티플렉서 수단
    을 포함하고,
    CRC 코드 형성 블록을 선택적으로 포함시키거나 바이패스시킴으로써 2N-L로 분할 가능한 임의의 데이터 입력 바이트 수가 대응하는 CRC 코드 형성에 대해 처리될 수 있는 CRC 코드 형성 회로.
  4. 제3항에 있어서, M≥0인 CRC 코드 형성 회로.
  5. 제3항에 있어서, N은 log2(w)와 동일한 CRC 코드 형성 회로.
  6. 통신 채널을 통해 전송되는 데이터의 바이트와 관련되는 CRC 코드 워드를 형성하기 위한 회로 - 상기 통신 채널은 w 바이트의 폭까지 데이터를 전송할 수 있음- 에 있어서:
    각각 입력되는 데이터에 기초하여 CRC 값을 형성하기 위한 제1 복수의 직렬 결합된 코드 형성 블록 - 상기 제1 복수의 코드 형성 블록의 각 블록은 2N 내지 2N-L의 범위인 2의 제곱의 각 바이트 폭을 갖는 데이터 입력을 수신하도록 구성되고, 이때 N은 log2(w)와 동일하고 L은 상기 제1 복수의 블록의 CRC 값을 처리하기 위한 최대 전파 지연 표준에 기초하는 전체 수임 - ;
    각각 입력되는 데이터에 기초하여 CRC 값을 형성하기 위한 제2 복수의 병렬 결합된 코드 형성 블록 - 상기 제2 복수의 코드 형성 블록의 각 블록은 2N-L-1 내지 20의 범위인 각 바이트 폭을 갖는 데이터 입력을 수신하도록 구성됨 - ; 및
    상기 데이터 입력에 기초한 CRC 연산에 포함되는 상기 제1 및 제2 복수의 블록 내의 특정 CRC 코드 형성 블록을 선택하기 위해 제어 가능한 멀티플렉서 수단
    을 포함하고,
    CRC 코드 형성 블록을 선택적으로 포함시키거나 바이패스시킴으로서 2N-L로 분할 가능한 임의의 데이터 입력 바이트 수가 대응하는 CRC 코드 형성에 대해 처리될 수 있는 CRC 코드 형성 회로.
  7. 제6항에 있어서, 상기 제1 복수의 직렬 결합된 코드 형성 블록은 L+1개를 포함하고, 상기 제2 복수의 병렬 결합된 코드 형성 블록은 2N-L-1개를 포함하는 CRC 코드 형성 회로.
  8. 제6항에 있어서, 상기 제1 복수의 직렬 결합된 코드 형성 블록의 CRC 값을 처리하기 위한 상기 제1 최대 전파 지연 표준은 클럭 사이클의 최대 지연, dmax을 포함하고, 이때 상기 전체 수 L=dmax-1인 CRC 코드 형성 회로.
  9. 통신 채널을 통해 전송되는 데이터의 바이트와 관련되는 CRC 코드 워드를 형성하기 위한 회로 - 상기 통신 채널은 w 바이트의 폭까지 데이터를 전송할 수 있음- 에 있어서:
    각각 입력되는 데이터에 기초하여 CRC 값을 형성하기 위한 제1 복수의 직렬 결합된 코드 형성 블록 - 상기 제1 복수의 코드 형성 블록의 각 블록은 S 바이트의 바이트 폭을 갖는 데이터 입력을 수신하도록 구성됨 - ;
    각각 입력되는 데이터에 기초하여 CRC 값을 형성하기 위한 제2 복수의 병렬 결합된 코드 형성 블록 - 상기 제2 복수의 코드 형성 블록의 각 블록은 y 바이트 내지 1 바이트의 범위인 각 바이트 폭을 갖는 데이터 입력을 수신하도록 구성됨 - ; 및
    상기 데이터 입력에 기초한 CRC 연산에 포함되는 상기 제1 및 제2 복수의 블록 내의 특정 CRC 코드 형성 블록을 선택하기 위해 제어 가능한 멀티플렉서 수단
    을 포함하고,
    상기 제1 복수의 직렬 결합된 코드 형성 블록의 특정 CRC 코드 값을 연산하기 위한 시간에 더하여 상기 제2 복수의 병렬 결합된 코드 형성 블록의 특정 CRC 코드 값을 처리하기 위한 시간을 더한 것이 하나의 클럭 사이클보다 작거나 동일한 CRC 코드 형성 회로.
  10. 제9항에 있어서, y=S-1이고, 상기 제2 복수의 블록의 상기 바이트 폭은 연속하는 S-1, S-2, ..., 1 바이트의 범위인 CRC 코드 형성 회로.
  11. 제9항에 있어서, y> S인 CRC 코드 형성 회로.
  12. 제9항에 있어서, 상기 제1 복수의 직렬 결합된 코드 형성 블록은 k개의 블록을 포함하고, 각 블록은 S 바이트를 처리할 수 있으므로, (k+1)*S> w 및 k*S≤w인 CRC 코드 형성 회로.
  13. 통신 채널을 통해 전송되는 데이터의 바이트와 관련되는 CRC 코드 워드를 형성하기 위한 회로 - 상기 통신 채널은 w 바이트의 폭까지 데이터를 전송할 수 있음- 에 있어서:
    각각 입력되는 데이터에 기초하여 CRC 값을 형성하기 위한 제1 복수의 직렬 결합된 코드 형성 블록 - 상기 제1 복수의 코드 형성 블록의 각 블록은 각각 Fx, Fx-1, ..., F1인 바이트 폭의 범위인 데이터 입력을 수신하도록 구성되고, 이때 Fx≥Fx-1≥...≥F1≥0 바이트임 - ;
    각각 입력되는 데이터에 기초하여 CRC 값을 형성하기 위한 제2 복수의 병렬 결합된 코드 형성 블록 - 상기 제2 복수의 코드 형성 블록의 각 블록은 각 바이트 폭 Gy -i를 갖는 데이터 입력을 수신하도록 구성되고, 이때 i=0 내지 y-1인 경우 Gy -i=Gy-i-1+1이고, 이때 y≥F1-1임 - ; 및
    상기 데이터 입력에 기초한 CRC 연산에 포함되는 상기 제1 및 제2 복수의 블록 내의 특정 CRC 코드 형성 블록을 선택하기 위해 제어 가능한 멀티플렉서 수단
    을 포함하고,
    CRC 코드 형성 블록을 선택적으로 포함시키거나 바이패스시킴으로써 임의의 데이터 입력 바이트 수가 관계식:
    Ax*Fx+Ax -1*Fx -1+...+A1*F1+By*Gy+...+B1*G1, 이때 Ax, Ax -1, ..., A1, By, ..., B1=0 또는 1
    에 따른 대응 CRC 코드 형성에 대해 처리될 수 있는 CRC 코드 형성 회로.
  14. 제13항에 있어서, 상기 Fx=2N, Fx -1=2N-1,..., F1=20이고; y=F1-1=0인 CRC 코드 형성 회로.
  15. 제13항에 있어서, 상기 Fx=2N, Fx -1=2N-1, ..., F1=2N-L, Gy≥2N-L-1, ..., G1=1; 및 L은 상기 제1 복수의 블록의 CRC 값을 처리하기 위한 최대 전파 지연 표준에 기초하는 전체 수인 CRC 코드 형성 회로.
  16. 제13항에 있어서, 상기 Fx=2N+M, Fx -1=2N-1+M, ..., F1=2N-L+M, G≥2N-L+M-1, ..., G1=1인 CRC 코드 형성 회로.
  17. 제13항에 있어서, 상기 Fx=Fx -1=...=F1=S; 및 Gy=y-1, ..., G1=1이고, 이때 y≥S-1인 CRC 코드 형성 회로.
KR1020057016090A 2003-03-28 2004-02-27 가변 폭의 병렬 순환 중복 검사 (crc) 연산을 위한 반복회로 및 방법 KR100745485B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/249,290 US7191383B2 (en) 2003-03-28 2003-03-28 System and method for optimizing iterative circuit for cyclic redundancy check (CRC) calculation
US10/249,290 2003-03-28

Publications (2)

Publication Number Publication Date
KR20050110646A true KR20050110646A (ko) 2005-11-23
KR100745485B1 KR100745485B1 (ko) 2007-08-02

Family

ID=32987044

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057016090A KR100745485B1 (ko) 2003-03-28 2004-02-27 가변 폭의 병렬 순환 중복 검사 (crc) 연산을 위한 반복회로 및 방법

Country Status (9)

Country Link
US (2) US7191383B2 (ko)
EP (1) EP1609247B1 (ko)
JP (1) JP4378381B2 (ko)
KR (1) KR100745485B1 (ko)
CN (1) CN100461637C (ko)
AT (1) ATE328396T1 (ko)
CA (1) CA2520558C (ko)
DE (1) DE602004001048T2 (ko)
WO (1) WO2004086633A1 (ko)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100645388B1 (ko) * 2005-11-30 2006-11-14 한국전자통신연구원 임의의 크기의 병렬 처리가 가능한 병렬 crc 생성 장치및 방법
WO2008157591A1 (en) * 2007-06-20 2008-12-24 Texas Instruments Incorporated Generating crc syndromes with data extracted from syndrome loop
WO2008157774A2 (en) * 2007-06-20 2008-12-24 Texas Instruments Incorporated Adding known data to crc processing without increased processing time
WO2008157769A2 (en) * 2007-06-20 2008-12-24 Texas Instruments Incorporated Providing an initial syndrome to a crc next-state decoder independently of its syndrome feedback loop
US7600179B2 (en) 2003-06-23 2009-10-06 Texas Instruments Incorporated Sparse maximum likelihood decoder for block codes
KR20190113474A (ko) * 2018-03-27 2019-10-08 삼성전자주식회사 데이터 통신 오류를 검출하는 순환 중복 검사 유닛 데이터 통신 장치 및 검출 방법

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1526701A1 (en) * 2003-10-22 2005-04-27 Mitsubishi Denki Kabushiki Kaisha Methods and devices for transferring and for recovering data packets
US7249306B2 (en) * 2004-02-20 2007-07-24 Nvidia Corporation System and method for generating 128-bit cyclic redundancy check values with 32-bit granularity
US8311127B2 (en) * 2004-03-04 2012-11-13 Nvidia Corporation Method and apparatus to check for wrongly decoded macroblocks in streaming multimedia applications
US7766797B2 (en) 2004-08-11 2010-08-03 Icon Ip, Inc. Breakaway or folding elliptical exercise machine
US7740563B2 (en) 2004-08-11 2010-06-22 Icon Ip, Inc. Elliptical exercise machine with integrated anaerobic exercise system
US7266760B1 (en) * 2004-09-30 2007-09-04 Altera Corporation Method and apparatus for calculating cyclic redundancy checks for variable length packets
US7260765B2 (en) * 2004-12-17 2007-08-21 International Business Machines Corporation Methods and apparatus for dynamically reconfigurable parallel data error checking
US7761776B1 (en) * 2005-11-03 2010-07-20 Xilinx, Inc. Method and apparatus for a modular, programmable cyclic redundancy check design
JP4764973B2 (ja) * 2005-12-09 2011-09-07 独立行政法人産業技術総合研究所 Crc値の算出装置
US7658698B2 (en) 2006-08-02 2010-02-09 Icon Ip, Inc. Variable stride exercise device with ramp
JP4976397B2 (ja) * 2006-08-22 2012-07-18 パナソニック株式会社 並列剰余演算器及び並列剰余演算方法
US7736279B2 (en) 2007-02-20 2010-06-15 Icon Ip, Inc. One-step foldable elliptical exercise machine
TWI341096B (en) * 2007-04-03 2011-04-21 Ind Tech Res Inst Method and system for calculating crc
US20090024900A1 (en) * 2007-07-18 2009-01-22 Cisco Technology, Inc. Cyclic redundancy checking in lane-based communications
JP4798164B2 (ja) * 2008-04-02 2011-10-19 ソニー株式会社 送信装置および方法、受信装置および方法、並びにプログラム
JP4896931B2 (ja) * 2008-06-24 2012-03-14 株式会社東芝 検査符号生成方法
US8904115B2 (en) * 2010-09-28 2014-12-02 Texas Instruments Incorporated Cache with multiple access pipelines
US8443256B2 (en) 2011-01-24 2013-05-14 Xilinx, Inc. Method and apparatus for determining a cyclic redundancy check (CRC) for a data message
CN102318250B (zh) * 2011-08-02 2014-03-05 华为技术有限公司 通信系统中的循环冗余校验处理方法、装置和lte终端
CN103427939A (zh) * 2012-05-18 2013-12-04 中兴通讯股份有限公司 一种基于xgmii接口的通道死锁自动恢复方法及芯片
US8726124B2 (en) * 2012-07-19 2014-05-13 Nvidia Corporation Cyclic redundancy check generation via distributed time multiplexed linear feedback shift registers
US8738990B2 (en) 2012-07-19 2014-05-27 Nvidia Corporation Cyclic redundancy check generation via distributed time multiplexed linear feedback shift registers
WO2014015516A1 (en) * 2012-07-27 2014-01-30 Alcatel-Lucent Shanghai Bell Co., Ltd Method and apparatus for performing pipelined operations on parallel input data with feedback
CN102891685B (zh) * 2012-09-18 2018-06-22 国核自仪系统工程有限公司 基于fpga的并行循环冗余校验运算电路
GB2519140B (en) * 2013-10-11 2021-03-10 Advanced Risc Mach Ltd Cumulative error detection in data transmission
CN103701566B (zh) * 2013-12-18 2017-09-12 华为技术有限公司 一种校验方法和装置
US9891985B1 (en) * 2014-11-01 2018-02-13 Netronome Systems, Inc. 256-bit parallel parser and checksum circuit with 1-hot state information bus
CN105049057B (zh) * 2015-08-17 2018-04-20 中国航天科技集团公司第九研究院第七七一研究所 一种面向128位并行输入的crc‑32校验电路
US10625137B2 (en) 2016-03-18 2020-04-21 Icon Health & Fitness, Inc. Coordinated displays in an exercise device
US10493349B2 (en) 2016-03-18 2019-12-03 Icon Health & Fitness, Inc. Display on exercise device
US10625114B2 (en) 2016-11-01 2020-04-21 Icon Health & Fitness, Inc. Elliptical and stationary bicycle apparatus including row functionality
US10541782B2 (en) 2017-11-20 2020-01-21 International Business Machines Corporation Use of a cyclic redundancy code multiple-input shift register to provide early warning and fail detection
US10530396B2 (en) 2017-11-20 2020-01-07 International Business Machines Corporation Dynamically adjustable cyclic redundancy code types
US10419035B2 (en) 2017-11-20 2019-09-17 International Business Machines Corporation Use of multiple cyclic redundancy codes for optimized fail isolation
US10530523B2 (en) 2017-11-20 2020-01-07 International Business Machines Corporation Dynamically adjustable cyclic redundancy code rates
CN111130562B (zh) * 2018-11-01 2022-12-09 中国科学院微电子研究所 Crc并行计算方法及系统
CN109462458B (zh) * 2019-01-11 2021-04-16 深圳市常茂信科技开发有限公司 一种多级流水电路实现并行crc的方法
JP2021039672A (ja) 2019-09-05 2021-03-11 キオクシア株式会社 メモリシステム、パケット保護回路およびcrc計算方法
CN110504975B (zh) * 2019-09-29 2022-12-27 中国科学院微电子研究所 一种crc并行编解码方法及基于其的编解码器
WO2022186853A1 (en) * 2021-03-03 2022-09-09 Zeku, Inc. Dynamic cyclic redundancy check update for iterative decoding
CN115408574A (zh) 2021-05-28 2022-11-29 南宁富联富桂精密工业有限公司 数据分析方法、装置及计算机可读存储介质

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4703485A (en) * 1986-02-10 1987-10-27 International Business Machines Corporation Method and apparatus for computing and implementing error detection check bytes
KR900701112A (ko) * 1988-02-29 1990-08-17 기따다 데쯔야 직렬제어장치 및 그 제어방법
JP3093820B2 (ja) * 1991-04-26 2000-10-03 オリンパス光学工業株式会社 厚肉品の射出成形金型および射出成形方法
JPH05170338A (ja) * 1991-12-20 1993-07-09 Kuinraito Denshi Seiko Kk シート物積層装置
JPH06189124A (ja) * 1992-12-21 1994-07-08 Konica Corp 画像の色修正装置
US5673291A (en) * 1994-09-14 1997-09-30 Ericsson Inc. Simultaneous demodulation and decoding of a digitally modulated radio signal using known symbols
US6023783A (en) * 1996-05-15 2000-02-08 California Institute Of Technology Hybrid concatenated codes and iterative decoding
US5844923A (en) * 1996-10-24 1998-12-01 At&T Corp Fast framing of nude ATM by header error check
DE69731932T2 (de) * 1996-10-29 2006-02-16 International Business Machines Corp. Verfahren und Vorrichtung für zweistufige CRC-32-Berechnung
DE19838865C2 (de) * 1998-08-26 2001-03-01 Ericsson Telefon Ab L M Parallele CRC Erzeugungsschaltung zum Erzeugen eines CRC Codes und Verfahren zum Generieren einer derartigen Schaltung
US6292918B1 (en) * 1998-11-05 2001-09-18 Qualcomm Incorporated Efficient iterative decoding
US6357032B1 (en) * 1999-02-08 2002-03-12 International Business Machines Corporation Method and apparatus for implementing cyclic redundancy check calculation for data communications
US6530057B1 (en) * 1999-05-27 2003-03-04 3Com Corporation High speed generation and checking of cyclic redundancy check values
US6560742B1 (en) * 1999-12-09 2003-05-06 International Business Machines Corporation Parallel system and method for cyclic redundancy checking (CRC) generation
US6519737B1 (en) * 2000-03-07 2003-02-11 International Business Machines Corporation Computing the CRC bits at a time for data whose length in bits is not a multiple of M
JP2001285076A (ja) * 2000-03-31 2001-10-12 Ando Electric Co Ltd Crc符号演算回路、及びcrc符号演算方法
JP2002141809A (ja) 2000-10-31 2002-05-17 Ando Electric Co Ltd Crc符号演算回路、及びcrc符号演算方法
JP2002174399A (ja) * 2000-12-06 2002-06-21 Seibu Gas Co Ltd 圧縮天然ガス自動車用ガススタンドシステム
US6701478B1 (en) * 2000-12-22 2004-03-02 Nortel Networks Limited System and method to generate a CRC (cyclic redundancy check) value using a plurality of CRC generators operating in parallel
US6732318B2 (en) * 2001-04-03 2004-05-04 Sun Microsystems, Inc. Variable width parallel cyclical redundancy check
US6701479B2 (en) * 2001-05-15 2004-03-02 Network Elements, Inc. Fast cyclic redundancy check (CRC) generation
US6820228B1 (en) * 2001-06-18 2004-11-16 Network Elements, Inc. Fast cyclic redundancy check (CRC) generation

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7600179B2 (en) 2003-06-23 2009-10-06 Texas Instruments Incorporated Sparse maximum likelihood decoder for block codes
KR100645388B1 (ko) * 2005-11-30 2006-11-14 한국전자통신연구원 임의의 크기의 병렬 처리가 가능한 병렬 crc 생성 장치및 방법
WO2008157591A1 (en) * 2007-06-20 2008-12-24 Texas Instruments Incorporated Generating crc syndromes with data extracted from syndrome loop
WO2008157774A2 (en) * 2007-06-20 2008-12-24 Texas Instruments Incorporated Adding known data to crc processing without increased processing time
WO2008157769A2 (en) * 2007-06-20 2008-12-24 Texas Instruments Incorporated Providing an initial syndrome to a crc next-state decoder independently of its syndrome feedback loop
WO2008157769A3 (en) * 2007-06-20 2009-02-19 Texas Instruments Inc Providing an initial syndrome to a crc next-state decoder independently of its syndrome feedback loop
WO2008157774A3 (en) * 2007-06-20 2009-02-26 Texas Instruments Inc Adding known data to crc processing without increased processing time
US8127211B2 (en) 2007-06-20 2012-02-28 Texas Instruments Incorporated Adding known data to CRC processing without increased processing time
KR20190113474A (ko) * 2018-03-27 2019-10-08 삼성전자주식회사 데이터 통신 오류를 검출하는 순환 중복 검사 유닛 데이터 통신 장치 및 검출 방법

Also Published As

Publication number Publication date
KR100745485B1 (ko) 2007-08-02
EP1609247B1 (en) 2006-05-31
US7191383B2 (en) 2007-03-13
US20040194000A1 (en) 2004-09-30
DE602004001048D1 (de) 2006-07-06
CN1762103A (zh) 2006-04-19
CA2520558C (en) 2008-12-09
ATE328396T1 (de) 2006-06-15
JP2006521730A (ja) 2006-09-21
EP1609247A1 (en) 2005-12-28
WO2004086633A1 (en) 2004-10-07
DE602004001048T2 (de) 2007-01-11
US20070162823A1 (en) 2007-07-12
JP4378381B2 (ja) 2009-12-02
US8051359B2 (en) 2011-11-01
CA2520558A1 (en) 2004-10-07
CN100461637C (zh) 2009-02-11

Similar Documents

Publication Publication Date Title
KR100745485B1 (ko) 가변 폭의 병렬 순환 중복 검사 (crc) 연산을 위한 반복회로 및 방법
US4723243A (en) CRC calculation machine with variable bit boundary
US7590916B2 (en) Cyclic redundancy checking value calculator
EP0230730B1 (en) CRC calculation machines
US8510626B2 (en) Data coding apparatus and methods
US8812940B2 (en) Programmable error correction capability for BCH codes
JPH0831800B2 (ja) Crc計算装置およびcrcチェックビット出力方法
US7886210B2 (en) Apparatus for pipelined cyclic redundancy check circuit with multiple intermediate outputs
US7571370B2 (en) Configurable, fast, 32-bit CRC generator for 1-byte to 16-bytes variable width input data
US4720831A (en) CRC calculation machine with concurrent preset and CRC calculation function
US9639416B1 (en) CRC circuits with extended cycles
US6880121B2 (en) Parallel processing syndrome calculating circuit and reed-solomon decoding circuit
KR20040099147A (ko) 프로그램가능한 프로세서에서의 비트조작 연산회로 및 방법
EP0262944A2 (en) Error correction apparatus
KR100340001B1 (ko) 순회 용장 부호 계산장치
US8150949B2 (en) Computing apparatus
US6941418B1 (en) Integrated circuit and method outputting data
US7138930B1 (en) Multiple byte data path encoding/decoding device and method
JP4408727B2 (ja) ディジタル回路
US20040109444A1 (en) Circuit to extract logical values at arbitrary bit positions
US8095848B1 (en) Multi-byte cyclic redundancy check calculation circuit and method of operating the same
KR100377958B1 (ko) 성능 개선 및 전력 소모를 줄인 곱셈기
Nordqvist et al. Configurable CRC generator
Joseph et al. Programmable CRC Computation on High Speed Parallel LFSR Architectures based on Improved State Space Structure
WO2008157591A1 (en) Generating crc syndromes with data extracted from syndrome loop

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

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee