SDR DVB-T2 ontvanger in C++

Sagteware-gedefinieerde radio (sagteware-gedefinieerde radiostelsel) is 'n metode om metaalwerk (wat in beginsel goed is vir die gesondheid) te vervang vir programmeerhoofpyne. SDR's voorspel 'n groot toekoms en die grootste voordeel is die verwydering van beperkings in die implementering van radioprotokolle. 'n Voorbeeld is die OFDM (Orthogonal frequency-division multiplexing) modulasiemetode, wat slegs deur die SDR-metode moontlik gemaak is. Maar SDR het ook nog een, suiwer ingenieurswese, moontlikheid - dit is die vermoë om die sein op enige arbitrêre punt met die minste moeite te beheer en te visualiseer.

Een van die interessante kommunikasiestandaarde is DVB-T2 terrestriële televisie.
Vir wat? Natuurlik kan jy net die TV aanskakel sonder om op te staan, maar daar is absoluut niks om daar te kyk nie en dit is nie meer my opinie nie, maar 'n mediese feit.

Maar ernstig, DVB-T2 is ontwerp met baie kenmerke in gedagte, insluitend:

  • binnenshuise toepassing
  • modulasie van QPSK na 256QAM
  • bandwydte van 1,7MHz tot 8MHz

Daar is ondervinding in die ontvangs van digitale televisie op die beginsel van SDR. Die DVB-T-standaard is in die bekende GNURadio-projek. Daar is 'n gr-dvbs2rx-blok vir die DVB-T2-standaard (almal vir dieselfde GNURadio), maar dit vereis voorlopige seinsinchronisasie en dit inspireer (spesiale dank aan Ron Economos).

Wat ons het.

Daar is 'n ETSI EN 302 755-standaard wat oordrag, maar nie ontvangs nie, aandui.

'n Lugsein met 'n steekproeffrekwensie van 9,14285714285714285714 MHz, gemoduleer deur COFDM met 32768 draers, in 'n band van 8 MHZ.

Dit word aanbeveel om sulke seine met 'n dubbele steekproeffrekwensie te ontvang (om niks te verloor nie) en teen 'n intermediêre frekwensie meer as die bandwydte (superheterodiene ontvangs), om ontslae te raak van GS-vooroordeel en "lekkasie" van die plaaslike ossillator (LO) ) na die ontvangerinvoer. Toestelle wat aan hierdie voorwaardes voldoen, is te duur vir blote nuuskierigheid.

SdrPlay met 10Msps 10bit of AirSpy met soortgelyke eienskappe is 'n orde van grootte goedkoper. Hier is geen sprake van dubbel die steekproeftempo nie, en ontvangs kan slegs met direkte omskakeling (Nul IF) gedoen word. Daarom (vir finansiële redes) beweeg ons na die kant van aanhangers van "suiwer" SDR met 'n minimum hardeware-omskakeling.

Dit was nodig om twee probleme op te los:

  1. Sinchronisasie. Vind die presiese RF-frekwensieafwyking uit met faseakkuraatheid en steekproeffrekwensieafwyking.
  2. Herskryf die DVB-T2-standaard agteruit.

Die tweede taak vereis baie meer kode, maar dit kan met volharding opgelos word en word maklik deur toetsseine nagegaan.

Toetsseine is beskikbaar op die BBC-bediener ftp://ftp.kw.bbc.co.uk/t2refs/ met gedetailleerde instruksies.

Die oplossing vir die eerste probleem is hoogs afhanklik van die eienskappe van die SDR-toestel en die beheervermoëns. Die gebruik van die aanbevole frekwensiebeheerfunksies, soos hulle sê, was nie suksesvol nie, maar het baie ondervinding gegee om dit te lees. dokumentasie, programmering, kyk na reekse, die oplossing van filosofiese vrae ... kortom, die projek kon nie laat vaar word nie.

Geloof in "suiwer SDR" het net sterker geword.

Ons aanvaar die sein soos dit is, interpoleer dit amper na die analoog en haal die reeds diskrete, maar soortgelyk aan die regte een uit.

Sinchronisasie blokdiagram:

SDR DVB-T2 ontvanger in C++

