SDR DVB-T2 prijímač v C++

Softvérovo definované rádio je metóda, ktorá nahrádza prácu s kovom (čo je v skutočnosti dobré pre vaše zdravie) bolesťou hlavy z programovania. SDR predpovedajú veľkú budúcnosť a za hlavnú výhodu sa považuje odstránenie obmedzení pri implementácii rádiových protokolov. Príkladom je metóda modulácie OFDM (Orthogonal frequency-division multiplexing), ktorú umožňuje len metóda SDR. SDR má však ešte jednu, čisto inžiniersku príležitosť – schopnosť ovládať a vizualizovať signál v akomkoľvek ľubovoľnom bode s minimálnym úsilím.

Jedným zo zaujímavých komunikačných štandardov je terestriálna pozemná televízia DVB-T2.
Prečo? Samozrejme, že môžete jednoducho zapnúť televízor bez toho, aby ste vstali, ale nie je tam absolútne čo pozerať a to už nie je môj názor, ale lekársky fakt.

Vážne, DVB-T2 je navrhnutý s veľmi širokými možnosťami, vrátane:

  • vnútorná aplikácia
  • modulácia z QPSK na 256QAM
  • šírka pásma od 1,7 MHz do 8 MHz

Mám skúsenosti s príjmom digitálnej televízie na princípe SDR. DVB-T štandard je v známom projekte GNURadio. Existuje blok gr-dvbs2rx pre štandard DVB-T2 (všetky pre rovnaké GNURadio), ale vyžaduje predbežnú synchronizáciu signálu a je inšpiratívny (špeciálne vďaka Ronovi Economosovi).

Čo máme.

Existuje norma ETSI EN 302 755, ktorá podrobne popisuje prenos, ale nie príjem.

Signál je vo vzduchu so vzorkovacou frekvenciou 9,14285714285714285714 MHz, modulovaný COFDM s 32768 nosnými, v pásme 8 MHz.

Odporúča sa prijímať takéto signály s dvojnásobnou vzorkovacou frekvenciou (aby sa nič nestratilo) a na medzifrekvencii väčšou šírkou pásma (superheterodynný príjem), aby ste sa zbavili posunu jednosmerného prúdu (DC) a „úniku“ lokálneho oscilátora. (LO) do vstupu prijímača. Zariadenia, ktoré spĺňajú tieto podmienky, sú príliš drahé na obyčajnú zvedavosť.

SdrPlay s 10Msps 10bit alebo AirSpy s podobnými vlastnosťami sú oveľa lacnejšie. O dvojnásobnej vzorkovacej frekvencii tu nemôže byť ani reči a príjem je možné uskutočniť len s priamou konverziou (Zero IF). Preto (z finančných dôvodov) prechádzame na stranu prívržencov „čistého“ SDR s minimom hardvérových konverzií.

Bolo potrebné vyriešiť dva problémy:

  1. Synchronizácia. Zistite presnú fázovo presnú RF odchýlku a odchýlku vzorkovacej frekvencie.
  2. Prepíšte normu DVB-T2 dozadu.

Druhá úloha vyžaduje oveľa viac kódu, ale dá sa vyriešiť vytrvalo a dá sa ľahko overiť pomocou testovacích signálov.

Testovacie signály sú k dispozícii na serveri BBC ftp://ftp.kw.bbc.co.uk/t2refs/ s podrobnými pokynmi.

Riešenie prvého problému vo veľkej miere závisí od charakteristík zariadenia SDR a jeho možností riadenia. Používanie odporúčaných funkcií riadenia frekvencie, ako sa hovorí, nebolo úspešné, ale dalo veľa skúseností s ich čítaním. dokumentácia, programovanie, sledovanie TV seriálov, riešenie filozofických otázok..., skrátka nebolo možné od projektu upustiť.

Viera v „čistú SDR“ sa len posilnila.

Vezmeme signál taký, aký je, interpolujeme ho takmer na analógový a vyberieme diskrétny, ale podobný skutočnému.

Bloková schéma synchronizácie:

SDR DVB-T2 prijímač v C++

