코드 디스크 레퍼런스 설계
2의 거듭제곱이 아닌 분해능의 앱솔루트 디스크: 360위치와 1000위치용 순환 그레이 코드

마지막 코드와 첫 코드 사이에도 한 비트만 바뀌는 360 또는 1000 절대 위치를 얻으려면, 반사 그레이 코드의 대칭 중앙 구간을 취하고 양 끝에서 (2ⁿ − M)/2개 코드를 제거한다. 이 글은 대칭성, 절단식과 디코딩식을 유도하고, 홀수 위치가 불가능한 이유를 설명하며, 360위치와 1000위치의 트랙 수, 요소 폭, 디코딩 표, 배치 점검 사항을 제시한다.
분할 테이블, 밸브 액추에이터, 십진 표시 계기는 한 회전에 360(위치당 1°) 또는 1000개의 절대 위치를 요구하는 경우가 많다. 그레이 코드의 비트 수는 한 회전에 2ⁿ개 코드를 주는데, 360도 1000도 2의 거듭제곱이 아니다. 가장 직접적인 방법은 9비트 그레이 코드의 앞쪽 360개 코드를 쓰는 것이지만, 첫 코드 G(0) = 000000000과 마지막 코드 G(359) = 111010100은 5비트가 다르다. 이음매를 지날 때 비트가 조금 다른 순서로 바뀌면 실제 위치와 동떨어진 중간 코드를 읽을 수 있다. 이 글은 첫 코드와 마지막 코드도 한 비트만 다른 구성, 디코딩식, 배치 시 주의점을 제시한다.

반사 그레이 코드의 대칭성
n비트 반사 그레이 코드는 G(i) = i XOR (i » 1), i = 0…2ⁿ − 1이다. i를 거울상 i′ = 2ⁿ − 1 − i, 즉 i의 n비트를 비트별로 반전한 값으로 바꾸면
i′ = i XOR (2ⁿ − 1), i′ » 1 = (i » 1) XOR (2^(n−1) − 1)
두 식을 XOR하면
G(2ⁿ − 1 − i) = G(i) XOR 2^(n−1)
즉 중점에 대해 대칭인 두 코드는 MSB만 다르다. “반사”라는 말이 여기서 나왔다. 후반부의 하위 n − 1비트는 전반부의 거울상이고 MSB는 0에서 1로 바뀐다.
절단 조건과 디코딩
M위치 순환 코드를 얻으려면 중앙 인덱스 i = s … 2ⁿ − 1 − s를 남기고 양 끝에서 각각
s = (2ⁿ − M) / 2
개 코드를 제거한다. 구간의 첫 코드 G(s)와 마지막 코드 G(2ⁿ − 1 − s)는 정확히 거울쌍이어서 MSB만 다르므로, 마지막에서 처음으로 닫힐 때도 한 비트만 바뀐다. 구간 안에서는 원래 걸음마다 한 비트만 바뀐다. 비트 수는 n = ⌈log₂M⌉이고, s가 정수여야 하므로 M은 짝수여야 한다.
디코딩은 두 단계다. 먼저 그레이를 이진으로 변환하고 b(n−1) = g(n−1), b(k) = b(k+1) XOR g(k), 그다음 오프셋을 빼서 p = B − s로 한다. B < s 또는 B > 2ⁿ − 1 − s이면 제거된 코드를 읽은 것이므로 바로 읽기 오류로 판정할 수 있다. 기계 원점을 다른 곳에 두려면 M을 법으로 하는 상수를 더한다.
대칭 절단만이 유일한 방법은 아니다. 9비트 코드를 모든 시작점에서 탐색하면, 첫 코드와 마지막 코드가 한 비트만 다른 길이 360의 연속 구간이 4개 있고 시작점은 76, 204, 332, 460이다. 뒤의 세 개는 511 → 0 이음매를 넘으므로 디코딩에 모듈로 연산이 하나 더 필요하다. 대칭 구간은 이진값이 연속이어서 뺄셈 한 번으로 디코딩되므로 가장 편하다.
홀수 위치가 불가능한 이유
n비트 코드를 n차원 입방체의 꼭짓점으로 보면, “한 비트만 바꾸기”는 모서리를 따라 한 걸음 가는 것이고, 걸음마다 코드 워드에서 1인 비트 개수의 홀짝성이 뒤집힌다. 한 바퀴를 돌아 출발점으로 돌아오면 홀짝성이 원래대로여야 하므로 걸음 수, 즉 위치 수 M은 짝수여야 한다. 이 결론은 구성 방법과 무관하다. 걸음마다 한 비트만 바뀌는 순환 코드는 어떤 것도 홀수 위치를 가질 수 없다.
홀수 위치(예: 125)가 필요할 때는 두 가지 길이 있다. 하나는 2M위치 순환 코드를 만들고 출력에서 2로 나누는 것(125위치라면 s = 3인 8비트 코드의 250구간), 다른 하나는 이음매에서 두 비트가 동시에 바뀌는 것을 허용하고 인크리멘탈 트랙과의 동기로 읽기를 보장하는 것인데, 이 경우 이음매의 읽기 공차를 따로 분석해야 한다.
360위치와 1000위치의 파라미터
| 항목 | 360위치 | 1000위치 |
|---|---|---|
| 트랙 수 n | 9 | 10 |
| 오프셋 s | 76 | 12 |
| 남기는 인덱스 | 76…435 | 12…1011 |
| 위치당 각도 | 1° | 0.36° (21.6′) |
| LSB 반경 예 | 15 mm | 18 mm |
| 요소 호 길이 2πr/M | 261.8 μm | 113.1 μm |
| 가장 가는 바 폭(요소 2개) | 523.6 μm | 226.2 μm |
| 첫 코드 / 마지막 코드 | 001101010 / 101101010 | 0000001010 / 1000001010 |
| 무효 코드 비율 | 152/512 = 29.7% | 24/1024 = 2.3% |
360위치 디코딩 표(발췌):
| 위치 p | 인덱스 i | 코드 워드 b8…b0 | 이진 B | B − 76 |
|---|---|---|---|---|
| 0 | 76 | 001101010 | 76 | 0 |
| 1 | 77 | 001101011 | 77 | 1 |
| 179 | 255 | 010000000 | 255 | 179 |
| 180 | 256 | 110000000 | 256 | 180 |
| 359 | 435 | 101101010 | 435 | 359 |
트랙 패턴은 그림 2에 있다. 절단 후 각 트랙의 전이 수는 그만큼 줄어든다. 360위치에서 b0는 180번, b1은 90번이며, b8은 여전히 반 바퀴 밝고 나머지 반 바퀴 어둡다.

