원자시계(타임 키핑 시스템) 편에서 살펴본 것처럼, VLBI 전파망원경은 수소 메이저 원자시계로 수십만 년에 1초 정도밖에 어긋나지 않는 놀라운 정밀도를 확보합니다. 그런데 원자시계 하나가 아무리 정확해도, 그 정확함이 수신기, 샘플러, 데이터 저장장치 등 전파망원경 안의 모든 장비에 똑같이 전달되지 않으면 소용이 없습니다. 그래서 원자시계는 자신이 만든 시간·주파수 기준을 1PPS(초당 펄스)와 10MHz라는 두 가지 신호로 바꾸어, 케이블을 통해 전파망원경 안의 모든 장비에 똑같이 나누어 보냅니다.
여러 대의 장비가 저마다 자기 발진기(오실레이터)만 믿고 따로 시간을 잰다면, 원자시계 편에서 본 수정진동자처럼 시간이 지날수록 서로 조금씩 어긋나 버립니다. 그래서 모든 장비는 자체 발진기 대신, 원자시계가 보내주는 1PPS와 10MHz 신호에 맞춰 자신의 내부 시계를 계속 다시 맞추는(동기화하는) 과정을 거칩니다.
초 단위 시간을 아주 잘게 나누는 "똑딱거림"의 기준입니다. 마치 메트로놈이 1초에 천만 번 똑딱여야 하는데, 온도나 노화 때문에 이 박자가 아주 조금씩 빨라지거나 느려지는 것처럼, 장비 자신의 발진기만 믿고 놔두면 진동 속도가 서서히 흐트러집니다. 그래서 모든 장비의 발진기가 이 10MHz 신호에 자신의 진동수를 맞추면(위상동기, PLL), 장비마다 따로 있던 발진기들이 모두 같은 속도로 똑딱거리게 됩니다.
정확히 1초에 한 번, "지금이 그 초의 시작점"임을 알려주는 펄스입니다. 10MHz만으로는 진동 속도만 같을 뿐 "몇 번째 초인지" 알 수 없기 때문에, 1PPS가 절대적인 시각 기준점을 딱 찍어 줍니다. 이 펄스는 한 번만 보내고 끝나는 것이 아니라, 매초마다 분배기를 통해 전파망원경의 모든 장비에 동시에 계속 전달되며, 각 장비는 이 펄스가 도착할 때마다 자신의 오차를 다시 확인하고 맞춥니다. 다만 오차를 실제로 보정하는 주기는 시스템 환경에 따라 달라질 수 있습니다.
원자시계 하나가 내는 신호를 여러 장비로 동시에 나누어 보내는 장치입니다. 신호를 단순히 여러 갈래로 쪼개면 세기가 약해지므로, 분배기가 각 출력을 다시 증폭해 모든 장비에 손실 없이 도달하게 합니다.
신호가 케이블을 타고 각 장비까지 가는 데 걸리는 시간(전파 지연)은 케이블 길이마다 다릅니다. 이 차이를 미리 측정해 보정해 두지 않으면, 모두 같은 원자시계를 보고 있어도 장비마다 도착 시각이 조금씩 어긋납니다.
👉 아래 시뮬레이션에서 기준신호 장비가 보내는 1PPS 펄스와, 장비 A·B·C의 발진기가 서서히 어긋나는 모습을 지켜본 뒤 "지금 동기화 실행" 버튼을 눌러보세요!
3개 장비(A·B·C)는 저마다 다른 속도로 시간이 어긋나는 발진기를 가진 것으로 가정했습니다. 시간이 흐를수록 기준(회색 눈금)에서 점점 멀어지다가, 동기화를 실행하면 모두 다시 0으로 맞춰지고 그 시점부터 다시 어긋나기 시작합니다.
위 시뮬레이션의 "지금 동기화 실행" 버튼은 실제 전파망원경에서 반복적으로 수행하는 절차를 단순화한 것입니다. 각 장비는 자신이 만든 1PPS 출력 펄스와, 원자시계로부터 받은 기준 1PPS 펄스가 도착한 시각을 비교해 위상차(오차)를 측정하고, 그 오차만큼 자신의 발진기 위상을 되돌려 보정합니다. 이런 동기화 로직을 의사코드로 정리하면 다음과 같습니다.
여러 장비를 기준신호에 동기화하는 절차(의사코드 예시)
THRESHOLD = 0.5 # 허용 오차(μs). 이보다 작으면 이미 동기화된 것으로 간주
for device in [장비A, 장비B, 장비C]:
ref_edge = wait_for_1pps_edge(원자시계) # 기준 1PPS 펄스 도착 시각
dev_edge = wait_for_1pps_edge(device) # 해당 장비의 1PPS 출력 시각
offset = dev_edge - ref_edge # 위상차(오차) 계산 [μs]
if abs(offset) > THRESHOLD:
apply_phase_correction(device, -offset) # 오차만큼 반대로 보정
log(f"{device}: {offset:+.2f} μs 어긋남 → 보정 적용 → 0.00 μs")
else:
log(f"{device}: 이미 동기화됨 ({offset:+.2f} μs)")