SDR DVB-T2 prijemnik na C++

Programska definicija radia (Software Defined Radio) je metoda zamene fizičkog rada (što je u principu korisno za zdravlje) glavoboljom programiranja. SDR se predviđa kao tehnologija budućnosti, a njena glavna prednost je ukidanje ograničenja u implementaciji radio protokola. Primer za to je metoda modulacije OFDM (ortogonalno množenje frekvencija), koja je postala moguća samo putem SDR-a. Međutim, SDR takođe pruža jednu čisto inženjersku mogućnost — omogućava kontrolu i vizualizaciju signala na bilo kojoj proizvoljnoj tački sa minimalnim naporom.

Jedan od zanimljivih standarda komunikacije je zemaljsko etersko televizijsko emitovanje DVB-T2.
Zašto? Naravno, možete jednostavno da uključite televizor bez ustajanja, ali nema šta da se gleda i to nije samo moje mišljenje, već medicinska činjenica.

Ako govorimo ozbiljno, DVB-T2 je razvijen sa veoma širokim mogućnostima, uključujući:

  • unutrašnja primena
  • modulacija od QPSK do 256QAM
  • propusni opseg od 1,7 MHz do 8 MHz

Imamo iskustvo prijema digitalne televizije po principu SDR. Standard DVB-T je prisutan u poznatom projektu GNURadio. Postoji blok gr-dvbs2rx za standard DVB-T2 (sve za isti GNURadio), ali zahteva prethodnu sinhronizaciju signala i inspiriše (posebno zahvaljujući Ronu Economosu).

Šta imamo.

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

Signal u eteru sa frekvencijom uzorkovanja 9,14285714285714285714 MHz, moduliran COFDM-om sa 32768 nosilaca, u opsegu od 8 MHz.

Preporučuje se primanje takvih signala sa udvostručenom frekvencijom uzorkovanja (da ništa ne bi bilo izgubljeno) i na međufrekvenciji većoj od propusnog opsega (superheterodinski prijem), radi eliminacije pomeranja DC i "curenja" lokalnog generatora (LO) na ulazu prijemnika. Uređaji koji ispunjavaju ove uslove su preskupi za običnu radoznalost.

SdrPlay sa 10 Msps 10 bit ili AirSpy sa sličnim karakteristikama su redosledno jeftiniji. Ovdje se ne govori o udvostručenoj frekvenciji uzorkovanja i prijem se može vršiti samo s direktnom konverzijom (Zero IF). Stoga (iz finansijskih razloga) prelazimo na stranu pristalica "čistog" SDR-a s minimalnom hardverskom konverzijom.

Bilo je potrebno rešiti dva zadatka:

  1. Sinhronizacija. Utvrditi tačno odstupanje radiofrekvencije s preciznošću do faze i odstupanje frekvencije uzorkovanja.
  2. Prepisati standard DVB-T2 unazad.

Druga zadaća zahtijeva mnogo više koda, ali je rješiva strpljivošću i lako se provjerava putem testnih signala.

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

Rješenje prve zadaće snažno ovisi o karakteristikama SDR uređaja i mogućnostima upravljanja. Korištenje preporučenih funkcija upravljanja frekvencijom, kako se kaže, nije imalo uspjeha, ali je donijelo puno iskustva u čitanju tehničke dokumentacije, programiranju, gledanju serija, rješavanju filozofskih pitanja… jed words, nije bilo moguće odustati od projekta.

Vjera u „pure SDR“ je samo ojačala.

Primamo signal onakav kakav jest, interpoliramo ga praktično do analoga i izvodimo već diskretni, ali sličan stvarnom.

Blox-shema sinhronizacije:

SDR DVB-T2 prijemnik na C++

Ovdje je sve po udžbeniku. Sljedeće je malo složenije. Potrebno je izračunati odstupanja. Postoji mnogo literature i istraživačkih članaka koji uspoređuju prednosti i nedostatke različitih metoda. Od klasika — to su „Michael Speth, Stefan Fechtel, Gunnar Fock, Heinrich Meyr, Optimum Receiver Design for OFDM-Based Broadband Transmission – Part I and II“. Međutim, nisam sreo niti jednog inženjera koji zna i želi izračunavati, stoga je primijenjen inženjerski pristup. Istom metodom sinhronizacije uvedena su poremetila u testni signal. Usporedbom različitih metrika sa poznatim odstupanjima (sam sam ih uveo) odabrane su najbolje za performanse i jednostavnost implementacije. Odstupanje primane frekvencije izračunava se usporedbom zaštitnog intervala i njegovog ponavljajućeg dijela. Fazna frekvencija prijema i frekvencija uzorkovanja procjenjuju se prema odstupanju faze pilot signala i također se koristi u jednostavnom, linearnoj ekvalizaciji OFDM signala.

Karakteristika ekvalizatora:

SDR DVB-T2 prijemnik na C++

I sve to dobro funkcioniše ako znate kada počinje okvir DVB-T2. Za to se u signalu prenosi simbol preambule P1. Metoda detekcije i dekodiranja simbola P1 opisana je u tehničkoj specifikaciji ETSI TS 102 831 (tamo je također mnogo korisnih preporuka za prijem).

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

SDR DVB-T2 prijemnik na C++

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

SDR DVB-T2 prijemnik na C++

In this section, we will learn what IQ imbalance, DC offset, and LO leakage are. Typically, compensation for these specific direct conversion distortions is implemented in the SDR device's driver. Therefore, it took a long time to understand that the deviation of stars from the cohesive constellation of QAM64 is the result of compensation functions. I had to disable everything and write my own solution.

And then the picture started to move:

SDR DVB-T2 prijemnik na C++

QAM64 modulation with a specific constellation rotation in the DVB-T2 standard:

SDR DVB-T2 prijemnik na C++

In short, this is the result of passing the mixture back through the meat grinder. The standard provides for four types of interleaving:

  • bit interleaving (bit interleaving with column twisting)
  • cell interleaving (interleaving of cells in the encoding block)
  • time interleaving (also in the block encoding group)
  • frequency interleaving (interleaving of frequencies in the OFDM symbol)

As a result, we have this kind of signal at the input:

SDR DVB-T2 prijemnik na C++

All this is a battle for the noise immunity of the encoded signal.

Zaključek

Now we can see not only the signal itself and its shape, but also the control information.
There are two multiplexes on air. Each has two physical channels (PLP).

One oddity noticed in the first multiplex — the first PLP is labeled 'multiple', which makes sense since it is not the only one in the multiplex, while the second PLP is marked 'single', and that raises questions.
Even more interesting is the second oddity in the second multiplex — all programs are in the first PLP, while the second PLP has an unknown nature signal at a low speed. At least the VLC player, which understands around fifty video formats and as many audio formats, does not recognize it.

The project can be found here.

The project was created with the aim of determining the possibility of decoding DVB-T2 using SdrPlay (and now also AirSpy), so this is not even an alpha version.

P.S. While writing this article with difficulty, I managed to integrate PlutoSDR into the project.

Someone will immediately say that it offers only 6Msps for IQ signal output through USB2.0, but at least 9.2Msps is needed; however, that’s a separate topic.

Izvor: habr.com

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster