05구현 문제
패리티 비트로 데이터 프레임 만들기
1. 프레임 형식
ParityFrame은 7비트 데이터를 짝수 패리티를 검사하는 링크용 8비트 프레임으로
변환합니다.
frame 비트 | 내용 |
|---|---|
| 7 | 패리티 비트. 프레임 전체의 1 개수를 짝수로 만듭니다 |
| 6–0 | data를 변경 없이 그대로 담습니다 |
data = 0x01은 1이 하나이므로 0x81이 됩니다. data = 0x03은 1이 이미 두 개이므로
0x03 그대로입니다.
시작 코드는 data를 frame에 직접 연결합니다. 이 연결은 7비트 값 위에 0을 채우므로 비트
7은 항상 0입니다. 그래서 1의 개수가 홀수인 데이터는 모두 패리티 규칙을 위반합니다.
TODO 줄의 연결만 바꾸고 두 포트의 폭은 그대로 두세요.
2. 필요한 두 연산
프레임을 만들려면 다음 두 연산이 필요합니다.
- 값의 모든 비트를 1비트로 줄여, 1의 개수가 홀수일 때 1을 출력하는 연산
- 두 값을 이어 붙이고, 어느 인자를 상위 비트에 둘지 정하는 연산
3. 실행 전 예측
공개 실행은 00, 01, 03, 55, 7f의 프레임을 출력합니다. 실행하기 전에 각
데이터의 1 개수를 세어 비트 7을 정하고, 올바른 프레임을 16진수로 적어 보세요. 시작 코드는
모든 프레임을 데이터와 같은 값으로 출력합니다.
4. 실행 결과 해석
수정 후 출력은 00, 81, 03, 55, ff입니다. 0x55(101_0101)는 1이 네 개이므로
패리티 비트가 0입니다. 0x7f는 1이 일곱 개이므로 패리티 비트가 1이 되어 프레임이
ff입니다. 81 대신 03이 출력된다면 패리티 비트가 최하위로 가고 데이터가 한 비트 위로
이동한 것입니다.
5. 완료 조건
- 128개 데이터 값 모두에서 프레임의 1 개수가 짝수입니다.
data는 비트 6–0에 그대로 있고 패리티 비트는 비트 7에 있습니다.frame은 정확히 8비트이며 절단되는 비트가 없습니다.
6. 단계형 힌트
힌트 1
짝수 패리티 비트는 데이터에 1이 홀수 개 있으면 1, 짝수 개 있으면 0입니다. 연산자 절의 축약 연산 세 가지 가운데 하나가 이 값을 계산합니다.
힌트 2
Cat은 첫 번째 인자를 최상위 비트에 둡니다. 1비트 값을 7비트 값 위에 붙이면 정확히
8비트가 됩니다.
개념 설명
xorR은 XOR 논리로 데이터 비트를 Bool 하나로 줄이고, Cat은 배선으로 인자 순서대로
값을 나란히 배치합니다. Cat의 결과 폭은 인자 폭의 합이므로 프레임
폭이 포트 폭과 정확히 같습니다.
7. 추가 실험
링크가 홀수 패리티를 검사한다고 가정해 보세요. data = 0x00과 data = 0x7f의 프레임을
예측하고, 패리티 비트 계산에 추가해야 하는 연산자 하나를 적어 보세요.