배치에서 주의할 두 가지
이음매의 불규칙한 바 폭. 절단 후 각 트랙에서 이음매를 가로지르는 구간은 구간 시작부와 끝부분에서 온 두 조각으로 이루어지므로, 그 폭이 더 이상 해당 트랙의 정규값이 아니다. 360위치에서 b4의 정규 바 폭은 32위치이지만 이음매를 가로지르는 투명 구간은 8위치뿐이고, b6와 b7에도 232위치와 104위치의 불규칙 구간이 있다. 최소 선폭은 여전히 b0의 요소 2개로 정해지므로 제조성에는 영향이 없지만, 배치 검증과 AOI 규칙을 “트랙별 고정 바 폭”으로 쓸 수는 없고 한 바퀴 전체에 걸쳐 코드 표와 위치별로 대조해야 한다.
무효 코드로는 오류 검출이 제한적. 제거된 코드는 정상 읽기에서 나타나지 않으므로 이를 읽으면 오류로 판정할 수 있다. 그러나 비트 하나가 틀린 경우 무효 코드에 빠지는 비율은 360위치에서 약 9.9%, 1000위치에서 약 1.4%에 불과하다. MSB가 틀리면 코드가 거울 코드로 바뀌는데, 이는 항상 유효하므로 결코 검출되지 않는다. 읽은 코드의 진단이 필요하면 별도의 검사가 있어야 한다.
엔지니어링 요점
- 절단식: n = ⌈log₂M⌉, s = (2ⁿ − M)/2, i = s…2ⁿ − 1 − s를 남긴다. 360위치는 s = 76, 1000위치는 s = 12이다.
- 디코딩은 그레이→이진 변환 후 s를 빼기만 하면 된다. 이진값이 s…2ⁿ − 1 − s 밖이면 읽기 오류로 판정한다.
- 앞쪽 M개 코드를 그대로 쓰지 않는다. 360위치에서는 처음과 끝이 5비트 다르고, 이음매에서 실제 위치와 동떨어진 코드를 읽을 수 있다.
- 홀수 위치에는 한 걸음 순환 코드가 없다. 2M위치로 만들어 2로 나누거나, 이음매에서 인크리멘탈 트랙과 동기시킨다.
- 배치는 “트랙별 고정 바 폭”이 아니라 한 바퀴 코드 표와 위치별로 대조해 검증한다. 360위치에서 b4는 이음매에 8위치 폭 구간밖에 없다.
- 제거된 코드는 단일 비트 오류의 약 10% 이하만 잡아내고 MSB 오류는 전혀 검출하지 못하므로, 진단에는 추가 조치가 필요하다.
정리
반사 그레이 코드에서 중점에 대해 대칭인 두 코드는 MSB만 다르다. 대칭 중앙 구간을 취하면 임의의 짝수 위치에 대한 순환 그레이 코드를 얻고, 디코딩은 뺄셈 한 번만 추가하면 된다. 홀수 위치는 패리티 때문에 한 걸음 순환 코드로 구현할 수 없다. 360위치와 1000위치는 각각 9개와 10개 트랙이 필요하며, 이음매의 불규칙한 바 폭은 배치에서 따로 점검해야 한다.
중국어 원문 기사 번역 (0303). ENC7 코드 디스크 제조사 (문의) · 기술 자료 · https://enc7.com
© Langfang Jingzheng Optoelectronic Technology Co., Ltd. 무단 전재를 금합니다. 이 글은 AI의 도움을 받아 작성되었습니다.