KR950009690B1 - 순환 여유검사(crc) 동기 장치 - Google Patents

순환 여유검사(crc) 동기 장치 Download PDF

Info

Publication number
KR950009690B1
KR950009690B1 KR1019930018461A KR930018461A KR950009690B1 KR 950009690 B1 KR950009690 B1 KR 950009690B1 KR 1019930018461 A KR1019930018461 A KR 1019930018461A KR 930018461 A KR930018461 A KR 930018461A KR 950009690 B1 KR950009690 B1 KR 950009690B1
Authority
KR
South Korea
Prior art keywords
byte
polynomial
block
bit
output
Prior art date
Application number
KR1019930018461A
Other languages
English (en)
Other versions
KR950009434A (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 KR1019930018461A priority Critical patent/KR950009690B1/ko
Priority to US08/305,789 priority patent/US5715259A/en
Priority to JP6220322A priority patent/JPH07170200A/ja
Publication of KR950009434A publication Critical patent/KR950009434A/ko
Application granted granted Critical
Publication of KR950009690B1 publication Critical patent/KR950009690B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • 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/33Synchronisation based on error coding or decoding

Landscapes

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

Abstract

내용 없음.

Description

순환 여유검사(CRC) 동기 장치
제1도는 종래의 블럭 경계를 구분할 수 있는 순환여유검사(CRC) 동기 장치의 구성도.
제2도는 본 발명에 의한 바이트 동작으로 블럭 경계를 구분할 수 있는 순환여유검사(CRC) 동기장치의 구성도.
제3도는 N바이트 쉬프트 레지스터부, 보상 다항식 구동부, 연산부의 일실시예에 따른 구성도.
* 도면의 주요부분에 대한 부호의 설명
11 : CRC 연산부 12 : 지연부
13 : CRC 연산 도출부 14 : 일치 검출부
21 : N 바이트 쉬프트 레지스터 22 : 보상 다항식 구동부
23 : 연산부 24 : 블럭동기 식별부
25 : 65 : 8 데이터 선택부 300 : 5바이트 쉬프트 레지스터
310 : 보상 다항식 구동기 311~318 : D플립플롭
31~54 : 보상 다항식 모듈로 2빼기용 배타적 OR게이트
330~353 : 생성 다항식 모듈로 2나누기용 배타적 OR게이트
391~398 : 8입력 OR게이트
본 발명은 순환 부호(Cyclic Code)를 사용하는 착오 검출 정정 방식의 하나인 순환여유검사(Cyclic Redundancy Check : 이하, CRC라 함)을 수행함에 있어, 입력되는 데이터가 비트 동기는 되어 있으나 순환 부호의 블럭 경계를 알 수 없을 때에 순환 부호가 내포된 바이트열을 매 바이트마다(byte by byte) 연속적으로 연산하여 블럭의 경계를 식별해내어 바이트 동기된 데이터와 블럭동기 상태를 출력하는 CRC 동기 장치에 관한 것이다.
종래의 CRC장치는 경계가 주어진 상태에서 연산을 하게 구성되어 있는 블럭 경계를 알기 위해서는 블럭을 구성하는 바이트열이 순차적으로 달라질 때마다, 다시 말하면 블럭을 구성하는 부호단어(code word)를 최상위 바이트 방향으로 한 바이트씩 이동하고 새로운 최하위 바이트로 블럭을 구성할 때마다, 블럭을 구성하는 바이트수 만큼의 연산을 다시 반복해서 해야 하는 단점이 있었다(Tong-Bi Pei, “High-Speed Parallel CRC Circuits in VLSI”, IEEE Transaction on Comm, Vol.40, NO.4, April 1992).
종래기술의 세부적인 일실시예를 제1도를 참조하여 살펴보면, 제1도는 요시무라 외 1명이 발명한 일본 특개평 4-284753의 “CRC 연산 방법 및 ATM 교환 방식에 있어서의 HEC 동기장치”의 구성도이다.
도면에 도시한 바와 같이 상기의 종래기술의 구성은, 수신데이타를 입력받고 자신의 출력을 피드백 입력받는 CRC 연산부(11)와, 상기CRC 연산부(11)의 출력을 입력받아 지연시키는 지연부(12)와, 상기 지연부(12)에 연결된 CRC 연산 도출부(13)와, 상기 CRC 연산 도출부(13)의 출력과 CRC 연산부(11)의 출력을 입력받아 두 출력의 일치여부를 검출하는 일치 검출부(14)를 구비한 구성을 갖는다.
제1도에 도시된, 종래의 블럭 경계를 구분할 수 있는 CRC(순환여유검사) 동기 장치는 기존의 문제점인 반복계산을 피할 수 있게 하여 기존의 것 보다는 하드웨어의 양을 줄일 수 있다. 그러나, 이러한 구성은 입력되는 데이타가 최소한 바이트 동기는 되어 있어야 하고 또한, CRC 연산 결과를 지연시킨 후에 새로운 블럭 경계에 대한 CRC연산 결과와 비교하기 때문에 연산된 결과를 비교하는 회로가 부가적으로 삽입될 뿐만 아니라 연산될 결과가 블럭의 최하위 바이트가 출력된 이후에야 알 수 있다는 문제점이 있다.
따라서, 상기 종래기술의 문제점을 해결하기 위하여 안출된 본 발명은, 블럭을 구성하는 비트 또는 바이트 열이 순차적으로 달라지더라도 블럭을 구성하는 비트 또는 바이트 수만큼 연산을 하지 않고 단지 새로이 추가된 바이트 수 또는 블럭에서 제외되는 바이트 수 만큼의 연산을 하여 블럭의 경계를 구별해내고 바이트 동기되고 블럭동기된 데이터를 블럭의 시작 시점전에 출력하는 순환 여유검사(CRC) 동기 장치를 제공하는데 그 목적이 있다.
상기 목적을 달성하기 위해 본 발명은, r(r은 자연수) 비트의 확인 비트와 m(은 r보다 큰 자연수) 비트의 메시지 비트로 구성된 n(n은 r+m인 자연수) 비트인 N바이트의 블럭 부호로 생성 다항식(Generator polynominal) G(x)=xr+…+1를 사용하는 CRC 동기 장치에 있어서, 초기에는 논리레벨 '0'로 N바이트가 모두 초기화되고, 입력된 바이트 열을 N바이트 및 N-1 바이트 쉬프트시켜 쉬프트 된 바이트 열을 출력하는 N바이트 쉬프트 레지스터와 ; 상기 N바이트 쉬프트 레지스터에서 출력되는 최상위 바이트의 각 비트에 대해 상기 생성 다항식으로 모듈로 2나누기를 하고, 남은 나머지(C(x))를 한 비트 상위 비트 방향으로 쉬프트한 보상 다항식(C(x)x)를 구동시키는 보상(compensation)다항식 구동 수단과 ; 기 연산된 나머지를 저장하는 r(r은 생성 다항식의 r)개의 나머지 레지스터(register)의 바이트를 상위 비트로 하고, 데이터 입력단자로부터 입력된 데이터를 하위 비트로 하여, 상위 비트 순서로 r비트와 입력된 모든 비트에 대해서 각각 상기 보상 다항식 구동 수단에서 구동된 다항식(C(x)x)으로 모듈로 2빼기를 한뒤 상기 생성 다항식으로 모듈로 2나누기를 수행한 후 남은 나머지가 '0'인지 아닌지를 나머지결과(syndrome) 출력(RR0~RR(r-1))신호로서 출력하는 연산수단과 ; 상기 연산수단에서 출력되는 나머지결과 출력(RR0~RR(r-1))을 각각 바이트시간 간격으로 검색하여 소정횟수 이상 연속하여 블럭주기 간격으로 동일한 나머지 결과 신호가 출력되는지에 따라 데이터 선택신호와 동기를 알리는 상태신호와 블럭을 식별하기 위한 동기신호를 출력하는 블럭동기 식별수단 ; 및 상기 N바이트 쉬프트 레지스터로부터 출력된 데이터를 입력받아 상기 블럭동기 식별수단에서 출력되는 데이터 선택 신호에 따라 블럭동기를 유발시킨 연산수단의 나머지결과 출력에 딸가 바이트를 구성하는 비트를 선택해서 바이트 동기된 데이터를 출력하는 데이터 선택수단을 구비하도록 하였다.
이하, 첨부된 제2도 이하를 참조하여 본 발명의 일실시예를 상세히 설명한다.
먼저, 본 발명의 주요 구성요소인 N바이트 쉬프트 레지스터와, 보상 다항식 구동부와, 보상 다항식 모듈로 2빼기 및 생성 다항식 모듈로 2나누기 연산을 수행하는 연산부에 대한 동작 원리를 알기 쉽게 설명하기 위하여 수학적 해석으로 설명해 보면 다음과 같다.
블럭의 크기는 n비트이고, G(x)의 생성 다항식으로 전송되며 블럭 경계를 모르는 임의의 순간 k에 n비트 블럭을 Tk(x)로 하고, CRC 장치로 입력되는 비트 열 중에 k 순간에 입력되는 비트를 ak이고, 비트 열중에 K+1 순간에 입력되는 비트가 ak+1일때, K+1인 순간에 n비트 블럭을 Tk+1(x)로 하면 k 순간의 n비트 불럭은,
Tk(x)=ak-n-1xn-1+Bk(x)+ak
로 되며 여기서 ak-n-1xn-1는 K 순간에 n비트 블럭의 최상위 비트이고, ak-n-1은 k-n-1인 순간에 입력된 비트(k순간에 대해서 n-1번 전의 비트)를 의미하며, ak는 k 순간에 n비트 블럭의 최하위 비트이고 k순간에 입력된 비트를 의미하고, Bk(x)는 k순간에 n비트 블럭에서 최상위 비트와 최하위 비트를 제외한 나머지 비트이다. 또한, k+1 순간의 n비트 블럭은,
Tk+1(x)=ak-nxn-1+Bk+1(x)+ak+1
로 되며 여기서 ak-nxn-1는 k+1순간에 n비트 블럭의 최상위 비트이고, ak-n은 k-n인 순간에 입력된 비트를 의미하며, ak+1는 k+1순간에 n비트 블럭의 최하위 비트이고 k+1 순간에 입력된 비트를 의미하고, Bk+1(x)k+1 순간에 n비트 블럭에서 최상위 비트와 최하위 비트를 제외한 나머지 비트이다. 임의의 k순간에 n비트 블럭을 생성 다항식 G(x)로 모듈로(modulo) 2나누기를 한 결과는 {ak-n-1xn-1+Bk(x)+ak}/G(x)이고, {ak-n-1xn-1+Bk(x)+ak}/G(x)의 나머지를 Rx(x)로 하고, ak-n-1xn-1/G(x)의 나머지를 Ck(x)로 하면 {Bk(x)+ak}/G(x)의 나머지는 Rx(x)-Cx(x)이다.
그런데, k+1인 순간의 n비트 블럭은 Tk+1(x)=(Bk(x)+ak)x+ak+1이므로 K+1순간에 n비트 블럭을 생성 다항식 G(x)로 모듈로 2나누기를 한 결과는 [{Bk(x)+ak}x]/G(x)+ak+1/G(x)이고, [{Bk(x)+ak}x]/G(x)의 나머지는 {Rk(x)-Ck(x)}x이기 때문에 Tk+1/G(x)의 나머지는 {Rk(x)-Ck(x)}x+ak+1/G(x)의 나머지와 같다.
제2도는 본 발명에 개략적인 구성을 나타내는 기능 블록도로, 21은 N바이트 쉬프트 레지스터, 22는 보상 다항식 구동부, 23은 보상 다항식 모듈로 2빼기 및 생성 다항식 모듈로 2나누기를 수행하는 연산부, 24는 블럭동기 식별부, 25는 64 : 8 데이터 선택부를 각각 나타낸다.
도면에 도시한 바와 같이 본 발명에 따른 바이트 동작으로 블럭 경계를 구분할 수 있는 CRC 동기장치는, 비트 동기된 입력데이터를 입력받은 N바이트 쉬프트 레지스터(21)와, 상기 N바이트 쉬프트 레지스터(21)의 출력단에 연결된 보상 다항식 구동부(22)와, 상기 비트 동기된 입력데이터를 입력받고 상기 보상 다항식 구동부(22)의 출력을 입력받아 보상 다항식 모듈로 2빼기 및 생성 다항식 모듈로 2나누기를 수행하는 연산부(23)와, 상기 연산부(23)에 연결된 블럭동기 식별부(24)와, 상기 N바이트 쉬프트 레지스터(21)와 블럭 동기 식별부(24)에 연결되어 바이트 동기된 출력데이타를 출력하는 64 : 8 데이터 선택부(25)를 구비한다.
상기 N바이트 쉬프트 레지스터(21)는 초기에는 논리레벨 '0'로 N바이트가 모두 초기화 되어 있고, 복호되어질 바이트를 한 바이트씩 순차적으로 쉬프트시켜 바이트 열을 N바이트 저장하고, 시간 K+N인 순간에 K순간에 입력되었던 바이트(B15, B14, …, B8)를 보상 다항식 구동부(22)로 출력하고 K+1순간에 입력되었던 바이트(B7, B6, …, B0)와 K순간에 입력되었던 바이트(B15, B14, …, B8)중에 B15을 제외한 바이트를 64 : 8 데이터 선택부(25)로 출력한다.
상기 보상 다항식 구동기(22)는 상기 B바이트 쉬프트 레지스터(21)에 연결되어, 상기 N바이트 쉬프트 레지스터(21)의 N번째 단에서 출력되는 최상위 바이트의 비트를 Bs+8xs(s는 0에서 7까지의 정수로 Bs는 0 또는 1을 갖는 계수이며 B15는 최상위 비트의 계수로 0 또는 1이고, B8는 최하위 비트 계수로 0 또는 1)라 할때, 이 최상위 바이트의 각 비트(Bs+8xs)에 대해 상기 생성 다항식(G(x))으로 모듈로 2 나누기를 하고, 남은 나머지를 한 비트 상위 비트 방향으로 쉬프트한 C(x, Bs+8Xs)xs=Bs+8xs{ar-1xr-1+ar-2xr-2+…+a2x2+a1x1+a0}x를 구동시킨다.
따라서, 상기 N 바이트 쉬프트 레지스터(21)에서 출력되는 바이트가 '0'이면 C(x, Bs+8xs)x=0을 구동시킨다.
보상 다항식 모듈로 2빼기 및 생성 다항식 모듈로 2나누기를 수행하는 연산부(23)는 상기 보상 다항식 구동부(22)에 연결되어 바이트 간격마다, 입력되는 바이트 열에 대해서, 초기에는 '0'으로 초기화되어 나머지 레지스터의 출력을 상위 비트로 하고 입력되는 바이트를 하위 비트로 하여 상기 보상 다항식 구동부(22)에서 구동된 C(x, B15x7)x 다항식으로 상위 비트 순으로 모듈로 2빼기를 한 후, 상기 생성 다항식 G(x)로 모듈로 2나누기를 하여 남은 나머지를 '0'인지를 판별하여 제1나머지 결과 출력(RR0) 단자로 출력하고, 남은 나머지를 상위 비트로 하고 입력된 바이트의 다음 비트를 하위 비트로 하여 다시 상기 보상 다항식 구동부(22)에서 구동된 C(x, B14x8)x 다항식으로 모듈로 2빼기를 한 후, 상기 생성 다항식 G(x)로 모듈로 2나누기를 상기 보상 다항식 구동부(22)에서 구동된 C(x, B8)x 다항식까지 1바이트에 대해서 각각 순차적으로 연산을 반복하여 상기 생성 다항식 G(x)로 모듈로 2나누기를 할 때 마다 그 결과 나머지가 '0'인지를 판별하여 제1에서 제8까지의 나머지결과 출력(RR0 내지 RR7) 단자로 출력한다.
상기 블럭동기 식별부(24)는 블럭 경계를 식별하는 기능을 수행하되, 블럭 비동기 상태와 블럭 동기 상태의 두가지 상태에서 각각 블럭경계를 식별하고, 블럭 비동기 상태에서는 바이트단위 검색과정 및 블럭단위 검색과정을 수행한다.
블럭 비동기 상태에서는, 상기 연산부(23)에서 출력되는 8개의 나머지결과 출력(RR0~RR7)을 각각 바이트시간 간격으로 검색하여(바이트 검색과정 상태) 나머지가 '0'인 결과를 출력한 나머지결과 출력단자에서 j(j는 자연수)번 연속해서 출력하면 블럭동기 상태를 선언하며 블럭동기 상태를 출력한다.
블럭 동기 상태에서는, 블럭동기 상태를 유발한 나머지 결과 출력단자에서 나머지가 '0'이 아닌 결과를 i(i는 자연수)번 연속해서 출력하면 블럭 비동기 상태로 복구되며 블럭 비동기 상태를 출력하고 상기 바이트 단위 검색과정을 수행한다. 또한 블럭 동기상태에서 블럭동기 상태를 유발시킨 나머지 결과 출력(RR0~RR7)을 식별하여 3비트 데이터로 출력하며 주기적으로 나머지 '0'을 출력하는 시점을 출력되는 바이트간격에 동기되게 출력한다.
64 : 8 데이터 선택부(25)는 상기 블럭 동기 식별부(24)로부터 블럭동기를 유발시킨 나머지결과 출력에 따라 바이트를 구성하는 비트를 선택해서 바이트 동기된 데이터를 출력하는 기능을 수행한다.
예를들어, 상기 연산부(23)에서 출력되는 제1나머지 결과 출력(RR0)에 의해서 블럭동기 상태가 선언되었으면 상기 N바이트 쉬프트 레지스터(21)의 N번째단 바이트의 최상위 비트인 B15를 제외한 7비트, B14, B13, …, B8와 N-1번째단 바이트의 최상위 비트인 B7로 구성되는 바이트(B14이 최상위 비트이고 B7이 최하위 비트임)을 출력하고, 일반적으로 상기 연산부(23)에서 출력되는 제z(z는 1, 2, 3, 4, 5, 6, 7, 8) 나머지 결과 출력(RR(z-1))에 의해서 블럭동기 상태가 선언되었으면 상기 N바이트 쉬프트 레지스터(21)의 N번째단 바이트의 B15-z, B15-(z-1), …, B8(B15-z이 최하위 비트)와 N-1번째단 바이트의 B7…, B7-(z-1)(B7-(z-1)이 최하위 비트)로 구성되는 바이트를 선택하여 출력한다.
즉, 상기 연산부(23)에서 출력되는 제z(z는 1, 2, 3, 4, 5, 6, 7, 8) 나머지결과 출력(RR(z-1)에 의해서 블럭동기 상태가 K+N(N, K는 바이트 시간 간격을 나타내는 정수)순간에 선언되면, K+N 순간에 입력되는 바이트를 하위 비트로 하고 K순간에 입력되었던 바이트를 상위비트로 하는 블럭이 형성되는데, 이때에 어느 나머지결과 출력에 의해서 블럭동기가 선언되었는가에 따라 블럭 경계가 정확히 비트단위까지 구분되어진다. 만일, 제z(z는 1, 2, 3, 4, 5, 6, 7, 8) 나머지 결과 출력(RR(z-1)에 의해서 블럭동기 상태가 선언되면, 상기 N바이트 쉬프트 레지스터(21)의 N번째단 바이트의 최상위 비트로부터 z개 제외되며 N-1번째단 바이트의 최상위 비트로부터 z개 추가되는 바이트를 구성하여 64 : 8 데이터 선택부(25)에서 출력하게 된다.
제3도는 제2도의 N바이트 쉬프트 레지스터(21)와 보상 다항식 구동부(22) 및 연산부(23)의 일실시예에 따른 구성도로서, 도면에서 300은 5바이트 쉬프트 레지스터, 311~318은 D플립플롭, 31~54는 보상 다항식 모듈로 2빼기용 배타적 OR게이트, 330~353은 생성 다항식 모듈로 2나누기용 배타적 OR게이트, 310은 보상 다항식 구동회로, 391~398은 8입력 OR게이트를 각각 나타낸다.
CCITT에서 권고한 ATM(Asynchronous Transfer Mode)방식의 UNI(User Network Interface)에서 사용하는 ATM셀에 대한 순환 부호는 53 옥텟(octet)에서 순환 부호 블럭은 5바이트(40비트)이며, 확인 비트수는 1바이트(8비트)이고, 생성 다항식은 G(x=x8+x2+x+1이며 2진수로 표시하면 10000011인 소수(prime number)이다. 따라서, 보상 다항식(C(x, Bs+8)xs)는 x39를 x8+x2+x+1로 모듈로 2 나눈 나머지 x5+x4+x+1를 상위 비트 방향으로 s+1 비트 쉬프트시킨 Bs+8xs{x5+x4+x+1)x이고 2진수로 표시하면 Bs+8xs(1100010)이다. 즉, 보상 다항식(C(x, 1)x)은 x39를 x8+x2+x+1로 모듈로 2로 나눈 나머지인 x5+x4+x+1를 상위 비트 방향으로 한 비트 쉬프트시킨 {x5+x4+x+1}x이고 2진수로 표시하면 1100010이다.
제3도에 도시된 보상 다항식 구동회로(310)는 미리 계산된 결과로부터 단지 5바이트 쉬프트 레지스터의 출력을 이용하여 간단하게 구동되며, 보상 다항식 모듈로 2빼기 및 생성 다항식 모듈로 2나누기를 수행하는 연산회로에서 '0'항은 의미가 없으므로 생략되었다. 도면을 참조하여 세부적인 동작을 살펴보면 다음과 같다.
데이터 바이트 열은 5바이트 쉬프트 레지스터(300)의 데이터 입력단자와 보상 다항식 모듈로 2빼기 및 생성 다항식 모듈로 2나누기를 수행하는 연산회로로 각각 입력된다. 5바이트 쉬프트 레지스터(300)는 초기에 논리레벨 '0'로 초기화되어 있기 때문에 5바이트 단위간격 동안 '0'을 출력하게 된다. 따라서, 초기에 5바이트 단위간격 동안은 보상 다항식 구동회로(310)에 의해서 보상 다항식 모듈로 2빼기(31~54) 및 생성 다항식 모듈로 2나누기 회로(330~353)는 영향을 받지 않는다.
K+5순간에(K는 바이트 시간간격을 의미하는 정수) 보상 다항식 모듈로 2빼기(31~54) 및 생성 다항식 모듈로 2나누기 회로(330~353)는, 초기에 5바이트 단위간격이 지난 후, K순간에 입력된 바이트의 비트를 블럭의 상위 비트로 하고 K+5 순간에 입력된 바이트의 비트를 블럭의 하위 비트로 하는 블럭을 생성 다항식인 소수 100000111로 모듈로 2 나눈 나머지를 상위 비트로 하고 K순간에 입력된 바이트를 하위 비트로하여 보상 다항식 모듈로 2빼기 및 생성 다항식 모듈로 2나누기를 하게 된다.
이때에 K순간에 입력된 바이트의 최상위 비트가 논리레벨 '0'이면 보상 다항식 모듈로 2빼기(31~54) 및 생성 다항식 모듈로 2나누기 회로(330~353)는 나머지 레지스터(311~318)의 상위 비트부터 생성 다항식인 소수 100000111로 모듈로 2나누기를 수행하고 반면에 K순간에 입력된 바이트의 최상위 비트가 논리레벨 '1'이면 보상 다항식 모듈로 2(31~54) 빼기 및 생성 다항식 모듈로 2 나누기 회로(330~353)에서 연산될 데이터의 상위 비트부터 상기 보상 다항식 생성 회로에서 구동된 x7(x5+x4+x+1)x 보상 다항식으로 모듈로 2빼기를 실행한 후에 생성 다항식인 소수 100000111로 모듈로 2나누기를 수행하며, 나머지를 8입력 OR게이트에 입력하여 나머지가 '0'이면 이를 검출하여 제1나머지 결과 출력(RR0)으로 출력하고, K순간에 입력된 바이트의 최상위 다음 비트가 논리레벨 '0'이면 상기 연산이 수행된 결과에 대한 나머지를 상위 비트로 하고 입력된 바이트 데이터의 다음 비트를 최하위 비트로 하는 다항식에 대해 생성 다항식인 소수 100000111로 모듈로 2나누기를 수행하여 나머지를 8입력 OR게이트에 입력하여 나머지가 '0'이면 이를 검출하여 제2나머지결과 출력(RR1)으로 출력한다. 그런데 K순간에 입력된 바이트의 최상위 다음 비트가 논리레벨 '1'이면 상기 다항식(상기 연산이 수행된 결과에 대한 나머지를 상위 비트로하고 입력된 바이트 데이터의 다음 비트를 최하위 비트로 하는 다항식)에 대해 상기 보상 다항식 생성 회로에서 구동된 X6(X5+X4+X+1)X 보상 다항식으로 모듈로 2빼기를 실행한 후에 생성 다항식인 소수 100000111로 모듈로 2나누기를 수행하며, 나머지를 8입력 OR게이트에 입력하여 나머지가 '0'이면 이를 검출하여 제2나머지 결과 출력(RR1)으로 출력하는 가정을 K순간에 입력된 바이트의 최하위 비트(입력된 바이트의 최하위 비트)까지 병령(바이트 단위로) 반복 수행한다.
따라서, K+5 순간에 보상 다항식 모듈로 2빼기(31~54) 및 생성 다항식 모듈로 2나누기 회로(330~353)로부터 출력되어 D플립플롭(391~398)로 입력되는 입력들은 K+1 순간부터 K+5순간까지 입력된 블럭을 소수 100000111로 모듈로 2 나눈 나머지를 나타낸다. 만일 8입력 OR게이트(391~398)의 출력중에 적어도 한개가 '0'가 아니면(나머지가 0이 아니면) CRC의 정의에 따라 K+1 순간부터 K+5순간까지 입력된 블럭은 순환 부호 블럭이 아니다.
K+6인 순간에 5바이트 쉬프트 레지스터(300)의 출력에서 K+1 순간에 입력되었던 바이트(K순간에 상위 바이트)의 비트 중에 논리레벨 '1'인 비트가 있으면 해당 비트에 해당하는 순차적인 연산 순간에 K+5순간의 나머지가 입력된 나머지 레지스터(311~318)의 출력을 상위 비트로 한 다항식을 보상 다항식으로 모듈로 2빼기를 한 후에 K+1 순간에 입력된 바이트를 하위 비트로 구성하여 생성 다항식으로 모듈로 2나누기를 비트단위로 수행하고 나머지가 '0'인지를 8입력 OR게이트로 검색하여 출력하게 된다.
결국 CRC 기능은 바이트간격으로 실행되며 순환 부호 블럭이 형성되면 8개의 8입력 OR게이트(311~318)중에, 한 8입력 OR게이트의 모든 8입력이 모두 '0'이 되는 것이 블럭주기로 반복해서 입력된다.
한편, 입력되는 데이터 비트가 임의 값을 가질 수 있기 때문에 가짜 순환 부호 블럭이 생성될 수 있는데 이것은 검출된 순환 부호 블럭이 주기적인가 아닌가로서 가짜 순환 부호 블럭을 검출해낼 수 있는데 이 기능은 블럭동기 식별기에서 수행하게 된다.
따라서, 본 발명은 상기와 같은 회로 구성을 사용하여 단지 비트동기만 되어 입력되는 데이터의 순환 부호 블럭의 경계를 바이트간격으로 검색하여 블럭 경계도 구분할 뿐만 아니라 바이트 바이트 동기로 맞출 수 있기 때문에 종래의 CRC 동기 장치와 대체할 수 있으며 다음과 같은 특유한 효과를 갖는다.
첫째, 순환 부호 블럭 경계가 바뀌더라도 기존의 연산된 결과와 보상식으로 순환 부호를 복사하기 때문에 구현이 간단해진다.
둘째, 바이트 단위간격으로 순환 부호화하기 때문에 저속의 논리소자로 구현이 가능하다.
세째, 입력되는 데이터를 블럭의 크기만큼 저장하기 때문에 블럭동기 검출 신호와 블럭 데이터 간에 타이밍을 맞추기 위해 따라 데이터 지연회로를 사용할 필요가 없다.

Claims (1)

  1. r(r : 자연수)비트의 확인 비트와 m(m은 r보다 큰 자연수) 비트의 메시지 비트로 구성된 n(n은 r+m인 자연수)비트인 N바이트의 블록 부호로 생성 다항식(Generator polynominal) G(x)=xr+……+1를 사용하는 CRC 동기 장치에 있어서, 초기에는 논리레벨 '0'으로 N바이트가 모두 초기화되고, 입력된 바이트 열을 N바이트 및 N-1 바이트 쉬프트시켜 쉬프트 된 바이트 열을 출력하는 N바이트 쉬프트 레지스터와 ; 상기 N바이트 쉬프트 레지스터에서 출력되는 최상위 바이트의 각 비트에 대해 상기 생성 다항식으로 모듈로 2나누기를 하고, 남은 나머지를 (C(x))를 한 비트 상위 비트 방향으로 쉬프트한 보상 다항식(C(x)x)을 구동시키는 보상(compensation) 다항식 구동 수단 ; 기 연산된 나머지를 저장하는 r(r은 생성 다항식의 r)개의 나머지 레지스터(register)의 바이트를 상위 비트로 하고, 데이터 입력단자로부터 입력된 데이터를 하위 비트로 하여, 상위 비트 순서로 나머지 r비트와 입력된 모든 비트에 대해서 각각 상기 보상 다항식 구동 수단에서 구동된 다항식(C(x))으로 모듈로 2빼기를 한뒤 상기 생성 다항식으로 모듈로 2나누기를 수행한 후 남은 나머지가 '0'인지 아닌지를 나머지결과(syndrome) 출력(RR0 내지 RR(r-1))신호로서 출력하는 연산수단과 ; 상기 연산수단에서 출력되는 나머지결과 출력(RR0 내지 RR(r-1))을 각각 바이트시간 간격으로 검색하여 소정횟수 이상 연속하여 블럭주기 간격으로 동일한 나머지 결과 신호가 출력되는지에 따라 데이터 선택신호와 동기를 알리는 상태신호와 블럭을 식별하기 위한 동기신호를 출력하는 블럭동기 식별수단 ; 및 상기 N바이트 쉬프트 레지스터로부터 출력된 데이타를 입력받아 상기 블럭동기 식별수단에서 출력되는 데이터 선택 신호에 따라 블럭동기를 유발시킨 연산수단의 나머지결과 출력에 따라 바이트를 구성하는 비트를 선택해서 바이트 동기된 데이터를 출력하는 데이터 선택수단을 구비하여 바이트 동작으로 블럭 경계를 구분할 수 있도록 한 것을 특징으로 하는 CRC 동기 장치.
KR1019930018461A 1993-09-14 1993-09-14 순환 여유검사(crc) 동기 장치 KR950009690B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1019930018461A KR950009690B1 (ko) 1993-09-14 1993-09-14 순환 여유검사(crc) 동기 장치
US08/305,789 US5715259A (en) 1993-09-14 1994-09-14 Cyclic redundancy check synchronizer
JP6220322A JPH07170200A (ja) 1993-09-14 1994-09-14 巡回冗長検査同期装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019930018461A KR950009690B1 (ko) 1993-09-14 1993-09-14 순환 여유검사(crc) 동기 장치

Publications (2)

Publication Number Publication Date
KR950009434A KR950009434A (ko) 1995-04-24
KR950009690B1 true KR950009690B1 (ko) 1995-08-26

Family

ID=19363501

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019930018461A KR950009690B1 (ko) 1993-09-14 1993-09-14 순환 여유검사(crc) 동기 장치

Country Status (3)

Country Link
US (1) US5715259A (ko)
JP (1) JPH07170200A (ko)
KR (1) KR950009690B1 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09116541A (ja) * 1995-10-16 1997-05-02 Toshiba Corp 通信制御装置
JP3441589B2 (ja) * 1996-02-29 2003-09-02 シャープ株式会社 同期検出復調回路
US5844923A (en) * 1996-10-24 1998-12-01 At&T Corp Fast framing of nude ATM by header error check
KR100251634B1 (ko) 1997-08-29 2000-04-15 윤종용 다위상구조를가지는디지털수신기
US20020155936A1 (en) * 2001-04-23 2002-10-24 Wied Randy C. Modular pouch machine
US6928608B2 (en) * 2001-08-14 2005-08-09 Optix Networks Ltd. Apparatus and method for accelerating cyclic redundancy check calculations
JP2003078421A (ja) * 2001-09-04 2003-03-14 Canon Inc 符号系列の先頭位置検出方法とその装置、それを用いた復号方法とその装置
US6968492B1 (en) 2002-03-28 2005-11-22 Annadurai Andy P Hardware-efficient CRC generator for high speed communication networks
US7137046B2 (en) * 2003-08-12 2006-11-14 Broadcom Corporation High speed comparator for 10G SERDES
US20050114751A1 (en) * 2003-11-24 2005-05-26 Ungstad Steve J. Two input differential cyclic accumulator
JP4391562B2 (ja) 2005-03-04 2009-12-24 富士通株式会社 無線通信装置
WO2016046883A1 (ja) * 2014-09-22 2016-03-31 株式会社ソシオネクスト 受信回路、集積回路及び受信方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4404676A (en) * 1981-03-30 1983-09-13 Pioneer Electric Corporation Partitioning method and apparatus using data-dependent boundary-marking code words
US5109385A (en) * 1989-04-27 1992-04-28 International Business Machines Corporation Enhanced data formats and machine operations for enabling error correction
US5172381A (en) * 1989-04-27 1992-12-15 International Business Machines Corporation Enhanced data formats and machine operations for enabling error correction
US5103451A (en) * 1990-01-29 1992-04-07 Motorola, Inc. Parallel cyclic redundancy check circuit
JPH04211547A (ja) * 1990-03-20 1992-08-03 Fujitsu Ltd 同期回路
EP0470451A3 (en) * 1990-08-07 1993-01-20 National Semiconductor Corporation Implementation of the high-level data link control cyclic redundancy check (hdlc crc) calculation
US5131012A (en) * 1990-09-18 1992-07-14 At&T Bell Laboratories Synchronization for cylic redundancy check based, broadband communications network
CA2050123C (en) * 1990-10-11 1997-12-09 Subrahmanyam Dravida Apparatus and method for parallel generation of cyclic redundancy check (crc) codes
US5251215A (en) * 1992-01-13 1993-10-05 At&T Bell Laboratories Modifying check codes in data packet transmission
US5375127A (en) * 1992-03-25 1994-12-20 Ncr Corporation Method and apparatus for generating Reed-Soloman error correcting code across multiple word boundaries

Also Published As

Publication number Publication date
US5715259A (en) 1998-02-03
JPH07170200A (ja) 1995-07-04
KR950009434A (ko) 1995-04-24

Similar Documents

Publication Publication Date Title
JP2655547B2 (ja) Crc演算方法及びatm交換方式におけるhec同期装置
US4723243A (en) CRC calculation machine with variable bit boundary
EP0230730B1 (en) CRC calculation machines
KR950009690B1 (ko) 순환 여유검사(crc) 동기 장치
US4720830A (en) CRC calculation apparatus having reduced output bus size
AU669746B2 (en) Method and device for detection and correction of errors in ATM cell headers
JPH04211547A (ja) 同期回路
US4312069A (en) Serial encoding-decoding for cyclic block codes
JPH10190695A (ja) 高速フレーミング装置およびデータのバイトシーケンスを高速フレーミングする方法
US4691319A (en) Method and system for detecting a predetermined number of unidirectional errors
US4720831A (en) CRC calculation machine with concurrent preset and CRC calculation function
EP0537407B1 (en) Flexible encoding method and architecture for high-speed data transmission and storage
US6725415B2 (en) Arithmetic unit performing cyclic redundancy check at high speed
RU2003136099A (ru) Способ и схема синхронного приема при высокоскоростной передаче данных от абонента на центральный узел в системе оптической передачи данных
US5694405A (en) Encoder and decoder of an error correcting code
EP0444661A2 (en) Electronic circuit for generating error detection codes for digital signals
US5764876A (en) Method and device for detecting a cyclic code
KR950009689B1 (ko) 바이트 동기된 데이터에서 블럭 경계를 구분할 수 있는 순환여유검사장치
EP0737390B1 (en) Device for establishing cell boundaries in a bit stream and crc calculation
KR950010771B1 (ko) 바이트 동기된 데이터에서 블럭 경계를 구분할 수 있는 crc(순환여유검사)장치
US4859815A (en) Serial link transparent mode disparity control
EP0431416A2 (en) Apparatus and method for accessing a cyclic redundancy error check code generated in parallel
KR100200566B1 (ko) Atm 교환기의 crc 생성 회로
KR950010919B1 (ko) 코드의 쉬프트와 가산 특성을 이용한 동기획득 장치 및 방법
KR100439225B1 (ko) 고속 데이터의 오류 검증회로

Legal Events

Date Code Title Description
A201 Request for examination
N231 Notification of change of applicant
G160 Decision to publish patent application
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20040730

Year of fee payment: 10

LAPS Lapse due to unpaid annual fee