SDR DVB-T2 vevő C++ formátumban

A Software Defined Radio egy olyan módszer, amellyel a fémmunkát (amely valójában jót tesz az egészségnek) a programozás okozta fejfájással helyettesítheti. Az SDR-ek nagy jövőt jósolnak, és a fő előnynek a rádióprotokollok végrehajtásával kapcsolatos korlátozások megszüntetését tekintik. Példa erre az OFDM (Orthogonal Frequency-division multiplexing) modulációs módszer, amelyet csak az SDR módszer tesz lehetővé. De az SDR-nek van még egy, tisztán mérnöki lehetősége is – a jelek tetszőleges ponton történő vezérlésének és megjelenítésének képessége a legkisebb erőfeszítéssel.

Az egyik érdekes kommunikációs szabvány a földfelszíni sugárzású DVB-T2 televízió.
Miért? Persze a tévét egyszerűen be lehet kapcsolni anélkül, hogy felkelnénk, de ott abszolút nincs mit nézni és ez már nem az én véleményem, hanem orvosi tény.

Komolyan, a DVB-T2-t nagyon széles képességekkel tervezték, beleértve:

  • beltéri alkalmazás
  • moduláció QPSK-ról 256QAM-ra
  • sávszélesség 1,7 MHz és 8 MHz között

Tapasztalatom van az SDR elven működő digitális televíziózásban. A DVB-T szabvány a jól ismert GNURadio projektben található. Van egy gr-dvbs2rx blokk a DVB-T2 szabványhoz (mind ugyanahhoz a GNURadióhoz), de ehhez előzetes jelszinkronizálás szükséges, és inspiráló (külön köszönet Ron Economosnak).

Amink van.

Létezik egy ETSI EN 302 755 szabvány, amely részletezi az átvitelt, de nem a vételt.

A jel 9,14285714285714285714 MHz-es mintavételezési frekvenciával, COFDM-mel modulálva 32768 vivővel, 8 MHz-es sávban.

Az ilyen jeleket ajánlott dupla mintavételezési frekvenciával (hogy ne veszítsen semmit) és a köztes frekvencián nagyobb sávszélességgel (szuperheterodin vétel), hogy megszabaduljunk az egyenáram (DC) eltolásától és a helyi oszcillátor „szivárgásától”. (LO) a vevő bemenetére. Az ezeknek a feltételeknek megfelelő eszközök túl drágák a puszta kíváncsisághoz.

SdrPlay 10Msps 10bittel vagy AirSpy hasonló tulajdonságokkal sokkal olcsóbb. Itt szó sincs kétszeres mintavételezési frekvenciáról és a vétel csak közvetlen konverzióval (Zero IF) történhet. Ezért (anyagi okokból) a „tiszta” SDR hívei oldalára állunk minimális hardveres átalakítás mellett.

Két problémát kellett megoldani:

  1. Szinkronizálás. Ismerje meg a pontos fázispontos RF eltérést és mintavételi frekvencia eltérést.
  2. Írja át a DVB-T2 szabványt visszafelé.

A második feladat jóval több kódot igényel, de kitartással megoldható és tesztjelekkel könnyen ellenőrizhető.

A tesztjelek a BBC ftp://ftp.kw.bbc.co.uk/t2refs/ szerverén érhetők el részletes utasításokkal.

Az első probléma megoldása nagymértékben függ az SDR eszköz jellemzőitől és vezérlési képességeitől. Az ajánlott frekvenciaszabályozási funkciók használata, ahogy mondani szokták, nem járt sikerrel, de sok tapasztalatot adott az olvasás. dokumentálás, programozás, tévésorozatok nézése, filozófiai kérdések megoldása..., egyszóval nem lehetett feladni a projektet.

A „tiszta SDR”-be vetett hit csak erősödött.

A jelet úgy vesszük, ahogy van, szinte analógra interpoláljuk, és kiveszünk egy diszkrétet, de hasonlót a valódihoz.

Szinkronizálás blokkdiagramja:

SDR DVB-T2 vevő C++ formátumban

