KR20040043582A - 병렬 순환 중복 검사 코드 발생 시스템 및 방법 - Google Patents

병렬 순환 중복 검사 코드 발생 시스템 및 방법 Download PDF

Info

Publication number
KR20040043582A
KR20040043582A KR1020020071908A KR20020071908A KR20040043582A KR 20040043582 A KR20040043582 A KR 20040043582A KR 1020020071908 A KR1020020071908 A KR 1020020071908A KR 20020071908 A KR20020071908 A KR 20020071908A KR 20040043582 A KR20040043582 A KR 20040043582A
Authority
KR
South Korea
Prior art keywords
crc
input data
parallel
unit
output
Prior art date
Application number
KR1020020071908A
Other languages
English (en)
Other versions
KR100913467B1 (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 KR1020020071908A priority Critical patent/KR100913467B1/ko
Publication of KR20040043582A publication Critical patent/KR20040043582A/ko
Application granted granted Critical
Publication of KR100913467B1 publication Critical patent/KR100913467B1/ko

Links

Classifications

    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Probability & Statistics with Applications (AREA)
  • Detection And Correction Of Errors (AREA)
  • Error Detection And Correction (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

본 발명은 병렬 순환 중복 검사 코드 발생 시스템 및 방법에 관한 것으로, 특히 병렬 CRC 처리시에 발생되는 처리 지연을 최소화하고 구성 로직을 작게 하여 병렬 CRC 처리의 효과를 높이도록 한 병렬 CRC 발생 시스템 및 방법에 관한 것이다.
본 발명은 병렬 CRC 비트 크기를 몇 개의 병렬 처리 비트 단위로 쪼개어 고차 CRC 계산을 수행함으로써, 종래 보다 훨씬 작은 로직 게이트로 구성할 수 있고 콤비네이션 로직에 의한 처리 지연도 훨씬 작아지게 할 수 있으며, 고차 CRC 계산을 수행하고 나머지 입력 데이터에 대해 저차 CRC 계산을 수행함으로써, 병렬 처리 비트 단위보다 작은 입력 데이터를 처리할 수 있다.

Description

병렬 순환 중복 검사 코드 발생 시스템 및 방법{System And Methord For Generating Parallel Cyclic Redundancy Codes}
본 발명은 병렬(Parallel) 순환 중복 검사 코드(CRC : Cyclic Redundancy Codes) 발생 시스템 및 방법에 관한 것으로, 특히 병렬 CRC 처리시에 발생되는 처리 지연(Processing Delay)을 최소화하고 구성 로직을 작게 하여 병렬 CRC 처리의 효과를 높이도록 한 병렬 CRC 발생 시스템 및 방법에 관한 것이다.
일반적으로, 현 데이터 통신 등은 입력 정보의 증가로 인해 빠른 CRC 처리 속도를 필요로 하고 있고, 이를 위해 병렬 CRC 발생 시스템을 필수적인 구성요소로 하고 있다.
이하, 도면을 참조하여 종래의 CRC 발생 시스템을 설명한다.
먼저, 도 1을 참조하여 종래의 직렬 CRC 발생 시스템을 설명한다.
도 1은 종래의 직렬 CRC 발생 시스템을 나타낸 도면이다.
도 1은 종래의 직렬 CRC 발생 시스템을 LFSR(Linear Feedback Shift Register)로 보여주고 있는데, 도 1에서 I(x)는 입력 데이터를 나타내고, C(x)는 출력 데이터를 나타내고, D는 레지스터로서 일반적으로 D 플립/플롭(Flip/Flop)으로 구성되고, g1~g(k-1)는 스위치로서 각각의 값이 1이면 연결되며 0이면 끊어지고, S1,S2 및 S3는 스위치이고, S0~Sk-1는 CRC 상태(State)를 나타내며, MOD2는 모듈로(modulo)2연산을 위한 회로로서 XOR(Exclusive-OR)동작을 한다.
그리고, 도 2를 참조하여 종래의 CRC 발생 시스템의 동작을 표현한 수식을 설명한다.
도 2는 종래의 CRC 발생 시스템의 동작을 표현한 수식을 나타낸 도면이다.
도 2에서 S(t)는 현재 CRC 발생 시스템의 CRC 값을 나타내고, S(t+1)는 다음 CRC 발생 시스템의 CRC 값을 나타내고, I(t)는 입력 데이터 값이며, Tr'는 각각의 CRC 발생 시스템의 특성에 의해서 만들어지는 결합행렬로서 수식의 자세한 설명은 생략한다.
예를 들면, CRC 함수가 G(x) = 1 + x + x3+ x4이면, g1 = 1, g2 = 0, g3 = 1, g4 = 1이고 K=4이다. 그리고 r=1이면, T1'는 다음 수학식과 같이 나타낼 수 있다.
이하, 도 3을 참조하여 종래의 병렬 CRC 발생 시스템의 일실시예를 설명한다.
도 3은 종래의 병렬 CRC 발생 시스템의 일실시예를 나타낸 도면이다.
도 3에서 입력부로 입력되는 I(x)는 입력 데이터를 나타내고, I0~IM-1는 입력 데이터를 비트 단위로 정렬한 값이고, 저차 계산부에 구비된 다수의 CB는 콤비네이션 로직(Combination Logic)으로 구성되는 블록으로서 도 2의 저차 결합행렬 T1'에 의해 CRC를 계산하고, 선택부로 인가되는 선택(Select) 신호는 S(t+1)에서 S(t+M)중에서 어느 것을 출력할 것인가를 결정하기 위한 신호이며, 출력부에 저장된 S(t)는 현재의 CRC 발생 시스템의 상태, 즉 CRC 값을 표시한다. 여기서, 상기 선택부는 멀티플렉서이다.
이하, 도 4를 참조하여 종래의 병렬 CRC 발생 시스템이 적용되어질 때 입력 데이터의 처리 순서를 설명한다.
도 4는 종래의 병렬 CRC 발생 시스템에 적용되는 입력 데이터 처리 순서 개념도이다.
도 4에서 N0~N32*P+1는 0 또는 1의 입력 데이터를 나타내고, I0~I31는 도 3에 도시된 종래의 병렬 CRC 발생 시스템의 I(x)로 입력되며, S(t)는 입력 데이터의 CRC 계산이 끝난 후 원래의 입력 데이터에 첨가되는 CRC 비트이다.
이하, 도 5를 참조하여 종래의 병렬 CRC 발생 시스템의 다른 실시예를 설명한다.
도 5는 종래의 병렬 CRC 발생 시스템의 다른 실시예를 나타낸 도면이다.
도 5에서 입력부로 입력되는 I(x)는 입력 데이터를 나타내고, I0~IM-1는 입력데이터를 비트 단위로 정렬한 값이고, 고차 계산부에 구비된 CB는 콤비네이션 로직으로 구성되는 블록으로 도 2의 고차 결합행렬 Tr'에 의해 CRC를 계산한다. 도 3에 도시된 종래의 병렬 CRC 발생 시스템과의 가장 큰 차이점은 CB가 T1'가 아닌 Tr'이라는 점이다. 즉, 1차 CB 함수가 아닌 r차 CB함수이다.
이하, 상술한 바와 같이 구성된 종래의 CRC 발생 시스템의 동작을 설명한다.
도 1은 가장 간단하고 일반적인 종래의 직렬 CRC 발생 시스템인데, 도 4의 입력 데이터 N0~N32*p+1가 상기 직렬 CRC 발생 시스템에 입력되고, 더 이상 입력 데이터가 없을 경우에는 CRC 상태 S0~Sk-1가 출력된다.
좀더 자세히 살펴보면, 먼저 입력 데이터가 입력되는 시기에 스위치 S1, S2는 닫혀지고 S3는 포인트 A로 연결된다. 이에 따라, 입력 데이터 I(x)는 출력 데이터 C(x)로 바로 출력이 되고, 스위치 S1를 통해 각각의 연산에 따라 D 플립/플롭으로 입력된다. 이때, 스위치 g1~g(k-1)는 CRC 발생 시스템의 함수값에 따라 열린다.
예를 들면, CRC 발생 시스템의 함수가 G(x) = 1 + x + x3+ x4이면, g1 = 1, g2 = 0, g3 = 1, g4 = 1이 된다, 여기서 g가 1이면 닫히게 된다.
상기 입력 데이터는 클럭(Clock)이 발생되어질 때마다 하나씩 상술한 바와 같은 동작을 반복하게 되고, 만약 입력 데이터가 모두 입력되면 다음 동작으로 이어진다.
다음으로, 발생된 CRC 값을 첨가하는 시기에는 스위치 S1, S2는 열리고 S3는포인트 B로 연결되어 S(k-1)에서 S0값이 하나씩 C(x)으로 출력되고, 이에 따라 C(x) = I(x) + S(x)가 되어 동작을 마무리한다. 상술한 바와 같이, 도 1은 직렬 CRC 발생 시스템이라고 생각할 수 있다. 즉, 해당 직렬 CRC 발생 시스템 안으로 입력되는 데이터는 한 클럭에 한 개의 데이터가 입력되기 때문이다.
그리고, 상술한 도 1의 종래 직렬 CRC 발생 시스템의 특성을 수식으로 나타내면, 도 2에서 r=1, I(r-1)(t)~I1(t)은 0일 경우에 해당된다. 즉, I(x)의 입력 데이터는 매 클럭마다 도 2의 I0(t)에 들어가게 되고 매 클럭마다 S(t+1)은 업데이트(Update)될 것이다.
도 3은 종래의 병렬 CRC 발생 시스템의 일실시예를 나타내는데, 입력 데이터 I(x)는 병렬로 처리되어질 비트 크기(Size)만큼 입력부로 입력된다. 입력된 각각의 비트 I0, I1, …,I(M-1}는 저차 계산부의 CB에서 결합행렬 T1'에 의해 CRC 계산이 수행되어진 후, 상태 값 S(t+1)~S(t+M)이 만들어진다.
이때, 입력 비트 한 개(I0)가 입력되면 S(t+1)이 선택부를 통해 출력부에 S(t)로 출력될 것이고, 입력 비트 두 개(I0, I1)가 입력되면 S(t+2)가 선택부를 통해 출력부에 S(t)로 출력될 것이며, 입력 비트 전부(I0~I(M-1))가 입력되면 S(t+M)이 선택부를 통해 출력부에 S(t)로 출력될 것이다.
이하, 상술한 종래 병렬 CRC 발생 시스템의 동작을 도 4와 연계하여 설명하면 다음과 같다.
도 4에서 입력 데이터는 N0~N32*P+1인데, 만약 병렬로 처리되어질 비트 크기가 32개라면, N0~N31는 I0~I31로 매핑(Mapping)되어 도 3에 도시된 종래의 CRC 발생 시스템의 I(x)로 입력된다. 한 개의 클럭에 32번의 CRC 계산을 한 후 S(t+M)값이 선택부를 통해 출력부에 S(t)로 출력되어 저장된다. 여기까지가 도 4의 스텝-1(N0~N31)에 해당된다.
그리고, 스텝-2(N32~N63)~스텝-P(N32*(P-1)~N32*P-1)도 상술한 바와 같은 방법으로 수행되며, 스텝-P까지 수행된 후의 CRC값이 출력부에 S(t)로 저장되어 있을 것이고, 스텝-(P+1)에서는 단지 두개의 입력 데이터 N32*P와 N32*P+1만 남아 있으므로, I0와 I1로 매핑되어 도 3의 종래의 병렬 CRC 발생 시스템의 I(x)로 입력된다. 한 번의 클럭에 2번의 CRC 계산을 한 후 S(t+2)값이 선택부를 통해 출력부에 S(t)로 출력되어 저장되는데, 해당 S(t+2)값이 도 4의 S(t)값이고 최종 CRC값이 된다. 이때, 병렬로 처리되어질 입력 비트 크기가 32일 경우 임계 타이밍(Critical Timing)을 살펴보면, 전체 처리 지연은 32개의 콤비네이션 로직(CB)의 처리 지연 시간과 선택부의 처리 지연 시간을 합한 결과가 나온다.
도 5는 종래의 병렬 CRC 발생 시스템의 다른 실시예를 나타내는데, 도 3에 도시된 종래의 병렬 CRC 발생 시스템의 콤비네이션 로직, 즉 CM의 증가를 막기 위한 방안으로 도 2의 수식에 r=32를 대입시킴으로써, 보다 간단한 콤비네이션 로직을 만들 수 있다.
도 4에서 입력 데이터는 N0~N32*P+1인데, 만약 병렬로 처리되어질 비트 크기가 32개라면, N0~N31는 I0~I31로 매핑(Mapping)되어 도 3에 도시된 종래의 병렬 CRC 발생 시스템의 I(x)로 입력된다. 입력 비트 모두(I0~I(M-1))가 한꺼번에 고차 계산부의 CB에 입력되어 결합행렬 Tr'에 의해 한 번의 CRC 계산을 한 후 S(t+M)값이 선택부를 통해 출력부에 S(t)로 출력되어 저장된다. 여기까지가 도 4의 스텝-1(N0~N31)에 해당된다.
그리고, 스텝-2(N32~N63)~스텝-P(N32*(P-1)~N32*P-1)도 상술한 바와 같은 방법으로 한꺼번에 32개의 비트가 처리 수행되며, 스텝-P까지 수행된 후의 CRC값이 출력부에 S(t)로 저장되어 있을 것이고, 반면에, 스텝-(P+1)에서는 단지 두개의 입력 데이터 N32*P와 N32*P+1만 남아 있으므로, I0와 I1로 매핑되어 도 3에 도시된 종래의 병렬 CRC 발생 시스템의 I(x)로 입력되는데, 32로 나누어지지 않는 비트가 입력 데이터이므로 처리 할 수 없게 된다.
상술한 도 3의 종래 병렬 CRC 발생 시스템은 콤비네이션 로직의 크기가 너무 크고, 처리 지연(Processing Delay)이 너무 커서 ASIC(Application Specific Integrated Circuit)이나 FPGA(Field-Programmable Gate Array) 같은 하드웨어로 구현할 때, 타이밍 에러(Timing Error)로 인해 구현이 되지 않을 수 있고, 더욱이 병렬 처리되어질 입력 비트 크기가 커질수록 이러한 문제점은 더 크게 대두된다.
그리고, 도 5의 종래 CRC 발생 시스템은 병렬로 처리되어질 입력 비트 크기로 입력 데이터가 나누어지지 않을 경우에 사용할 수 없는 문제점이 있다.
상술한 바와 같은 문제점을 해결하기 위한 것으로, 본 발명의 목적은 병렬 CRC 처리시에 처리 지연을 최소화하고 구성 로직를 작게 함으로써, 병렬 CRC 처리 효과를 높이도록 하는데 있다.
본 발명의 다른 목적은 병렬로 처리되어질 입력 비트 크기로 입력 데이터가 나누어지지 않을 경우에도 병렬 CRC 처리를 할 수 있도록 하는데 있다.
도 1은 종래의 직렬 CRC 발생 시스템을 나타낸 도면.
도 2는 종래의 CRC 발생 시스템의 동작을 표현한 수식을 나타낸 도면.
도 3은 종래의 병렬 CRC 발생 시스템의 일실시예를 나타낸 도면.
도 4는 종래의 병렬 CRC 발생 시스템에 적용되는 입력 데이터 처리 순서 개념도.
도 5는 종래의 병렬 CRC 발생 시스템의 다른 실시예를 나타낸 도면.
도 6은 본 발명의 실시예에 따른 병렬 CRC 발생 시스템을 나타내 도면.
도 7은 본 발명의 병렬 CRC 발생 시스템에 적용되는 입력 데이터 처리 순서 개념도.
도 8은 본 발명의 실시예에 따른 병렬 CRC 발생 방법을 나타낸 순서도.
* 도면의 주요 부분에 대한 부호의 설명 *
40 : 입력부 50 : 고차 계산부
50-1~50-M : CB 60 : 선택부
70 : 출력부 80 : 저차 계산부
81 : CBM 90 : 최종 출력부
상술한 바와 같은 목적을 해결하기 위하여, 본 발명의 병렬 순환 중복 검사 코드 발생 방법은 입력 데이터를 병렬 처리 비트 단위로 나누어 해당 각각의 병렬 처리 입력 데이터를 출력하는 입력부와; 상기 출력된 각각의 병렬 처리 입력 데이터와 기존 CRC를 입력받아 고차 결합행렬에 의해 각각의 CRC를 계산하는 다수의 CB를 구비하는 고차 계산부와; 상기 계산된 각각의 CRC를 입력받아 선택 신호에 따라 선택된 CRC를 출력하는 선택부와; 상기 선택된 CRC를 입력받아 저장한 후 해당 CRC를 출력하고 피드백하여 상기 고차 계산부로 출력하는 출력부를 포함하여 이루어진 것을 특징으로 한다.
또한, 본 발명의 병렬 순환 중복 검사 코드 발생 방법은 입력 데이터를 병렬 처리 비트 단위로 나누고 해당 나누어 떨어지지 않은 나머지 입력 데이터가 존재하는지를 판단하는 과정과; 상기 나머지 입력 데이터가 존재하지 않는 경우에 상기 각각의 병렬 처리 입력 데이터를 출력하는 과정과; 상기 출력된 각각의 병렬 처리 입력 데이터와 기존 CRC를 입력받아 고차 결합행렬에 의해 각각의 CRC를 계산하여 출력하는 과정과; 상기 계산된 각각의 CRC를 입력받아 선택 신호에 따라 선택된 CRC를 출력하는 과정과; 상기 선택된 CRC를 입력받아 저장한 후 해당 저장된 CRC를 출력하는 과정을 포함하여 이루어진 것을 특징으로 한다.
이하, 본 발명의 실시예를 첨부한 도면을 참조하여 상세하게 설명하면 다음과 같다.
먼저, 도 6을 참조하여 본 발명의 실시예에 따른 병렬 CRC 발생 시스템을 설명한다.
도 6은 본 발명의 실시에에 따른 병렬 CRC 발생 시스템을 나타낸 도면이다.
본 발명의 병렬 CRC 발생 시스템은 입력부(40), 고차 계산부(50), 선택부(60) 및 출력부(70)를 포함하여 이루어지는데, 상기 입력부(40)는 입력 데이터(I(x))를 병렬 처리 비트 단위로 나누어 해당 각각의 병렬 처리 입력 데이터(I0~Iw-1, Iw~I2w-1, …,IM-w~IM-1)를 출력하고, 상기 고차 계산부(50)는 상기 출력된 각각의 병렬 처리 입력 데이터와 기존 CRC를 입력받아 고차 결합행렬(Tw')에 의해 각각의 CRC(S(t+w), S(t+2w), …, S(t+M))를 계산하는 다수의 CB(ComBination logic)(50-1, 50-2, …, 50-M)를 구비하고, 상기 선택부(60)는 상기 계산된 각각의CRC를 입력받아 선택 신호(Slect)에 따라 선택된 CRC를 출력하고, 상기 출력부(70)는 상기 선택된 CRC를 입력받아 저장한 후 해당 CRC(S(t))를 출력하고 피드백하여 상기 고차 계산부(50)로 출력한다. 여기서, 상기 출력부(70)를 플립/플롭으로 구성하는 대신에 콤비네이션 로직으로 구성할 수도 있는데, 이럴 경우에는 처리 지연이 플립/플롭으로 구성할 때보다 커지지만, 여러 변수에 의해 규격(Specification)을 만족하여 구현할 수 있는 장점이 있다.
그리고, 본 발명의 병렬 CRC 발생 시스템은 입력부(40), 고차 계산부(50), 선택부(60) 및 출력부(70)에, 저차 계산부(80)와 최종 출력부(90)를 더 포함하여 이루어질 수 있는데, 상기 저차 계산부(80)는 상기 입력부(40)로부터 상기 입력 데이터(I(x))를 병렬 처리 비트 단위로 나누어 떨어지지 않은 나머지 입력 데이터(Irest)를 입력받고 상기 출력부(70)로부터 상기 CRC(S(t))를 입력받아 저차 결합행렬(T1~(w-1)')에 의해 CRC를 계산하는 CBM(ComBination logic Module)(81)을 구비하고, 상기 최종 출력부(90)는 상기 계산된 CRC를 저장한 후 해당 최종 CRC(Sfinal(t))를 출력한다.
도 6에 도시된 본 발명의 병렬 CRC 발생 시스템에서 I(x)는 입력 데이터를 표시하고, I0~IM-1는 상기 입력 데이터를 병렬 비트 처리 단위인 r(r=w) 비트 단위로 정렬한 값으로 병렬 처리 입력 데이터이고, 선택 신호는 S(t+w)에서 S(t+M)중에서 어느 것을 출력할 것인가를 결정하기 위한 신호이고, S(t)는 현재의 병렬 CRC 발생 시스템의 상태를 표시한 것으로 계산된 CRC 값이며, CBM(81)은 CB(50-1, 50-2, …,50-M)와 동일한 기능을 하지만 파라미터가(Parameter)가 다르다. 만약, r=8이면 저차 결합행렬 T1~(w-1)'은 T0', T1', …, Tw-1'들로 구성되며, Sfinal(t)은 입력 데이터가 r 비트 단위로 나누어지지 않을 때 수행되는 최종 S(t)로 생각할 수 있다.
입력 데이터가 적용되는 도 3에 도시된 종래의 병렬 CRC 발생 시스템에서는 CB가 T1'이었고, 도 5에 도시된 종래의 병렬 CRC 발생 시스템에서 CB가 Tr'이었지만, 도 6에 도시된 본 발명의 실시예에 따른 병렬 CRC 발생 시스템에서는 CB(50-1, 50-2, …, 50-M)가 Tw'이라는 점에서 차이가 있다. 여기서, T1'은 1차 CRC 함수를 구성하고, Tr'은 r차 CRC 함수를 구성하는데, 도 5의 종래 병렬 CRC 발생 시스템에서는 한꺼번에 처리한 입력 데이터를 전부 r차 CRC 함수로 매핑시켰지만, 본 발명의 병렬 CRC 발생 시스템에서는 r를 몇 개로 쪼개어 처리의 이득을 얻고자 한다. 예를 들어 한꺼번에 처리한 입력 데이터가 32개라고 하면, 도 5에 도시된 종래의 병렬 CRC 발생 시스템에서는 r=32가 되고, 본 발명에서는 r = w = 32 / 4 = 8 로 네개의 블록으로 쪼개어 처리를 한다.
이하, 도 8을 참조하여 본 발명의 실시예에 따른 병렬 CRC 발생 방법을 설명한다.
도 8은 본 발명의 실시예에 따른 병렬 CRC 발생 방법을 나타내 순서도이다.
먼저, 입력부(40)는 입력 데이터(I(x)=I0~IM-1)를 병렬 처리 비트 단위(w)로 나누고(S801), 해당 나누어 떨어지지 않은 나머지 입력 데이터(Irest)가 존재하는지를 판단한다(S802). 즉, 상기 입력부(40)는 입력 데이터 I(x)가 (I0~I31)라고 할 때, 해당 입력 데이터 I(x)를 병렬 처리 비트 단위인 w로 나누어, 병렬 처리 입력 데이터 단위(I0~Iw-1, Iw~I2w-1, …, IM-w~IM-1)로 쪼갠다. 예컨대, 상기 입력부(40)는 입력 데이터 I(x)=(I0~I31)가 32 비트라고 할 때, 해당 입력 데이터 I(x)를 병렬 처리 비트 단위인 8 비트로 나누어, 네 개의 병렬 처리 입력 데이터 단위(I0~I7, I8~I15, I16~I23, I24~I31)로 쪼갠다.
이때, 상기 판단 결과(S802), 상기 나머지 입력 데이터가 존재하지 않는 경우에. 상기 입력부(40)는 상기 각각의 병렬 처리 입력 데이터(I0~Iw-1, Iw~I2w-1, …,IM-w~IM-1)를 고차 계산부(50)로 출력한다(S803). 즉, 병렬 처리 입력 데이터 I0~Iw-1는 고차 계산부(50)의 CB(50-1)로 출력되고, 병렬 처리 입력 데이터 Iw~I2w-1는 고차 계산부(50)의 CB(50-2)로 출력되며, …, 병렬 처리 입력 데이터 IM-w~IM-1는 고차 계산부(50)의 CB(50-M)로 출력된다. 상기 예에서, 입력 데이터 I(x)는 네 개의 단위로 쪼개져서 각각의 CB((50-1, 50-2, …, 50-M)로 입력된다.
이에, 상기 고차 계산부(50)에 구비된 다수의 CB(50-1, 50-2, …, 50-M)는 상기 출력된 각각의 병렬 처리 입력 데이터와 기존 CRC를 입력받아 고차 결합행렬(Tw')에 의해 각각의 CRC(S(t+w), S(t+2w), …, S(t+M))를 계산하여 선택부(60)로 출력한다(S803). 상기 예에서, 해당 각각의 CB(50-1, 50-2, …, 50-M)는 Tw' = T8'로 고차 CRC 계산을 수행한 후에 S(t+w)~S(t+M)을 출력한다. 즉, w=8이므로, S(t+8), S(t+16), S(t+24), S(t+32)과 같은 네 개의 상태에 대한 출력이 나온다.
이에 따라, 상기 선택부(60)는 상기 계산된 각각의 CRC를 입력받아 선택 신호(Select)에 따라 선택된 CRC를 출력한다(S805).
이에, 상기 출력부(70)는 상기 선택된 CRC를 입력받아 저장한 후 해당 저장된 CRC(S(t))를 출력한다(S806).
그런 후, 상기 출력부(70)는 처리될 입력 데이터가 남아 있는지를 판단한다(S807).
이때, 상기 판단 결과(S807), 처리될 입력 데이터가 남아 있는 경우에, 상기 출력부(70)는 상기 저장된 CRC를 상기 고차 계산부(50)로 피드백하여 출력한다(S808). 이에, 상기 입력 데이터 나눔 단계(S801)로 회귀하여 상술한 병렬 CRC 처리 동작이 반복된다. 반면에, 상기 판단 결과(S807), 처리될 입력 데이터가 남아 있지 않는 경우에, 병렬 CRC 처리가 종료된다.
한편, 상기 판단 결과(S802), 상기 나머지 입력 데이터가 존재하는 경우에. 상기 입력부(40)는 상기 나머지 입력 데이터(Irest)를 저차 계산부(80)로 출력한다(S809).
이에, 상기 저차 계산부(80)의 CBM(81)은 상기 입력부(40)로부터 상기 나머지 입력 데이터(Irest)를 입력받고 상기 출력부(70)로부터 CRC(S(t))를 입력받아 저차 결합행렬(T1~(w-1)')에 의해 CRC를 계산하여 최종 출력부(90)로 출력한다(S810).
이에 따라, 상기 최종 출력부(90)는 상기 계산된 CRC를 입력받아 저장한 후 해당 저장된 최종 CRC(Sfinal(t))를 출력한다(S811).
본 발명의 병렬 CRC 발생 시스템에서는 한 클럭에 의해 상기 고차 계산부(50), 선택부(60)를 통해 상기 입력 데이터가 처리되어 출력부(70)로 출력되는데, 이때 처리 지연의 크기에 따라 즉, 처리 지연이 작으면 한 클럭에 의해 상기 고차 계산부(50), 선택부(60), 출력부(70), 저차 계산부(80)를 통해 상기 입력 데이터가 처리되어 최종 출력부(90)로 출력되고, 반면 처리 지연이 크면 한 클럭에 의해 상기 고차 계산부(50), 선택부(60), 출력부(70)를 통해 상기 입력 데이터가 처리되고 다시 한 클럭에 의해 저차 계산부(80)를 통해 해당 입력 데이터가 처리되어 최종 출력부(90)로 출력된다.
상술한 상기 나머지 입력 데이터가 존재하지 않는 경우와 존재하는 경우에, 본 발명의 병렬 CRC 발생 시스템의 동작을 도 7을 참조하여 보다 자세하게 설명하면 다음과 같다.
도 7은 본 발명의 병렬 CRC 발생 시스템에 적용되는 입력 데이터 처리 순서 개념도이다.
즉, 도 7은 입력 데이터가 어떻게 들어오느냐에 따라 시나리오(Scenario)별로 정리하여 보여주고 있다.
도 7에서 N0~N32*P+1는 입력 데이터를 나타내고, I0~I31는 도 6에 도시된 본 발명의 병렬 CRC 발생 시스템의 I(x)로 입력되며, S(t)는 입력 데이터의 고차 CRC 계산이 수행된 후 원래의 입력 데이터에 첨가되는 CRC 비트이다.
시나리오별 동작을 살펴보면, 먼저 시나리오-5는 입력 데이터가 병렬 CRC 비트 크기와 동일한 경우 즉 입력 데이터가 병렬 처리 비트 단위인 w로 나누어 떨어지는 경우를 보여주는데, I(x)가 32 비트 단위로 처리되어지고 입력 데이터가 N0~N32*P-1일 때, 스텝-1의 첫번째 입력 데이터 N0~N31는 I0~I31로 매핑되고, 도 6에 도시된 본 발명의 병렬 CRC 발생 시스템의 I(x)로 입력되면, S(t+M)의 값이 선택부(60)를 통해 출력부(70)에 S(t)로 저장된다. 이는 첫번째 32 비트 입력 데이터에 대한 CRC 계산이 완료되었다는 것을 나타낸다. 상술한 스텝-1(N0~N31)에서의 동작과 동일한 동작이 스텝-2(N32~N63)~스텝-P(N32*(P-1)~N32*P-1)까지 진행되고 더 이상 처리되어질 남은 입력 데이터가 없고 나머지 입력 데이터도 없으므로, 최종 S(t+M)값은 출력부(70)에 S(t)로 저장되며, 시나리오-5에서 CRC는 S(t)값이 되게 된다.
반면에, 시나리오-1~시나리오-4는 입력 데이터가 병렬 처리 비트 단위인 w로 나누어 떨어지지 않을 경우를 보여주는데, 상기 예에서, 병렬 CRC 비트 크기가 32 비트이고 병렬 처리 비트 단위 w=8이면, 시나리오-1은 스텝-1(N0~N31)~스텝-P(N32*(P-1)~N32*P-1)까지 진행되어지고 남은 입력 데이터의 크기(D)가 0<D<8일 경우이다. 상기 경우에서는 남은 입력 데이터가 나머지 입력 데이터(Irest)처럼 취급된다. 스텝-1~스텝-P까지는 시나리오-5와 동일하게 진행되고, 출력부(70)에 저장된 최종 S(t)값은 스텝-P까지의 CRC 계산 값이 된다. 두개의 남은 입력 데이터, 즉 나머지 입력 데이터 N32*P, N32*P+1를 처리하기 위해 스텝-P에서 출력부(70)에 저장된 최종 S(t)값이 저차 계산부(80)의 CBM(81)으로 전달되어 저차 결합행렬 T2'를 수행한 후 출력되어 최종 출력부(90)에 최종 CRC 계산 값인 Sfinal(t)로 저장된다. 도 7의 시나리오-1에서 첨가된 CRC 비트가 Sfinal(t)임을 보여주고 있다.
시나리오-2는 스텝-1(N0~N31)~스텝-P(N32*(P-1)~N32*P-1)까지 진행되어지고 남은 입력 데이터의 크기(D)가 8<D<16일 경우이다. 스텝-1~스텝-P까지는 시나리오-5와 동일하게 진행되고, 출력부(70)에 저장된 최종 S(t)값은 스텝-P까지의 CRC 계산 값이 된다. 10개의 남은 입력 데이터 N32*P~N32*P+9를 처리하기 위해 스텝-(P+1)에서는 w 단위로 입력 데이터를 다시 나눈다. 그 결과, 스텝-(P+1)에서의 N32*P~N32*P+7은 앞 스텝과 동일한 방법으로 수행되지만, S(t+w)까지만 수행되고 선택부(60)를 통해 출력부(70)에 S(t)로 저장된다. 그리고, 두개의 남은 입력 데이터, 즉 나머지 입력 데이터 N32*P+8, N32*P+9를 처리하기 위해 스텝-(P+1)에서 출력부(70)에 저장된 최종 S(t)값이 저차 계산부(80)의 CBM(81)으로 전달되어 저차 결합행렬 T2'를 수행한 후 출력되어 최종 출력부(90)에 최종 CRC 계산 값인 Sfinal(t)로 저장된다. 도 7의 시나리오-2에서 첨가된 CRC 비트가 Sfinal(t)임을 보여주고 있다.
시나리오-3는 스텝-1(N0~N31)~스텝-P(N32*(P-1)~N32*P-1)까지 진행되어지고 남은 입력 데이터의 크기(D)가 16<D<24일 경우이다. 스텝-1~스텝-P까지는 시나리오-5와 동일하게 진행되고, 출력부(70)에 저장된 최종 S(t)값은 스텝-P까지의 CRC 계산 값이 된다. 18개의 남은 입력 데이터 N32*P~N32*P+17를 처리하기 위해 스텝-(P+1)에서는 w 단위로 입력 데이터를 다시 나눈다. 그 결과, 스텝-(P+1)에서의 N32*P~N32*P+15은 앞 스텝과 동일한 방법으로 수행되지만, S(t+2w)까지만 수행되고 선택부(60)를 통해 출력부(70)에 S(t)로 저장된다. 그리고, 두개의 남은 입력 데이터, 즉 나머지 입력 데이터 N32*P+16, N32*P+17를 처리하기 위해 스텝-(P+1)에서 출력부(70)에 저장된 최종 S(t)값이 저차 계산부(80)의 CBM(81)으로 전달되어 저차 결합행렬 T2'를 수행한 후 출력되어 최종 출력부(90)에 최종 CRC 계산 값인 Sfinal(t)로 저장된다. 도 7의 시나리오-3에서 첨가된 CRC 비트가 Sfinal(t)임을 보여주고 있다.
시나리오-4는 스텝-1(N0~N31)~스텝-P(N32*(P-1)~N32*P-1)까지 진행되어지고 남은 입력 데이터의 크기(D)가 24<D<32일 경우이다. 스텝-1~스텝-P까지는 시나리오-5와 동일하게 진행되고, 출력부(70)에 저장된 최종 S(t)값은 스텝-P까지의 CRC 계산 값이 된다. 26개의 남은 입력 데이터 N32*P~N32*P+25를 처리하기 위해 스텝-(P+1)에서는 w 단위로 입력 데이터를 다시 나눈다. 그 결과, 스텝-(P+1)에서의 N32*P~N32*P+23은 앞 스텝과 동일한 방법으로 수행되지만, S(t+3w)까지만 수행되고 선택부(60)를 통해 출력부(70)에 S(t)로 저장된다. 그리고, 두개의 남은 입력 데이터, 즉 나머지 입력 데이터 N32*P+24, N32*P+25를 처리하기 위해 스텝-(P+1)에서 출력부(70)에 저장된 최종 S(t)값이 저차 계산부(80)의 CBM(81)으로 전달되어 저차 결합행렬 T2'를 수행한 후 출력되어 최종 출력부(90)에 최종 CRC 계산 값인 Sfinal(t)로 저장된다. 도 7의 시나리오-4에서 첨가된 CRC 비트가 Sfinal(t)임을 보여주고 있다.
또한, 본 발명에 따른 실시예는 상술한 것으로 한정되지 않고, 본 발명과 관련하여 통상의 지식을 가진 자에게 자명한 범위 내에서 여러 가지의 대안, 수정 및 변경하여 실시할 수 있다.
이상과 같이, 본 발명은 병렬 CRC 비트 크기를 몇 개의 병렬 처리 비트 단위로 쪼개어 고차 CRC 계산을 수행함으로써, 종래 보다 훨씬 작은 로직 게이트로 구성할 수 있고 콤비네이션 로직에 의한 처리 지연도 훨씬 작아지게 할 수 있으며, 고차 CRC 계산을 수행하고 나머지 입력 데이터에 대해 저차 CRC 계산을 수행함으로써, 병렬 처리 비트 단위보다 작은 입력 데이터를 처리할 수 있다.

Claims (5)

  1. 입력 데이터를 병렬 처리 비트 단위로 나누어 해당 각각의 병렬 처리 입력 데이터를 출력하는 입력부와;
    상기 출력된 각각의 병렬 처리 입력 데이터와 기존 CRC를 입력받아 고차 결합행렬에 의해 각각의 CRC를 계산하는 다수의 CB를 구비하는 고차 계산부와;
    상기 계산된 각각의 CRC를 입력받아 선택 신호에 따라 선택된 CRC를 출력하는 선택부와;
    상기 선택된 CRC를 입력받아 저장한 후 해당 CRC를 출력하고 피드백하여 상기 고차 계산부로 출력하는 출력부를 포함하여 이루어진 것을 특징으로 하는 병렬 순환 중복 검사 코드 발생 시스템.
  2. 제 1 항에 있어서,
    상기 입력부로부터 상기 입력 데이터를 병렬 처리 비트 단위로 나누어 떨어지지 않은 나머지 입력 데이터를 입력받고 상기 출력부로부터 상기 CRC를 입력받아 저차 결합행렬에 의해 CRC를 계산하는 CBM을 구비하는 저차 계산부와;
    상기 계산된 CRC를 저장한 후 해당 최종 CRC를 출력하는 최종 출력부를 더 포함하여 이루어진 것을 특징으로 하는 병렬 순환 중복 검사 코드 발생 시스템.
  3. 입력 데이터를 병렬 처리 비트 단위로 나누고 해당 나누어 떨어지지 않은 나머지 입력 데이터가 존재하는지를 판단하는 과정과;
    상기 나머지 입력 데이터가 존재하지 않는 경우에 상기 각각의 병렬 처리 입력 데이터를 출력하는 과정과;
    상기 출력된 각각의 병렬 처리 입력 데이터와 기존 CRC를 입력받아 고차 결합행렬에 의해 각각의 CRC를 계산하여 출력하는 과정과;
    상기 계산된 각각의 CRC를 입력받아 선택 신호에 따라 선택된 CRC를 출력하는 과정과;
    상기 선택된 CRC를 입력받아 저장한 후 해당 저장된 CRC를 출력하는 과정을 포함하여 이루어진 것을 특징으로 하는 병렬 순환 중복 검사 코드 발생 방법.
  4. 제 3 항에 있어서,
    상기 나머지 입력 데이터가 존재하는 경우에 해당 나머지 입력 데이터를 출력하는 과정과;
    상기 나머지 입력 데이터를 입력받고 상기 CRC를 입력받아 저차 결합행렬에 의해 CRC를 계산하여 출력하는 과정과;
    상기 계산된 CRC를 입력받아 저장한 후 해당 저장된 최종 CRC를 출력하는 과정을 더 포함하여 이루어진 것을 특징으로 하는 병렬 순환 중복 검사 코드 발생 방법.
  5. 제 3 항에 있어서,
    처리될 입력 데이터가 남아 있는지를 판단하는 과정과;
    상기 처리될 입력 데이터가 남아 있는 경우에 상기 저장된 CRC를 피드백하여 출력하는 과정을 더 포함하여 이루어진 것을 특징으로 하는 병렬 순환 중복 검사 코드 발생 방법.
KR1020020071908A 2002-11-19 2002-11-19 병렬 순환 중복 검사 코드 발생 시스템 및 방법 KR100913467B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020020071908A KR100913467B1 (ko) 2002-11-19 2002-11-19 병렬 순환 중복 검사 코드 발생 시스템 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020020071908A KR100913467B1 (ko) 2002-11-19 2002-11-19 병렬 순환 중복 검사 코드 발생 시스템 및 방법

Publications (2)

Publication Number Publication Date
KR20040043582A true KR20040043582A (ko) 2004-05-24
KR100913467B1 KR100913467B1 (ko) 2009-08-25

Family

ID=37340035

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020020071908A KR100913467B1 (ko) 2002-11-19 2002-11-19 병렬 순환 중복 검사 코드 발생 시스템 및 방법

Country Status (1)

Country Link
KR (1) KR100913467B1 (ko)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100645388B1 (ko) * 2005-11-30 2006-11-14 한국전자통신연구원 임의의 크기의 병렬 처리가 가능한 병렬 crc 생성 장치및 방법
KR100731985B1 (ko) * 2005-12-29 2007-06-25 전자부품연구원 파이프라인 구조 병렬 순환 중복 검사 장치 및 방법
WO2008157591A1 (en) * 2007-06-20 2008-12-24 Texas Instruments Incorporated Generating crc syndromes with data extracted from syndrome loop
US7600179B2 (en) 2003-06-23 2009-10-06 Texas Instruments Incorporated Sparse maximum likelihood decoder for block codes
KR100937031B1 (ko) * 2007-10-15 2010-01-15 한국과학기술원 순환잉여검사 시스템 및 방법
KR101007259B1 (ko) * 2006-01-19 2011-01-13 후지쯔 가부시끼가이샤 패리티 생성 회로, 계수 회로 및 계수 방법
US8161349B2 (en) 2007-08-01 2012-04-17 Samsung Electronics Co., Ltd. Data parallelizing receiver

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19980050154A (ko) * 1996-12-20 1998-09-15 양승택 선택적 병력 crc-32 처리 인코더와 디코더 및 그 병렬처리 방법
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
KR20020033227A (ko) * 2000-10-30 2002-05-06 구자홍 데이터 통신을 위한 병렬 중복순환 검사회로
KR100433632B1 (ko) * 2002-04-09 2004-05-31 한국전자통신연구원 병렬 crc 계산장치 및 그 방법

Cited By (8)

* 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 생성 장치및 방법
KR100731985B1 (ko) * 2005-12-29 2007-06-25 전자부품연구원 파이프라인 구조 병렬 순환 중복 검사 장치 및 방법
KR101007259B1 (ko) * 2006-01-19 2011-01-13 후지쯔 가부시끼가이샤 패리티 생성 회로, 계수 회로 및 계수 방법
WO2008157591A1 (en) * 2007-06-20 2008-12-24 Texas Instruments Incorporated Generating crc syndromes with data extracted from syndrome loop
US8161349B2 (en) 2007-08-01 2012-04-17 Samsung Electronics Co., Ltd. Data parallelizing receiver
KR101286238B1 (ko) * 2007-08-01 2013-07-15 삼성전자주식회사 데이터 병렬화 수신기
KR100937031B1 (ko) * 2007-10-15 2010-01-15 한국과학기술원 순환잉여검사 시스템 및 방법

Also Published As

Publication number Publication date
KR100913467B1 (ko) 2009-08-25

Similar Documents

Publication Publication Date Title
US7543011B2 (en) Montgomery modular multiplier and method thereof using carry save addition
WO2006098015A1 (ja) データ変換装置及びデータ変換方法
US8700971B2 (en) Parallel residue arithmetic operation unit and parallel residue arithmetic operating method
US20190149166A1 (en) Computational devices using thermometer coding and scaling networks on unary encoded data
US7590917B2 (en) Parameter generation for interleavers
KR100354285B1 (ko) 패스트 하다마드 변환 디바이스
KR100913467B1 (ko) 병렬 순환 중복 검사 코드 발생 시스템 및 방법
US20060112320A1 (en) Test pattern compression with pattern-independent design-independent seed compression
US7480691B2 (en) Arithmetic device for multiple precision arithmetic for Montgomery multiplication residue arithmetic
WO2017023195A1 (ru) Способ линейного преобразования (варианты)
Dubrova et al. A BDD-based approach to constructing LFSRs for parallel CRC encoding
US6807555B2 (en) Modular arithmetic apparatus and method having high-speed base conversion function
CN116318660B (zh) 一种消息扩展与压缩方法及相关装置
KR20040048471A (ko) 직렬 유한체 승산기
US6275558B1 (en) Circuit and method for arbitrarily shifting M-sequence
Wu et al. Improving common subexpression elimination algorithm with a new gate-level delay computing method
CN114884517A (zh) 一种crc硬件计算系统及芯片
KR100480997B1 (ko) GF(p)와 GF(2^m)의 유한체 곱셈 연산 장치
Jansen et al. Cascade jump controlled sequence generator and Pomaranch stream cipher
EP3957023A1 (en) Low depth aes sbox architecture for area-constraint hardware
JP4436830B2 (ja) 構成可能なマルチステップ線形フィードバックシフトレジスタ
US11489544B2 (en) Fast CRC computation circuit using an on-the-fly reconfigurable generator polynomial
CN110598172B (zh) 一种基于csa加法器的卷积运算方法和电路
KR0157157B1 (ko) 해쉬 코드 생성 장치
Steen Error correction for voice grade data communication using a communication processor

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
LAPS Lapse due to unpaid annual fee