시계와 타임스탬프: 15.65 피코초
거리 1 cm는 빛으로 33 피코초다. 휴대폰 CPU 시계(수 GHz)로도 한 눈금이 수백 피코초라, 그것으로는 몇 cm 단위의 거리를 잴 수 없다. UWB 칩은 오직 시각을 찍기 위한 특별한 시계를 갖고 있다. 이 장에서는 그 시계의 눈금, 한계, 그리고 보정해야 할 것들을 숫자로 본다.
- 타임스탬프 단위 15.65 ps가 499.2 MHz × 128에서 나오고 4.7 mm에 해당함을 계산한다.
- 40비트 시계가 17초마다 넘친다는 것과, 시각의 차이를 안전하게 빼는 방법을 안다.
- 안테나 지연을 보정하지 않으면 거리가 수십 m 틀리는 이유를 안다.
- 두 기기 시계의 ppm 차이가 응답 시간에 곱해져 거리 오차가 되는 원리를 계산한다(6장의 준비).
63.8976 GHz로 세는 시계
UWB 칩의 타임스탬프 단위는 499.2 MHz의 128배, 63.8976 GHz의 한 주기다. 1/(128 × 499.2 MHz) = 15.65 ps. 빛은 이 사이에 4.69 mm를 간다. 실제로 칩이 이렇게 빠른 계수기를 돌리는 것은 아니고, 더 느린 시계로 세면서 프리앰블로 잰 신호의 앞쪽 가장자리를 보간해 이 단위까지 쪼갠다(7장).
시각은 40비트 레지스터에 담긴다. 2⁴⁰ × 15.65 ps ≈ 17.2초마다 0으로 돌아간다. 그래서 두 시각의 차이는 언제나 2⁴⁰을 법으로 빼야 한다. 거리 측정 공식은 이 빼기를 마스크로 처리한다(6장).
cm 눈금밖에 없는 자로는 머리카락 굵기를 잴 수 없다. 눈금이 촘촘해야 작은 차이를 잰다. UWB 칩의 시계는 한 눈금이 15.65 ps, 빛으로 4.7 mm다. 다만 자가 정확해도 자의 0점(안테나 지연)이 어긋나거나 자가 늘어나 있으면(ppm 오차) 결과가 틀린다. 이 장이 다루는 세 가지다.
시간 눈금 확대경
눈금 15,650 fs: Zephyr ieee802154_dw1000.c의 DWT_TS_TIME_UNITS_FS 15650U · 1/499.2e6/128: Decawave uwb-core의 uwb_rng_tof_to_meters() · 40비트 레지스터: ieee802154_dw1000_regs.h 주석 “40 bit register” · “dx_time in dwt timeunits (uwb usecs << 16)”: uwb.h · 지연 송신 시각은 하위 8비트를 버리고 기록: dw1000_set_delay_start()의 dx_time >> 8
안테나 지연: 칩 안의 숨은 거리
타임스탬프는 칩 안의 디지털 회로가 찍는다. 그런데 신호가 실제로 공기 중에 나가는 곳은 안테나다. 칩 → 정합 회로 → 안테나로 가는 동안, 그리고 받을 때 반대 방향으로 오는 동안 수백 피코초~수백 나노초가 더 걸린다. 이것이 안테나 지연(antenna delay)이다. 거리 측정은 왕복 시간에서 이 지연을 빼야 한다.
Zephyr의 DW1000 드라이버는 송신·수신 안테나 지연 기본값을 각각 16,450 눈금(약 257 ns)으로 둔다. 한 기기의 송신 + 수신 지연은 합쳐 32,900 눈금(약 515 ns)이다. 이 값을 빼지 않으면 거리가 100 m 넘게 틀린다. 그래서 제품은 알려진 거리에서 측정해 기기마다 이 값을 보정한다. 거리는 (왕복 − 응답) ÷ 2로 구하므로(6장), 기기 하나의 지연 합이 1 ns 틀리면 거리는 15 cm, 두 기기 모두 같은 만큼 틀리면 30 cm 틀린다.
안테나 지연을 잘못 넣으면
안테나 지연 기본값: Zephyr ieee802154_dw1000.c의 DW1000_TX_ANT_DLY 16450, DW1000_RX_ANT_DLY 16450 · Decawave 드라이버는 기기별 설정값(DW1000_DEVICE_0_RX_ANT_DLY 등)을 받아 dw1000_phy_set_rx_antennadelay()로 적용
두 시계는 같은 속도로 가지 않는다
UWB 칩의 시계는 수정 진동자에서 나오고, 수정 진동자는 보통 ±10~20 ppm(100만분의 1) 오차가 있다. 1초에 20 µs씩 빠르거나 느리다는 뜻이다. 한 기기 안에서 시각의 차이를 재는 데에는 거의 문제가 없지만, 다른 기기의 시계로 잰 시간을 내 시계로 잰 시간과 섞으면 문제가 된다.
양방향 거리 측정(6장)에서 상대는 내 신호를 받고 정해진 시간(응답 시간, 수백 µs~수 ms) 뒤에 답한다. 상대가 “500 µs 기다렸다”고 알려 와도, 상대 시계가 20 ppm 빠르면 실제로는 499.99 µs다. 그 10 ns 차이가 그대로 왕복 시간 오차가 되고, 거리로는 1.5 m다. 응답 시간 × ppm 차이가 거리 오차를 정한다. 6장의 양방향 측정(DS-TWR)과 반송파 주파수 오차 보정이 이 문제를 푼다.
시계 오차 20 ppm, 응답 시간 500 µs면 단방향 TWR 오차가 약 1.5 m다. 응답 시간을 2 ms로 늘리면?
오차는 ppm × 응답 시간에 비례한다.
ppm 오차 × 응답 시간
Hz → ppm 환산 DWT_HZ_TO_PPM_MULTIPLIER_CHAN_n = 1.0e6 / UWB_CH_FREQ_CHAN_n: uwb-core uwb_mac.h · 시계 차이 비율 계산 dw1000_calc_clock_offset_ratio(): uwb-dw1000 dw1000_mac.c
핵심 정리
- 타임스탬프 1 눈금 = 1/(128 × 499.2 MHz) = 15.65 ps = 빛으로 4.69 mm.
- 40비트 시계는 약 17.2초마다 넘친다. 시각 차이는 2⁴⁰을 법으로 뺀다.
- 안테나 지연(DW1000 기본 송신·수신 각 16,450 눈금 ≈ 257 ns)을 기기마다 보정해야 한다. 기기 하나의 지연이 1 ns 틀리면 15 cm.
- 상대 시계로 잰 응답 시간에는 ppm 오차가 곱해진다. 20 ppm × 500 µs = 10 ns = 1.5 m.
- 반송파 주파수 차이(9번 채널에서 1 ppm ≈ 8 kHz)로 시계 차이를 재서 보정한다.
확인 퀴즈
UWB 타임스탬프 1 눈금은 빛으로 몇 mm인가?
40비트 타임스탬프에서 TX = 0x0000000100, RX = 0xFFFFFFFF00일 때 올바른 차이(TX − RX)는?
한 기기의 안테나 지연(송신 + 수신 합)을 1 ns 잘못 넣으면 거리 오차는?
시계 차이 20 ppm, 상대 응답 시간 500 µs면 보정 없는 단방향 측정의 거리 오차는?