Chapter 04

HRP 프레임: 프리앰블·SFD·STS

UWB의 신호는 −41.3 dBm/MHz, 잡음 바닥과 비슷한 세기다(3장). 수신기는 잡음 속에서 신호가 왔다는 것부터 알아채고, 정확히 언제 왔는지 짚고, 그 신호가 가짜가 아님을 확인해야 한다. 802.15.4의 HRP(High Rate Pulse repetition) UWB 프레임은 이 세 가지 일을 구간별로 나눠 맡는다. 이 장에서는 프레임을 앞에서부터 하나씩 뜯어본다.

프레임 한눈에

SYNC (프리앰블) — 같은 심볼 반복 SFD STS (SP1) PHR 데이터(PSDU) + RS 부호 SHR: “왔다” + “지금이 기준 시각” “진짜다”(10장) “무엇을” (길이·속도, 내용) ← 시간 타임스탬프 기준점(RMARKER): SFD 바로 뒤 첫 펄스
그림 4-1. 802.15.4z HRP 프레임(SP1). SP0는 STS가 없고, SP3는 데이터 없이 SHR + STS만 보낸다. 거리 측정의 기준 시각(RMARKER)은 SFD가 끝나는 순간이다.

SP0·SP1·SP3: Android FiraParams.java의 RFRAME_CONFIG_SP0/SP1/SP3(“Ranging frame with STS following SFD, no data”) · PHR 21 심볼, 330비트당 48비트 부호: Decawave uwb-dw1000의 dw1000_hal.c(.nphr = 21), dw1000_phy_data_duration()

프리앰블 심볼과 펄스율

프리앰블 심볼 하나는 길이 31, 127, 91인 3진 코드(+1, 0, −1)를 펄스로 보낸 것이다. 코드의 각 자리(“칩”) 사이에는 빈 칩을 끼워 펄스 간격을 벌린다. 그래서 심볼 시간 = 코드 길이 × 펼침 칩 수 ÷ 499.2 MHz다.

“여보세요, 여보세요… 지금부터 말합니다”

잡음이 심한 무전기로 말을 걸 때 먼저 “여보세요”를 여러 번 반복해 상대가 귀를 맞추게 하고, “지금부터”라고 말한 다음 본론을 꺼낸다. 프리앰블이 반복되는 “여보세요”이고, SFD가 “지금부터”다. 반복이 많을수록 잡음 속에서도 알아채기 쉽지만 말하는 시간은 길어진다.

CALCULATOR

프리앰블 심볼 시간 만들기

모드
코드 길이 × 펼침—
심볼 시간—
평균 펄스율—
그림: 심볼 하나의 앞부분(칩 슬롯, 막대 = 펄스, 빈칸 = 쉼). 실제 코드 값 대신 자리만 보였다. 해볼 것: 네 모드의 심볼 시간이 Zephyr 헤더의 상수(993.59 / 1,017.63 / 729.17 / 3,974.36 ns)와 정확히 같다. 평균 펄스율 = 펄스가 있는 자리 수(길이 31 코드는 16개, 127 코드는 64개) ÷ 심볼 시간으로, 이름표(16·64 MHz)와 조금 다른 실제 값이다. 64 MHz 모드의 62.89 MHz는 DW1000 드라이버 주석의 값(“MPRF of 62.89Mhz”)과 같다. 휴대폰은 BPRF(코드 9~12)와 HPRF(25~32)를 쓴다.

심볼 시간 상수: Zephyr include/zephyr/net/ieee802154_radio.h의 IEEE802154_PHY_HRP_UWB_PRF4/PRF16/PRF64/ERDEV_TPSYM_SYMBOL_PERIOD_NS(주석: 802.15.4-2020 15.2.5 표 15-4, 802.15.4z 15.2.6.2 표 15-7b) · PRF와 코드 번호 범위(PRF 64 MHz는 9~24, 16 MHz는 1~8): uwb-dw1000 dw1000_mac_config()의 검사 · 휴대폰 코드 9~12, 25~32: Android UWB_PREAMBLE_CODE_INDEX_*

코드 번호가 다르면(예: 9번과 10번) 서로의 상관이 작아, 같은 채널의 다른 기기를 덜 방해한다. 와이파이의 채널처럼 코드를 나눠 쓰는 셈이다. Android UWB의 기본값은 9번 채널, 코드 10이다.

반복해서 잡음 속에서 찾기

프리앰블 코드는 자기 상관이 뾰족하도록 고른 수열이다. 자기 자신과 딱 맞게 겹칠 때만 큰 값이 나오고, 조금만 어긋나도 거의 0이다. 수신기는 받은 신호를 코드와 상관시켜, 봉우리가 서는 순간을 찾는다. 심볼 하나로는 잡음에 묻혀도, N개 심볼의 상관을 더하면 신호는 N배, 잡음은 √N배로만 커져 SNR이 10·log₁₀N dB 오른다. 프리앰블이 길수록 멀리서도 찾는 이유다(대신 공중 시간과 전력이 든다).

SIMULATOR

상관을 쌓아 봉우리 세우기

상관 이득(코드 31칩)—
누적 이득—
봉우리 위치—
그래프: 어긋남(칩)별 누적 상관값. 진짜 위치는 0. 해볼 것: ① 칩 SNR −18 dB에서 심볼 1개면 봉우리가 잡음에 묻히기 쉽다. ② 64개를 쌓으면 18 dB를 더 얻어 0에서 또렷한 봉우리가 선다. 모델: 설명용 길이 31 m-수열(±1, 주기 자기 상관이 0이 아닌 곳에서 −1/31) — 802.15.4의 실제 3진 코드는 아니지만 같은 성질을 보여 준다. 가우스 잡음.

프레임 전송 시간

프레임의 공중 시간은 SHR(프리앰블 + SFD) + PHR + 데이터(+ STS)다. 거리 측정 한 번에 프레임을 둘~넷 주고받으므로(6장), 이 시간이 측정 주기·전력·한 공간에서 함께 잴 수 있는 기기 수를 정한다(11·12장).

SHR = ⌈Tpsym × (Nsync + Nsfd)⌉ · 데이터 = ⌈Tbsym × Nphr + Tdsym × (8(n + 2) + 48 × (1 + ⌊8(n + 2)/330⌋))⌉ µs
n = FCS를 뺀 바이트, +2는 FCS 2바이트. Tpsym 1.0176 µs, Tbsym 1.0256 µs(850 kb/s, PHR), Tdsym 0.1282 µs/비트(6.81 Mb/s), Nsfd 8, Nphr 21 — Decawave dw1000_phy_SHR_duration()·dw1000_phy_data_duration()와 기본값(dw1000_dev.c, dw1000_hal.c)
예측해 보기

프리앰블 64심볼, 데이터 6.8 Mb/s로 20바이트를 보낸다. 공중 시간에서 가장 큰 부분은?

프리앰블 심볼 하나는 약 1 µs다.

프리앰블 64심볼만으로 약 64 µs이고, 20바이트 페이로드는 6.8 Mb/s로 수십 µs가 안 된다. 짧은 거리 측정 메시지는 대부분의 시간을 “알아채기”에 쓴다. 아래 시뮬레이터로 길이를 바꿔 확인해 보자.
SIMULATOR

프레임 모양과 공중 시간

프레임
프리앰블 길이
STS 길이(512칩 단위)
SHR—
STS—
프레임 전체—
해볼 것: ① Android 기본값(SP3, 프리앰블 64, STS 64)의 거리 측정 프레임은 약 140 µs다. ② SP0에 프리앰블 1,024면 1 ms를 넘는다. 옛 측위 시스템이 먼 거리용으로 쓰던 설정이다. ③ SP3는 데이터가 없어 거리 측정 결과(타임스탬프)는 따로 SP1·SP0 프레임으로 주고받는다(11장). STS 한 단위 = 512칩 = 1.0256 µs. 계산은 DW1000 드라이버의 식(검증 스크립트가 같은 결과인지 확인)이고, 802.15.4z의 BPRF 세부(SFD 길이 등)는 칩에 따라 조금 다를 수 있다.

핵심 정리

  1. HRP 프레임 = SYNC(프리앰블) + SFD + (STS) + PHR + 데이터. SP0(STS 없음), SP1(STS + 데이터), SP3(STS만).
  2. 프리앰블 심볼 시간 = 코드 길이 × 펼침 ÷ 499.2 MHz: 31×16 → 993.59 ns, 127×4 → 1,017.63 ns, 91×4 → 729.17 ns.
  3. 프리앰블은 자기 상관이 뾰족한 코드의 반복. N개를 쌓으면 10·log₁₀N dB를 얻는다.
  4. SFD가 끝나는 순간이 타임스탬프 기준점. STS는 위조할 수 없는 시각 기준(10장).
  5. Android 기본 프레임(SP3, 프리앰블 64, STS 64)은 약 140 µs.

확인 퀴즈

BPRF 프리앰블 심볼 시간 1,017.63 ns는 어떻게 나오나?

508칩 × 2.003 ns = 1,017.63 ns.

프리앰블 심볼 64개의 상관을 더하면 SNR은 얼마나 오르나?

10·log₁₀64 ≈ 18 dB.

SP3 프레임의 특징은?

짧고 위조하기 어려운 거리 측정 전용 프레임. 결과는 다른 프레임으로 주고받는다.

거리 측정의 기준 시각(RMARKER)은?

송신·수신 타임스탬프 모두 이 지점을 기준으로 찍는다(5장).