SDR DVB-T2 uztvērējs C++ formātā

Programmatūras definētais radio ir metode metālapstrādes (kas patiesībā ir laba jūsu veselībai) aizvietošanai ar programmēšanas izraisītām galvassāpēm. SDR paredz lielu nākotni un par galveno priekšrocību tiek uzskatīta ierobežojumu atcelšana radio protokolu ieviešanā. Kā piemēru var minēt OFDM (Orthogonal Frequency-division multiplexing) modulācijas metodi, kas kļuva iespējama tikai ar SDR metodi. Taču SDR ir arī vēl viena, tīri inženiertehniska iespēja – iespēja ar vismazāko piepūli kontrolēt un vizualizēt signālu jebkurā patvaļīgā punktā.

Viens no interesantākajiem sakaru standartiem ir virszemes televīzija DVB-T2.
Par ko? Protams, var vienkārši ieslēgt televizoru, neceļoties, bet tur nav absolūti ko skatīties un tas vairs nav mans viedoklis, bet gan medicīnisks fakts.

Ja nopietni, DVB-T2 ir izstrādāts ar ļoti plašām iespējām, tostarp:

  • iekštelpu pielietojums
  • modulācija no QPSK uz 256QAM
  • joslas platums no 1,7MHz līdz 8MHz

Man ir pieredze digitālās televīzijas uztveršanā pēc SDR principa. DVB-T standarts ir plaši pazīstamajā GNUradio projektā. DVB-T2 standartam ir gr-dvbs2rx bloks (viss tam pašam GNURadio), taču tam nepieciešama iepriekšēja signāla sinhronizācija un tas ir iedvesmojoši (īpašs paldies Ronam Economos).

Kas mums ir.

Ir ETSI EN 302 755 standarts, kas detalizēti nosaka pārraidi, bet ne uztveršanu.

Signāls tiek pārraidīts ar iztveršanas frekvenci 9,14285714285714285714 MHz, ko modulē COFDM ar 32768 nesējiem, 8 MHZ joslā.

Šādus signālus ieteicams uztvert ar dubultu iztveršanas frekvenci (lai neko nezaudētu) un starpfrekvencē lielāku joslas platumu (superheterodīna uztveršana), lai atbrīvotos no līdzstrāvas (DC) nobīdes un lokālā oscilatora “noplūdes”. (LO) uz uztvērēja ieeju. Ierīces, kas atbilst šiem nosacījumiem, ir pārāk dārgas vienkāršai zinātkārei.

SdrPlay ar 10Msps 10bit vai AirSpy ar līdzīgām īpašībām ir daudz lētāks. Šeit nav runas par dubultu iztveršanas biežumu, un uztveršanu var veikt tikai ar tiešu konvertēšanu (Zero IF). Tāpēc (finansiālu apsvērumu dēļ) mēs pārejam uz “tīras” SDR piekritēju pusi ar minimālu aparatūras pārveidošanu.

Bija jāatrisina divas problēmas:

  1. Sinhronizācija. Uzziniet precīzu fāzes precīzo RF novirzi un paraugu ņemšanas frekvences novirzi.
  2. Pārrakstiet DVB-T2 standartu atpakaļgaitā.

Otrajam uzdevumam ir nepieciešams daudz vairāk koda, taču to var atrisināt ar neatlaidību un to var viegli pārbaudīt, izmantojot testa signālus.

Testa signāli ir pieejami BBC serverī ftp://ftp.kw.bbc.co.uk/t2refs/ ar detalizētiem norādījumiem.

Pirmās problēmas risinājums ir ļoti atkarīgs no SDR ierīces īpašībām un tās vadības iespējām. Ieteicamo frekvenču kontroles funkciju izmantošana, kā saka, nebija veiksmīga, taču deva lielu pieredzi, lasot tās. dokumentācija, programmēšana, seriālu skatīšanās, filozofisku jautājumu risināšana..., īsi sakot, atteikties no projekta nebija iespējams.

Ticība “tīrai SDR” ir tikai kļuvusi stiprāka.

Mēs uztveram signālu tādu, kāds tas ir, interpolējam to gandrīz līdz analogam un izņemam diskrētu, bet līdzīgu reālajam.

Sinhronizācijas blokshēma:

SDR DVB-T2 uztvērējs C++ formātā

