Radio definiowane programowo (Software Defined Radio) to metoda zastępowania prac związanych z metalem (co zasadniczo jest korzystne dla zdrowia) bólami głowy związanymi z programowaniem. SDR zapowiada się na dużą przyszłość, a jego główną zaletą jest zniesienie ograniczeń w implementacji protokołów radiowych. Przykładem jest metoda modulacji OFDM (ortogonalna modulacja częstotliwości), która stała się możliwa tylko dzięki metodzie SDR. Ale SDR oferuje również inną, czysto inżynieryjną możliwość – kontrolę i wizualizację sygnału w dowolnym punkcie z minimalnym wysiłkiem.
Jednym z interesujących standardów komunikacji jest naziemna telewizja cyfrowa DVB-T2.
Po co? Oczywiście, można po prostu włączyć telewizor bez wstawania, ale nie ma tam absolutnie nic do oglądania, i to już nie jest moje zdanie, a fakt medyczny.
Mówiąc serio, DVB-T2 został zaprojektowany z bardzo szerokimi możliwościami, w tym:
- zastosowanie wewnętrzne
- modulacja od QPSK do 256QAM
- szerokość pasma od 1,7 MHz do 8 MHz
Posiadam doświadczenie w odbiorze telewizji cyfrowej w zasadzie SDR. Standard DVB-T można znaleźć w znanym projekcie GNURadio. Istnieje blok gr-dvbs2rx dla standardu DVB-T2 (wszystko dla tego samego GNURadio), ale wymagający wcześniejszej synchronizacji sygnału, co inspiruje (osobne podziękowania dla Rona Economosa).
Co mamy.
Istnieje standard ETSI EN 302 755, szczegółowo opisujący transmisję, ale nie odbiór.
Sygnał w eterze z częstotliwością próbkowania 9,14285714285714285714 MHz, modulowany COFDM z 32768 nośnymi w pasmie 8 MHz.
Zaleca się odbieranie takich sygnałów z podwójną częstotliwością próbkowania (aby nic nie stracić) i na pośredniej częstotliwości większej niż szerokość pasma (odbiór superheterodynowy), aby pozbyć się przesunięcia stałoprądowego (DC) i „przecieku” lokalnego generatora (LO) na wejściu odbiornika. Urządzenia spełniające te warunki są zbyt drogie na zwykłą ciekawość.
SdrPlay z 10 Msps 10-bit lub AirSpy o podobnych parametrach są znacznie tańsze. Tutaj nie mówimy o podwójnej częstotliwości próbkowania, a odbiór można prowadzić tylko z bezpośrednią konwersją (Zero IF). Dlatego (ze względów finansowych) przechodzimy na stronę zwolenników „czystego” SDR z minimalną konwersją sprzętową.
Należało rozwiązać dwie kwestie:
- Synchronizacja. Poznanie dokładnego odchylenia częstotliwości radiowej z precyzją do fazy oraz odchylenie częstotliwości próbkowania.
- Przepisanie standardu DVB-T2 w odwrotnej kolejności.
Drugie zadanie wymaga znacznie więcej kodu, ale jest wykonalne dzięki cierpliwości i łatwo weryfikowalne na podstawie sygnałów testowych.
Sygnały testowe są dostępne na serwerze BBC ftp://ftp.kw.bbc.co.uk/t2refs/ z szczegółowymi instrukcjami.
Rozwiązanie pierwszego zadania w dużej mierze zależy od specyfikacji urządzenia SDR i możliwości jego sterowania. Użycie zalecanych funkcji zarządzania częstotliwością, jak się mówi, nie przyniosło sukcesu, ale dostarczyło wiele doświadczeń w czytaniu dokumentacji technicznej, programowaniu, oglądaniu seriali, rozwiązywaniu filozoficznych problemów... ogólnie mówiąc, nie udało się porzucić projektu.
Wiara w „czyste SDR” tylko się wzmocniła.
Przyjmujemy sygnał takim, jaki jest, interpolujemy go praktycznie do analogowego i wyciągamy już dyskretny, ale podobny do prawdziwego.
Schemat blokowy synchronizacji:

