본문 바로가기
컴퓨터공학/디지털공학개론

6. 오류 검출코드와 영문-숫자 코드

by meow0110 2024. 6. 12.

■ 오류 검출 2가지

- 오류만 검출

- 오류 검출 후 재전송 + 정정

■ 오류 검출코드
- 오류 검출: 전송 중에 발생한 오류의 존재 여부만을 수신 측이 알 수 있도록 하는 기술
- 오류 검출 코드: 검출과 같은 기능을 내재시킨 코드
- 오류 검출시 송신측에 재전송을 요구함
- 패리티검사, 순환중복검사(CRC) 등

 

■ 패리티 비트 제네레이터 

- 패리티 비트를 만들어줌. 송신측에서

 

■ 패리티 비트 체커

- 패리티 비트를 체크해서,  오류인지 아닌지 파악하고 틀리면 재전송을 요구함. 수신측에서 

 

 

■ 인터넷 상의 오류가 생기는 것들을 거진다 CRC로 체크함.

■ 패리티 비트는 1개만 검출함. 즉, 2개 이상 틀린 데이터가 왔는데, 비트가 검사한 1의 갯수가 맞게되면? 검출이 안된다. 그런데  CRC는 2개 비트를 검출할 수 잇으니 더 낫다. 

 

■ 모듈러 2 연산은 XOR 연산이다.  같으면 0 / 다르면 1

 

■ 나머지가 0 이면 오류없음. 나머지가 0이 아니면? 오류다. 왜? 보낼때 0으로 나눠지게 만들었으니까!

 

■ CRC 코드를 만드는 과정이라 생각하자. 즉 마지막 결과값 100은 수신측에 넣어줄 값이라 생각하면 된다.

■ 나머지가 100 이다. 즉, 이 나머지를 아래에 뒷자리에 넣게되면 나머지 결과가 0이 나오게 되서 오류가 없다고 나오게 된다.

  

■ 아까 만든 100을 뒤에 넣어주자, 결과값이 0이 나온다. 즉오류가 없다고 판단하게 되는 것이다.

■ 위에서는 100을 만들어서 그걸 뒤에 넣어줘서 보내줬다 생각하자. 즉, 위에서는 나머지 결과값 0을 만들기 위한 비트를 만든 것이고, 여기서는 0으로 맞아떨어지니 오류가 없으니까, 송신측에서 보내주는 모습이라고 생각하면 된다.

 

■ 수신측에서 받은 모습이다. 여기서는 오류가 발생했다고 가정한다.

■ 나눈 겨로가가 100이다. 즉 0이 아니므로 재전송을 요구하게 된다.

 

 

■ 오류 정정코드
- 수신측에서 직접 오류를 고칠 수 있도록, 충분한 여분의 정보를 포함시키는 부호화 방법으로 생성된 코드
- 해밍코드는 일정길이의 정보(신호)에 일정 길이의 부가 정보를 부가하여 수신측에서 오류를 정정할 수 있도록 함

 

■ 해밍 코드 - 추가적인 비트 불필요?

- CRC나 패리티비트는 추가비트가 필요하다. 그러나 해밍코드는 필요치 않다.

 

 

 

■ 해밍코드

- 패리티 비트는 최소 2비트 이상 필요하다.

- p=4 가 패리티 비트 개수다.

- 즉, 결론적으로 본다면 패리티비트 4개가 있다면, 5~11비트의 데이터를 보낼 수 있다. 

 

■ 자격증 시험에서 자주 나온다.

■ 설명

- 패리티 비트가 총 4개다. p1 p2 p4 p8. 총 4개. 

- 위에서 패리티비트 4개일 때는  5 <= d <= 11 이라고 했다.

- 그래서 d3 d5 d6 d7 d9 d10 d11 d12 해서 총 8개의 데이터비트가 있다. 즉,  d8은 위의  5~11 사이에 들어간다.

- 그래서 패리티비트가 총 4개 인 것이다. 

 

- 자세히 보면 규칙이 있다. 빨간색 원형들을 살펴보면, 

- p1 영역은  1 3 5 7 9 11 

- p2 영역은  2 3 6 7 10 11 식으로

 

 

■ 검사할 땐 짝수 패리티로 검사하게 된다.

■ p1은 1의 갯수가 짝수개다.   0 0 0 1 1 이니까.  그래서 0이 나오게 되고, 이 코드를 생성코드 아래쪽으로 가서 첫번째 빨간 동그라미 0 이 된다.

■ p2는 0 1 0 1 1 이다. 1의 갯수가 3개다. 그래서 짝수가 되기 위해 패리티비트가 1이 필요하다. 그래서 p2 영역에 1이 오게 되며, 이 1을 생성코드에 넣게 된다. 두번째 빨간 동그라미 1

