KR100433632B1 - 병렬 crc 계산장치 및 그 방법 - Google Patents

병렬 crc 계산장치 및 그 방법 Download PDF

Info

Publication number
KR100433632B1
KR100433632B1 KR10-2002-0019290A KR20020019290A KR100433632B1 KR 100433632 B1 KR100433632 B1 KR 100433632B1 KR 20020019290 A KR20020019290 A KR 20020019290A KR 100433632 B1 KR100433632 B1 KR 100433632B1
Authority
KR
South Korea
Prior art keywords
data
crc
memory
memory bank
unit
Prior art date
Application number
KR10-2002-0019290A
Other languages
English (en)
Other versions
KR20030080587A (ko
Inventor
최창호
정해원
이형호
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to KR10-2002-0019290A priority Critical patent/KR100433632B1/ko
Publication of KR20030080587A publication Critical patent/KR20030080587A/ko
Application granted granted Critical
Publication of KR100433632B1 publication Critical patent/KR100433632B1/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
    • 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
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum

Landscapes

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

Abstract

본 발명은 고속 데이터 통신에서 데이터의 완전성을 검사하기 위해 사용되는 CRC 코드를 계산하기 위한 병렬 CRC 계산장치 및 그 방법에 관한 것으로,적어도 둘의 메모리부를 구비하여 소정 크기의 바이트 단위로 된 데이터를 입력받아 이를 메모리부에 나누어 저장한 다음 각 메모리에 저장된 데이터 단위로 CRC를 계산하여 출력하는 복수의 메모리뱅크부와 입력데이터를 입력받아 소정 크기의 바이트 단위로 나누어 각 메모리뱅크부에 순차적으로 저장하는 저장제어부와 복수의 메모리뱅크부에서 계산된 CRC를 순차적으로 입력받아 원래의 데이터에 상기 계산된 CRC를 부가하여 출력하는 출력제어부를 포함하며, 기존의 속도를 갖는 프로세서 환경에서도 10Gbps 이상의 고속데이터 전송을 요구하는 네트워크에 적합한 CRC 코드를 계산할 수 있다

Description

병렬 CRC 계산장치 및 그 방법{Apparatus and method for calculating CRC in parallel}
본 발명은 고속 데이터 통신에서 데이터의 완전성을 검사하기 위해 사용되는 CRC 코드를 계산함에 있어서 분산처리방식의 병렬 CRC 계산 구조를 적용하여 약 150 MHz 정도의 클럭의 하드웨어를 사용하여 10 Gbps 이상의 데이터 처리속도를 구현하기 위한 병렬 CRC 계산장치 및 그 방법에 관한 것이다.
일반적으로 CRC 코드는 직렬방식 또는 병렬방식으로 계산된다. 그러나, 직렬방식의 경우 데이터의 전송속도가 증가하면서 그 처리에 문제가 있으며, 바이트나 워드 단위로 병별방식을 적용하더라도 전송속도가 크게 증가하면 처리에 제한을 받게 된다.
본 발명이 이루고자 하는 기술적 과제는, 약 150MHz정도의 클럭속도를 지원하는 하드웨어 환경 하에서 10 Gbps 이상의 고속으로 전송되는 데이터의 CRC 코드 계산 장치 및 방법을 제공하는데 있다.
도 1은 IEEE 802.3 이더넷 MAC 프레임의 구조도이고,
도 2는 CRC 코드 계산에 대한 직렬계산 방식의 일반적인 구성도이고,
도 3은 CRC 코드 계산에 대한 병렬계산 방식의 일반적인 구성도이고,
도 4는 본 발명의 일 실시예에 따른 분산처리 방식의 병렬계산 구성도이고,
도 5는 도 4에 도시된 메모리 뱅크 블록의 구성도이고,
도 6은 도 4에 도시된 각 메모리 뱅크 블록의 시간에 따른 동작상태이고,
도 7a는 도 6에 도시된 동작상태 중 저장상태에 대한 타이밍도이고, 도 7b는 도 6에 도시된 동작상태 중 CRC 계산 상태에 대한 타이밍도이고, 도 7c는 도 6에 도시된 동작상태 중 출력상태에 대한 타이밍도이다.
상기의 과제를 이루기 위하여 본 발명에 의한 병렬 CRC 계산장치는, 적어도 둘의 메모리부를 구비하여 소정 크기의 바이트 단위로 된 데이터를 입력받아 이를 상기 메모리부에 나누어 저장한 다음 상기 각 메모리에 저장된 데이터 단위로 CRC를 계산하여 출력하는 복수의 메모리뱅크부; 입력데이터를 입력받아 소정 크기의 바이트 단위로 나누어 상기 각 메모리뱅크부에 순차적으로 저장하는 저장제어부; 상기 복수의 메모리뱅크부에서 계산된 CRC를 순차적으로 입력받아 원래의 데이터에 상기 계산된 CRC를 부가하여 출력하는 출력제어부를 포함한다.
상기의 과제를 이루기 위하여 본 발명에 의한 병렬 CRC 계산방법은, 복수의 메모리뱅크를 구비하여 입력데이터에 대한 CRC를 계산하는 방법에 있어서, 제1 메모리뱅크부터 마지막 메모리뱅크에 순차적으로 입력데이터를 저장하되, 상기 마지막 메모리뱅크에 데이터를 저장시킨 다음 상기 제1 메모리뱅크에 다시 입력데이터를 저장하는 방식으로 입력데이터를 각 메모리뱅크에 순환적으로 저장하는 단계; 상기 저장 과정을 수행하면서, 자신의 메모리뱅크에 데이터가 저장된 후 다음 메모리뱅크에 데이터가 저장되는 동안 자신의 메모리뱅크에 저장된 데이터에 대해 CRC를 계산하는 단계; 및 상기 각 메모리뱅크에서 계산된 CRC를, 각 메모리뱅크에 다시 입력데이터가 저장되기 전에 출력하는 단계를 포함한다.
이하에서, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예에 대하여 상세히 설명한다.
순회부호에서 n비트 크기를 가지는 부호어 V(x)는 생성 다항식 g(x)와 메시지 다항식 u(x)로 표현된다. 여기서 메시지 다항식 u(x)는 k비트의 크기를 가지며 생성 다항식 g(x)의 크기는 (n-k)비트이다. 부호어 V(x)와 메시지 다항식 u(x)는 다음과 같이 쓸 수 있다.
여기서 s(x)는 메시지 다항식 u(x)를 (n-k)비트만큼 왼쪽으로 이동한 후 생성 다항식 g(x)로 나눈 나머지 값으로 부호어 V(x)가 생성 다항식 g(x)로 나누어 떨어질 수 있도록 생성된다. 따라서 특정한 다항식 a(x)와 s(x)를 사용하여로 쓸 수 있으며 이를 수학식 1에 대입하면 다음과 같다.
모듈로 2 연산에서 같은 수의 이진 덧셈은 영이 되므로 수학식 2는 V(x)= a(x)*g(x)와 같이 되고, 이는 생성 다항식 g(x)의 곱으로 표현됨을 알 수 있다. 따라서 생성된 부호어 V(x)는 메시지 비트를 (n-k)만큼 왼쪽으로 이동한 후 s(x)를 더하여 생성되며, 수신단에서 수신된 부호어 V(x)를 생성 다항식 g(x)에 의해 나누어 떨어졌을 때 에러 없이 전송되었음을 알 수 있다.
일반적인 CRC계산에 있어서 하드웨어의 구성은 LSFR(Linear Feedback Shift Resister)를 사용한 직렬구조이다. 도 2는 일반적인 직렬 CRC 계산장치를 나타낸다. 도 2에서의 기본 구성은 배타적 논리합(Exclusive OR; 22)과 지연소자(Delay Elements; 21)로 이루어지며 1 비트 단위로 계산이 수행된다. CRC 코드에 대한 직렬계산 방식은 그 구조가 간단하여 널리 사용되었지만 데이터의 전송속도가 증가하면서 병렬 데이터 처리에 대한 효율성 및 n비트 입력데이터를 처리하기 위해 n번의 클럭이 요구되는 단점이 있어 병렬계산 방식이 요구되었다.
도 3은 병렬 CRC 계산에 대한 구조를 나타낸다. 일반적으로 병렬 CRC 계산은 바이트(8비트) 또는 워드(16비트) 단위로 입력되는 병렬데이터에 대해 레지스터(32)에 저장된 데이터와의 배타적인 논리합(Exclusive OR) 배열(33)에 의해 수행된다. 그러나 데이터의 전송속도가 10 Gbps급으로 향상되면서 입력되는 바이트나 워드 단위의 병렬구조 적용에 있어 프로세서의 속도 및 작업처리량에 제한을 받는다.
고속의 데이터를 처리하기 위한 여러 가지 병렬구조들이 존재하지만 데이터의 전송속도가 10 Gbps급으로 증가하면서 바이트 단위(8비트)나 워드 단위(16비트)의 병렬구조를 적용함에 있어서 프로세서의 속도에 현격한 제한을 받는다. 따라서, 본 발명에서는 기존의 프로세서의 속도를 유지한 채 병렬로 입력되는 데이터의 비트 수를 증가시켜 요구되는 데이터 전송속도를 만족하는 구조를 제공한다. 그러나 병렬로 입력되는 데이터의 비트 수가 증가되면 그에 따른 프로세서의 작업량 및 시간이 증가하는 문제점이 발생한다. 이를 해결하기 위해 본 발명에서는 도 4에서와 같이 M 바이트(M=4, 8, 16)의 병렬 입력 구조를 제안하고 입력되는 병렬데이터를 패킷 또는 프레임 단위로 다수의 메모리 뱅크에 순차적으로 저장(20)한 다음 각 메모리 뱅크(40~90)에서는 간단한 배타적논리합 배열로 구현이 가능한 병렬 입력데이터로 변환하여 CRC를 계산한 후 출력 상태 머신(30)에 따라 순차적으로 출력함으로써 10 Gbps 이상의 고속 데이터 전송에서 CRC코드 계산이 가능한 장치를 제공한다. 본 발명의 방법 및 장치들은 10가기비트 이더넷 시스템의 CRC 코드 계산에 적용될 수 있다.
도 1은 IEEE 802.3 이더넷 MAC(Medium Access Control; 매체 접근 제어) 프레임 구조를 보인 것으로서, 이더넷 프레임의 경우 프리앰블 7바이트와 SFD(Start Frame Delimiter; 프레임 시작 지시자) 1바이트, FCS(Frame Check Sequence; 프레임 검사 시퀀스) 4바이트를 제외한 모든 영역, 즉 목적지주소 1바이트, 길이/타입 2바이트, 데이터 46-1500바이트 데이터에 대해 CRC계산을 수행한다. IEEE 802.3에서 정의된 CRC-32의 생성다항식 G(x)는 다음과 같다.
본 발명은 10Gbps 이상의 고속 데이터 통신에서 데이터의 완전성을 검사하기 위해 사용하는 CRC (Cyclic Redundancy Checking) 코드를 계산하기 위한 장치에 관한 것으로, 10Gbps급 전송속도를 가진 고속 네트워크에서 CRC 코드를 계산하기 위해 본 발명에서는 CRC-32 생성다항식을 사용하여 M 바이트 (M=4, 8, 16) 병렬 계산 구조를 적용함으로써 현재 약 150 MHz 정도의 클럭속도를 지원하는 하드웨어 상에서도 원하는 전송속도를 구현가능 하도록 한다. 특히 본 발명은 가변 길이를 가지는 이더넷(IEEE 802.3) 프레임에도 적용될 수 있다. 본 발명은 입력되는 고속 M 바이트 병렬 데이터를 셀 또는 프레임 단위로 다수의 메모리 뱅크를 사용하여 저장하고, 각 메모리 뱅크별로 CRC계산을 수행한 후 출력하는 것으로 구성되며, 이하에서 자세히 설명한다.
도 4는 본 발명이 적용되는 일 실시예의 분산처리 방식의 CRC 코드 병렬 계산 장치의 구성도로서, 적어도 둘의 메모리부를 구비하여 소정 크기의 바이트 단위로 된 데이터를 입력받아 이를 메모리부에 나누어 저장한 다음 각 메모리에 저장된 데이터 단위로 CRC를 계산하여 출력하는 복수의 메모리뱅크부(40~45), 입력데이터를 입력받아 소정 크기의 바이트 단위로 나누어 각 메모리뱅크부(40~45)에 순차적으로 저장하는 저장 상태 머신(47) 및 복수의 메모리뱅크부(40~45)에서 계산된 CRC를 순차적으로 입력받아 원래의 데이터에 상기 계산된 CRC를 부가하여 출력하는 출력 상태 머신(48)을 포함한다. 또한, 병렬 CRC 계산장치는 메모리뱅크부들 (40~45)에서의 데이터 저장 완료와 CRC 계산 완료 및 출력 상태 머신(48)에서의 데이터 출력 완료에 대한 상태를 감지하여 데이터 입력에서 출력까지의 상태 천이를 제어하는 상태천이제어부를 더 포함한다.
저장 상태 머신(47)는 셀 또는 프레임 단위로 입력데이터를 메모리 뱅크에 저장한다. 각 메모리뱅크부(40~45)는 메모리뱅크에 저장된 M 바이트 병렬 데이터를 2 바이트 단위로 변환하여 CRC-32를 계산하여 출력한다. 출력 상태 머신(48)은 CRC-32 계산이 완료 된 셀 또는 프레임에 대해 순차적으로 출력한다. 한편, 상태천이 제어부(46)는 저장 상태 머신(47)과 출력 상태 머신(48)의 저장, CRC 계산, 출력을 제어한다. 본 실시예의 병렬 CRC-32 계산장치는 고정 길이의 ATM 셀 뿐만 아니라 가변 길이의 이더넷 프레임에 대해서도 M 바이트 병렬로 CRC-32를 계산하기 위해 바이트 인에이블 신호를 사용하며, 각 메모리 뱅크의 동작 진행이 데이터 저장, CRC계산, 데이터 출력의 순으로 이루어지고, 이를 가변길이의 이더넷 프레임에 대해서도 순차적으로 적용되도록 할 수 있다.
CRC-32 계산을 위하여 입력되는 셀 또는 프레임들은 저장 상태 머신(47)에 의해 순차적으로 메모리 뱅크(40~45)에 저장된다. 메모리 뱅크(40~45)의 경우 고정길이의 ATM 셀 뿐만 아니라 가변길이의 이더넷 프레임에 대해서도 처리할 수 있도록 상태천이 제어부(46)를 두어 메모리뱅크(40~45)에 대한 저장, CRC계산, 출력 과정을 순차적으로 진행하도록 한다. 메모리 뱅크의 CRC 계산부에서 CRC 계산이 완료되면 출력 상태 머신(48)에 의해 입력된 순서대로 출력된다.
도 5는 도 4에 도시된 메모리 뱅크부(40)의 세부적인 구성을 도시한다. 각 메모리뱅크부는 복수 바이트 크기의 데이터를 나누어 각각 저장하는 적어도 둘의 메모리부(401~404), 각 메모리부에 저장된 데이터 중 하나를 선택하여 출력하는 제1먹스부(405), 제1먹스부(405)에서 출력된 데이터에 대해 CRC를 계산하여 출력하는 CRC 계산부(406) 및 각 메모리부(401~404)의 데이터 또는 CRC계산부(406)의 출력값 중 하나를 선택하여 출력하는 제2먹스부(407)를 포함한다.
일단 저장 상태 머신(47)에 의해 순차적으로 메모리 뱅크가 선택이 되면 입력되는 데이터(셀 또는 프레임 단위)를 4개의 RAM(401~404)에 분할하여 저장하며 저장이 완료된 후 CRC-32 계산을 수행한다.
도 5의 경우는 8바이트의 병렬 입력을 받는 구조에 대한 일 실시 예이며, 8바이트의 병렬 입력데이터를 2바이트씩 분할하여 RAM에 저장함으로써 CRC-32계산 시 8바이트 병렬 입력데이터를 계산하지 않고 2바이트씩 분할된 병렬 입력데이터를 순서대로 계산하여 기존의 2바이트를 입력으로 하는 병렬 계산구조를 적용할 수 있다. CRC-32 계산 블록(406)에서는 RAM(401~404)에 저장 된 데이터를 차례대로 입력 받아 CRC값을 계산하며, 하나의 셀 또는 프레임에 대해 CRC-32 계산이 완료되면 도 4의 출력 상태 머신(48)에 의해 출력된다.
또한, 고정길이의 셀 뿐만 아니라 가변길이의 이더넷 프레임에 대해서도 CRC-32 계산을 용이하게 하기 위해 입력되는 병렬 데이터는 바이트 인에이블 신호에 따라 CRC-32 계산을 수행한다. 바이트 인에이블 신호는 입력되는 8 바이트 병렬데이터에 대해 각 해당 바이트의 존재 여부를 나타내는 신호로써 병렬 바이트의수만큼의 비트수를 가지며, 예로서, 바이트 인에이블 신호가 "00001111"인 경우 8바이트 병렬 입력데이터 중 하위 4바이트에만 데이터가 있음을 의미한다. 가변길이의 프레임에 대해 CRC-32 계산을 수행할 경우 보내어지는 프레임의 크기가 항상 M바이트이 배수가 아니기 때문에 마지막으로 입력되는 데이터의 크기는 1~M 바이트까지 임의의 값을 가질 수 있다. 따라서 마지막으로 입력되는 병렬 입력 데이터는 바이트 인에이블 신호가 "1"로 활성화 되어 있는 바이트에 대해서만 CRC 계산을 수행한다. 바이트 인에이블 신호의 작용은 도 7에서 상세히 설명하도록 한다.
도 6은 각 메모리 뱅크에서의 동작과정에 대한 일 실시예를 나타낸다. 도 4와 같이 복수의 메모리뱅크를 구비하여 입력데이터에 대한 CRC를 계산하는 방법을 설명하면, 제1 메모리뱅크부터 마지막 메모리뱅크에 순차적으로 입력데이터를 저장하되, 마지막 메모리뱅크에 데이터를 저장시킨 다음 제1 메모리뱅크에 다시 입력데이터를 저장하는 방식으로 입력데이터를 각 메모리뱅크에 순환적으로 저장한다. 이와 같은 저장 과정을 수행하면서, 자신의 메모리뱅크에 데이터가 저장된 후 다음 메모리뱅크에 데이터가 저장되는 동안 자신의 메모리뱅크에 저장된 데이터에 대해 CRC를 계산하고, 각 메모리뱅크에서 계산된 CRC는, 각 메모리뱅크에 다시 입력데이터가 저장되기 전에 출력되도록 제어된다.
각 메모리 뱅크는 저장과 CRC계산, 출력을 시간의 흐름에 따라 진행하며 연속적으로 입력되는 셀 또는 프레임 단위의 데이터를 저장하기 위해 순환 구조를 갖는 메모리 뱅크를 사용한다. 즉, 메모리 뱅크0(40)에 첫 번째 셀 또는 프레임이 저장되면 메모리 뱅크1(41)에 다음 셀 또는 프레임이 저장되고, 그 다음에 입력되는 셀 또는 프레임이 순차적으로 메모리 뱅크2(42), 메모리 뱅크3(43), 메모리 뱅크4(44), 메모리 뱅크5(45)까지 저장되면, 다시 메모리 뱅크0(40), 메모리 뱅크1(42),....의 순으로 데이터가 순차적으로 저장된다. 다시 말하면, 마지막 메모리 뱅크5(45)에 셀 또는 프레임이 저장된 다음에는 다시 처음의 메모리 뱅크0(40)으로 되돌아 가서 데이터를 저장하는 링을 형성하여 순환적으로 셀 또는 프레임을 저장한다. 메모리 뱅크5(45) 까지 저장이 완료되면 다시 메모리 뱅크0(40)에 저장을 수행하는데, 이때 메모리 뱅크0(40)에 기존에 저장된 데이터에 대해 이미 CRC 계산을 완료하고 CRC 값의 출력이 종료된 상태이어야 한다. 만약 그렇지 않을 경우 기존의 데이터에 새로운 데이터를 덮어쓰는 상황이 발생하게 된다. 상태천이 제어부(46)는 각 메모리 뱅크(40~45)에 대해 저장 완료, CRC계산 완료, 출력 완료에 관한 신호들을 감지하여, 저장 상태 머신(47) 및 출력 상태 머신(48)의 입출력 동작이 에러 없이 진행되도록 제어한다.
도 7a는 프레임 데이터가 입력될 경우 도 5에 도시된 4개의 RAM(401~404)에 저장되는 데이터의 타이밍도를 나타낸다. 8 바이트 병렬로 입력되는 프레임의 길이를 A부터 Z까지로 가정할 경우 A에서 Y까지의 바이트 인에이블 신호는 "11111111"이므로 8 바이트가 모두 존재하고 Z의 경우 "00001111"이므로 상위 4바이트는 입력되는 데이터가 없고 하위 4바이트만 데이터를 포함한다. 8바이트로 입력되는 병렬 데이터를 2 바이트씩 분할하여 저장하기 위해 첫 번째 8바이트 병렬 입력 데이터(A)를 예로 들면, 하위 비트부터 2바이트씩 분할하여 A0,A1,A2,A3를 각각 RAM0(401), RAM1(402), RAM2(403), RAM3(404) 순으로 차례대로 저장한다. 상기과정을 A에서 Y까지 진행하고 Z의 경우에는 하위 4바이트만이 존재하므로 Z0, Z1만을 RAM0(401), RAM1(402)에 저장한다.
도 7b는 RAM(401~404)에 저장된 데이터에 대해 CRC-32 계산을 수행하기 위해 도 5의 CRC-32 계산블록(406)으로 데이터를 전송하는 경우에 대한 타이밍도이다. 8 바이트 병렬입력에 대해 2 바이트씩 병렬 CRC 계산을 하기 위해 4 개의 RAM(401~404)에 저장된 데이터를 A0, A1, A2, A3, B0, B1, ..... Y2, Y3 순으로 멀티플렉서에서 출력시켜 주고 마지막 Z의 경우는 하위 4바이트만이 존재하므로 Z0와 Z1만을 출력시킨다.
도 7c는 CRC 계산이 종료된 후 RAM(401~404)에 저장된 데이터와 계산된 CRC 32 비트를 포함한 프레임의 출력에 대한 타이밍도이다. 입력되는 데이터와 마찬가지로 출력되는 데이터도 8바이트의 병렬구조를 가지므로 도 7a의 반대과정을 수행한다. 즉, 2바이트씩 출력되는 각 RAM(401~404)의 출력을 하위 바이트부터 조합하여 원래의 8바이트를 생성하고 마지막 Z의 경우 하위 4바이트의 데이터에 상기의 과정에서 계산된 CRC 32비트를 추가하여 최종 출력하게 된다.
본 발명은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플라피디스크, 광데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
이상 도면과 명세서에서 최적 실시예들이 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
이상에서 설명한 바와 같이, 본 발명에 따른 분산처리 방식의 병렬 CRC계산 방법 및 장치를 사용하면 기존의 속도를 갖는 프로세서 환경에서도 10Gbps 이상의 고속데이터 전송을 요구하는 네트워크에 적합한 CRC 코드를 계산할 수 있다. 본 발명은 고속으로 입력되는 병렬데이터를 처리하기 위해 셀 또는 프레임 단위의 입력데이터를 다수의 메모리 뱅크를 사용하여 저장하고 각 메모리 뱅크별로 CRC 계산을 수행하여 결과 값을 출력함으로써 약 150MHz 정도의 클럭속도를 지원하는 하드웨어 (예로서, FPGA : Field Programable Gate Array) 환경에서도 구현이 가능하도록 하였으며 특히, 이더넷 시스템에 적용될 수 있다.

Claims (5)

  1. 적어도 둘의 메모리뱅크를 구비하고, 상기 각 메모리뱅크에 소정 바이트 단위의 입력데이터를 저장한 다음 상기 각 메모리뱅크에 저장된 데이터 단위로 각각 CRC를 계산하여 상기 각 메모리뱅크에서 계산된 CRC를 각각 출력하는 메모리부;
    입력데이터를 입력받아 소정 바이트 단위로 나누어 상기 각 메모리뱅크 별로 순차적으로 저장하는 저장제어부;
    상기 복수의 메모리뱅크에서 각각 계산된 CRC를 순차적으로 입력받아 원래의 데이터에 상기 계산된 CRC를 부가하여 출력하는 출력제어부를 포함하는 것을 특징으로 하는 병렬 CRC 계산장치.
  2. 제1항에 있어서, 상기 저장제어부는
    상기 각 메모리뱅크로 입력되는 바이트 단위의 병렬 데이터에 대해 각 해당 바이트의 존재 여부를 나타내는 바이트 인에이블신호를 상기 메모리뱅크로 출력하는 것을 특징으로 하는 병렬 CRC 계산장치.
  3. 제1항에 있어서, 상기 메모리부에서의 데이터 저장 완료와 CRC 계산 완료 및 상기 출력제어부에서의 데이터 출력 완료에 대한 상태를 감지하여 데이터 입력에서 출력까지의 상태 천이를 제어하는 상태천이제어부를 더 포함하는 것을 특징으로 하는 병렬 CRC 계산장치.
  4. 제1항에 있어서, 상기 각 메모리뱅크는
    상기 입력된 소정 바이트 단위의 데이터를 나누어 각각 저장하는 적어도 둘의 메모리;
    상기 각 메모리에 저장된 데이터 중 하나를 선택하여 출력하는 제1먹스부;
    상기 제1먹스부에서 출력된 데이터에 대해 CRC를 계산하여 출력하는 CRC계산부; 및
    상기 각 메모리의 데이터 또는 상기 CRC계산부의 출력값 중 하나를 선택하여 출력하는 제2먹스부를 포함하는 것을 특징으로 하는 병렬 CRC 계산장치.
  5. 복수의 메모리뱅크를 구비하여 입력데이터에 대한 CRC를 계산하는 방법에 있어서,
    제1 메모리뱅크부터 마지막 메모리뱅크에 순차적으로 입력데이터를 나누어 저장하되, 상기 마지막 메모리뱅크에 데이터를 저장시킨 다음 상기 제1 메모리뱅크에 다시 입력데이터를 저장하는 방식으로 입력데이터를 각 메모리뱅크에 순환적으로 저장하는 단계;
    상기 저장 과정을 수행하면서, 자신의 메모리뱅크에 데이터가 저장된 후 다음 메모리뱅크에 데이터가 저장되는 동안 자신의 메모리뱅크에 저장된 데이터에 대해 CRC를 계산하는 단계;
    상기 각 메모리뱅크에서 계산된 CRC를, 각 메모리뱅크에 다시 입력데이터가 저장되기 전에 출력하는 단계; 및
    상기 복수의 메모리뱅크에서 각각 계산된 CRC를 순차적으로 입력받아 원래의 데이터에 상기 계산된 CRC를 부가하여 출력하는 단계를 포함하는 것을 특징으로 하는 병렬 CRC 계산방법.
KR10-2002-0019290A 2002-04-09 2002-04-09 병렬 crc 계산장치 및 그 방법 KR100433632B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR10-2002-0019290A KR100433632B1 (ko) 2002-04-09 2002-04-09 병렬 crc 계산장치 및 그 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2002-0019290A KR100433632B1 (ko) 2002-04-09 2002-04-09 병렬 crc 계산장치 및 그 방법

Publications (2)

Publication Number Publication Date
KR20030080587A KR20030080587A (ko) 2003-10-17
KR100433632B1 true KR100433632B1 (ko) 2004-05-31

Family

ID=32378326

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2002-0019290A KR100433632B1 (ko) 2002-04-09 2002-04-09 병렬 crc 계산장치 및 그 방법

Country Status (1)

Country Link
KR (1) KR100433632B1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100913467B1 (ko) * 2002-11-19 2009-08-25 엘지전자 주식회사 병렬 순환 중복 검사 코드 발생 시스템 및 방법
KR101227411B1 (ko) * 2006-02-03 2013-01-29 삼성전자주식회사 변조기에서 버스인터페이스 상의 효율적인 순환중복검사인코딩을 수행하는 방법 및 장치
KR100850207B1 (ko) 2006-12-29 2008-08-04 삼성전자주식회사 시스터메틱 코드 발생을 위한 듀얼 클럭킹 방법을 채용한메모리 장치
KR101286238B1 (ko) * 2007-08-01 2013-07-15 삼성전자주식회사 데이터 병렬화 수신기
KR100937031B1 (ko) * 2007-10-15 2010-01-15 한국과학기술원 순환잉여검사 시스템 및 방법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02101824A (ja) * 1988-10-11 1990-04-13 Fujitsu Ltd 巡回冗長検査符号生成装置
KR0166251B1 (ko) * 1995-03-15 1999-01-15 전주범 고속 crc 부호기
US6029186A (en) * 1998-01-20 2000-02-22 3Com Corporation High speed calculation of cyclical redundancy check sums
JP2001211083A (ja) * 2000-01-27 2001-08-03 Oki Electric Ind Co Ltd Crc出力演算装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02101824A (ja) * 1988-10-11 1990-04-13 Fujitsu Ltd 巡回冗長検査符号生成装置
KR0166251B1 (ko) * 1995-03-15 1999-01-15 전주범 고속 crc 부호기
US6029186A (en) * 1998-01-20 2000-02-22 3Com Corporation High speed calculation of cyclical redundancy check sums
JP2001211083A (ja) * 2000-01-27 2001-08-03 Oki Electric Ind Co Ltd Crc出力演算装置

Also Published As

Publication number Publication date
KR20030080587A (ko) 2003-10-17

Similar Documents

Publication Publication Date Title
US8095846B2 (en) Data coding apparatus and methods
US5040179A (en) High data rate BCH encoder
Albertengo et al. Parallel CRC generation
US8468439B2 (en) Speed-optimized computation of cyclic redundancy check codes
JP4643957B2 (ja) メッセージのcrcを計算するための方法
EP0767539B1 (en) Highly parallel cyclic redundancy code generator
US5844923A (en) Fast framing of nude ATM by header error check
US7870466B2 (en) Parallel cyclic code generation device and parallel cyclic code error detection device
US9143276B2 (en) Nested CRC (cyclic redundancy check) code generation method and device for data transmission error control
JP4764973B2 (ja) Crc値の算出装置
US20050010630A1 (en) Method and apparatus for determining a remainder in a polynomial ring
US8689078B2 (en) Determining a message residue
US20180143872A1 (en) Cyclic redundancy check calculation for multiple blocks of a message
EP0631703A1 (en) Efficient crc remainder coefficient generation and checking device and method
US6189124B1 (en) Method and apparatus for a two-step calculation of CRC-32
US5694407A (en) Method and an apparatus for modifying a FCS
US6732318B2 (en) Variable width parallel cyclical redundancy check
KR100433632B1 (ko) 병렬 crc 계산장치 및 그 방법
US4835775A (en) Hypersystolic reed-solomon encoder
US6795946B1 (en) Fast frame error checker for multiple byte digital data frames
US6138264A (en) Syndrome calculation circuit
US20030159101A1 (en) Cyclic redundancy code generator
US7047479B1 (en) Parallel CRC formulation
CN114679239A (zh) 一种高速网络中crc分段计算方法及装置
EP0885488A1 (en) Method and apparatus for generating a transform

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

Year of fee payment: 8

LAPS Lapse due to unpaid annual fee