KR101721449B1 - 프로그래머블 crc 유닛 - Google Patents

프로그래머블 crc 유닛 Download PDF

Info

Publication number
KR101721449B1
KR101721449B1 KR1020117024142A KR20117024142A KR101721449B1 KR 101721449 B1 KR101721449 B1 KR 101721449B1 KR 1020117024142 A KR1020117024142 A KR 1020117024142A KR 20117024142 A KR20117024142 A KR 20117024142A KR 101721449 B1 KR101721449 B1 KR 101721449B1
Authority
KR
South Korea
Prior art keywords
shift
crc
buffer
data
bit
Prior art date
Application number
KR1020117024142A
Other languages
English (en)
Other versions
KR20120044922A (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 KR20120044922A publication Critical patent/KR20120044922A/ko
Application granted granted Critical
Publication of KR101721449B1 publication Critical patent/KR101721449B1/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
    • 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
    • H03M13/6516Support of multiple code parameters, e.g. generalized Reed-Solomon decoder for a variety of generator polynomials or Galois fields
    • 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/6569Implementation on processors, e.g. DSPs, or software implementations

Landscapes

  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

사이클릭 리던던시 체크(CRC) 유닛은, 프로그래머블 CRC 엔진, 각각이 n-비트들로 구성된 k 워드들을 저장하도록 동작하고 k 및 n이 가변적인 버퍼 메모리, 및 버퍼 메모리로부터 프로그래머블 CRC 엔진으로 데이터를 시프트하도록 동작하는 시프트 로직을 갖는다.

Description

프로그래머블 CRC 유닛{PROGRAMMABLE CRC UNIT}
본 발명은 사이클릭 리던던시 체크(CRC) 계산 기능을 갖는 집적 회로 장치들에 관한 것으로서, 더욱 상세하게는, 유연한 프로그램가능성을 제공하는 집적 회로 장치들에 관한 것이다.
CRC 장치들은, 예를 들면, 마이크로컨트롤러들 내에서 데이터 전송 또는 데이터 저장의 내용(content)을 검증하기 위해 이용될 수 있다. CRC 프로토콜들은 본 기술분야에서 공지되어 있다. CRC 연산에 있어서, 데이터가 정확하게 저장/전송되었는지 검증하기 위해, 데이터는 각각의 체크를 수행하는 CRC 엔진으로 시프트(shift into)된다. 이를 위하여, 특히, 어떤 CRC 프로토콜들은 고정된 시프트 방향을 이용한다. 하지만, 어떤 전송 방법들은, 데이터를 저장하고 전송하기 위해 또다른 방식을 이용할 수도 있다. 예를 들면, 범용 비동기 수신기/송신기(UART) 기술에 기초한 일반적인 프로토콜은, 전형적으로, 최하위 비트(LSb)를 가장먼저 전송하는데, 반면에, 직렬 주변장치 인터페이스(SPI) 기술에 기초한 프로토콜은 최상위 비트(MSb)를 가장먼저 전송한다.
이런 이유로, 데이터는 CRC 엔진에 제공되기 전에 처리가 필요한 경우가 많다.
따라서, 더욱 유연한 CRC 엔진에 대한 필요성이 대두하였다.
일 실시예에 따르면, 사이클릭 리던던시 체크(CRC) 유닛은, 프로그래머블 CRC 엔진, k 워드들을 저장하도록 동작하는 버퍼 메모리로서, 각 워드는 n 비트들을 포함하고, k 및 n이 가변적인 버퍼 메모리(variable buffer memory); 및 상기 버퍼 메모리로부터 상기 프로그래머블 CRC 엔진으로 데이터를 시프트하도록 동작하는 시프트 로직을 포함할 수 있다.
다른 실시예에 따르면, 버퍼 메모리는 FIFO(first-in first-out) 메모리일 수 있다. 또다른 실시예에 따르면, 시프트 로직은 제어 신호에 따라 왼쪽 시프트 또는 오른쪽 시프트 연산을 수행한다. 또다른 실시예에 따르면, 시프트 로직은, 제어가능 시프트 버퍼 및 시프트 방향을 설정하기 위하여 시프트 레지스터에 연결된 제어 레지스터를 포함한다. 또다른 실시예에 따르면, 제어 레지스터는 시프트 방향을 표시하는 단일 비트를 포함한다. 또다른 실시예에 따르면, 시프트 로직은, 시프트 버퍼의 왼쪽 및 오른쪽 출력에 각각 연결된 제1 및 제2 입력을 가지며 제어 레지스터에 의해 제어되는 멀티플렉서를 더 포함한다. 또다른 실시예에 따르면, FIFO 메모리 내의 각 n-비트 워드는 m 바이트(m은 1 내지 Q 사이의 정수)를 포함하고, 또다른 실시예에 따르면, Q=4이다. 또다른 실시예에 따르면, FIFO 메모리는 이용가능 n-바이트들의 개수를 표시하는 카운터를 포함한다. 또다른 실시예에 따르면, 카운터는 소정 값에 도달한 경우에 인터럽트 신호를 생성한다. 또다른 실시예에 따르면, 시프트 버퍼는 FIFO 메모리와 병렬로 연결된다. 또다른 실시예에 따르면, k는 4이고, n은 32이다.
본 발명의 또다른 실시예에 따르면, 사이클릭 리던던시 체크(CRC)를 수행하기 위한 방법은: k-워드 깊이 및 n-비트 폭의 저장 요소로서 구성되며 k 및 m이 가변적인 버퍼 메모리에 데이터를 저장하는 단계; 및 버퍼 메모리로부터 프로그래머블 CRC 엔진에 데이터를 시프트하는 단계를 포함한다.
또다른 실시예에 따른 방법에서, 상기 시프트하는 단계는, 제어 신호에 따라 왼쪽 시프트 또는 오른쪽 시프트 연산으로 시프팅을 수행한다. 또다른 실시예에 따른 방법에서, 버퍼 메모리는 FIFO(first-in first-out) 메모리로서 구성된다. 또다른 실시예에 따른 방법에서, 버퍼 메모리로부터 제어가능 시프트 버퍼로 데이터를 로딩하는 단계; 및 로딩된 데이터를 CRC 엔진내로 왼쪽 또는 오른쪽 시프트하도록 시프트 버퍼를 제어하는 단계를 더 포함한다. 또다른 실시예에 따른 방법에서, 시프트 버퍼에 대하여 시프트 방향을 표시하기 위해 제어 레지스터 비트를 프로그램하는 단계를 더 포함한다. 또다른 실시예에 따른 방법에서, 시프트 버퍼의 왼쪽 및 오른쪽 출력을 멀티플렉싱하는 단계를 더 포함한다. 또다른 실시예에 따른 방법에서, FIFO 메모리 내의 각 n-비트 워드는, m 바이트(m은 1 내지 Q 사이의 정수)를 포함하고, Q=4이다. 또다른 실시예에 따른 방법에서, FIFO 메모리에 저장된 데이터 요소들의 개수를 카운터로 카운트하는 단계를 더 포함한다. 또다른 실시예에 따른 방법에서, 카운터가 소정 값에 도달하면 인터럽트 신호를 생성하는 단계를 더 포함하고, k는 4이고, n은 32이다.
본 발명의 또하나의 실시예에 따르면, 사이클릭 리던던시 체크(CRC) 유닛은: 프로그래머블 CRC 엔진; k-워드 깊이 및 n-비트 폭의 저장 요소로서 구성되며 k 및 n이 가변적인 FIFO(first-in first-out) 메모리; 및 상기 FIFO 메모리에 병렬로 연결된 제어가능 시프트 버퍼와, 시프트 방향을 설정하기 위해 상기 시프트 버퍼와 연결된 제어 레지스터와, 상기 CRC 엔진에 연결된 출력을 가지며 상기 시프트 버퍼의 왼쪽 및 오른쪽 출력과 각각 연결된 제1 및 제2 입력을 갖고 상기 제어 레지스터에 의해 제어되는 멀티플렉서를 포함한다.
본 발명이 특정 실시예를 참조하여 특별히 도시되고 설명되었지만, 이러한 참조는 본 발명의 한정을 내포하지 않고 그러한 한정을 의미하지도 않는다. 개시된 본 발명은 당업자에 의해 형태와 기능에 있어서 다양한 수정물, 대체물, 및 등가물이 고려될 수 있다. 본 발명에서 도시되고 설명된 실시예들은 단지 예시일 뿐이며, 본 발명의 범위를 한정하지 않는다.
첨부한 도면들을 참조한 이어지는 설명에 의하여, 본 발명의 기술 내용 및 장점들을 완전하게 이해할 수 있다.
도 1은 본 발명의 일 실시예에 따른 프로그래머블 CRC 유닛에 대한 블록도이다.
도 2는 도 1에서 이용된 예시적인 CRC 엔진에 대한 블록도이다.
도 3 및 도 4는 도 1에 도시된 일례를 이용하는 다양한 과정들을 보여주는 도면이다.
도 5는 일 실시예에 따른 제어 레지스터를 보여주는 도면이다.
도 6은 예시적인 CRC 계산을 보여주는 도면이다.
도 7은 일반적인 CRC 엔진의 성분들을 보여주는 도면이다.
CRC는, 다양한 디지털 통신 시스템들에서 이용되는 다목적 에러 검사 알고리즘 중 하나이다. CRC는, 사이클릭 리던던시 코드 검사(Cyclic Redundancy Code Check) 또는 단순히 사이클릭 리던던시 체크(Cyclic Redundancy Check)를 의미한다. CAN, USB, IrDA®, SDLC, HDLC, 및 이더넷과 같은 대부분의 인기있는 통신 프로토콜들은, 에러 검출을 위하여 CRC를 이용한다. 보통, 디지털 통신 시스템들에서의 에러 검출을 위해서, 전송하고자 하는 메시지에 대하여 체크섬이 계산된다. 계산된 체크섬은, 메시지 스트림의 마지막에 첨부되어 전송된다. 수신측에서는, 메시지 스트림의 체크섬이 계산되고 전송된 체크섬과 비교된다. 만일 양자가 동일하면, 수신된 메시지는 에러 프리(error-free)로서 처리된다.
CRC는 종래 형태들과 비슷한 방식으로 작동하지만, 종래의 형태들에 비하여 우수한 에러 검출 성능을 보여준다. 다양한 CRC 다항식들이 에러 검출을 위해 채용된다. CRC의 크기는 선택된 다항식에 좌우된다. CRC를 구현하기 위해 전용 하드웨어 모듈이 이용될 수 있다. 모든 CRC 계산들은 GF(2)(2성분(element)들을 위한 갈르와 필드(Galois field))에서 수행된다. '필드'는 덧셈, 뺄셈, 곱셈 및 나눗셈이 수행될 수 있는 수단을 의미하고, '2성분'은 '1' 또는 '0'의 단지 2개의 값들을 갖는 필드를 표시한다. 이는 2진 필드(binary field) 또는 모듈로2(Modulo2)와 유사하다. 모듈로2 연산은 캐리(carry) 없이 2진 덧셈 또는 뺄셈을 이용하는데, 이는 XOR 연산과 동일하다. 곱셈 및 나눗셈은, 각각, 2진 곱셈 및 나눗셈과 유사하다. 전송될 메시지는 다항식으로서 처리되고, '생성기 다항식(generator polynomial)'으로 알려진 기약 다항식에 의해 나누어진다. 생성기 다항식의 차수(degree)는 메시지 다항식의 차수보다 작아야 한다. 'n+1'비트 생성기 다항식의 경우, 나머지는 'n'비트보다 크지 않을 것이다. 데이터의 CRC 체크섬은 나눗셈 후의 나머지와 2진 등가이다.
'x'비트의 메시지 'M'과 'n+1'의 생성기 다항식 'G'를 상정하면, 생성기에 의한 메시지의 나눗셈은 'n'비트의 나머지 'R'을 만들 것이다. 따라서, M = GQ + R이다. 여기에서, Q는 M을 G로 나누었을 때 얻어지는 몫이다.
M = G·Q + R
M + R = GQ = M - R (1)
(모듈로2 연산에서 덧셈과 뺄셈은 같으므로) 이제, M + R = GQ가 되고, 체크섬은 메시지 (M + R) 내에 수용된다. 여기에서, 체크섬을 메시지에 더함으로써, 메시지의 마지막 'n'비트가 변경된다(corrupt). 체크섬을 메시지 내에 내장시키는 대신에, 체크섬을 메시지에 첨부시킬 수 있으며, 이에 의해 메시지 비트들의 변경을 회피할 수도 있다. 전송을 위한 메시지에 나머지가 첨부되면, 메시지 비트들을 나머지 비트들의 개수만큼 시프트시킨 것과 같다. 처음에, 메시지 스트림에는 0들이 첨부된다. 체크섬 계산 이후, 0들은, 나눗셈의 나머지와 2진 등가인 실제 계산된 체크섬으로 대체된다. 첨부된 0들의 개수는 생성기 다항식의 차수에 좌우된다.
'n'개의 0비트들을 메시지 다항식에 첨부하는 것은, 다항식에 2n을 곱하는 것과 같다. 수식(2)은 다음과 같다.
M = G·Q + R
M2n = QI·G + RI
M2n + RI = QI·G (2)
수식(2)으로부터, G는 (M2n + R')의 정확한 배수라는 것을 확인할 수 있다. 수신측에서, 만약 G가 메시지의 정확한 배수라면, 메시지는 변경되지 않는다.
2진 필드(binary field)에 있어서, 데이터는 다항식의 형태이다(즉, 데이터 필드가 '11101'이면, 이것은 X4 + X3 + X2 + X0의 다항식 형태로 표현될 수 있다).
일반적으로, 생성기 다항식은 더 이상 단순화할 수 없으며, 최상위 비트들과 최하위 비트들은 항상 '1'이다. 몇가지 생성기 다항식들과 그들의 해석(interpretation)을 아래의 [표 1]에 도시하였다.
Type Polynomial Binary Hex
CRC . 12: X12 + X11 + X3 + X2 + X + 1 1100000001111 :180Fh
CRC . 16: X16 + X15 + X2 + 1 11000000000000101 :11021h
CRC . CCITT: X16 + X12 + X5 + 1 10001000000100001 :18005h
도 6에 도시된 예시적인 계산에서, 메시지 다항식은 '1100100111'이고 생성기 다항식은 '10101'(n + 1 = 5)로 상정한다. CRC 계산의 목적으로 4개(n)의 0들이 메시지 다항식에 첨부되었고, 메시지 다항식은 생성기 다항식으로 나누어진다.
도 6으로부터, 모든 단계에서 결과의 최상위 비트(upper most bit)가 시프트 아웃(shift out)되는 것이 추론될 수 있다. 이렇게 시프트 아웃된 비트들은 다항식 나눗셈의 몫을 형성한다. 다항식 나눗셈의 나머지는 메시지의 CRC이다. 이러한 나눗셈의 예시에서, 다음이 추론될 수 있다:
- 메시지 다항식의 최상위 비트가 '1'이면, 생성기 다항식과 XOR가 수행된다. 그 후, 이 메시지 다항식은 1비트만큼 시프트된다.
- 최상위 비트가 '0'이면, 메시지 다항식에서 1비트 시프트 연산을 수행한다(0들에 의한 XOR는 동일한 다항식을 만들기 때문).
상술한 추론으로, CRC 계산을 위한 알고리즘은 다음과 같이 정의될 수 있다:
1. 최상위 비트가 '1'이면, 메시지 비트들을 1위치 시프트하고 XOR 연산을 수행한다.
2. 최상위 비트가 '0'이면, 메시지 비트들을 1위치 시프트한다.
3. 여전히 비트들이 더 존재한다면, 1단계부터 반복한다.
시프트 연산이 가장먼저 수행되고, 이어서 XOR 연산이 수행된다는 것에 주목할 수 있다. 생성기 다항식이 'n + 1' 비트들이면, 최상위 비트는 항상 '1'이다. 최상위 비트가 항상 '1'이기 때문에, 리던던트(redundant)를 만들 수 있으며 또는 표시될 필요가 없다. 그래서 효과적으로, 'n'비트들이 'n + 1'비트들을 대신하여 생성기 다항식을 표시하기 위해 이용될 수도 있다. 만약 '10101'이 생성기 다항식으로 상정된다면, MSb가 리던던트 비트(redundant bit)이기 때문에, 실제 비트 길이는 5비트가 아니라 4비트이다. 실제적인 XOR 연산은 시프트 레지스터 MSb가 '1'일 때 수행될 것이다. 5번째 비트는 고려되지 않기 때문에, 4번째 비트가 관찰되고, 그것이 논리 '1'이면, 그것은 1 비트 더(by 1 more bit) 시프트되고 XOR 연산을 수행한다. 그러므로, 시프트 연산이 XOR 연산 이전에 가장먼저 수행된다.
상기한 알고리즘은, 하드웨어에서 및 소프트웨어에서의 CRC 계산을 위해 이용될 수 있다. 하드웨어에 있어서, CRC 계산은 리니어 피드백 시프트 레지스터(LFSR; Linear Feedback Shift Register)를 이용하여 행해진다. LFSR은, 예를 들면, 도 7에 도시된 바와 같이, D-플립플롭들과 XOR 게이트들로 구성되고, 시프트 레지스터들의 개수는 선택된 생성기 다항식의 차수와 같다. XOR 게이트들은, 다항식을 위한 탭 제어기(tap controller)로서 작용하기 위하여, LFSR 레지스터로부터의 피드백을 형성한다. 모든 메시지 비트들이 시프트 아웃된 후, 시프트 아웃된 비트들은 몫을 형성하고, 시프트 레지스터에 남은 비트들은 나머지를 형성한다.
CRC는, 모듈로2 연산에 시프트 레지스터를 이용하여 수행되는 간단하고 안정한 연산이다. 이것은, 모듈로2 계산이 숫자들을 XOR함으로써 간단하게 실현되기 때문이다. 이런 이유로, 그것은 매우 널리 쓰인다. 이러한 타입의 CRC 연산에서는, 나머지와 몫이 얻어질 수 있다. 한편, CRC 계산에서의 몫은 불필요하기 때문에 무시되고, 오직 나머지만이 LFSR 레지스터로부터 취해진다. 수신측에서, 체크섬이 더해진 메시지 스트림은 CRC 계산을 위한 메시지로서 다루어진다. 만일 결과가 0이면, CRC에 따라, 수신된 메시지는 에러 프리이고, 그렇지 않으면 메시지 스트림은 에러가 발생한 것이다.
다양한 실시예들에 따르면, 프로그래머블 CRC 유닛이 마이크로컨트롤러 내에 집적될 수 있으며, 유연한 사용을 제공한다. 프로그래머블 CRC 유닛은, 직접 메모리 액세스(DMA) 컨트롤러 또는 다양한 직렬 전송 인터페이스들과 연결될 수 있다. 다양한 구현에서, 시프트 로직은, 예를 들면 가변적인 FIFO 메모리와 같은 버퍼 메모리와 CRC 엔진 사이에 제공된다. 시프트 로직은 데이터를 다양한 시프트 연산들을 통해 버퍼 메모리로부터 CRC 엔진에 제공한다. 제어 신호에 따라서, 왼쪽 시프트 또는 오른쪽 시프트 연산이 수행된다. 이렇게 하여, CRC 엔진은 MSb 우선 또는 LSb 우선의 데이터를 수신한다. 더욱, 버퍼 메모리는 저장된 데이터들을 수용하기 위해 다양한 방식들로 조직되도록 배열될 수 있다. 특정의 실시예에 있어서, 가변적인 FIFO와 같은 버퍼 메모리는, n-바이트 방식(여기서, n은 1 이상의 모든 정수일 수 있음)으로 조직되는 것으로부터 스위칭될 수 있다. 예를 들면, 버퍼 메모리는 4개의 32-비트 더블 워드들, 8개의 16-비트 워드들, 또는 16바이트들을 수용할 수 있다.
도 1은 프로그래머블 CRC 유닛(100)의 일 실시예를 보여준다. 레지스터(110 및 120)는 각각 16-비트 레지스터들이고, 데이터 전송에 의해 수신된 하이 워드와 로우 워드를 수용한다. 이 레지스터는 가변적인 버퍼 메모리(130)에 연결된다. 버퍼 메모리(130)는 가변적인 FIFO 메모리로써 구현될 수 있다. 하지만, 버퍼 메모리(130)에 대한 다른 실시예들도 가능하다. 버퍼 메모리(130)는 예를 들어 4개의 32-비트 데이터 엔트리들을 포함할 수 있다. '가변적(variable)'이라는 용어는, 버퍼 메모리(130)가 다양한 크기의 데이터 워드들을 처리할 수 있음을 의미하는 것으로 이해되어야 한다. 그것은, 4개의 32-비트 워드들, 8개의 16-비트 워드들 또는 16개의 8-비트 워드들일 수 있다.
하나의 실시예에 따르면, 버퍼 메모리는, 데이터를 직렬 방식으로 CRC 엔진(170)에 제공하기 위해 시프트 로직에 연결된 가변적인 FIFO(130)이다. 예를 들면, 시프트 로직은, 제1 및 제2 시프트 출력들을 갖는 시프트 버퍼 또는 레지스터(140), 멀티플렉서(160), 및 제어 레지스터(175)를 포함할 수 있다. 시프트 버퍼(140)는, 예를 들면, CRC 제어 레지스터(175)에 의해 제공된 각각의 신호에 의하여, 왼쪽 또는 오른쪽으로 시프트되도록 제어될 수 있다. 제어 레지스터(175)는 CRC 엔진(170)의 다른 기능들을 제어할 수도 있다. 시프트 버퍼(140)는, 왼쪽 시프트 및 오른쪽 시프트 기능을 제공하기 위해 멀티플렉서(160)의 제1 및 제2 입력들에 연결된 왼쪽 및 오른쪽 출력을 포함한다. 멀티플렉서(160)의 출력은, CRC 엔진(170)의 직렬 데이터 입력에 연결되며, 이때 CRC 엔진은 제어 레지스터들(180, 190)과도 연결되어 있다. 유사한 기능을 수행하기 위해 다른 시프트 로직을 이용할 수도 있다. 각 제어 레지스터들(180 및 190)은, 각각 하이 및 로우 워드에 데이터 폭(data width)을 저장하는 16-비트 레지스터들이다. CRC 시프트 엔진(170)은, 멀티플렉서(150)로 제공되는 완료 이벤트 신호(complete event signal)를 생성할 수 있다. 또한, 멀티플렉서(150)는, 새로운 데이터가 FIFO(130) 내에 저장되어야함을 표시하는 FIFO 엠프티 이벤트 신호(FIFO empty event signal)를 FIFO(130)로부터 수신한다. 더욱, 시프트 버퍼(140)와 CRC 엔진(170)에서의 시프트를 제어하는 시프트 클록 신호가 제공된다.
일 실시예에 따르면, 사이클릭 리던던시 체크(CRC) 모듈(100)은, 예를 들면, 마이크로컨트롤러 또는 분리된 주변장치 유닛의 마이크로컨트롤러 내에서 이용되는 DMA 컨트롤러(100) 내에 통합될 수 있다. 예를 들면, CRC 유닛(100)은 사이클릭 리던던시 체크를 수행하기 위하여 DMA 엔진과 데이터 전송 버스 사이에 연결될 수 있고, 또는 어떤 타입의 직렬 전송 장치에도 연결될 수 있다. CRC 모듈은 제어 레지스터들을 이용하여 프로그램가능하다. 이렇게, CPU는 CRC 유닛(100)을 제어할 수 있으며, 아래에 더욱 상세하게 설명하는 CRC 규격에 따라서 그것을 프로그램할 수 있다. 데이터는, 가변적인 FIFO 메모리(130) 등의 가변적인 버퍼 메모리를 통해 CRC 엔진(170) 내로 간접적으로 라우트될 수 있다.
CRC 엔진(170)은, 예를 들면 N 내지 16 비트들의 프로그래머블 CRC 탭(programmable CRC tap)을 가질 수 있고(아래에서 더욱 상세하게 설명함), 사용자는 통신 프로토콜들에서 요구하는 어떤 특정한 CRC 알고리즘이라도 구현할 수 있다. 이를 위하여, CRC 생성기는, CRC 알고리즘을 프로그래밍하기 위한 TAP 레지스터와, CRC 값의 초기 프리로드(preload) 및 CRC 연산 후의 최종 결과를 수용할 수 있는 판독/기록 CRC 레지스터를 이용할 수 있다.
도 2는 예를 들면 마이크로컨트롤러 내에서 이용될 수 있는 CRC 엔진(170)의 일례를 보여준다. TAP 레지스터는, 클록 신호(Clk)와 홀드 신호(Hold)에 의해 제어되는 시프트 레지스터 셀들(230a, 240a, 250a,...270)에 의해 형성된다. 도 2에 도시된 실시예는, 32 비트 CRC 생성기의 특정 섹션들을 나타낸다. 하지만, 8 또는 16 비트들 또는 다른 크기를 갖는 다른 구성들이 용이하게 실현될 수 있다. 셀(230a)의 입력은, 직렬 데이터 입력 신호(225)와 멀티플렉서(210)로부터의 피드백 출력 신호를 수신하는 XOR 게이트(220)의 출력에 연결된다. 셀(230a)의 출력은 멀티플렉서(210)의 제1 입력, 선택 멀티플렉서(X1)의 제1 입력, XOR 게이트(230b)의 제1 입력, 및 CRC 판독 버스(280)에 연결된다. XOR 게이트(230b)의 제2 입력은 멀티플렉서(210)로부터의 피드백 출력 신호에 연결되고, XOR 게이트(230b)의 출력은 선택 멀티플렉서(230c)의 제2 입력에 연결된다. 선택 멀티플렉서(230c)의 출력은 다음 시프트 셀(240a)의 입력 및 CRC 기록 버스(290)에 연결된다. 다음 시프트 셀들(240a...250a)에는, 각각의 XOR 게이트들(240b..250b)과 선택 멀티플렉서들(240c...260c)이 제공되고, 셀(230a)과 동일한 방식으로 멀티플렉서(210)의 각 입력들 및 버스들(280 및 290)에 연결되어 있다. 마지막 셀(270)의 출력은, 멀티플렉서(210)의 마지막 입력과 CRC 판독/기록 버스들(280 및 290)에 연결되어 있다. 멀티플렉서(210)는 다항식 길이 레지스터(215)(PLEN)에 의해 제어된다. 멀티플렉서들(230c...260c)은 다항식 레지스터(235)(POLY)에 의해 제어된다. CRC 판독 버스(280)는 결과를 수용하는 레지스터(280)에 연결될 수 있으며, CRC 기록 버스(290)는 프리-로드 값을 수용하는 레지스터(295)에 연결될 수 있다.
멀티플렉서(210)는, 레지스터(PLEN)를 통해 피드백 포인트와 CRC 생성기의 유효 길이를 선택하도록 이용된다. 레지스터(215)는 CRC 생성기(200)의 길이를 제어하고, 사용자에 의해 선택가능하다. 멀티플렉서(210)의 출력에 의해 제공되는 피드백 데이터는, XOR 게이트들(230b...260c)에 의하여, CRC 시프트 레지스터(230a, 240a, 250a 및 270) 내의 데이터와 XOR된다. 선택 멀티플렉서들(230c, 240c, 250c 및 260c)들은, 다음 클록에서 XOR 데이터가 시프트될지 또는 시프트 레지스터(230a, 240a, 250a, 270) 내의 이전의 데이터가 시프트될지를 선택하기 위하여 이용된다. 다항식 레지스터(235)는, 어느 비트들이 그를 통해 시프트될지 및 어느 비트들이 멀티플렉서들(230c, 240c, 250c 및 260c)의 X1 입력을 포함하는 CRC 생성기 내의 이전의 데이터와 XOR된 피드백 데이터를 가질지를 구성하는 데에 이용된다. CRC 기록 버스(290)는, 프리로드 레지스터(295)에 의하여 CRC 플립플롭들(230a, 240a, 250a, 270)을 프리-로드하는 데에 이용될 수 있다. CRC 판독 버스(280)는 CRC 생성기의 값을 판독하는 데에 이용될 수 있다. 데이터(225)는 멀티플렉서(160)의 출력에 의해 제공되고, XOR 게이트(220)를 통해 CRC 내로 시프트된다. 이와 같이, 도 2에 도시된 배열은, LFSR-형식 체인 내에서 탭/XOR 위치에 기초한 다양한 구성들을 갖는 선형 피드백 시프트 레지스터(LFSR)를 제공한다. 도 1에 도시된 바와 같은 하나의 실시예에 따르면, CRC 연산이 완료되었을 때, 중앙 제어 유닛에 CRC가 완료되었음을 표시하기 위한 인터럽트 신호가 멀티플렉서(150)를 통해 생성될 수 있다. 추가로, 다양한 다른 인터럽트 신호들이 생성될 수 있는데, 예를 들면, FIFO(130)는 모든 콘텐츠가 시프트 버퍼(140)로 전송되었거나 단일의 엔트리만 남았을 때에, 그러한 신호를 생성할 수 있다.
프로그램가능 시프트 방향이 소프트웨어 데이터를 재형식화해야하는 것을 방지하므로, 32-비트 아키텍쳐 및 독립적인 다항식 길이/데이터 폭은 더욱 안정하고 더욱 유연한 CRC 계산을 제공한다. CRC 엔진은, 도 2에 도시된 예와 같이, 멀티플렉서 셋팅을 통해 구성가능한 피드-포워드 및 피드백 포인트들을 갖는 표준 직렬 시프트 CRC 엔진일 수 있다. 하지만, 어떤 다른 타입의 CRC 엔진이 이용될 수도 있다. 생성기 다항식은 32-비트들을 이용하여 프로그램될 수 있다. 플립플롭(230a, 240a, 250a, 270)에 '1'을 기록하는 것은, XOR 게이트(220, 230b, 240b, 250b)를 다항식의 2성분과 연관되게 한다. 다항식 길이 레지스터(215)는 다항식의 길이를 표시하고, 피드백을 제공하는 탭을 지시하도록 멀티플렉서(210)를 스위칭한다. 데이터 폭 레지스터(180, 190)는 데이터 워드의 폭을 구성하고 클록들의 개수에 영향을 미치는데, 여기서 FIFO(130)는 상기 클록들 이후에 다음 데이터 워드로 진행하게 된다. CRC 계산의 결과는 CRC 판독 버스(280)를 통해 홀딩 플립플롭들(holding flip-flop)(230a, 240a, 250a, 270)을 판독함으로써 획득될 수 있고, 레지스터(285)에 저장된다.
DATA WIDTH (데이터 폭)
데이터 폭은, 일례로서 도 5에 도시된 바와 같은 데이터 폭 구성 비트들을 이용하여, 다항식 길이에 관계없이 구성될 수 있다. 데이터 폭과 다항식 길이 사이의 관계에는 어떤 제약도 없다. 데이터가 다항식 길이보다 넓다면, 여분의 클록들이 다항식을 통해 그 더넓은 데이터를 시프트할 것이며, 그 반대도 가능하다.
DATA FIFO(데이터 FIFO )
상술한 바와 같이, FIFO(130)는, 바이트-기록 성능을 갖는 4 깊이(deep), 32-비트 폭(width)의 저장 요소로서, 물리적으로 구현될 수 있다. FIFO(130)와 관련된 로직은, 새로운 워드들이 FIFO(130) 내에 얼마나 많이 남았는지를 반영하는 5-비트 카운터(135)를 포함한다. CRC 워드를 위한 유효 길이는, 데이터 폭을 설정하는 최종 사용자에 의해 결정될 수 있다. 비록, CRC 워드의 길이가 1 내지 32 중 어느 것일지라도, 로직은, 유효한 기록들을 8, 16, 32 비트 등의 바이트 덩어리(byte granularity)로만 플래그(flag)할 수 있다. 이에 의해, 만약 데이터 폭이 7 또는 그 이하이면, FIFO는 논리적으로 16 바이트 깊이가 되도록 나타내고 카운터(135)의 최대값은 16이다. 데이터 폭이 8 내지 15이면, FIFO는 8 워드 깊이가 되도록 나타내고, 유효 워드 카운터(135)의 최대값은 8이다. 만일 데이터 폭이 16 또는 그 이상이면, FIFO는 4 워드 깊이가 되도록 나타내고, 카운터(135)의 최대값은 4이다. 카운터(135)는 로직에 연결되며, 인터럽트 신호 "FIFO 엠프티 이벤트"를 발생한다. 이 신호는, 카운터(135)가 0에 도달하거나 대안적으로 1 또는 또다른 소정의 낮은 카운트값에 도달할 때에, CPU에게 FIFO가 리필될 필요가 있음을 표시하기 위하여 생성될 수 있다.
DATA SHIFT DIRECTION (데이터 시프트 방향)
다양한 CRC 프로토콜을 수용하기 위하여, 데이터 시프트 방향을 CRC 제어 레지스터(175) 내의 시프트 방향 비트(LENDIAN)를 이용하여 구성할 수 있다. 이 비트(LENDIAN)가 0이면, 멀티플렉서(160)를 통해, 최상위 비트가 가장먼저 시작하는(big endian) 데이터 워드들이 CRC 엔진(170)으로 제공된다. 이는 또한, 입력 데이터의 반영(reflecting the input data)이라고 불린다. 만일 LENDIAN=1이면, 멀티플렉서(160)를 통해 최하위 비트가 가장먼저 시작하는(little endian) 데이터 워드들이 CRC 엔진(170)에 제공된다. 이를 위하여, 시프트 버퍼(140)는, 멀티플렉서(160)의 제1 및 제2 입력들에 연결된 왼쪽 및 오른쪽 출력을 포함한다. 멀티플렉서(160)는 제어 레지스터(175)의 시프트 방향 비트(LENDIAN)에 의해 제어될 수 있다.
도 3은 CRC 엔진(170)에 시프트 레지스터(140)의 제1 또는 왼쪽 출력이 제공되는 일례를 보여준다. 먼저, 다음번 이용가능 데이터가 FIFO(130)로부터 시프트 레지스터(140)에 병렬로 전송된다. 이 데이터는, 이어서 CRC 계산에 의한 요청에 따라, 시프트 레지스터(140)의 왼쪽 출력을 통해 CRC 엔진(170)으로 왼쪽 시프트된다. 도 4는 시프트 레지스터(140)의 오른쪽 출력을 이용하는 동일한 처리를 보여준다. 이렇게, 다양한 실시예들에 따르면, 사용자는 각각의 데이터가 FIFO(130)에 저장되기 전에 이들을 수정할 필요가 없다. 수신된 데이터의 구조에 따라서, 사용자는 단지 시프트 버퍼(140)의 시프트 방향만 프로그램하면 된다.
도 5는 16-비트 폭으로 구성된 또다른 CRC 제어 레지스터의 예를 보여준다. 이러한 제어 레지스터에 있어서, 데이터 폭 및 다항식 길이는 각각 5비트로서 저장된다. 도시된 바와 같이, 6 비트들은 이용되지 않았는데, 또다른 실시예에서, 이러한 이용되지 않은 비트들 중 하나는 상술한 LENDIAN 비트를 표현하기 위해 이용될 수 있다. 하지만, 시프트 방향 비트(LENDIAN)뿐만 아니라, 데이터 폭 및 다항식 길이를 위해서 개별적인 레지스터들을 이용할 수도 있다.
비록 본 발명의 실시예들이 예시들을 참조하여 묘사 및 설명되고 또한 정의되었지만, 이러한 참조는 본 발명의 한정을 의미하는 것이 아니며 그러한 한정이 유추되어서도 안된다. 본 발명은 이 기술분야의 당업자에 의해 형태와 기능에 있어서의 다양한 수정물, 대체물, 및 균등물이 고려될 수 있다. 도시되고 설명된 본 발명의 실시예들은 단지 예시일 뿐으로서, 본 발명의 범위를 한정하지 않는다.

Claims (24)

  1. 사이클릭 리던던시 체크(CRC) 유닛으로서:
    선형 피드백 시프트 레지스터(LFSR)를 포함하는 프로그래머블 CRC 엔진;
    k 워드들을 저장하도록 동작 가능한 가변형 버퍼 메모리 - 각 워드는 n 비트들을 포함하고, k 및 n이 변할 수 있음 -;
    제어가능 시프트 버퍼; 및
    시프트 방향을 설정하기 위하여 상기 시프트 버퍼와 결합된 제어 레지스터를 포함하고,
    상기 시프트 버퍼는 상기 제어 레지스터에 저장된 값에 따라 왼쪽 또는 오른쪽 시프트 동작을 이용하여 상기 가변형 버퍼 메모리로부터 상기 프로그래머블 CRC 엔진의 상기 LFSR로 데이터를 시프트하도록 동작 가능한 CRC 유닛.
  2. 제1항에 있어서,
    상기 가변형 버퍼 메모리는 FIFO(First-in first-out) 메모리인 CRC 유닛.
  3. 제1항에 있어서,
    상기 제어 레지스터는 상기 프로그래머블 CRC 엔진의 파라미터들을 더 제어하는 CRC 유닛.
  4. 삭제
  5. 제1항에 있어서,
    상기 제어 레지스터는 상기 시프트 방향을 표시하는 단일 비트를 포함하는 CRC 유닛.
  6. 제1항에 있어서,
    상기 시프트 버퍼의 왼쪽 출력부 및 오른쪽 출력부와 각각 결합된 제1 입력부 및 제2 입력부를 가지며 상기 제어 레지스터에 의해 제어되는 멀티플렉서를 더 포함하는 CRC 유닛.
  7. 제2항에 있어서,
    상기 가변형 버퍼 메모리 내의 각 n-비트 워드는 m 바이트(m은 1 내지 Q 사이의 정수이고 Q는 1보다 큰 정수임)를 포함하는 CRC 유닛.
  8. 제7항에 있어서,
    Q=4인 CRC 유닛.
  9. 제5항에 있어서,
    상기 가변형 버퍼 메모리는 이용가능 n-바이트들의 개수를 표시하는 카운터를 포함하는 CRC 유닛.
  10. 제9항에 있어서,
    상기 카운터가 소정값에 도달하면 인터럽트 신호를 생성하는 CRC 유닛.
  11. 제1항에 있어서,
    상기 시프트 버퍼는 상기 가변형 버퍼 메모리와 병렬로 결합된 CRC 유닛.
  12. 제1항에 있어서,
    k는 4이고, n은 32인 CRC 유닛.
  13. 사이클릭 리던던시 체크(CRC)를 수행하기 위한 방법으로서:
    k-워드 깊이 및 n-비트 폭의 저장 요소로서 구성되며 k 및 n이 변할 수 있는 가변형 버퍼 메모리에 데이터를 저장하는 단계;
    n-비트 워드를 시프트 버퍼내로 병렬로 이동하는 단계; 및
    제어 신호에 따라 왼쪽 또는 오른쪽 시프트 동작을 이용하여 상기 시프트 버퍼로부터 프로그래머블 CRC 엔진의 선형 피드백 시프트 레지스터(LFSR)로 상기 데이터를 시프트하는 단계를 포함하는 CRC 수행 방법.
  14. 삭제
  15. 제13항에 있어서,
    상기 가변형 버퍼 메모리는 FIFO(first-in first-out) 메모리로서 구성되는 CRC 수행 방법.
  16. 삭제
  17. 제13항에 있어서,
    상기 시프트 버퍼에 대한 시프트 방향을 표시하기 위해 제어 레지스터를 프로그램하는 단계를 더 포함하는 CRC 수행 방법.
  18. 제13항에 있어서,
    상기 시프트 버퍼의 왼쪽 출력 및 오른쪽 출력을 멀티플렉싱하는 단계를 더 포함하는 CRC 수행 방법.
  19. 제15항에 있어서,
    상기 FIFO 메모리 내의 각 n-비트 워드는, m 바이트(m은 1 내지 Q 사이의 정수이고, Q는 1보다 큰 정수임)를 포함하는 CRC 수행 방법.
  20. 제19항에 있어서,
    Q=4인 CRC 수행 방법.
  21. 제19항에 있어서,
    상기 FIFO 메모리에 저장된 데이터 요소들의 개수를 카운터로 카운트하는 단계를 더 포함하는 CRC 수행 방법.
  22. 제21항에 있어서,
    상기 카운터가 소정값에 도달하면 인터럽트 신호를 생성하는 단계를 더 포함하는 CRC 수행 방법.
  23. 제13항에 있어서,
    k는 4이고, n은 32인 CRC 수행 방법.
  24. 사이클릭 리던던시 체크(CRC) 유닛으로서:
    프로그래머블 CRC 엔진;
    k-워드 깊이 및 n-비트 폭의 저장 요소로서 구성되는 가변형 FIFO(first-in first-out) 메모리 - k 및 n이 변할 수 있음 -; 및
    상기 FIFO 메모리에 병렬로 결합된 제어가능 시프트 버퍼와, 상기 시프트 버퍼로부터 데이터를 직렬로 왼쪽 및 오른쪽 중 어느 하나로 시프트하는 시프트 방향을 설정하기 위해 상기 시프트 버퍼와 결합된 제어 레지스터와, 상기 CRC 엔진과 결합된 출력부를 가지며 상기 시프트 버퍼의 왼쪽 출력부 및 오른쪽 출력부와 각각 결합된 제1 입력부 및 제2 입력부를 갖고 상기 제어 레지스터에 의해 제어되는 멀티플렉서를 포함하는 CRC 유닛.
KR1020117024142A 2009-06-09 2010-06-09 프로그래머블 crc 유닛 KR101721449B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US18525709P 2009-06-09 2009-06-09
US61/185,257 2009-06-09
US12/776,476 US8543888B2 (en) 2009-06-09 2010-05-10 Programmable cyclic redundancy check CRC unit
US12/776,476 2010-05-10
PCT/US2010/037913 WO2010144539A1 (en) 2009-06-09 2010-06-09 Programmable crc unit

Publications (2)

Publication Number Publication Date
KR20120044922A KR20120044922A (ko) 2012-05-08
KR101721449B1 true KR101721449B1 (ko) 2017-03-30

Family

ID=43301638

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117024142A KR101721449B1 (ko) 2009-06-09 2010-06-09 프로그래머블 crc 유닛

Country Status (6)

Country Link
US (1) US8543888B2 (ko)
EP (1) EP2441174A1 (ko)
KR (1) KR101721449B1 (ko)
CN (1) CN102405598B (ko)
TW (1) TWI464578B (ko)
WO (1) WO2010144539A1 (ko)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010134197A1 (ja) * 2009-05-22 2010-11-25 株式会社 東芝 乱数生成回路およびこれを用いた暗号回路
US8932510B2 (en) 2009-08-28 2015-01-13 Corning Incorporated Methods for laser cutting glass substrates
US8946590B2 (en) 2009-11-30 2015-02-03 Corning Incorporated Methods for laser scribing and separating glass substrates
CN101795175B (zh) * 2010-02-23 2014-03-19 中兴通讯股份有限公司 数据的校验处理方法及装置
US9938180B2 (en) 2012-06-05 2018-04-10 Corning Incorporated Methods of cutting glass using a laser
US9610653B2 (en) 2012-09-21 2017-04-04 Electro Scientific Industries, Inc. Method and apparatus for separation of workpieces and articles produced thereby
US9639416B1 (en) * 2012-11-18 2017-05-02 Altera Corporation CRC circuits with extended cycles
US9524143B2 (en) * 2014-06-26 2016-12-20 Arm Limited Apparatus and method for efficient division performance
US10163467B2 (en) 2014-10-16 2018-12-25 Micron Technology, Inc. Multiple endianness compatibility
US10073635B2 (en) * 2014-12-01 2018-09-11 Micron Technology, Inc. Multiple endianness compatibility
US11238334B2 (en) 2017-04-04 2022-02-01 Hailo Technologies Ltd. System and method of input alignment for efficient vector operations in an artificial neural network
US11551028B2 (en) 2017-04-04 2023-01-10 Hailo Technologies Ltd. Structured weight based sparsity in an artificial neural network
US10387298B2 (en) 2017-04-04 2019-08-20 Hailo Technologies Ltd Artificial neural network incorporating emphasis and focus techniques
US11544545B2 (en) 2017-04-04 2023-01-03 Hailo Technologies Ltd. Structured activation based sparsity in an artificial neural network
US11615297B2 (en) 2017-04-04 2023-03-28 Hailo Technologies Ltd. Structured weight based sparsity in an artificial neural network compiler
US10812103B1 (en) * 2018-02-23 2020-10-20 Xilinx, Inc. Cyclic redundancy check engine and method therefor
KR102609758B1 (ko) * 2018-03-27 2023-12-04 삼성전자주식회사 데이터 통신 오류를 검출하는 순환 중복 검사 유닛 데이터 통신 장치 및 검출 방법
US11018694B2 (en) * 2019-06-10 2021-05-25 Hewlett Packard Enterprise Development Lp Fast cyclic redundancy check code generation
US11874900B2 (en) 2020-09-29 2024-01-16 Hailo Technologies Ltd. Cluster interlayer safety mechanism in an artificial neural network processor
US11237894B1 (en) 2020-09-29 2022-02-01 Hailo Technologies Ltd. Layer control unit instruction addressing safety mechanism in an artificial neural network processor
US11221929B1 (en) * 2020-09-29 2022-01-11 Hailo Technologies Ltd. Data stream fault detection mechanism in an artificial neural network processor
US11263077B1 (en) 2020-09-29 2022-03-01 Hailo Technologies Ltd. Neural network intermediate results safety mechanism in an artificial neural network processor
US11811421B2 (en) 2020-09-29 2023-11-07 Hailo Technologies Ltd. Weights safety mechanism in an artificial neural network processor

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5014276A (en) * 1989-02-06 1991-05-07 Scientific Atlanta, Inc. Convolutional encoder and sequential decoder with parallel architecture and block coding properties
US5381423A (en) * 1989-07-25 1995-01-10 Italtel Societa Italiana Telecomunicazioni S.P.A. Process and device for the decoding of a shortened, cyclic binary code using error correction
US5592404A (en) * 1993-11-04 1997-01-07 Cirrus Logic, Inc. Versatile error correction system
KR0147150B1 (ko) * 1995-06-29 1998-09-15 김주용 디코더를 이용한 순환 리던던시 체크 오류 검출 및 정정 장치
JP3249405B2 (ja) * 1996-09-30 2002-01-21 株式会社東芝 誤り訂正回路および誤り訂正方法
US6192498B1 (en) * 1997-10-01 2001-02-20 Globepan, Inc. System and method for generating error checking data in a communications system
US6052815A (en) * 1997-11-14 2000-04-18 Cirrus Logic, Inc. ECC system for generating a CRC syndrome over randomized data in a computer storage device
US6427219B1 (en) * 1998-06-24 2002-07-30 Conexant Systems, Inc. Method and apparatus for detecting and correcting errors using cyclic redundancy check
US6751771B2 (en) * 2000-02-11 2004-06-15 Mediatek, Inc. Method and apparatus for error processing in optical disk memories
US6836869B1 (en) * 2001-02-02 2004-12-28 Cradle Technologies, Inc. Combined cyclic redundancy check (CRC) and Reed-Solomon (RS) error checking unit
US7216285B2 (en) * 2001-11-09 2007-05-08 Marvell International Ltd. System and method for generating cyclic redundancy check
KR100703307B1 (ko) * 2002-08-06 2007-04-03 삼성전자주식회사 터보 복호화 장치 및 방법
DE10238841B4 (de) * 2002-08-23 2010-01-28 Infineon Technologies Ag Parallelverarbeitung der Decodierung und der zyklischen Redundanzüberprüfung beim Empfang von Mobilfunksignalen
WO2007034935A1 (en) * 2005-09-21 2007-03-29 Semiconductor Energy Laboratory Co., Ltd. Cyclic redundancy check circuit and semiconductor device having the cyclic redundancy check circuit
US7958436B2 (en) * 2005-12-23 2011-06-07 Intel Corporation Performing a cyclic redundancy checksum operation responsive to a user-level instruction

Also Published As

Publication number Publication date
CN102405598B (zh) 2015-05-20
KR20120044922A (ko) 2012-05-08
WO2010144539A1 (en) 2010-12-16
EP2441174A1 (en) 2012-04-18
CN102405598A (zh) 2012-04-04
TWI464578B (zh) 2014-12-11
US8543888B2 (en) 2013-09-24
US20100313104A1 (en) 2010-12-09
TW201104412A (en) 2011-02-01

Similar Documents

Publication Publication Date Title
KR101721449B1 (ko) 프로그래머블 crc 유닛
US8812940B2 (en) Programmable error correction capability for BCH codes
Albertengo et al. Parallel CRC generation
JP4036338B2 (ja) 誤りバイト数を制限したバイト内複数スポッティバイト誤り訂正・検出方法及び装置
US4649541A (en) Reed-Solomon decoder
US7543212B2 (en) Low-density parity-check (LDPC) encoder
US7171604B2 (en) Method and apparatus for calculating cyclic redundancy check (CRC) on data using a programmable CRC engine
KR20080040706A (ko) 데이터 스트림에 주기적 덧붙임 검사(crc)를 수행하기위한 crc 생성 회로를 구성하는 방법 및 장치
WO2004086633A1 (en) Iterative circuit and method for variable width parallel cyclic redundancy check (crc) calculation
JP2001175542A (ja) 記録再生装置および半導体メモリ
US4979173A (en) Burst mode error detection and definition
EP2013975B1 (en) Configurable parallel computation of cyclic redundancy check (crc) codes
WO2009012050A2 (en) Determining a message residue
US7571370B2 (en) Configurable, fast, 32-bit CRC generator for 1-byte to 16-bytes variable width input data
US8775750B2 (en) Interleaver with parallel address queue arbitration dependent on which queues are empty
US11043964B2 (en) Memory system, packet protection circuit, and CRC calculation method
US20160344410A1 (en) Circuitry And Method For Generating Cyclic Redundancy Check Signatures
JPH0936753A (ja) 記号長コードに従って冗長情報を発生するためにデータのブロックをエンコードする方法、一連のデータワードとしてエンコーダにより受取られるブロックフォーマット化されたデータを記号長リードソロモンコードに従ってエンコードする方法、およびワード形式エンコーダ
JP2009094605A (ja) 符号誤り検出装置および誤り検出符号生成装置
GB2370477A (en) Encoding a multi-dimensional product code
EP0582748A1 (en) Divider device to divide a first polynomial by a second one
US5671238A (en) Method and circuitry for generating r-bit parallel CRC code for an l-bit data source
US5694405A (en) Encoder and decoder of an error correcting code
US7502390B2 (en) Optimized interleaver and/or deinterleaver design
CN115567164A (zh) 向量信令码信道的流水线式前向纠错方法和装置

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