Przejdź do treści
Źródło artykułu

Korekcja błędów transmisji w pakietach ADS-L z użyciem 24-bitowego syndromu CRC

Niniejszy artykuł, przedstawia sposób w jaki korekcja/wykrywanie błędów może istotnie poprawić zasięgi transmisji. Ale! Choć staraliśmy się opisać zagadnienie maksymalnie prostym językiem, poniższy tekst, podobnie jak tytuł są bardzo techniczne. Innymi słowy lekturę polecamy dociekliwym.

24-bitowy CRC używany do wykrywania błędów w transmisjach ADS-L może być również wykorzystany do korekcji pojedynczych lub wielokrotnych błędów bitowych. Zanim jednak przejdziemy do opisu należy się kilka słów wyjaśnienia. Po pierwsze co to jest CRC, po drugie co to ten Syndrom CRC a po trzecie co to ADS-L?

CRC (Cyclic Redundancy Check) to metoda wykrywania błędów w przesyłanych danych. Polega na dodaniu do wiadomości specjalnego kodu kontrolnego obliczanego matematycznie na podstawie zawartości danych. Odbiornik ponownie oblicza CRC i porównuje wynik, jeśli wartości się różnią, oznacza to, że transmisja została uszkodzona. Innymi słowy, dla osób technicznych to taka suma kontrolna (ang. checksum).

Syndrom CRC to wynik obliczenia CRC dla całego odebranego pakietu razem z jego kodem kontrolnym. Dla poprawnego pakietu syndrom wynosi zero, natomiast przy błędzie przyjmuje określoną wartość zależną od uszkodzonych bitów. Dzięki temu syndrom może nie tylko wykrywać błędy, ale również pomagać w odnalezieniu i korekcji bitów przekłamanych w trakcie transmisji.

ADS-L, per analogia do ADS-B, to "lekki" i promowany przez EASA standard transmisji danych takich jak pozycja, wysokość czy prędkość statku powietrznego. Co do zasady ma uporządkować wielorakość standardów Electronic Conspicuity (OGN, FLARM, FANET, PilotAware). Z uwagi, że ADS-L ma być dostępny dla wszystkich i ma być niedrogi, jego transmisja odbywa się przede wszystkim w paśmie 868MHz i ze stosunkowo niskimi mocami (ok 25mW, 125mW i 500mW) przez co potrzebne jest użycie wszelkich dostępnych metod dodatkowego "wzmocnienia" transmitowanych komunikatów. Do tego celu ADS-L wykorzystuje krótkie pakiety danych zabezpieczone 24-bitowym CRC, które umożliwiają wykrywanie i częściową korekcję błędów transmisji. Dzięki temu ADS-L może działać skutecznie nawet przy bardzo słabych sygnałach i dużych odległościach odbioru.

CRC syndrome, czyli syndrom CRC

Syndrom oblicza się poprzez przepuszczenie wszystkich bajtów pakietu (łącznie z trzema bajtami CRC) przez algorytm CRC: wynikiem jest 24-bitowa wartość, która dla poprawnie odebranego pakietu składa się wyłącznie z zer.

CRC posiada istotną cechę/właściwość: gdy którykolwiek bit pakietu zostanie odwrócony (zamieniony z 0 na 1 lub odwrotnie), syndrom CRC staje się niezerowy i zawsze przyjmuje tę samą wartość dla danego numeru bitu, niezależnie od wartości pozostałych bitów w pakiecie. Poniżej przedstawiono syndromy CRC dla pierwszych czterech bajtów pakietu. Jest to fragment rzeczywistego kodu służącego do korekcji błędów transmisji. 

Aby wyjaśnić to na przykładzie: jeśli pierwszy bit pakietu zostanie odwrócony, syndrom CRC wynosi 0x7ABEE1 i nie zależy od wartości żadnego z bitów pakietu. Zawsze będzie taki sam.