Itt minden a tankönyv szerint van. A következő egy kicsit bonyolultabb. Az eltéréseket ki kell számítani. Rengeteg szakirodalom és kutatási cikk található, amelyek összehasonlítják a különböző módszerek előnyeit és hátrányait. A klasszikusok közül ez a „Michael Speth, Stefan Fechtel, Gunnar Fock, Heinrich Meyr, Optimális vevőtervezés OFDM-alapú szélessávú átvitelhez – I. és II. rész.” De még egyetlen mérnökkel sem találkoztam, aki tudna és akarna számolni, ezért mérnöki megközelítést alkalmaztak. Ugyanezzel a szinkronizálási módszerrel detuningot vezettünk be a tesztjelbe. A különböző mérőszámok ismert eltérésekkel való összehasonlításával (ő maga vezette be őket) a legjobbakat választották ki a teljesítmény és a könnyű kivitelezés szempontjából. A vételi frekvencia eltérését a védőintervallum és annak ismétlődő részének összehasonlításával számítjuk ki. A vételi frekvencia fázisát és a mintavételezési frekvenciát a pilotjelek fáziseltéréséből becsüljük meg, és ezt egy OFDM jel egyszerű, lineáris hangszínszabályzójában is felhasználjuk.

Equalizer karakterisztikája:

SDR DVB-T2 vevő C++ formátumban

És mindez jól működik, ha tudja, mikor indul a DVB-T2 keret. Ehhez a P1 preambulum szimbólumot továbbítják a jelben. A P1 szimbólum észlelésének és dekódolásának módszerét az ETSI TS 102 831 műszaki leírás írja le (a vételre vonatkozóan is sok hasznos ajánlás található).

A P1 jel autokorrelációja (a legmagasabb pont a képkocka elején):

SDR DVB-T2 vevő C++ formátumban

Első kép (már csak hat hónap van hátra a mozgóképig...):

SDR DVB-T2 vevő C++ formátumban

És itt tanuljuk meg, mi az IQ-kiegyensúlyozatlanság, egyenáram-eltolás és LO-szivárgás. Általános szabály, hogy ezeknek a közvetlen átalakításra jellemző torzulásoknak a kompenzációja az SDR eszközillesztőben valósul meg. Ezért sokáig tartott, míg megértették: a barátságos QAM64 csillagképből a csillagok kiütése a kompenzációs funkciók munkája. Ki kellett kapcsolnom mindent, és meg kellett írnom a biciklimet.

És akkor a kép megmozdult:

SDR DVB-T2 vevő C++ formátumban

QAM64 moduláció specifikus konstellációforgatással a DVB-T2 szabványban:

SDR DVB-T2 vevő C++ formátumban

Röviden, ez annak az eredménye, hogy a darált húst visszaengedjük a húsdarálón. A szabvány négyféle keverést ír elő:

  • kicsit átlapolva
  • cella interleaving (cellák keverése egy kódoló blokkban)
  • időinterleaving (ez is a kódolási blokkok csoportjába tartozik)
  • frekvenciabeillesztés (frekvenciakeverés OFDM szimbólumban)

Ennek eredményeként a következő jelet kapjuk a bemeneten:

SDR DVB-T2 vevő C++ formátumban

Mindez harc a kódolt jel zajmentességéért.

Teljes

Most már nemcsak magát a jelet és annak alakját láthatjuk, hanem a szolgáltatási információkat is.
Két multiplex van adásban. Mindegyiknek két fizikai csatornája (PLP) van.

Az első multiplexben egy furcsaságot észleltünk - az első PLP-t „többszörös” címkével látták el, ami logikus, mivel egynél több van a multiplexben, a második PLP-t pedig „single” címkével látták el, és ez egy kérdés.
Még érdekesebb a második multiplex második furcsasága - az összes program az első PLP-ben van, de a második PLP-ben egy ismeretlen természetű jel van alacsony sebességgel. Legalábbis a mintegy ötven videóformátumot és ugyanennyi hangot megért VLC-lejátszó nem ismeri fel.

Maga a projekt itt található.

A projektet azzal a céllal hozták létre, hogy meghatározzák a DVB-T2 dekódolásának lehetőségét az SdrPlay (és most az AirSpy.) segítségével, tehát ez még csak nem is alfa verzió.

PS Amíg nehezen írtam a cikket, sikerült a PlutoSDR-t integrálnom a projektbe.

Valaki mindjárt azt mondja, hogy az USB6 kimeneten csak 2.0Msps van az IQ jelre, de ehhez legalább 9,2 Msps kell, de ez egy külön téma.

Forrás: will.com

Hozzászólás