■ 나머지 마찬가지다.

 

 

■ 수신단에서 받은 모습. 이제 받았으니 오류가 없는지 확인하자!

■ 여기서는 5번째 d5가 오류가 났다. 1이 아닌 0이어야 한다. (미리 알려드림)

 

■ 아래쪽의 p1 p2 p4 p8의 각 1을 더해보자.

■  어? p1에서  값이 1이 나오지? 짝수 패리티인데?

■ 마찬가지로 p4도 마찬가지로 1이 나온다. 짝수 패리티가 아니다.

■ 아래쪽의 p1, p2, p4, p8의 결과값이 각각  1 0 1 0 이다. 이를 거꾸로 보면 0101이다.

■ 즉 0101 은 가중치로 합하면 5이다. 그래서 5번 비트에서 에러가 발생한 것이다.

■ 결국 데이터는 0 아니면 1이니, d5의 1을 0으로 바꾼다면?

■ 해결이 된다!

 

■ 참고로 원래 데이터는 [해밍 코드 수정]  부분(도표의 맨 아래쪽)에서  0101 0101 1110 에서  붉은색만가져오면  0010111이다.

■ 이를 뒤집으면,  111 0100 이다.  이것이 d3이다.

 

■ p1은 110011 이다. 그래서 XOR연산하면 0이다. (짝수패리티니까 1의 갯수가 짝수면 된다.)

■ p2는 111001 이다. 마찬가지로 0이다.

■ p4 = 10100 = 0

■ p8 = 01010 = 0

 

■ 결과 : 모두 0이다. 즉 이어서 보면 0000이다. 0은 에러가 없다.

 

■ 영문-숫자 코드
- ASCII(American Standard Code for Information Interchange)는 컴퓨터나 디지털시스템에서 사용되는 코드로 7비트(128개의 문자 조합)와 8비트(256개의 문자 조합)로 표현
- 영어 대소문자 + 숫자+특수문자+제어문자를 표현

 

■ SOH : 동기식 방식에서 데이터를 보낼때, 맨 처음 헤더

■ STX : 텍스트의 시작

■ ETX : 텍스트의 끝

■ EOT : 나 전송 다 끝났어!

■ ETB : 텍스트 중간 블럭마다, 블럭이 끝났음을 말함.

■ ENQ :  제어신호 

■ ACK :  제어신호 - 긍정

■ NAK : 제어신호 - 부정

■ DLE : 다음 문자에 연이어서 나오는 것들 

■ SYN : 나 데이터 보낼거야, 너 받을준비 됐니? 받을준비해라! 라는 동기문자 

 

■ 7비트 아스키코드

 

 

 

 

 

 

 

■ 학습정리

1. ASCII(American Standard Code for Information Interchange) 코드

  • ASCII 코드는 대부분 컴퓨터나 디지털시스템에서 사용되는 코드
  • 7비트 표현방식 : 128개의 문자 조합(코드값 0 ~ 127)으로 이루어짐
  • 8비트 표현방식 : 256개의 문자 조합(코드값 0 ~ 255)으로 이루어짐

2. 패리티 비트(Parity bit)

  • 일반적인 시스템에서 비트 오류 검출 방법으로 패리티 비트를 사용
  • 1비트 오류를 검출할 수 있고, 패리티 비트는 1의 개수가 홀수인지, 짝수인지를 나타냄
  • 짝수 패리티 비트는 1의 총 개수를 짝수 개로, 홀수 패리티 비트는 1의 개수를 홀수 개로 만듦

3. 순환 덧붙임 검사(CRC: Cyclic Redundancy Check)

  • 디지털 데이터를 컴퓨터 단말기 간에 또는 디지털 시스템과 디지털 저장장치(CD, DVD 등) 간에 통신하는 과정에서 1 ~ 2개의 비트 오류를 검출하는 방법으로 검출 능력이 우수함

4. 해밍 코드(Hamming code)

  • 컴퓨터 단말기 간 오류를 검출하고, 정정할 수 있는 코드로, 추가적인 비트가 필요하므로 많은 양의 데이터 전달이 필요함
  • 해밍 코드는 짝수 패리티 비트를 사용

'컴퓨터공학 > 디지털공학개론' 카테고리의 다른 글

8. 부울대수  (0) 2024.07.07
7. 논리 연산 게이트  (0) 2024.07.07
5. 디지털 코드  (0) 2024.06.12
4. 부호표시의 개념  (0) 2024.06.12
3. 10진수, 2진수, 8진수, 16진수의 개념과 변환  (0) 2024.06.12