Ta właściwość jest absolutnie kluczowa i potrzebna do funkcjonowania algorytmu. Jeśli to zrozumiemy, to poprawianie pojedynczego przekłamanego bitu w pakiecie staje się trywialnie proste: obliczamy syndrom CRC i wyszukujemy go w tabeli: jeśli tam występuje, odwracamy odpowiadający mu bit i gotowe!

Istnieje niewielkie prawdopodobieństwo, że dany syndrom CRC został wygenerowany przez odwrócenie wielu innych bitów albo pojawił się przypadkowo „z szumu”. W takim przypadku odwrócenie wskazanego bitu doprowadziłoby do „nadkorekcji”, skutkiem czego otrzymalibyśmy pakiet z poprawnym CRC, lecz niepoprawną treścią. Poniżej pokażemy, jak odfiltrować takie przypadki.

Gdy błędów jest więcej

Co się dzieje, gdy odwrócone zostaną dwa lub więcej bitów pakietu? Wówczas syndrom CRC staje się bitowym XOR1-em syndromów odpowiadających odwróconym bitom. Na przykład, jeśli odwrócone zostaną pierwszy i trzeci bit pakietu, syndrom CRC wyniesie:

0x7ABEE1 ^ 0x6152BA = 0x1BEC58

Wartość ta również będzie taka sama niezależnie od wartości tych lub innych bitów w pakiecie.

W ten sposób można zrozumieć, jak poprawiać więcej niż jeden przekłamany bit. CRC zostało zaprojektowane jako kod do wykrywania błędów, a nie ich korekcji, dlatego nie istnieje (znany) regularny sposób wyznaczania odwróconych bitów. Konieczne jest więc przeszukiwanie zbioru potencjalnych wzorców błędów, co przy wielu błędach może stać się bardzo rozbudowane. Istnieją jednak sposoby przyspieszania tego procesu poprzez wskazywanie „podejrzanych” bitów, na przykład na podstawie błędów dekodowania Manchester albo "amplitudy” bitów (soft bits) z demodulatora.

Przykład z dekoderem Manchester

Jeżeli odbierzemy pakiet i występują w nim cztery bity z błędami dekodowania, czyli 00 albo 11 (podczas gdy kod Manchester powinien zawierać wyłącznie 01 lub 10) wówczas sprawdzamy wszystkie 16 kombinacji tych bitów, aby zobaczyć, czy którakolwiek z nich daje syndrom CRC równy zeru.

Uwaga: nie trzeba za każdym razem ponownie obliczać CRC po odwróceniu bitu w pakiecie. Można wykorzystać tabelę syndromów oraz opisaną wcześniej właściwość, dzięki czemu cały proces jest bardzo szybki i często prowadzi do sukcesu.

Podobnie, gdy dysponujemy "amplitudami" zdemodulowanych bitów (wspomniane wcześniej "soft bits") z demodulatora, wybieramy pewną liczbę najsłabszych bitów i sprawdzamy syndromy CRC w taki sam sposób. Metoda ta nosi nazwę soft-assisted syndrome decoding dla kodu CRC.

Over-corrected packets czyli pakiety nadmiernie skorygowane

Im więcej bitów próbujemy poprawiać, tym większe jest prawdopodobieństwo uzyskania pakietu z poprawnym CRC, lecz treścią różną od oryginalnej, ponieważ odwrócone zostały niewłaściwe bity, a nie te uszkodzone przez kanał transmisyjny. W tym miejscu ogromną rolę odgrywa "scrambling2" pakietu.

Dobry "scrambling" ma tę właściwość, że jeśli podczas odbioru błędny będzie choćby jeden bit, to po wykonaniu operacji odwrotnej (unscrambling) otrzymamy pseudolosową zawartość pakietu. W rezultacie, podczas dekodowania elementów pakietu, takich jak adres urządzenia, typ adresu, pozycja itd. uzyskamy pseudolosowe wartości, które natychmiast zauważymy jako niepasujące do innych pakietów. Najłatwiejszymi elementami do sprawdzenia są identyfikator urządzenia i pozycja.