Všetko je tu podľa učebnice. Ďalej je to trochu zložitejšie. Je potrebné vypočítať odchýlky. Existuje množstvo literatúry a výskumných článkov porovnávajúcich výhody a nevýhody rôznych metód. Od klasikov - toto je „Michael Speth, Stefan Fechtel, Gunnar Fock, Heinrich Meyr, optimálny dizajn prijímača pre širokopásmový prenos na báze OFDM – časť I a II.“ Ale nestretol som jediného inžiniera, ktorý by vedel a chcel počítať, takže bol použitý inžiniersky prístup. Použitím rovnakej synchronizačnej metódy bolo do testovacieho signálu zavedené rozladenie. Porovnaním rôznych metrík so známymi odchýlkami (sám ich predstavil) boli vybrané tie najlepšie z hľadiska výkonu a jednoduchosti implementácie. Odchýlka frekvencie príjmu sa vypočíta porovnaním ochranného intervalu a jeho opakujúcej sa časti. Fáza prijímacej frekvencie a vzorkovacia frekvencia sa odhaduje z fázovej odchýlky pilotných signálov a používa sa aj v jednoduchom lineárnom ekvalizéri OFDM signálu.

Charakteristika ekvalizéra:

SDR DVB-T2 prijímač v C++

A to všetko funguje dobre, ak viete, kedy začína DVB-T2 rámec. Na tento účel sa v signáli vysiela preambulový symbol P1. Spôsob detekcie a dekódovania symbolu P1 je opísaný v technickej špecifikácii ETSI TS 102 831 (existuje tiež veľa užitočných odporúčaní pre príjem).

Autokorelácia signálu P1 (najvyšší bod na začiatku snímky):

SDR DVB-T2 prijímač v C++

Prvý obrázok (do pohyblivého obrázka zostáva už len šesť mesiacov...):

SDR DVB-T2 prijímač v C++

A tu sa dozvieme, čo je nerovnováha IQ, DC offset a LO únik. Kompenzácia týchto skreslení špecifických pre priamu konverziu je spravidla implementovaná v ovládači zariadenia SDR. Preto trvalo dlho, kým sme pochopili: vyradenie hviezd z priateľskej konštelácie QAM64 je dielom kompenzačných funkcií. Musel som všetko vypnúť a napísať bicykel.

A potom sa obrázok pohol:

SDR DVB-T2 prijímač v C++

Modulácia QAM64 so špecifickou rotáciou konštelácie v štandarde DVB-T2:

SDR DVB-T2 prijímač v C++

To je skrátka výsledok prechodu mletého mäsa späť cez mlynček na mäso. Norma poskytuje štyri typy miešania:

  • bitové prekladanie
  • prekladanie buniek (miešanie buniek v kódovacom bloku)
  • časové vkladanie (je tiež v skupine kódovacích blokov)
  • frekvenčné prekladanie (miešanie frekvencie v symbole OFDM)

Výsledkom je, že na vstupe máme nasledujúci signál:

SDR DVB-T2 prijímač v C++

To všetko je boj o odolnosť kódovaného signálu voči šumu.

Celkový

Teraz vidíme nielen samotný signál a jeho tvar, ale aj servisné informácie.
Vo vysielaní sú dva multiplexy. Každý má dva fyzické kanály (PLP).

Jedna zvláštnosť bola zaznamenaná v prvom multiplexe - prvá PLP je označená ako „multiple“, čo je logické, keďže v multiplexe je viac ako jedna, a druhá PLP je označená ako „single“ a to je otázka.
Ešte zaujímavejšia je druhá zvláštnosť v druhom multiplexe - všetky programy sú v prvom PLP, no v druhom PLP je signál neznámeho charakteru pri nízkej rýchlosti. Minimálne VLC prehrávač, ktorý si rozumie s asi päťdesiatimi video formátmi a rovnakým množstvom zvuku, to nepozná.

Samotný projekt nájdete tu.

Projekt bol vytvorený s cieľom určiť samotnú možnosť dekódovania DVB-T2 pomocou SdrPlay (a teraz AirSpy.), takže nejde ani o alfa verziu.

PS Kým som s ťažkosťami písal článok, podarilo sa mi do projektu integrovať PlutoSDR.

Niekto si hneď povie, že na výstupe USB6 je len 2.0Msps pre IQ signál, ale potrebujete aspoň 9,2Msps, ale to je samostatná téma.

Zdroj: hab.com

Pridať komentár