KR0166251B1 - 고속 crc 부호기 - Google Patents
고속 crc 부호기 Download PDFInfo
- Publication number
- KR0166251B1 KR0166251B1 KR1019950005329A KR19950005329A KR0166251B1 KR 0166251 B1 KR0166251 B1 KR 0166251B1 KR 1019950005329 A KR1019950005329 A KR 1019950005329A KR 19950005329 A KR19950005329 A KR 19950005329A KR 0166251 B1 KR0166251 B1 KR 0166251B1
- Authority
- KR
- South Korea
- Prior art keywords
- register
- bit
- data
- crc
- output
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/09—Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding 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)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- General Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Error Detection And Correction (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
본 발명은 소정 비트단위의 데이타를 입력하여 각 비트별로 동시에 연산하여 소정 길이의 프레임 검사 시퀀스(FCS)를 발생하는 CRC부호기에 관한 것으로, 소정 비트단위로 데이타를 입력하는 입력레지스터(10)와; 소정 길이의 이전의 CRC 레지듀값을 저장하고 있는 레지듀 레지스터(20); 소정 비트 × 소정 길이의 매트릭스 구조로 구성된 연산소자(PE[1,1]) ~ PE[8,10])를 이용하여 상기 입력레지스터(10)의 데이타를 각 비트별로 상기 레지듀 레지스터(20)의 출력과 연산하는 연산부(40); 및 상기 연산부(40)의 출력을 버퍼링하는 출력버퍼(30)를 구비하여 다수 비트의 데이타를 동시에 CRC 연산하므로서 처리속도를 향상시켜 고속으로 CRC부호를 발생할 수 있는 효과가 있다.
Description
제1도는 종래의 CRC부호기의 예를 개략적으로 도시한 블럭도.
제2도는 본 발명에 따른 CRC부호기를 도시한 블럭도이다.
* 도면의 주요부분에 대한 부호의 설명
10 : 입력 레지스터 20 : 이전 CRC레지듀 레지스터
30 : 출력 레지스터 40 : CRC연산부
PE : 연산소자
본 발명은 데이터 전송중에 발생된 에러를 검출하기 위한 에러검출 코드의 일종인 순환중복검사(CRC:Cyclic Redundancy Check)코드를 발생하는 CRC부호화기에 관한 것으로 특히, 다수의 비트 단위로 입력되는 데이터를 다수의 비트단위로 처리하여 고속으로 CRC 부호화를 수행할 수 있는 고속 CRC부호기에 관한 것이다.
일반적으로, 디지탈 데이터를 특정한 전송로를 통해 전송할 경우에 상기 전송로의 특성에 따라 전송신호가 열화되어 에러가 발생되는 경우가 있는 바, 상기와 같은 에러를 검출하기 위한 방법으로 패리티 체크(Parity Check), 순환중복검사(CRC)방법이 널리 사용되며 더 나아가서, 에러를 검출하고 정정할 수 있는 에러정정(ECC:Error Correction Code)방법들이 다양하게 제시되어 있다.
즉, 데이터 전송중에, 전송신호에는 전송로를 통과하면서 감쇠현상, 지연왜곡, 잡음등이 발생되어 에러를 유발시키게 되고, 데이터의 특성에 따라서는 작은 에러가 치명적인 문제를 일으킬 수 있다. 따라서, 데이터 전송중의 에러를 검출하거나 검출하여 정정하기 위한 다양한 기술들이 개발되어 통신시스템에서 사용되고 있다.
순환중복검사(CRC:Cyclic Redundancy Check)란 프레임( 혹은 패킷) 단위로 전송되는 데이터의 에러를 검출하기 위한 에러검출코드로서, k 비트의 프레임이나 메세지에 대하여 송신기는 프레임검사시퀀스(FCS)라는 n비트의 코드를 생성하여 k+n개의 비트로 이루어진 전송 프레임을 송신하고, 이때 전송 프레임이 미리 정해진 다항식(P(x))에 의해 나누어 떨어지도록 n값을 설정하여 수신단에서는 수신된 전송 프레임을 동일한 상기 다항식(P(x))으로 나누어 나머지가 없으면 에러가 없는 것으로 간주한다.
이러한 CRC를 수행하는 몇가지 프로시저를 살펴보면, 첫째로, 2진수와 모듈로 2 산술을 사용하는 것으로서, 모듈로 2 산술은 캐리없는 2진 덧셈을 사용하며 마치 배타적 오아 연산과 같다. 먼저, T를 전송될 (k+n)비트 프레임( nk 인 경우 )이라 하고, M을 k비트 메세지로서 T의 첫 k개 비트라 하고, F를 n비트의 FCS(Frame Check Sequence)로서 T의 마지막 n비트라고 하고, P를 (n+1)비트의 패턴 즉, 미리 정해진 젯수라 하자.
그러면,가 나머지를 가지지 않게 하기 위하여 T=2nM + F, 즉 M에 2n을 곱함으로서 M을 n비트 왼쪽으로 시프트하고, 0을 채워 넣는다. F를 더하는 것은 M과 F를 접합(concaternation)시키는 것이 된다. 이제 T가 P로 나누어 떨어지도록 하면이다. 여기서, 몫과 나머지가 있으며 2진 나눗셈이므로 나머지는 젯수보다 언제나 한 비트 적다. 이 나머지를 FCS로 사용하면 T = 2n+R이 된다. 따라서 단순히 P로 2nM을 나누고, 그 나머지를 FCS로 사용한다.
CRC프로세스의 두번째 방식은 모든 값을 2진계수를 가진 임시변수 X를 사용하여 다항식으로 나타낸다. 계수는 2진수의 비트에 해당한다. 따라서 M=110011이면, M(X) = X5+ X4+ X + 1이고, P=11001이면 X4+ X3+ 1이다. 이와 같이 다항식 P(X)를 이용하는 경우, 널리 사용되는 다항식은 CRC-12, CRC-16, CRC-CCITT, CRC-32등이 있다.
상기와 같은 CRC코드를 발생하는 종래의 CRC부호화기는 제1도에 도시된 바와 같이, 다수의 플립플롭과 배타적 오아 게이트로 구현되어 입력되는 데이터를 비트단위로 처리하였다. 즉, 제1도에 있어서, 입력 데이터(Din) 비트는 배타적 오아게이트(3-1)로 입력된 후 5개의 플립플롭(Q0~Q4)에서 시프트(SHIFT)되고, 이어서 배타적 오아게이트(3-2)로 입력된 후 다시 7개의 디플립플롭(Q5~Q11)에 의해 시프트된 후 배타적 오아게이트(3-3)로 입력되고, 다시 4개의 플립플롭(Q12~Q15)을 거친 후 코드(Dout)를 생성하여 출력하였다.
이때, 배타적 오아게이트(3-1)의 출력은 다른 배타적 오아게이트(3-2, 3-3)로 입력되고, 마지막 플립플롭(Q15)의 출력은 다시 첫번째 배타적 오아게이트(3-1)로 궤환된다.
이러한 종래의 CRC 부호기는 입력데이터를 비트단위로 처리하며, 시프트 연산이 많았기 때문에 CRC 부호화에 시간이 많이 걸리는 문제점이 있었다.
이에 본 발명은 상기와 같은 종래의 문제점을 해결하기 위하여 소정의 비트단위로 데이터를 처리하여 고속으로 CRC부호화를 수행할 수 있는 CRC 부호기를 제공하는데 그 목적이 있다.
상기와 같은 목적을 달성하기 위한 본 발명의 CRC부호기는, 한 프레임을 형성하는 데이터들을 소정 비트(N)단위로 입력받아 각 비트별로 동시에 연산하여 소정 길이(M)의 레지듀값을 생성한 후 한 프레임의 데이터에 대한 처리가 완료되면 상기 마지막 레지듀값을 프레임 체크 시퀀스(FCS)로서 제공하는 CRC부호기에 있어서, 소정 비트단위로 데이터를 입력하는 입력 레지스터와; 소정 길이의 이전 CRC 레지듀값을 저장하고 있는 레지듀 레지스터; 소정 비트(N) × 소정 길이(M)의 시스톨릭 어레이 구조를 형성하는 연산소자들로 이루어지고, 상기 각 연산소자들은 두 입력비트에 대한 배타적 논리합 연산을 수행하여 상기 입력 레지스터의 데이터를 각 비트별로 상기 레지듀 레지스터의 출력과 연산하여 새로운 레지듀값을 생성하는 연산부; 및 상기 연산부의 새로운 레지듀값을 일시 저장함과 아울러 상기 레지듀 레지스터로 이를 제공하는 출력레지스터를 구비한 것을 특징으로 한다.
이하, 첨부된 도면을 참조하여 본 발명을 자세히 설명하기로 한다.
제2도는 본 발명에 따른 CRC부호기를 도시한 블록도인데, 본 발명의 실시예에서는 8비트 입력에 대해서 10비트의 레지듀(residue)를 생성하는 것을 보여준다. 제2도를 참조하면, CRC부호기는 8 비트단위로 데이터를 입력하는 입력레지스터(10)와; 10비트의 이전 CRC 레지듀 값(previous CRC residue)을 저장하고 있는 레지듀 레지스터(20); 8×10의 시스톨릭 어레이(systolic array) 구조를 형성하는 연산소자(PE[1,1] ~ PE[8,10])를 이용하여 상기 입력 레지스터(10)의 데이터를 각 비트별로 상기 레지듀 레지스터(20)의 출력과 연산하는 연산부(40); 및 상기 연산부(40)의 출력을 버퍼링하는 출력레지스터(30)를 구비한다.
본 발명의 실시예에서는 입력 데이터는 8비트 단위로 입력되고, 10비트의 레지듀(FCS)를 사용하므로 8 × 10 = 80개의 연산소자(PE:Processing element)필요하고, 각 연산소자는 배타적 오아게이트로 구현된다. 그리고 제2도에서 y1-y10은 생성된 레지듀 비트를 나타내고, b1-b8은 입력 데이터의 비트를 나타낸다.
상기와 같이 구성되는 본 발명에 따른 CRC부호기의 동작을 살펴보면 다음과 같다.
먼저, 연산소자(PE: Processing element)가 처리하는 동작을 수식으로 나타내면 다음 식 1과 같다.
상기 식 1에서 X는 입력 데이터 셀을 나타내고, G는 생성다항식이며, Y는 발생된 코드이다. 이와 같은 연산소자(PE)를 구현하기 위한 하드웨어 기술언어는 다음 표 1과 같다.
상기 표 1을 참조하면, 하나의 연산소자(PE)는 배타적 오아게이트로서 동작하는 것을 알 수 있고, 본 발명의 실시예에서는 8비트의 데이터 입력을 동시에 처리하여 10비트의 레지듀(residue)를 생성하기 위하여 80개가 필요하다. 이들 연산소자는 제2도에서와 같이, PE[1,1]부터 PE[8,10]까지로 표시된다.
연산소자(PE[1,1])는 입력 레지스터(10)로부터 데이터의 비트1(b1)과 레지듀 레지스터(20)의 비트10(y10)을 입력받아 배타적 논리합 연산을 수행한 후 연산소자(PE[2,2])로 출력하고, 연산소자(PE[2,2])는 연산소자(PE[1,1])의 출력을 연산소자(PE[1,10])출력과 배타적 논리합 연산을 수행한다. 연산소자(PE[3,3])는 연산소자(PE[2,2])의 출력을 입력받아 연산소자(PE[2,10])의 출력과 배타적 논리합 연산을 수행하고, 연산소자(PE[4,4])는 연산소자(PE[3,43])의 출력을 연산소자(PE[3,10])출력과 연산처리하여 연산소자(PE[5,5])로 출력한다.
유사한 방식으로, 연산소자(PE[5,5])는 연산소자(PE[4,4])의 출력을 연산소자(PE[4,10])출력과 연산처리하여 연산소자(PE[6,6])로 출력하고, 연산소자(PE[6,6])는 연산소자(PE[5,5])의 출력을 연산소자(PE[5,10])출력과 연산처리하여 연산소자(PE[7,7])로 출력한다. 그리고 연산소자(PE[7,7])는 연산소자(PE[6,6])의 출력을 연산소자(PE[6,10])출력과 연산처리하여 연산소자(PE[8,8])로 출력하고, 연산소자(PE[8,8])는 연산소자(PE[7,7])의 출력을 연산소자(PE[7,10])의 출력과 배타적 논리합 연산처리하여 출력 레지스터(30)로 출력한다.
유사한 방법으로 8비트의 입력에 대하여 동시에 처리하여 현재의 데이터셀에 대한 CRC 연산이 완료되면, 출력 레지스터(30)에 저장된 코드값을 다시 레지듀 레지스터(20)에 저장하고, 다음 8비트의 데이터를 입력하여 동일한 방식으로 CRC연산을 수행한다. 이와 같이하여 하나의 프레임(혹은 패킷)에 대한 CRC연산이 끝나면, 데이터셋과 함께 발생된 CRC코드를 출력한다.
이상에서 살펴본 바와 같이, 본 발명에 따라 다수 비트의 데이터를 동시에 CRC 연산하므로서 처리속도를 향상시켜 고속으로 CRC부호를 발생할 수 있는 효과가 있다.
Claims (1)
- 한 프레임을 형성하는 데이터들을 소정 비트(N)단위로 입력받아 각 비트별로 동시에 연산하여 소정 길이(M)의 레지듀값을 생성한 후 한 프레임의 데이터에 대한 처리가 완료되면 상기 마지막 레지듀값을 프레임 체크 시퀀스(FCS)로서 제공하는 CRC부호기에 있어서, 소정 비트단위로 데이터를 입력받는 입력 레지스터(10)와; 소정 길이의 이전 CRC 레지듀값을 저장하고 있는 레지듀 레지스터(20); 소정 비트(N) × 소정 길이 (M)의 시스톨릭 어레이 구조를 형성하는 연산소자(PE[1,1]~ PE[8,10])들로 이루어지고, 상기 각 연산소자들은 두 입력비트에 대한 배타적 논리합 연산을 수행하여 상기 입력 레지스터(10)의 데이터를 각 비트별로 상기 레지듀 레지스터(20)의 출력과 연산하여 새로운 레지듀값을 생성하는 연산부(40); 및 상기 연산부(40)의 새로운 레지듀값을 일시 저장함과 아울러 상기 레지듀 레지스터(20)로 이를 제공하는 출력 레지스터(30)를 구비한 것을 특징으로 하는 CRC부호기.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1019950005329A KR0166251B1 (ko) | 1995-03-15 | 1995-03-15 | 고속 crc 부호기 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1019950005329A KR0166251B1 (ko) | 1995-03-15 | 1995-03-15 | 고속 crc 부호기 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR960035266A KR960035266A (ko) | 1996-10-24 |
KR0166251B1 true KR0166251B1 (ko) | 1999-01-15 |
Family
ID=19409813
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019950005329A KR0166251B1 (ko) | 1995-03-15 | 1995-03-15 | 고속 crc 부호기 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR0166251B1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100433632B1 (ko) * | 2002-04-09 | 2004-05-31 | 한국전자통신연구원 | 병렬 crc 계산장치 및 그 방법 |
-
1995
- 1995-03-15 KR KR1019950005329A patent/KR0166251B1/ko not_active IP Right Cessation
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100433632B1 (ko) * | 2002-04-09 | 2004-05-31 | 한국전자통신연구원 | 병렬 crc 계산장치 및 그 방법 |
Also Published As
Publication number | Publication date |
---|---|
KR960035266A (ko) | 1996-10-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5040179A (en) | High data rate BCH encoder | |
EP0114938B1 (en) | On-the-fly multibyte error correction | |
US5343481A (en) | BCH error-location polynomial decoder | |
US4958349A (en) | High data rate BCH decoder | |
US7458006B2 (en) | Methods for computing the CRC of a message from the incremental CRCs of composite sub-messages | |
EP0340139A2 (en) | Fast processor for multi-bit error correction codes | |
KR20000046034A (ko) | 통신시스템에서반복복호장치및방법 | |
EP0233075B1 (en) | Method and apparatus for generating error detection check bytes for a data record | |
EP0480621B1 (en) | Apparatus and method for parallel generation of cyclic redundancy check (CRC) codes | |
US7096403B2 (en) | Iterative concatenated code decoding circuit and encoding/decoding system using the same | |
US5936978A (en) | Shortened fire code error-trapping decoding method and apparatus | |
US4592054A (en) | Decoder with code error correcting function | |
JPH0728227B2 (ja) | Bch符号の復号装置 | |
US5446745A (en) | Apparatus for correcting errors in optical disks | |
US4644543A (en) | Forward error correction hardware for a data adaptor | |
KR0166251B1 (ko) | 고속 crc 부호기 | |
US4298981A (en) | Decoding shortened cyclic block codes | |
US20030159101A1 (en) | Cyclic redundancy code generator | |
JPH08265173A (ja) | 誤り訂正符号の符号器及び復号器 | |
Umanesan et al. | Parallel decoding cyclic burst error correcting codes | |
KR970009760B1 (ko) | 개선된 순환중복검사(crc) 부호화기 | |
KR20080052039A (ko) | 순환 중복 검사에 의한 정정 에러를 검사하는 방법 및 그장치 | |
Lu et al. | A decoding algorithm for DEC RS codes | |
JP2710176B2 (ja) | 誤り位置及び誤りパターン導出回路 | |
JP3099890B2 (ja) | Bch符号の誤り訂正装置 |
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: 20110901 Year of fee payment: 14 |
|
FPAY | Annual fee payment |
Payment date: 20120903 Year of fee payment: 15 |
|
LAPS | Lapse due to unpaid annual fee |