Bez etapu scrambling/unscrambling moglibyśmy nie zauważyć, że niektóre bity w pakiecie zostały uszkodzone, szczególnie w najmniej znaczących bitach pozycji, wysokości, prędkości itd. Jednak przy zastosowaniu scramblingu błędne pakiety są natychmiast widoczne. Taka kontrola pełni rolę dodatkowego CRC, praktycznie eliminując problemy związane z nad-korekcją.

Jako ilustrację znaczenia i użyteczności korekcji błędów w ADS-L w kolejnych rozdziałach przedstawiono pomiar w warunkach laboratoryjnych gdzie zmierzono spory zysk z tym związany oraz w warunkach rzeczywistych, jako wykres zasięgu z testu w locie modulacji HDR, na którym kolorem zielonym zaznaczono pakiety, które nie mogłyby zostać odebrane bez korekcji błędów. Na krańcach zasięgu można zauważyć, że większość, jeśli nie wszystkie pakiety zawierały błędy możliwe do skorygowania, co pomogło zwiększyć zasięg odbioru lub wypełnić luki w idealnym odbiorze (bez błędów).

Pomiar laboratoryjny

W laboratorium przeprowadzono serię pomiarów z użyciem generatora testowego o regulowanej mocy wyjściowej oraz odbiornika OGN opartego na odbiorniku USB RTLSDR. Wysyłano ciągły strumień pakietów z częstotliwością 25 Hz, a następnie rejestrowano liczbę poprawnie odebranych pakietów wraz z liczbą skorygowanych bitów na pakiet oraz wartością SNR raportowaną przez odbiornik.

Konfiguracja stanowiska: (biały) generator sygnałowy, (czarny) tłumik, (niebieski) odbiornik USB RTLSDR, (czarny) komputer PC uruchamiający kod odbiornika OGN oraz sterujący generatorem w celu wykonywania pomiarów i rejestracji współczynnika odbioru pakietów.

Wyniki przedstawiono na wykresie poniżej dla pakietów ADS-L i OGN w celu porównania skuteczności korekcji błędów opartej odpowiednio na CRC24 dla ADS-L oraz klasycznym kodzie FEC4 typu Low Density Parity Check (LDPC5) dla OGN.

Warto zauważyć, że efektywny zysk uzyskany dzięki zastosowaniu korekcji danych wyniósł 4 dB przy PER3 równym 10%, a dla pakietów OGN był nawet o dodatkowe 1,5 dB większy dzięki silniejszemu i regularnemu kodowi korekcji błędów FEC4.

Oba systemy mają podobny rozmiar pakietów:

  • pakiety ADS-L zawierają 21 bajtów danych użytkownika oraz 3 bajty CRC24, 
  • pakiety OGN zawierają 20 bajtów danych użytkownika oraz 6 bajtów kodu FEC LDPC5

Można zaobserwować, że bez korekcji błędów wydajność obu systemów jest niemal identyczna, jednak po uruchomieniu algorytmu korekcji błędów CRC24 potrafił skorygować do 8-9 bitów w pakiecie, natomiast LDPC do 14 bitów.

Dla zainteresowanych poniżej przedstawiono sposób, w jaki pakiety o różnej sile sygnału wyglądają na spektrogramie:

Pakiety ADS-L/OGN na spektrogramie: wizualna reprezentacja stosunku sygnału do szumu (SNR). Górny wiersz przedstawia zastosowany poziom sygnału oraz wartość SNR raportowaną przez odbiornik.

Skuteczność w warunkach rzeczywistych

Praktyczne znaczenie korekcji błędów w "realu" ilustruje powyższy wykres przedstawiający zasięg odbioru, SNR6 oraz liczbę skorygowanych bitów dla pakietów HDR7 odebranych przez wybrany odbiornik podczas lotu testowego przeprowadzonego 12.02.2026.