Tutaj wszystko jest zgodne z podręcznikiem. Potem będzie trochę trudniej. Musimy obliczyć odchylenia. Istnieje wiele literatury i artykułów badawczych porównujących zalety i wady różnych metod. Z klasyki to „Michael Speth, Stefan Fechtel, Gunnar Fock, Heinrich Meyr, Optimum Receiver Design for OFDM-Based Broadband Transmission – Part I i II”. Tylko nie spotkałem żadnego inżyniera, który potrafiłby i chciałby to obliczać, dlatego zastosowano podejście inżynieryjne. Tą samą metodą synchronizacji wprowadzono zakłócenia do sygnału testowego. Porównując różne metryki z znanymi odchyleniami (sam je wprowadzałem) wybrano najlepsze pod względem wydajności i prostoty realizacji. Odchylenie częstotliwości odbioru oblicza się porównując zabezpieczony interwał z jego powtarzającą się częścią. Fazę częstotliwości odbioru oraz częstotliwość próbkowania ocenia się na podstawie odchylenia faz sygnałów pilotowych, które wykorzystuje się także w prostym, liniowym equalizerze sygnału OFDM.
Charakterystyka equalizera:

I wszystko to dobrze działa, jeśli wiadomo, kiedy zaczyna się ramka DVB-T2. W tym celu w sygnale przesyłany jest symbol preambuły P1. Sposób detekcji i dekodowania symbolu P1 jest opisany w Specyfikacji Technicznej ETSI TS 102 831 (tam również wiele przydatnych wskazówek dotyczących odbioru).
Autokorelacja sygnału P1 (najwyższy punkt to początek ramki):

Pierwszy obrazek (zaledwie sześć miesięcy do ruchomego obrazu...):

I tu dowiemy się, czym jest nierównowaga IQ, przesunięcie DC i wycieki LO. Zwykle kompensacja tych specyficznych dla bezpośredniej konwersji zniekształceń jest realizowana w sterowniku urządzenia SDR. Dlatego zajęło to dużo czasu, aby zrozumieć: wybijanie gwiazdek z zgranej konstelacji QAM64 to działanie funkcji kompensacji. Musiałem wszystko wyłączyć i napisać własny projekt.
I wtedy obrazek zaczął się poruszać:

Modulacja QAM64 ze specyficznym obrotem konstelacji w standardzie DVB-T2:

Krótko mówiąc, to wynik wprowadzenia mięsa z powrotem przez maszynkę do mielenia. Standard przewiduje cztery rodzaje mieszania:
- bit interleaving (mieszanie bitów z skręcaniem kolumn)
- cell interleaving (mieszanie komórek w bloku kodowania)
- time interleaving (w grupie bloków kodowania)
- frequency interleaving (mieszanie częstotliwości w symbolu OFDM)
Ostatecznie na wejściu mamy taki sygnał:

To wszystko jest walką o odporność zakłóceń kodowanego sygnału.
Podsumowanie
Teraz możemy zobaczyć nie tylko sam sygnał i jego kształt, ale także informacje pomocnicze.
W eterze są dwa multipleksy. W każdym po dwa fizyczne kanały (PLP).
Jedna dziwność zauważona w pierwszym multipleksie — pierwszy PLP ma etykietę "multiple", co jest logiczne, ponieważ nie jest jedyny w multipleksie, natomiast drugi PLP ma etykietę "single" i to rodzi pytania.
Jeszcze ciekawsza jest druga dziwność w drugim multipleksie — wszystkie programy znajdują się w pierwszym PLP, a w drugim PLP na niskiej prędkości obecny jest sygnał o nieznanym charakterze. Przynajmniej odtwarzacz VLC, rozumiejący około pięćdziesięciu formatów wideo i tyle samo audio, go nie rozpoznaje.
.
Projekt został stworzony w celu określenia samej możliwości dekodowania DVB-T2 za pomocą SdrPlay (a teraz już i AirSpy), więc to nawet nie jest wersja alfa.
P.S. Podczas trudnego pisania artykułu udało się podłączyć do projektu PlutoSDR.
Niektórzy od razu powiedzą, że tam jest tylko 6Msps dla sygnału IQ na wyjściu USB2.0, a potrzebne jest co najmniej 9,2Msps, ale to już oddzielny temat.
Źródło: habr.com
