KR100234703B1 - 데이타 오류체크 방법 - Google Patents
데이타 오류체크 방법 Download PDFInfo
- Publication number
- KR100234703B1 KR100234703B1 KR1019960062263A KR19960062263A KR100234703B1 KR 100234703 B1 KR100234703 B1 KR 100234703B1 KR 1019960062263 A KR1019960062263 A KR 1019960062263A KR 19960062263 A KR19960062263 A KR 19960062263A KR 100234703 B1 KR100234703 B1 KR 100234703B1
- Authority
- KR
- South Korea
- Prior art keywords
- crc
- data
- message data
- checking method
- bit
- Prior art date
Links
Classifications
-
- 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)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Detection And Correction Of Errors (AREA)
- Error Detection And Correction (AREA)
- Detection And Prevention Of Errors In Transmission (AREA)
Abstract
본 발명은 데이터 오류체크 방법에 관한 것으로, 종래 데이터 오류체크 방법 중 순환여분검사방식은 한번에 1비트의 CRC계산만이 이루어지기 때문에 전송속도가 느린 문제점이 있었다. 본 발명은 이러한 종래의 문제점을 해결하기 위해 메시지 데이터를 1바이트씩 입력받아 이를 전 상태의 CRC레지스터값과 식 S' = X32U'(X) = Rg(x)[X32(b(X)+X8U(X))]에 의해 연산하는 제 1단계와 ; 상기 단계에서 연산된 값을 CRC레지스터에 저장하는 제 2단계와 ; 메시지 데이터가 모두 입력될 때까지 상기 제 1단계 및 제 2단계를 반복하는 제 3단계와 ; 상기 제 3단계의 수행결과 메시지 데이터가 모두 처리되면 이를 상기 메시지 데이터와 합하여 송신하는 제 4단계로 이루어진 데이터 오류체크 방법을 창안한 것으호, 이와같이 본 발명은 본 발명은 메시지 데이터를 8비트씩 입력받아 이를 바로전에 계산된 CRC 레지스터값과 소정식을 통해 연산하는 방식으로 CRC부호 생성시 8비트씩 처리할 수 있어 전송속도를 빨리 할 수 있는 효과가 있다.
Description
제1도는 종래 순환여분방식의 회로 구성도.
제2도는 식(1)에 있어서, i와 Rg(x)[Xi]와의 관계를 나타낸 표.
제3도는 16진수와 2진수의 관계를 나타낸 표.
제4도는 8비트 시프트 후의 CRC레지스터의 값을 나타낸 표.
제5도는 본 발명에서 CRC값을 계산하기 위한 회로 구성도.
제6도는 본 발명의 베리로그(verilog) 하이레벨데이타링크제어순서도.
본 발명은 데이터의 오류체크 방법에 관한 것으로, 특히 순환여분검사(cyclic Redundancy Check : CRC) 오류체크 방법에 있어서, CRC부호 생성시 데이터의 처리를 8비트씩 하게 함으로써 처리속도를 향상시키는데 적당하도록 한 데이터 오류체크 방법에 관한 것이다.
순환여분검사(cyclic Redundancy Check : CRC)란 데이터 오류검출방식의 하나로, 송신데이타를 어떤 룰에 의해 변형시키고, 그 변형된 데이터에 대한 CRC부호를 작성한 다음 그 변형된 데이터에 CRC부호를 부가하여 송신하도록 하고, 수신측은 수신데이타를 체크하여 오류를 검출한다.
상기 데이터의 변형에는 특수한 논리연산의 곱셈이 행하여지고, 수신 데이터에는 마찬가지의 나눗셈이 행하여지는 것이 이 방식의 특징이다. 이 나눗셈에서 나머지의 유무에 의해 데이터의 오류여부가 결정된다.
이때, CRC부호를 만들기 위한 다항식 G(X)는 미리 정해져 있는데, CRC-32의 경우에는 아래의 식으로 규정되어 있다.
G(X) = X32+X26+X23+X22+X16+X12+X11+X10+X8+X7+X5+X4+X2+X +1
이때, 상기 다항식 G(X)을 생성 다항식이라 한다.
상기 CRC오류체크 방법에 대하여 간략히 설명하면 다음과 같다.
계산을 쉽게 하기 위해 생성 다항식 G(X)를
G(X) = X6+X4+X2+1
이라하고, 아래 식과 같이 표시되는 송신데이타(D)가 있다고 하자
D = X7+X4+X2+X
먼저, 생성 다항식 G(X)의 최고차 항을 송신데이타(D)에 곱하여 송신데이타를 변형시킨다. 이를 D'라 하면,
D' = D × X6
= (X7+X4+X2+X) × X6
= X13+X10+X8+X7
이다.
이와 같이 변형된 데이터(D')가 만들어지면 그 변형된 데이터(D')를 상기 생성 다항식 G(X)로 나누는데, 그 결과 몫과 나머지는 아래 식과 같이 된다.
(X13+X10+X8+X7) / (X6+X4+X2+1)하면, 몫은 X7+X5+X4+X +1, 나머지는 X3+X2+X +1
이때, 상기 나머지 X3+X2+X +1를 CRC부호로 한다.
이제 상기 CRC부호(X3+X2+X +1)와 상기 변형된 데이터(D')를 더하면 죄종 송신할 데이터(S)가 되는 것이다. 즉 S는
S = (X13+X10+X8+X7) + (X3+X2+X+1)
= X13+X10+X8+X7+X3+X2+X +1
이다.
이때, 수신측은 아래 식과 같이 상기 데이터(S)를 수신하여 이를 생성 다항식 G(X)로 나누어 그 나머지가 제로(0)이면 데이터의 오류가 없다고 판단한다.
S/G(X) = (X13+X10+X8+X7) + (X3+X2+X +1)/(X6+X4+X2+1)
= X7+X5+X4+X + 1(나머지 = 0)
이때, 상기 CRC 오류체크 방법 중에서 CRC-32의 계산방법을 회로적으로 나타내면 제1도에 도시한 바와 같이 시프터레지스터(Sn)와 배타적오아게이트(XOR)들로 구성할 수 있다.
동작하는 과정은 입력 메시지의 1비트가 CRC-32의 생성다항식에 따라 배타적오아링 되거나 다음 CRC레지스터(Sn)로 스프트되어짐으로써 한 번에 1비트씩 계산되어 CRC레지스터에 저장된다.
이상에서 설명한 바와 같이 종래의 순환여분검사방식은 한번에 1비트의 CRC계산만이 이루어지기 때문에 전송속도가 느린 문제점이 있었다.
본 발명의 목적은 이러한 종래의 문제점을 해결하기 위해 데이터를 8비트 병렬로 처리하도록 알고리즘을 구성하여 전송속도를 향상 시킬 수 있도록 한 데이터 오류체크 방법을 제공하는데 있다.
상기 본 발명의 목적을 달성하기 위한 데이터 오류체크 방법은 메시지 데이터를 1바이트씩 입력받아 이를 전 상태의 CRC레지스터값과 아래 식에 의해 연산하는 제 1단계와 ; 상기 단계에서 연산된 값을 CRC레지스터에 저장하는 제 2단계와 ; 메시지 데이터가 모두 입력될 때까지 상기 제 1단계 및 제 2단계를 반복하는 제 3단계와 ; 상기 제 3단계에의 수행결과 메시지 데이터가 모두 처리되어 CRC부호가 생성되면 이를 상기 메시지 데이터와 합하여 송신하는 제 4단계로 이루어진다.
S' = X32U'(X)
= Rg(x)[X32(b(X) +X8U(X))]
단, U(X) = b(X) +X8U(X)
X8X32U(X)는 8비트 시프트된 전상태의 CRC레지스터값.
b(X)는 새로 입력된 8비트 메시지 데이터.
X32는 생성다항식의 최고차항.
S는 CRC부호 : [X32(b(X) + X8U(X))]를 생성다항식[g(X)]으로 나눈 나머지.
이하, 본 발명의 작용 및 효과에 관하여 첨부한 도면을 참조하여 설명한다.
먼저, 메시지 데이터를 U(X)라고, CRC 부호를 생성하기 위한 생성다항식을 g(X)라 하면, 송신데이타 U(X)와 생성다항식 g(X)의 일반식은 아래와 같다.
U(X) = U0+U1X+U2X2+...U7X7
g(X) = 1+X +X2+X4+X5+X7+X8+X10+X11+X12+X16+X22+X23+X26+X32
CRC부호는 생성다항식 g(X)의 최고차항을 송신데이타의 다항식U(X)에 곱하고, 이를 다시 생성다항식 g(X)로 나눈 나머지 S(X)로 정의되는데, 이를 식으로 표현하면 아래와 같다.
Rg(x)[U(X) g(X)의 최고차항]= Rg(x)[X32U(X)]
이때, 상기 X32U(X)는 X32U(X) = a(X) g(X) + S(X)와 같이 표현할 수 있다.
단, a(X)는 X32U(X)를 g(X)로 나눈 몫이다. 그리고 나머지 S(X)의 일반식은
S(X) = S0+S1X +S2X2+...+S31X31
이다.
상기와 같이 8비트의 데이터가 처리되면 이는 우측으로 8비트 시프트되고, 그 빈 자리에는 8비트의 새로운 데이터가 입력된다.
그 입력되는 새로운 데이터를 b(X)=b0+b1X +b2X2+...+b7X7라고 하면, 새로 처리할 데이터 U'(X)는 전 상태에서 처리된 CRC레지스터의 값 즉, U(X)와 새로 입력된 8비트의 메시지 데이터 b(X)와의 합이 된다. 이를 식으로 나타내면 아래와 같다.
U'(X)=b(X)+X8U(X) 단, X8은 8비트 시프트됨을 표시한다.
상기 U'(X)에 대한 CRC부호를 구하기 위해 먼저, 생성다항식의 최고차항인 X32를 곱하면, X32U'(X)가 된다. 이때, X32U'(X)은 아래 식과 같이 전개된다.
X32U'(X) = X32[b(X) + X8U(X)]
= X32b(X) + X8[X32U(X)]
= X32b(X) + X8[a(X)g(X) + S(X)]
= X32b(X) + X8[a(X)g(X)]+ X8S(X)
이제, X32U'(X)를 이용하여 나머지 S'(X)를 구하면 아래 식과 같다.
S'(X) = Rg(X)[X32U'(X)]
이때, 상기 식 U'(X) = b(X)+X8U(X)을 식 S'(X) = Rg(X)[X32U'(X)]에 대입하면 아래 식과 같다.
S'(X) = Rg(X)[X32(b(X)+X6U(X))]
= Rg(X)[X32b(X) + X8X32U (X)]
이다.
이때, X32U(X) = a(X)g(X) + S(X)이므로
Rg(X)[X32b(X) + X8X32U(X)]
= Rg(X)[X32b(X) + X8a(X) g(X) + X8S(X)]
= Rg(X)[X32b(X)]+Rg(X)[X8a(X)g(X)]+Rg(X)[X8S(X)]
으로 쓸수 있다.
또한 상기 X8a(X)g(X)를 g(X)로 나누면 그 몫은 X8a(X) 나머지는 0 이므로 Rg(X)[X8a(X)]항은 0이 된다.
따라서,
S'(X) = Rg(X)[X32b(X)]+ Rg(X)[X8S(X)]
= Rg(X)[X32b(X) + X8S(X)]
이 된다.
상기 식을 b(X)와 S(X)의 일반식을 사용하여 전개하면
S'(X) = Rg(X)[X32(b0+b1X1+b2X2+b3X3+b4X4+b5X5+b6X6+b7X7]+X8(S0+S1X1+..+S31X31)]
=(b0+S24)X32+ (b1+S25)X33+ … + (b7+S31)X39+ S0X8+ S1X9+...+ S23X31
로 쓸 수 있다.
또한 상기 식을 일반화하면
로 쓸 수 있는데, 이 식에서 (bi+ S24+i)을 설명의 편의상 ti로 놓으면, 상기 식은
이 된다.
그리고 S0X8+ S1X9+ … + S23X31을 g(X)로 나눈 몫은 0이고, 나머지는 S0X8+ S1X9+ … + S23X31이기 때문에 (S0X8+ S1X9+ … + S23X31)을 Rg(x) 밖으로 뺄 수 있다. 따라서
이 된다.
이때, 상기 식(1)에서 i와 Rg(X)[Xi]와의 관계를 나타낸 제 2 도와 16진수와 2진수의 관계를 나타낸 제 3 도를 참조하여, 상기 식에서 8비트 시프트 후의 CRC 레지스터의 값을 계산하면 제 4도에 도시한 바와같다.
다시 8비트 시프트 후의 CRC 레지스터의 값을 쓰면 아래와 같다.
S'0 = t0+t1+b0+b6+s24+s30
S'1 = t0+t1+t6+t7
S'2 = t0+t1+t2+t6+t7
S'3 = t1+t2+t3+t7
S'4 = t0+t2+t3+t4+t6
S'5 = t0+t1+t3+t4+t5+t6+t7
S'6 = t1+t2+t4+t5+t6+t7
S'7 = t0+t2+t3+t5+t7
S'8 = S0+t0+t1+t3+t4
S'9 = S1+t1+t2+t4+t5
S'10 = S2+t0+t2+t3+t5
S'11 = S3+t0+t1+t3+t4
S'12 = S4+t0+t1++t2+t4+t5+t6
S'13 = S5+t1+t2+t3+t5+t6+t7
S'14 = S6+t2+t3+t4+t6+t7
S'15 =S1+t3+t4+t5+t7
S'16 = S8+t0+t4+t5
S'17 =S9 +t1+t5+t6
S'18 =S10+t2+t6+t7
S'19 =S11+t3+t7
S'20 =S12+t4
S'21 =S13+t5
S'22 =S14+t0
S'23 =S15+t0+t1+t6
S'24 =S16+t1+t2+t7
S'25 =S17+t2+t3
S'26 =S18+t0+t3+t4+t5+t6
S'27 =S19+t1+t4+t5+t7
S'28 =S20+t2+t5+t6
S'29 =S21+t3+t6+t7
S'30 =S22+t4+t7
S'31 =S23+t5
그리고 본 발명을 회로구성으로 나타내면 제 5 도에 도시한 바와 같다. 참고로 본 발명의 베리로그(verilog) 하이레벨데이타링크제어순서(HDL)도를 제 6 도에 도시하였다.
이상에서 상세히 설명한 바와 같이 본 발명은 메시지 데이터를 바로전에 계산된 CRC 레지스터값과 소정식에 의한 연산을 통해 CRC부호를 생성하게 함으로써 한 번에 8비트씩 처리할 수 있어 전송속도를 빠르게 할 수 있는 효과가 있다.
Claims (1)
- 메시지 데이터를 1바이트씩 입력받아 이를 전 상태의 CRC레지스터값과 아래식에 의해 연산하는 제 1단계와 ; 상기 단계에서 연산된 값을 CRC레지스터에 저장하는 제 2 단계와 ; 메시지 데이터가 모두 입력될 때까지 상기 제 1 단계 및 제 2 단계를 반복하는 제 3 단계와 ; 상기 제 3단계에의 수행결과 메시지 데이터가 모두 처리되어 CRC부호가 생성되면 이를 상기 메시지 데이터와 합하여 송신하는 제 4단계로 이루어진 것을 특징으로 하는 데이터 오류체크 방법.S' = X32U'(X)= Rg(X)[X32(b(X)+X8U(X)]단, U' (X) = b(X)+ X8U(X)X8X32U(X)는 8비트 시프트된 전상태의 CRC레지스터값.b(X)는 새로 입력된 8비트 메시지 데이터.X32는 생성다항식의 최고차항.S'는 CRC부호 : [X32(b(X)+X8U(X))]를 생성다항식[g(X)]으로 나눈 나머지.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1019960062263A KR100234703B1 (ko) | 1996-12-06 | 1996-12-06 | 데이타 오류체크 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1019960062263A KR100234703B1 (ko) | 1996-12-06 | 1996-12-06 | 데이타 오류체크 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR19980044216A KR19980044216A (ko) | 1998-09-05 |
KR100234703B1 true KR100234703B1 (ko) | 1999-12-15 |
Family
ID=19486099
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019960062263A KR100234703B1 (ko) | 1996-12-06 | 1996-12-06 | 데이타 오류체크 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR100234703B1 (ko) |
-
1996
- 1996-12-06 KR KR1019960062263A patent/KR100234703B1/ko not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
KR19980044216A (ko) | 1998-09-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5046069A (en) | Data integrity securing means | |
US5440570A (en) | Real-time binary BCH decoder | |
US4809273A (en) | Device for verifying operation of a checking code generator | |
JPH0728227B2 (ja) | Bch符号の復号装置 | |
KR100260415B1 (ko) | 고속시리얼에러위치다항식계산회로 | |
JPS632370B2 (ko) | ||
US5724370A (en) | CRC generation and detection method | |
US5938773A (en) | Sideband signaling with parity bit schemes | |
US5878061A (en) | Providing serial data clock signal transitions with parity bits | |
US7320101B1 (en) | Fast parallel calculation of cyclic redundancy checks | |
KR20030036148A (ko) | 복호장치 및 복호방법 | |
US6928608B2 (en) | Apparatus and method for accelerating cyclic redundancy check calculations | |
JP3245290B2 (ja) | 復号方法とその装置 | |
KR100234703B1 (ko) | 데이타 오류체크 방법 | |
US5121397A (en) | Method and apparatus for producing order independent signatures for error detection | |
US5526370A (en) | Weighted sum codes for error detection | |
KR20020033227A (ko) | 데이터 통신을 위한 병렬 중복순환 검사회로 | |
US6718514B2 (en) | Parity checking device and method in data communication system | |
JP2621582B2 (ja) | 逐次復号装置 | |
JPH05151007A (ja) | Crc演算装置 | |
US5212696A (en) | Method and apparatus for producing order independent signatures for error detection | |
Kim | FPGA implementation of overhead reduction algorithm for interspersed redundancy bits using EEDC | |
JP2008112522A (ja) | 誤り検出装置および誤り検出方法 | |
JP2848734B2 (ja) | 誤り検出・訂正装置 | |
KR970009760B1 (ko) | 개선된 순환중복검사(crc) 부호화기 |
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: 20050824 Year of fee payment: 7 |
|
LAPS | Lapse due to unpaid annual fee |