Poszczególne przebiegi oznaczają, od góry do dołu:

  • czerwony: wysokość statku powietrznego, 
  • magenta: odległość między odbiornikiem a statkiem powietrznym dla pakietów odebranych bez błędów, 
  • zielony: odległość między odbiornikiem a statkiem powietrznym dla pakietów wymagających korekcji błędów, 
  • niebieski: stosunek sygnału do szumu (SNR) dla odebranych pakietów, 
  • ciemnozielony: liczba skorygowanych bitów w pakiecie. 

Można zauważyć, jak pakiety z poprawionymi błędami transmisji wypełniały luki w odbiorze i jaką rolę odgrywały w zwiększaniu zasięgu odbioru. Skorygowano do 7 bitów w 24-bajtowych pakietach danych.

Wnioski

Chociaż 24-bitowy CRC używany w pakietach ADS-L został zaprojektowany przede wszystkim do wykrywania błędów, jego liniowość umożliwia praktyczną korekcję pojedynczych oraz ograniczonej liczby wielobitowych błędów poprzez przeszukiwanie syndromów ograniczone informacjami o wiarygodności z demodulatora: błędami Manchester lub "miękkimi bitami".

Zysk uzyskany dzięki algorytmowi korekcji błędów wyniósł 4 dB dla ADS-L przy współczynniku błędów pakietowych (PER) równym 10%.

Porównanie z protokołem OGN, w którym pakiety mają zbliżony rozmiar, lecz wykorzystują większy, 48-bitowy kod kontrolny LDPC, wykazało dodatkowy zysk kodowy wynoszący 1,5 dB, co daje łącznie 5,5 dB zysku kodowego przy PER równym 10%. Odpowiada to niemal czterokrotnemu zwiększeniu mocy transmisji.

Podsumowując: tam, gdzie odbiornik bez korekcji błędów zbliża się już do całkowitej utraty odbioru, odbiornik wyposażony w korekcję błędów dopiero zaczyna tracić pierwsze pakiety.

1 XOR czyli exclusive OR, to operacja logiczna, która daje wynik 1 tylko wtedy, gdy porównywane bity są różne
2 Scrambling to metoda mieszania danych przed transmisją, która zamienia je w pozornie losowy ciąg bitów, aby ułatwić wykrywanie błędów i poprawić jakość transmisji.
3 PER (Packet Error Rate) to współczynnik błędów pakietowych określający, jaki procent przesyłanych pakietów danych został odebrany błędnie lub utracony.
4 FEC (Forward Error Correction) to metoda dodawania do danych dodatkowych informacji, które pozwalają odbiornikowi samodzielnie wykrywać i poprawiać błędy transmisji bez konieczności ponownego wysyłania pakietu.
5 LDPC (Low Density Parity Check) to zaawansowany kod korekcji błędów FEC, który dodaje do danych specjalne bity kontrolne pozwalające bardzo skutecznie wykrywać i poprawiać błędy nawet przy bardzo słabym lub zaszumionym sygnale.
6 SNR (Signal-to-Noise Ratio) to stosunek siły użytecznego sygnału do poziomu szumu, określający jak wyraźny i dobrej jakości jest odbierany sygnał radiowy.
7 HDR (High Dynamic Range) w kontekście transmisji radiowej oznacza tryb lub technikę odbioru i dekodowania sygnałów o bardzo dużym zakresie poziomów sygnału: od bardzo słabych do bardzo silnych, co pozwala zwiększyć zasięg i skuteczność odbioru.

Autorzy badania:

Sylwester Barański, sylw.bar@gmail.com
Paweł Jałocha, Pawel.Jalocha@gmail.com

Polecamy również lekturę:

Pasma i modulacje systemu ADS-L
Rekord zasięgu sieci OGN! Sygnał, odebrano z odległości 240km, zza horyzontu

FacebookTwitterWykop
Źródło artykułu

Nasze strony