Alles is hier in die handboek. Die volgende een is 'n bietjie moeiliker. Afwykings moet bereken word. Daar is baie literatuur en navorsingsartikels wat die voor- en nadele van verskillende metodes vergelyk. Van die klassieke - dit is "Michael Speth, Stefan Fechtel, Gunnar Fock, Heinrich Meyr, Optimum Receiver Design for OFDM-Based Broadband Transmission - Part I and II". Net ek het nog nie 'n enkele ingenieur ontmoet wat kan en wil tel nie, so 'n ingenieursbenadering is toegepas. Dieselfde sinchronisasiemetode het ontstekings in die toetssein ingebring. Deur verskillende maatstawwe te vergelyk met bekende afwykings (deur myself bekendgestel), is die bestes gekies vir prestasie en gemak van implementering. Die ontvangsfrekwensie-afwyking word bereken deur die waginterval en die herhalende deel daarvan te vergelyk. Die fase van die ontvangfrekwensie en die steekproeffrekwensie word geskat uit die faseafwyking van die loodseine en dit word ook gebruik in 'n eenvoudige, lineêre OFDM seingelykmaker.

Equalizer kenmerk:

SDR DVB-T2 ontvanger in C++

En dit alles werk goed as jy weet wanneer die DVB-T2-raam begin. Om dit te doen, word die aanhefsimbool P1 in die sein oorgedra. Die metode vir die opsporing en dekodering van 'n P1-simbool word beskryf in Tegniese Spesifikasie ETSI TS 102 831 (daar is ook baie nuttige ontvangsriglyne).

Outokorrelasie van die P1-sein (die hoogste punt is die begin van die raam):

SDR DVB-T2 ontvanger in C++

Die eerste foto (slegs ses maande tot die bewegende foto...):

SDR DVB-T2 ontvanger in C++

En dit is waar ons leer wat IK-wanbalans, DC-afset en LO-lekkasie is. Tipies word vergoeding vir hierdie direkte omskakelingspesifieke vervormings in die toestel se SDR-bestuurder geïmplementeer. Daarom het dit lank geneem om te verstaan: om sterre uit die vriendelike QAM64-konstellasie uit te slaan, is die werk van vergoedingsfunksies. Ek moes alles afskakel en my fiets skryf.

En hier is die prentjie wat beweeg:

SDR DVB-T2 ontvanger in C++

QAM64 modulasie met spesifieke konstellasie rotasie in DVB-T2 standaard:

SDR DVB-T2 ontvanger in C++

Kortom, dit is die resultaat van die terugvoer van die maalvleis deur die vleismeul. Die standaard maak voorsiening vir vier tipes vermenging:

  • bietjie interleaving (bis interleaving met kolomdraaiing)
  • selvervleg (vermenging van selle in die koderingsblok)
  • tydverplasing (dit is ook in die koderingsblokgroep)
  • frekwensie-vervleg (frekwensievermenging in OFDM-simbool)

As gevolg hiervan, by die inset het ons die volgende sein:

SDR DVB-T2 ontvanger in C++

Dit alles is 'n stryd om die geraasimmuniteit van die geënkodeerde sein.

Totale

Nou kan ons nie net die sein self en sy vorm sien nie, maar ook diensinligting.
Daar is twee multiplekse op die lug. Elkeen het twee fisiese kanale (PLP).

Een vreemdheid is opgemerk in die eerste multipleks - die eerste PLP het die "veelvuldige" etiket, wat logies is, aangesien dit nie alleen in die multipleks is nie, en die tweede PLP het die "enkele" etiket en dit is 'n vraag.
Nog interessanter is die tweede vreemdheid in die tweede multipleks - alle programme in die eerste PLP, en in die tweede PLP teen 'n stil spoed is daar 'n sein van 'n onbekende aard. Ten minste herken die VLC-speler, wat sowat vyftig videoformate en dieselfde hoeveelheid oudio verstaan, dit nie.

Die projek self kan hier gevind word.

Die projek is geskep om die moontlikheid te bepaal om DVB-T2 te dekodeer met SdrPlay (en nou AirSpy.), So dit is nie eers 'n alfa-weergawe nie.

NS Terwyl die artikel met moeite geskryf is, het ons daarin geslaag om dit by die PlutoSDR-projek te koppel.

Iemand sal dadelik sê daar is net 6Msps vir die IK-sein by die USB2.0-uitset, maar jy benodig ten minste 9,2Msps, maar dit is 'n aparte kwessie.

Bron: will.com

Voeg 'n opmerking