SDR DVB-T2 prijemnik u C++

Softverski definiran radio je metoda zamjene metalnih radova (koji su zapravo dobri za vaše zdravlje) glavoboljom programiranja. SDR-ovima se predviđa velika budućnost, a glavnom se prednošću smatra uklanjanje ograničenja u implementaciji radijskih protokola. Primjer je modulacijska metoda OFDM (Orthogonal frequency-division multiplexing) koja je moguća samo pomoću SDR metode. Ali SDR također ima još jednu, čisto inženjersku priliku - mogućnost kontrole i vizualizacije signala u bilo kojoj proizvoljnoj točki uz najmanje napora.

Jedan od zanimljivih komunikacijskih standarda je zemaljska zemaljska televizija DVB-T2.
Za što? Naravno, možete jednostavno uključiti TV bez ustajanja, ali tamo nema apsolutno ništa za gledati i to više nije moje mišljenje, već medicinska činjenica.

Ozbiljno, DVB-T2 je dizajniran s vrlo širokim mogućnostima, uključujući:

  • unutarnja primjena
  • modulacija od QPSK do 256QAM
  • širina pojasa od 1,7MHz do 8MHz

Imam iskustva u prijemu digitalne televizije korištenjem SDR principa. DVB-T standard nalazi se u poznatom GNURadio projektu. Postoji gr-dvbs2rx blok za DVB-T2 standard (sve za isti GNURadio), ali zahtijeva preliminarnu sinkronizaciju signala i inspirativan je (posebno hvala Ronu Economosu).

Ono što imamo.

Postoji standard ETSI EN 302 755 koji opisuje prijenos, ali ne i prijem.

Signal je u eteru s frekvencijom uzorkovanja od 9,14285714285714285714 MHz, moduliran COFDM s 32768 nositelja, u pojasu od 8 MHZ.

Preporuča se primati takve signale s dvostrukom frekvencijom uzorkovanja (kako se ništa ne bi izgubilo) i na srednjoj frekvenciji s većom propusnošću (superheterodinski prijem), kako bi se riješili pomaka istosmjerne struje (DC) i "curenja" lokalnog oscilatora. (LO) na ulaz prijemnika. Uređaji koji zadovoljavaju te uvjete preskupi su za puku znatiželju.

SdrPlay s 10Msps 10bit ili AirSpy sličnih karakteristika puno je jeftiniji. Ovdje nema govora o dvostrukoj frekvenciji uzorkovanja i prijem se može izvršiti samo s izravnom konverzijom (Zero IF). Stoga (iz financijskih razloga) prelazimo na stranu pristalica “čistog” SDR-a s minimalnom hardverskom konverzijom.

Bilo je potrebno riješiti dva problema:

  1. Sinkronizacija. Saznajte točnu fazno točnu RF devijaciju i devijaciju frekvencije uzorkovanja.
  2. Prepišite standard DVB-T2 unatrag.

Drugi zadatak zahtijeva puno više koda, ali se može riješiti uz upornost i može se lako provjeriti pomoću testnih signala.

Testni signali dostupni su na BBC serveru ftp://ftp.kw.bbc.co.uk/t2refs/ s detaljnim uputama.

Rješenje prvog problema uvelike ovisi o karakteristikama SDR uređaja i njegovim mogućnostima upravljanja. Korištenje preporučenih funkcija kontrole frekvencije, kako kažu, nije bilo uspješno, ali je dalo puno iskustva čitajući ih. dokumentacija, programiranje, gledanje serija, rješavanje filozofskih pitanja..., ukratko, nije se moglo odustati od projekta.

Vjera u “čisti SDR” samo je ojačala.

Uzimamo signal kakav jest, interpoliramo ga gotovo na analogni i izbacujemo diskretni, ali sličan stvarnom.

Blok dijagram sinkronizacije:

SDR DVB-T2 prijemnik u C++