Šeit viss ir saskaņā ar mācību grāmatu. Tālāk ir nedaudz sarežģītāk. Ir jāaprēķina novirzes. Ir daudz literatūras un pētniecisku rakstu, kuros salīdzinātas dažādu metožu priekšrocības un trūkumi. No klasikas - tas ir "Maikls Spets, Stefans Fehtels, Gunārs Foks, Heinrihs Meirs, optimālais uztvērēja dizains OFDM balstītai platjoslas pārraidei — I un II daļa." Bet neesmu sastapis nevienu inženieri, kurš varētu un gribētu skaitīt, tāpēc tika izmantota inženiertehniskā pieeja. Izmantojot to pašu sinhronizācijas metodi, testa signālā tika ieviesta detuning. Salīdzinot dažādus rādītājus ar zināmām novirzēm (viņš pats tās iepazīstināja), tika atlasīti labākie, lai nodrošinātu veiktspēju un ieviešanas vieglumu. Uztveršanas frekvences novirzi aprēķina, salīdzinot aizsardzības intervālu un tā atkārtojošo daļu. Uztveršanas frekvences fāze un iztveršanas frekvence tiek noteikta no pilotsignālu fāzes novirzes un tiek izmantota arī vienkāršā, lineārā OFDM signāla ekvalaizerā.

Ekvalaizera raksturlielums:

SDR DVB-T2 uztvērējs C++ formātā

Un tas viss darbojas labi, ja zināt, kad sākas DVB-T2 kadrs. Lai to izdarītu, signālā tiek pārraidīts preambulas simbols P1. P1 simbola noteikšanas un dekodēšanas metode ir aprakstīta tehniskajā specifikācijā ETSI TS 102 831 (ir arī daudz noderīgu ieteikumu saņemšanai).

P1 signāla autokorelācija (augstākais punkts kadra sākumā):

SDR DVB-T2 uztvērējs C++ formātā

Pirmā bilde (līdz kustīgajam attēlam atlikuši tikai seši mēneši...):

SDR DVB-T2 uztvērējs C++ formātā

Un šeit mēs uzzinām, kas ir IQ nelīdzsvarotība, līdzstrāvas nobīde un LO noplūde. Parasti šo tiešai pārveidei raksturīgo izkropļojumu kompensācija tiek ieviesta SDR ierīces draiverī. Tāpēc bija vajadzīgs ilgs laiks, lai saprastu: zvaigžņu izsist no draudzīgā QAM64 zvaigznāja ir kompensācijas funkciju darbs. Man vajadzēja visu izslēgt un rakstīt savu velosipēdu.

Un tad attēls tika pārvietots:

SDR DVB-T2 uztvērējs C++ formātā

QAM64 modulācija ar īpašu konstelācijas rotāciju DVB-T2 standartā:

SDR DVB-T2 uztvērējs C++ formātā

Īsāk sakot, tas ir rezultāts, malto gaļu izlaižot atpakaļ caur gaļas mašīnā. Standarts paredz četrus sajaukšanas veidus:

  • mazliet savijas
  • šūnu savienošana (šūnu sajaukšana kodēšanas blokā)
  • laika interleaving (tā ir arī kodēšanas bloku grupā)
  • frekvenču sajaukšana (frekvenču sajaukšana OFDM simbolā)

Rezultātā mums ir šāds signāls ieejā:

SDR DVB-T2 uztvērējs C++ formātā

Tas viss ir cīņa par kodētā signāla trokšņu imunitāti.

Kopsavilkums

Tagad mēs varam redzēt ne tikai pašu signālu un tā formu, bet arī pakalpojumu informāciju.
Ir divi multipleksi ēterā. Katram no tiem ir divi fiziskie kanāli (PLP).

Pirmajā multipleksā tika pamanīta viena dīvainība - pirmais PLP ir apzīmēts ar “multiple”, kas ir loģiski, jo multipleksā ir vairāk nekā viens, bet otrais PLP ir apzīmēts ar “viens”, un tas ir jautājums.
Vēl interesantāka ir otrā dīvainība otrajā multipleksā - visas programmas ir pirmajā PLP, bet otrajā PLP ir nezināma rakstura signāls ar mazu ātrumu. Vismaz VLC atskaņotājs, kas saprot apmēram piecdesmit video formātus un tikpat daudz audio, to neatpazīst.

Ar pašu projektu var iepazīties šeit.

Projekts tika izveidots ar mērķi noteikt pašu iespēju atšifrēt DVB-T2, izmantojot SdrPlay (un tagad AirSpy.), tāpēc šī pat nav alfa versija.

PS Kamēr ar grūtībām rakstīju rakstu, man izdevās PlutoSDR integrēt projektā.

Uzreiz kāds teiks, ka pie USB6 izejas IQ signālam ir tikai 2.0Msps, bet vajag vismaz 9,2Msps, bet tā ir atsevišķa tēma.

Avots: www.habr.com