PRN 코드: 위성마다 다른 무늬
하늘의 GPS 위성 열 몇 기가 모두 1,575.42 MHz라는 같은 주파수로, 같은 순간에 방송한다. 라디오라면 섞여서 아무것도 못 알아들을 것이다. 그런데 수신기는 위성 하나하나를 골라 듣는다. 위성마다 다른 “무늬”를 신호에 곱해 보내기 때문이다. 이 무늬가 PRN 코드(Pseudo-Random Noise code)다. 이 장에서는 그 무늬를 규격대로 직접 만들어 보고, 규격 표와 칩 하나까지 맞춰 본다.
- G1·G2 두 시프트 레지스터로 C/A 코드(1,023칩)를 만드는 과정을 단계별로 따라간다.
- 만든 코드의 처음 10칩을 IS-GPS-200 표 3-Ia의 8진수 값과 맞춰 본다.
- 자기 상관이 뾰족하고 상호 상관이 작다는 성질이 “골라 듣기”와 “거리 재기”를 동시에 가능하게 함을 이해한다.
- 코드 위상 1칩이 약 293 m라는 것과, 1 ms마다 반복되는 코드의 모호성을 안다.
시프트 레지스터 두 개
C/A 코드는 10칸짜리 시프트 레지스터 두 개, G1과 G2로 만든다. 둘 다 처음에 모든 칸을 1로 채우고, 1.023 MHz 박자마다 한 칸씩 민다. 새로 들어오는 값은 정해진 칸들을 XOR한 값이다(G1은 3·10번 칸, G2는 2·3·6·8·9·10번 칸). 이런 레지스터는 1,023(= 2¹⁰ − 1)칩마다 같은 무늬가 돌아오는 가장 긴 수열(m-수열)을 만든다.
위성마다 다른 코드는 G2를 위성마다 정해진 칩 수만큼 늦춘 것과 G1을 XOR해서 얻는다. 이렇게 두 m-수열을 엇갈려 섞은 것을 골드 코드라 한다. 규격 표는 늦출 칩 수와 함께, 늦추는 대신 G2의 두 칸을 XOR해 같은 결과를 내는 “두 탭” 방식(예: PRN 1은 2·6번 칸)도 적어 둔다.
여러 방송국이 같은 주파수로 동시에 정시를 알린다고 해 보자. 방송국마다 고유한 음악을 틀면, 그 음악을 아는 사람은 섞인 소리 속에서도 원하는 방송을 골라 듣는다. 음악이 어디까지 흘렀는지를 맞추면 언제 보낸 소리인지도 안다. PRN 코드가 그 음악이다.
C/A 코드 발생기 한 칩씩
G1 = X¹⁰ + X³ + 1, G2 = X¹⁰ + X⁹ + X⁸ + X⁶ + X³ + X² + 1, 초기값 1111111111, 1.023 MHz: IS-GPS-200N 3.3.2.3(p.29, PDF 48쪽) · 위성별 두 탭·G2 지연·처음 10칩 8진수: 표 3-Ia(p.6~7) · 코드 길이 1,023칩, 1 ms: 3.2.1.3
골라 듣기와 거리 재기
골드 코드는 두 가지 성질을 함께 갖는다.
- 자기 상관이 뾰족하다: 코드를 자기 자신과 칩 단위로 맞춰 곱해 더하면 1,023이 나오지만, 한 칩만 어긋나도 거의 0(−1, −65, 63 중 하나)이다. 그래서 수신기가 자기 복제 코드를 밀어 가며 맞춰 보면, 딱 맞는 위치에서만 큰 봉우리가 선다. 그 위치가 코드 위상, 곧 신호가 날아온 시간이다.
- 서로 다른 코드끼리는 상관이 작다: PRN 1과 PRN 2를 어떻게 맞춰도 상관은 −65, −1, 63 셋 중 하나뿐이다. 그래서 같은 주파수에 위성 여럿이 겹쳐도 원하는 위성만 쌓인다.
PRN 1의 복제 코드로 PRN 2의 신호를 상관시키면 결과는?
골드 코드의 상호 상관은 세 값만 나온다.
상관을 밀어 가며 보기
C/A 코드는 1 ms마다 반복하므로, 코드 위상만으로는 0~300 km 안의 거리만 안다. 실제 거리(약 2만 km)의 나머지 “1 ms의 몇 배”는 항법 메시지의 시각(7장)으로 채운다. 대신 1 ms마다 다시 맞춰 볼 수 있어 찾기가 빠르다. Galileo E1 코드는 4,092칩(4 ms)이고, 수학식이 아니라 규격 부록에 실린 무작위 수열을 그대로 쓴다(메모리 코드).
핵심 정리
- C/A 코드 = G1 ⊕ (위성마다 다르게 늦춘 G2). G1 = X¹⁰+X³+1, G2 = X¹⁰+X⁹+X⁸+X⁶+X³+X²+1, 초기값 모두 1.
- 1,023칩, 1.023 Mchip/s, 1 ms마다 반복. 1칩 ≈ 293 m.
- 자기 상관은 맞을 때만 1,023, 상호 상관은 −65/−1/63. 같은 주파수에서 위성을 골라 듣고 시간을 잰다.
- 코드 위상은 1 ms(300 km) 안의 거리만 준다. 나머지는 항법 메시지의 시각으로.
확인 퀴즈
C/A 코드 한 주기의 길이는?
규격 표의 PRN 1 처음 10칩 “1440”(8진수)을 2진수로 쓰면?
같은 주파수의 위성 여럿을 구별할 수 있는 이유는?
C/A 코드 1칩은 거리로 대략?