Ovdje je sve po udžbeniku. Sljedeće je malo kompliciranije. Potrebno je izračunati odstupanja. Postoji mnogo literature i znanstvenih članaka koji uspoređuju prednosti i nedostatke različitih metoda. Od klasika - ovo je “Michael Speth, Stefan Fechtel, Gunnar Fock, Heinrich Meyr, Optimalni dizajn prijemnika za širokopojasni prijenos temeljen na OFDM-u – I. i II. dio.” Ali nisam sreo niti jednog inženjera koji može i želi računati, pa se pristupilo inženjerskom pristupu. Koristeći istu metodu sinkronizacije, u testni signal uvedeno je odgađanje. Usporedbom različitih metrika s poznatim odstupanjima (on ih je sam uveo), odabrane su one najbolje za izvedbu i jednostavnost implementacije. Odstupanje frekvencije prijema izračunava se usporedbom zaštitnog intervala i njegovog dijela koji se ponavlja. Faza prijemne frekvencije i frekvencija uzorkovanja procjenjuju se iz fazne devijacije pilot signala i to se također koristi u jednostavnom, linearnom ekvilizatoru OFDM signala.

Karakteristike ekvilizatora:

SDR DVB-T2 prijemnik u C++

I sve ovo radi dobro ako znate kada počinje DVB-T2 okvir. Da bi se to postiglo, simbol preambule P1 se prenosi u signalu. Metoda detekcije i dekodiranja simbola P1 opisana je u tehničkoj specifikaciji ETSI TS 102 831 (također postoje mnoge korisne preporuke za prijem).

Autokorelacija signala P1 (najviša točka na početku okvira):

SDR DVB-T2 prijemnik u C++

Prva slika (još šest mjeseci do pokretne slike...):

SDR DVB-T2 prijemnik u C++

I ovdje saznajemo što su IQ neravnoteža, DC offset i LO leakage. U pravilu, kompenzacija za ova izobličenja specifična za izravnu pretvorbu implementirana je u upravljački program SDR uređaja. Stoga je trebalo dugo vremena da se shvati: izbacivanje zvijezda iz prijateljske konstelacije QAM64 djelo je kompenzacijskih funkcija. Morao sam sve ugasiti i napisati svoj bicikl.

A onda se slika pomaknula:

SDR DVB-T2 prijemnik u C++

QAM64 modulacija sa specifičnom rotacijom konstelacije u DVB-T2 standardu:

SDR DVB-T2 prijemnik u C++

Ukratko, ovo je rezultat ponovnog propuštanja mljevenog mesa kroz stroj za mljevenje mesa. Norma predviđa četiri vrste miješanja:

  • isprepletanje bitova
  • preplitanje ćelija (miješanje ćelija u bloku kodiranja)
  • vremensko ispreplitanje (također je u skupini blokova kodiranja)
  • preplitanje frekvencija (miješanje frekvencija u OFDM simbolu)

Kao rezultat, na ulazu imamo sljedeći signal:

SDR DVB-T2 prijemnik u C++

Sve je to borba za otpornost na buku kodiranog signala.

Ukupan

Sada možemo vidjeti ne samo sam signal i njegov oblik, već i servisne informacije.
U eteru su dva multipleksa. Svaki ima dva fizička kanala (PLP).

Uočena je jedna neobičnost u prvom multipleksu - prvi PLP ima oznaku “multiple”, što je i logično, budući da ih u multipleksu ima više od jednog, a drugi PLP ima oznaku “single” i to je pitanje.
Još je zanimljivija druga neobičnost u drugom multipleksu - svi programi su u prvom PLP-u, ali u drugom PLP-u postoji signal nepoznate prirode pri maloj brzini. Barem ga ne prepoznaje VLC player koji razumije pedesetak video formata i isto toliko zvuka.

Sam projekt možete pronaći ovdje.

Projekt je nastao s ciljem utvrđivanja same mogućnosti dekodiranja DVB-T2 pomoću SdrPlay-a (a sada i AirSpy-a.), tako da ovo nije niti alpha verzija.

PS Dok sam s mukom pisao članak, uspio sam integrirati PlutoSDR u projekt.

Netko će odmah reći da za IQ signal na USB6 izlazu ima samo 2.0Msps, ali treba barem 9,2Msps, ali to je posebna tema.

Izvor: www.habr.com

Dodajte komentar