SDR DVB-T2 přijímač na C++

Software Defined Radio (softwarově definovaná rádiová zařízení) je metoda, která nahrazuje práci s kovem (což je v zásadě pro zdraví prospěšné) bolestmi hlavy spojenými s programováním. SDR je považováno za technologie s velkým potenciálem a jejím hlavním přínosem je odstranění omezení v implementaci rádiových protokolů. Příkladem je metoda modulace OFDM (ortogonální vícestandardní multiplexing), která byla umožněna pouze díky metodě SDR. SDR nabízí také jednu čistě inženýrskou možnost — možnost kontrolovat a vizualizovat signál v jakémkoliv libovolném bodě s minimálním úsilím.

Jedním z zajímavých standardů komunikace je pozemní digitální televize DVB-T2.
Proč? Samozřejmě, můžete jednoduše zapnout televizi, aniž byste vstali, ale tam není vůbec nic ke sledování, což již není můj názor, ale lékařský fakt.

Pokud to myslíme vážně, DVB-T2 byl vyvinut s velmi širokými možnostmi, včetně:

  • vnitřní aplikace
  • modulace od QPSK do 256QAM
  • šířka pásma od 1,7MHz do 8MHz

Existují zkušenosti s příjmem digitální televize podle principu SDR. Standard DVB-T je součástí známého projektu GNURadio. Existuje blok gr-dvbs2rx pro standard DVB-T2 (to vše pro stejné GNURadio), ale vyžaduje předchozí synchronizaci signálu a inspiruje (speciální poděkování Ronovi Economosovi).

Co máme.

Existuje standard ETSI EN 302 755, který podrobně popisuje vysílání, ale ne příjem.

Signál v éteru s frekvencí vzorkování 9,14285714285714285714 MHz, modulovaný COFDM s 32768 nosnými, v pásmu 8 MHz.

Příjem takových signálů se doporučuje s dvojnásobnou frekvencí vzorkování (aby se nic neztratilo) a na mezifrekvenci vyšší než šířka pásma (superheterodynní příjem) k odstranění posunu s dc napětím a "proporce" místního generátoru (LO) na vstupu přijímače. Zařízení splňující tyto podmínky jsou příliš drahá na pouhé zvědavosti.

SdrPlay s 10Msps 10bit nebo AirSpy se srovnatelnými parametry je podstatně levnější. Tady se nehovoří o dvojnásobné frekvenci vzorkování a příjem lze provádět pouze s přímou konverzí (Zero IF). Proto, z finančních důvodů, přecházíme na stranu příznivců "čistého" SDR s minimálním hardwarovým zpracováním.

Bylo třeba vyřešit dva úkoly:

  1. Synchronizace. Zjistit přesné odchylky rádiové frekvence s přesností na fázi a odchylku frekvence vzorkování.
  2. Přepsat standard DVB-T2 pozpátku.

Druhý úkol vyžaduje mnohem více kódu, ale je řešitelný vytrvalostí a snadno ověřitelný testovacími signály.

Testovací signály jsou dostupné na serveru BBC ftp://ftp.kw.bbc.co.uk/t2refs/ s podrobnými instrukcemi.

Řešení prvního úkolu je silně závislé na vlastnostech zařízení SDR a možnostech řízení. Použít doporučené funkce řízení frekvence, jak se říká, se nezdařilo, ale přineslo to spoustu zkušeností se čtením technické dokumentace, programováním, sledováním seriálů, řešením filozofických otázek… zkrátka, projekt se nezdařilo opustit.

Víra v "pure SDR" se pouze upevnila.

Přijímáme signál tak, jak je, interpolujeme ho prakticky na analog a poté získáváme diskrétní signál, který je však podobný skutečnému.

Bloková schéma synchronizace:

SDR DVB-T2 přijímač na C++

Tady je vše podle učebnice. Dále je to o něco složitější. Je nutné vypočítat odchylky. Existuje mnoho literatury a výzkumných článků, které porovnávají výhody a nevýhody různých metod. Z klasiky – "Michael Speth, Stefan Fechtel, Gunnar Fock, Heinrich Meyr, Optimum Receiver Design for OFDM-Based Broadband Transmission – Part I and II". Jen jsem nenarazil na žádného inženýra, který by uměl a chtěl počítat, takže byl aplikován inženýrský přístup. Tím samým methodem synchronizace byly zavedeny poruchy do testovacího signálu. Porovnáním různých metrik s známými odchylkami (sám jsem je zaváděl) byly vybrány nejlepší pro výkonnost a jednoduchost realizace. Odchylka přijímací frekvence se vypočítává porovnáním ochranného intervalu a jeho opakující se části. Fáze přijímací frekvence a vzorkovací frekvence se odhaduje podle odchylky fází pilotních signálů a ta se také používá v jednoduchém, lineárním ekvalizéru OFDM signálu.

Charakteristika ekvalizéru:

SDR DVB-T2 přijímač na C++

A to vše dobře funguje, pokud víte, kdy začíná rámec DVB-T2. K tomu je v signálu přenášen symbol preambule P1. Způsob detekce a dekódování symbolu P1 je popsán v Technické specifikaci ETSI TS 102 831 (tam je také mnoho užitečných doporučení k příjmu).

Autokorelace signálu P1 (nejvyšší bod začátku rámce):

SDR DVB-T2 přijímač na C++

První obrázek (do pohyblivého obrazu zbývá pouze šest měsíců…):

SDR DVB-T2 přijímač na C++

A právě zde zjistíme, co je to IQ imbalance, DC offset a únik LO. Obvykle je kompenzace těchto specifických vad pro přímou konverzi realizována v ovladači SDR zařízení. Trvalo tedy dlouho, abychom pochopili: vyřazení hvězdiček z přátelské souhvězdí QAM64 je práce kompenzačních funkcí. Museli jsme všechno vypnout a napsat svou vlastní verzi.

A obrázek se začal hýbat:

SDR DVB-T2 přijímač na C++

Modulace QAM64 se specifickým otočením souhvězdí ve standardu DVB-T2:

SDR DVB-T2 přijímač na C++

Stručně řečeno, je to výsledek prohnání mleté maso zpět přes mlýnek. Standard zahrnuje čtyři typy míchání:

  • bit interleaving (bitové míchání se zkroucením sloupců)
  • cell interleaving (míchání buněk v kódovacím bloku)
  • time interleaving (také v rámci skupiny kódovacích bloků)
  • frequency interleaving (míchání frekvencí v symbolu OFDM)

Na výstupu máme tedy takový signál:

SDR DVB-T2 přijímač na C++

To vše je boj za odolnost kódovaného signálu proti rušení.

Výsledek

Nyní můžeme vidět nejen samotný signál a jeho tvar, ale také pomocné informace.
V éteru jsou dva multiplexy. V každém dva fyzické kanály (PLP).

Jedna zvláštnost byla pozorována v prvním multiplexu — první PLP má označení "multiple", což je logické, protože není v multiplexu sám, zatímco druhý PLP má označení "single" a to je otázka.
Ještě zajímavější je druhá zvláštnost v druhém multiplexu — všechny programy jsou v prvním PLP, zatímco ve druhém PLP na tichém přenosu je signál neznámé povahy. Aspoň přehrávač VLC, který rozumí přibližně padesáti video formátům a stejně tolika audio formátům, jej nerozpoznává.

Sám projekt lze najít zde.

Projekt byl vytvořen za účelem zjistit, zda je možné dekódovat DVB-T2 pomocí SdrPlay (a nyní už i AirSpy), takže to není ani alfa verze.

P.S. Zatímco se článek obtížně psal, podařilo se mi připojit k projektu PlutoSDR.

Někdo hned řekne, že je tam pouze 6Msps pro IQ signál na výstupu USB2.0, a že potřebujeme alespoň 9,2Msps, ale to už je jiná záležitost.

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster