SDR DVB-T2 prijemnik na C++

Softverski definirani radio (SDR) predstavlja metodu zamjene fizičkog rada metalom (što, u osnovi, povoljno utječe na zdravlje) s glavoboljom programiranja. SDR-u predviđa sjajnu budućnost, a glavna prednost leži u uklanjanju ograničenja u implementaciji radio protokola. Primjer je metoda modulacije OFDM (ortogonalna višekanalna modulacija), koja je postala moguća samo metodom SDR. No, SDR nudi još jednu, čisto inženjersku mogućnost — kontrolu i vizualizaciju signala na bilo kojoj proizvoljnoj točki uz minimalan napor.

Jedan od zanimljivih komunikacijskih standarda je zemaljska eterska televizija DVB-T2.
Zašto? Naravno, možete jednostavno ležeći uključiti televizor, ali zapravo nema ništa za gledati, a to nije samo moje mišljenje, već i medicinska činjenica.

A ozbiljno, DVB-T2 je razvijen s vrlo širokim mogućnostima, uključujući:

  • unutarnju primjenu
  • modulaciju od QPSK do 256QAM
  • propusnost od 1,7MHz do 8MHz

Postoji iskustvo prijema digitalne televizije prema principu SDR. Standard DVB-T prisutan je u poznatom projektu GNURadio. Tu je i blok gr-dvbs2rx za standard DVB-T2 (sve za GNURadio), ali koji zahtijeva prethodnu sinkronizaciju signala i inspirira (određeno hvala Ronu Economosu).

Što imamo.

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

Signal u eteru je s uzorkovnom frekvencijom 9,14285714285714285714 MHz, moduliran COFDM s 32768 nositelja, u opsegu od 8 MHz.

Preporučuje se prijem takvih signala s udvostručenom uzorkovnom frekvencijom (da se ne izgubi ništa) i na međufrekvenciji koja je veća od propusnosti (superheterodinski prijem), kako bi se riješili problemi s pomakom istosmjernog napona (DC) i „prikazivanjem” lokalnog generatora (LO) na ulazu prijemnika. Uređaji koji zadovoljavaju ove uvjete su preskupi za jednostavnu radoznalost.

SdrPlay s 10Msps 10bit ili AirSpy sa sličnim karakteristikama su znatno jeftiniji. Ovdje se ne radi o udvostručenoj uzorkovnoj frekvenciji i prijem se može obavljati samo s izravnom konverzijom (Zero IF). Stoga (iz financijskih razloga) prelazimo na stranu pobornika „čistog” SDR-a s minimalnom hardverskom konverzijom.

Bilo je potrebno riješiti dva zadatka:

  1. Sinkronizacija. Utvrditi točno odstupanje radiofrekvencije do faze i odstupanje uzorkovne frekvencije.
  2. Prepisati standard DVB-T2 unazad.

Drugi zadatak zahtijeva puno više koda, ali je rješiv strpljivošću i lako se može provjeriti testnim signalima.

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

Rješenje prvog zadatka uvelike ovisi o karakteristikama SDR uređaja i mogućnostima upravljanja. Korištenje preporučenih funkcija upravljanja frekvencijom, kako se kaže, nije bilo uspješno, ali je donijelo mnogo iskustva u čitanju tehničke dokumentacije, programiranju, gledanju serija, rješavanju filozofskih pitanja… Ukratko, nije bilo moguće odustati od projekta.

Vjera u "pure SDR" samo je ojačala.

Primamo signal kakav jest, interpoliramo ga gotovo do analoga i uzimamo već diskretni, ali nalik pravom.

Blok dijagram sinkronizacije:

SDR DVB-T2 prijemnik na C++

Ovdje sve ide po udžbeniku. Dalje je malo složenije. Potrebno je odrediti odstupanja. Ima puno literature i istraživačkih članaka koji upoređuju prednosti i nedostatke različitih metoda. Od klasike, to je „Michael Speth, Stefan Fechtel, Gunnar Fock, Heinrich Meyr, Optimum Receiver Design for OFDM-Based Broadband Transmission – Part I i II“. Međutim, nisam sreo nijednog inženjera koji zna i želi računati, stoga je primijenjen inženjerski pristup. Istim metodom sinkronizacije uvedene su smetnje u testni signal. Usporedbom različitih metrika s poznatim odstupanjima (sam sam ih unosio) odabrane su najbolje za izvedbu i jednostavnost implementacije. Odstupanje prijemne frekvencije računa se usporedbom zaštitnog intervala i njegove ponavljajuće komponente. Faza prijemne frekvencije i frekvencija uzorkovanja procjenjuju se prema odstupanju faza pilot signala, a to se također koristi u jednostavnom, linearnom ekvalajzeru OFDM signala.

Karakteristika ekvalajzera:

SDR DVB-T2 prijemnik na C++

I sve to dobro funkcionira ako znate kada počinje okvir DVB-T2. U tu svrhu se u signalu prenosi simbol preambule P1. Način otkrivanja i dekodiranja simbola P1 opisan je u Tehničkoj specifikaciji ETSI TS 102 831 (tamo su također mnoge korisne preporuke za prijem).

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

SDR DVB-T2 prijemnik na C++

Prva slika (ostalo je samo šest mjeseci do pokretnog prikaza…):

SDR DVB-T2 prijemnik na C++

I upravo ovdje saznajemo što je IQ imbalance, DC offset i curenje LO. Obično je kompenzacija ovih specifičnih izobličenja za direktnu konverziju implementirana u drajveru SDR uređaja. Zato je prošlo puno vremena da se shvati: izbacivanje zvjezdica iz skladnog sazviježđa QAM64 – to je posao kompenzacijskih funkcija. Morali smo sve isključiti i napisati svoj vlastiti softver.

I slika se počela pomjerati:

SDR DVB-T2 prijemnik na C++

Modulacija QAM64 sa specifičnim okretanjem sazviježđa prema DVB-T2 standardu:

SDR DVB-T2 prijemnik na C++

Ukratko, to je rezultat ponovnog prolaska mljevenog mesa kroz mljevenje. Standard predviđa četiri vrste miješanja:

  • bit interleaving (bitovno miješanje sa uvijanjem stupaca)
  • cell interleaving (miješanje ćelija u kodnom bloku)
  • time interleaving (isto u grupi kodnih blokova)
  • frequency interleaving (miješanje frekvencija u OFDM simbolu)

Na ulazu imamo ovakav signal:

SDR DVB-T2 prijemnik na C++

Sve to je borba za otpornost na smetnje kodiranog signala.

Zaključak

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

Jedna čudnost zapažena je u prvom multiplexu – prvi PLP ima oznaku "multiple", što je logično, jer nije sam u multiplexu, dok drugi PLP ima oznaku "single" i to je pitanje.
Još je zanimljivija druga čudnost u drugom multiplexu – svi programi su u prvom PLP-u, a u drugom PLP-u na tihoj brzini prisutan je signal nepoznate prirode. Barely, VLC plejer, koji razumije oko pedeset video formata i toliko audio, ne prepoznaje ga.

Sam projekt možete pronaći ovdje.

Projekt je napravljen s ciljem da se utvrdi mogućnost dekodiranja DVB-T2 pomoću SdrPlay (a sada već i AirSpy), tako da ovo ni nije alfa verzija.

P.S. Dok je članak teško bio napisan, uspjelo se dodati u projekt PlutoSDR.

Neki će odmah reći da ima samo 6Msps za IQ signal na izlazu USB2.0, a potrebno je najmanje 9,2Msps, ali to je već posebna tema.

Izvor: habr.com

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster