SDR DVB-T2 vastuvõtja C++ keeles

Tarkvaraga määratletud raadio on meetod metallitöö (mis on tegelikult teie tervisele kasulik) asendamiseks programmeerimise peavaluga. SDR-id ennustavad suurt tulevikku ja peamiseks eeliseks peetakse piirangute kaotamist raadioprotokollide rakendamisel. Näitena võib tuua OFDM (Orthogonal Frequency-division multiplexing) modulatsioonimeetodi, mis on võimalik ainult tänu SDR-meetodile. Kuid SDR-il on ka veel üks puhtalt insenertehniline võimalus – võimalus juhtida ja visualiseerida signaali mis tahes suvalises punktis väikseima pingutusega.

Üks huvitavaid sidestandardeid on maapealne maapealne televisioon DVB-T2.
Milleks? Muidugi saab teleka lihtsalt püsti tõusmata sisse lülitada, aga seal pole absoluutselt midagi vaadata ja see pole enam minu arvamus, vaid meditsiiniline fakt.

Tõsiselt, DVB-T2 on loodud väga laiaulatuslike võimalustega, sealhulgas:

  • siserakendus
  • moduleerimine QPSK-lt 256QAM-ile
  • ribalaius 1,7MHz kuni 8MHz

Mul on kogemus digitaaltelevisiooni vastuvõtmisel SDR põhimõttel. DVB-T standard on tuntud GNUradio projektis. DVB-T2 standardi jaoks on olemas gr-dvbs2rx plokk (kõik samale GNUradiole), kuid see nõuab signaali eelnevat sünkroniseerimist ja see on inspireeriv (eriline tänu Ron Economosele).

Mis meil on.

On olemas ETSI EN 302 755 standard, mis täpsustab edastamist, kuid mitte vastuvõtmist.

Signaal on eetris diskreetimissagedusega 9,14285714285714285714 MHz, mida moduleerib COFDM 32768 kandjaga, sagedusalas 8 MHz.

Selliseid signaale on soovitatav vastu võtta kahekordse diskreetimissagedusega (et mitte midagi kaotada) ja vahesagedusel suurema ribalaiusega (superheterodüüni vastuvõtt), et vabaneda alalisvoolu (DC) nihkest ja kohaliku ostsillaatori "lekkest". (LO) vastuvõtja sisendisse. Nendele tingimustele vastavad seadmed on pelgalt uudishimu jaoks liiga kallid.

SdrPlay 10Msps 10bit või sarnaste omadustega AirSpy on palju odavam. Kahekordsest diskreetimissagedusest pole siin juttugi ja vastuvõtt saab toimuda ainult otsekonversiooniga (Zero IF). Seetõttu läheme (rahalistel põhjustel) minimaalse riistvarakonversiooniga „puhta” SDR-i pooldajate poolele.

Oli vaja lahendada kaks probleemi:

  1. Sünkroonimine. Uurige välja täpne faasitäpne RF-hälve ja diskreetimissageduse hälve.
  2. Kirjutage DVB-T2 standard tagurpidi ümber.

Teine ülesanne nõuab palju rohkem koodi, kuid seda saab visalt lahendada ja seda saab testsignaalide abil hõlpsasti kontrollida.

Testsignaalid on saadaval BBC serveris ftp://ftp.kw.bbc.co.uk/t2refs/ koos üksikasjalike juhistega.

Esimese probleemi lahendus sõltub suuresti SDR-seadme omadustest ja selle juhtimisvõimalustest. Soovitatud sageduse reguleerimise funktsioonide kasutamine, nagu öeldakse, ei õnnestunud, kuid andis palju kogemusi nende lugemiseks. dokumenteerimine, programmeerimine, seriaalide vaatamine, filosoofiliste küsimuste lahendamine..., ühesõnaga, projektist loobuda polnud võimalik.

Usk "puhtasse SDR-i" on ainult tugevnenud.

Võtame signaali sellisel kujul, nagu see on, interpoleerime selle peaaegu analoogiks ja võtame välja diskreetse, kuid tegelikule sarnase signaali.

Sünkroonimise plokkskeem:

SDR DVB-T2 vastuvõtja C++ keeles

Siin on kõik õpiku järgi. Edasi on veidi keerulisem. Kõrvalekalded tuleb välja arvutada. On palju kirjandust ja teadusartikleid, mis võrdlevad erinevate meetodite eeliseid ja puudusi. Klassikatest - see on "Michael Speth, Stefan Fechtel, Gunnar Fock, Heinrich Meyr, OFDM-põhise lairibaülekande optimaalne vastuvõtja disain – I ja II osa." Aga ma pole kohanud ühtegi inseneri, kes oskaks ja tahaks loendada, seega kasutati insenerilähenemist. Sama sünkroniseerimismeetodit kasutades viidi testsignaali sisse detuning. Võrreldes erinevaid mõõdikuid teadaolevate kõrvalekalletega (ta tutvustas neid ise), valiti välja parimad nii jõudluse kui ka teostamise lihtsuse poolest. Vastuvõtusageduse hälve arvutatakse kaitseintervalli ja selle korduva osa võrdlemisel. Vastuvõtusageduse faas ja diskreetimissagedus on hinnatud pilootsignaalide faasihälbe põhjal ja seda kasutatakse ka OFDM-signaali lihtsas lineaarses ekvalaiseris.

Ekvalaiseri omadus:

SDR DVB-T2 vastuvõtja C++ keeles

Ja kõik see toimib hästi, kui teate, millal DVB-T2 kaader käivitub. Selleks edastatakse signaalis preambuli sümbol P1. Sümboli P1 tuvastamise ja dekodeerimise meetodit on kirjeldatud tehnilises kirjelduses ETSI TS 102 831 (vastuvõtmiseks on ka palju kasulikke soovitusi).

P1 signaali autokorrelatsioon (kõrgeim punkt kaadri alguses):

SDR DVB-T2 vastuvõtja C++ keeles

Esimene pilt (liikuva pildini on jäänud vaid kuus kuud...):

SDR DVB-T2 vastuvõtja C++ keeles

Ja siit saame teada, mis on IQ tasakaalustamatus, alalisvoolu nihe ja LO leke. Reeglina rakendatakse nende otsesele teisendamisele omaste moonutuste kompenseerimist SDR-seadme draiveris. Seetõttu võttis mõistmine kaua aega: sõbralikust QAM64 tähtkujust tähtede välja löömine on kompensatsioonifunktsioonide töö. Pidin kõik välja lülitama ja ratta kirjutama.

Ja siis pilt liikus:

SDR DVB-T2 vastuvõtja C++ keeles

QAM64 modulatsioon koos konkreetse tähtkuju pööramisega DVB-T2 standardis:

SDR DVB-T2 vastuvõtja C++ keeles

Lühidalt öeldes on see hakkliha tagasi läbi hakklihamasina laskmise tulemus. Standard näeb ette nelja tüüpi segamist:

  • natuke põimimine
  • rakkude põimimine (rakkude segamine kodeerimisplokis)
  • ajainterleaving (see on ka kodeerimisplokkide rühmas)
  • sageduse põimimine (sageduste segamine OFDM-sümbolis)

Selle tulemusena on meil sisendis järgmine signaal:

SDR DVB-T2 vastuvõtja C++ keeles

Kõik see on võitlus kodeeritud signaali mürakindluse eest.

Summaarne

Nüüd näeme mitte ainult signaali ennast ja selle kuju, vaid ka teenuseteavet.
Eetris on kaks multipleksi. Igal neist on kaks füüsilist kanalit (PLP).

Esimeses multipleksis märgati üht veidrust - esimene PLP on märgistatud "mitmekordne", mis on loogiline, kuna multipleksis on rohkem kui üks ja teine ​​PLP on märgistatud "üksik" ja see on küsimus.
Veelgi huvitavam on teise multipleksi teine ​​veidrus - kõik programmid on esimeses PLP-s, kuid teises PLP-s on väikese kiirusega tundmatu iseloomuga signaal. Vähemalt VLC-mängija, mis mõistab umbes viitkümmend videoformaati ja sama palju heli, ei tunne seda ära.

Projekti endaga saab tutvuda siin.

Projekt loodi eesmärgiga teha kindlaks DVB-T2 dekodeerimise võimalus SdrPlay (ja nüüd AirSpy) abil, nii et see pole isegi alfaversioon.

PS Kui ma artiklit raskustega kirjutasin, õnnestus mul PlutoSDR projekti integreerida.

Keegi ütleb kohe, et USB6 väljundis on IQ signaali jaoks ainult 2.0Msps, aga vaja on vähemalt 9,2Msps, aga see on omaette teema.

Allikas: www.habr.com

Lisa kommentaar