Receiver SDR DVB-T2 në C++

Radio i Definuar nga Softueri (SDR) — Ă«shtĂ« njĂ« metodĂ« qĂ« zĂ«vendĂ«son punĂ«n e metallit (e cila, nĂ« parim, Ă«shtĂ« e mirĂ« pĂ«r shĂ«ndetin) me dhimbjen e kokĂ«s tĂ« programimit. SDR-i parashikohet me njĂ« tĂ« ardhme tĂ« madhe dhe pĂ«rfitimi kryesor konsiderohet heqja e kufizimeve nĂ« zbatimin e protokolleve radio. NjĂ« shembull Ă«shtĂ« metoda e modulimit OFDM (modulimi i ndarĂ« ortogonal i frekuencave), e cila u bĂ« e mundur vetĂ«m pĂ«rmes SDR. Por ka edhe njĂ« mundĂ«si tjetĂ«r, krejt inxhinierike nĂ« SDR — Ă«shtĂ« mundĂ«sia pĂ«r tĂ« kontrolluar dhe vizualizuar sinjalin nĂ« çdo pikĂ« tĂ« rastĂ«sishme me pĂ«rpjekje minimale.

Një nga standardet interesante të komunikimit është televizioni i tokës DVB-T2.
Pse? Sigurisht, mund të ndizni televizorin pa u ngritur, por nuk ka asgjë për të parë atje dhe kjo nuk është vetëm mendimi im, por një fakt mjekësor.

Nëse flasim seriozisht, DVB-T2 është zhvilluar me mundësi shumë të gjera, përfshirë:

  • pĂ«rdorim brenda
  • modulimi nga QPSK deri nĂ« 256QAM
  • gjerĂ«sia e brezit nga 1.7MHz deri nĂ« 8MHz

Ka një përvojë në marrjen e televizionit digjital sipas parimit SDR. Standardi DVB-T gjendet në projektin e njohur GNURadio. Ka një bllok gr-dvbs2rx për standardin DVB-T2 (për të njëjtin GNURadio), por kërkon sinkronizim të mëhershëm të sinjalit dhe është frymëzuese (falenderime të veçanta për Ron Economos).

ÇfarĂ« kemi.

Ka standardin ETSI EN 302 755, i cili përshkruan në detaje transmetimin, por jo marrjen.

Sinjali është në eter me frequencë mostrimi 9,14285714285714285714 MHz, moduluar COFDM me 32768 mb Carrying, në një brez 8 MHZ.

Për të marrë këto sinjale, rekomandohet të përdoret një frekuencë e dyfishuar mostrimi (për të mos humbur asgjë) dhe në një frekuencë të ndërmjetme më të madhe se brezi i kalueshmërisë (pranimi superheterodin), për të eliminuar zhvendosjen e DC dhe "rrjedhjen" e gjeneratorit lokal (LO) në hyrjen e marrësit. Veglat që i plotësojnë këto kushte janë shumë të shtrenjta për thjesht kureshtjen.

SdrPlay me 10Msps 10bit ose AirSpy me karakteristika të ngjashme janë dukshëm më të lira. Nuk flitet për dyfishimin e frekuencës së mostrës dhe prania mund të bëhet vetëm me transformim të drejtpërdrejtë (Zero IF). Prandaj, për arsye financiare, kalojmë në anën e adhuruesve të «pure» SDR me minimumin e transformimeve harduerike.

Duhej të zgjidhen dy probleme:

  1. Sinkronizimi. Të zbulohet devijimi i saktë i frekuencës radio me saktësi deri në fazë dhe devijimi i frekuencës së mostrës.
  2. Të përkthehet standardi DVB-T2 për mbrapa.

Problemi i dytë kërkon shumë më shumë kod, por është i zgjidhshëm me durim dhe lehtësisht i verifikueshëm me sinjale testuese.

Sinjalet testuese janë të disponueshme në serverin BBC ftp://ftp.kw.bbc.co.uk/t2refs/ me udhëzime të hollësishme.

Zgjidhja e problemit të parë varet shumë nga karakteristikat e pajisjes SDR dhe mundësitë e kontrollit. Përdorimi i funksioneve të rekomanduara për kontrollin e frekuencës, siç thuhet, nuk pati sukses, por dhanë shumë përvojë në leximin e dokumentacionit teknik, programimin, shikimin e serive, zgjidhjen e pyetjeve filozofike...me fjalë të tjera, nuk arritëm ta braktisim projektin.

Besimi në «pure SDR» është vetëm forcuar.

Marrim sinjalin as që është, e interpretojmë atë praktikisht si analog dhe nxjerrim tashmë një të dhënë diskrete, por që i ngjan asaj reale.

Diagrami i sinkronizimit:

Receiver SDR DVB-T2 në C++

KĂ«tu Ă«shtĂ« gjithçka sipas njĂ« teksti. MĂ« pas bĂ«het mĂ« e komplikuar. Nevojitet tĂ« llogariten devijimet. Ka shumĂ« literaturĂ« dhe artikuj kĂ«rkimorĂ« qĂ« krahasojnĂ« avantazhet dhe disavantazhet e metodave tĂ« ndryshme. Nga klasika - Ă«shtĂ« "Michael Speth, Stefan Fechtel, Gunnar Fock, Heinrich Meyr, Optimum Receiver Design for OFDM-Based Broadband Transmission – Part I dhe II". VetĂ«m se nuk kam takuar asnjĂ« inxhinier qĂ« di dhe dĂ«shiron tĂ« llogarisĂ«, prandaj Ă«shtĂ« pĂ«rdorur njĂ« qasje inxhinierike. Me tĂ« njĂ«jtĂ«n metodĂ« sinkronizimi janĂ« bĂ«rĂ« devijime nĂ« sinjalin testues. Duke krahasuar metrikat e ndryshme me devijime tĂ« njohura (unĂ« vetĂ« i bĂ«ra), janĂ« zgjedhur mĂ« tĂ« mirat pĂ«r performancĂ«n dhe thjeshtĂ«sinĂ« e realizimit. Devijimi i frekuencĂ«s sĂ« marrjes llogaritet duke krahasuar intervalin mbrojtĂ«s dhe pjesĂ«n e tij tĂ« pĂ«rsĂ«ritur. Fazat e frekuencĂ«s sĂ« marrjes dhe frekuenca e mostrimit vlerĂ«sohen nga devijimi i fazave tĂ« sinjaleve pilot dhe ajo pĂ«rdoret gjithashtu nĂ« njĂ« ekvalizues tĂ« thjeshtĂ«, lineare tĂ« sinjalit OFDM.

Karakteristika e ekvalizuesit:

Receiver SDR DVB-T2 në C++

Dhe gjithçka funksionon mirë, nëse e di se kur fillon kadri DVB-T2. Për këtë, simboli i preambulës P1 dërgohet në sinjal. Metoda e identifikimit dhe dekodimit të simbolit P1 është përshkruar në Specifikimin Teknik ETSI TS 102 831 (aty ka shumë rekomandime të dobishme për marrjen).

Autokorrelaimi i sinjalit P1 (pikë e sipërme fillimi i kadrës):

Receiver SDR DVB-T2 në C++

Imazhi i parë (mbetën vetëm gjashtë muaj deri në imazhin në lëvizje...):

Receiver SDR DVB-T2 në C++

Dhe pikërisht këtu mësojmë se çfarë është IQ imbalance, DC offset dhe rrjedhja LO. Në përgjithësi, kompensimi i këtyre të këqijave specifike për konvertimin e drejtpërdrejtë është zbatuar në driver-in e pajisjes SDR. Prandaj, kaluam shumë kohë për të kuptuar se: nxjerrja e yjeve nga ngjarja e njohur QAM64 është punë e funksioneve të kompensimit. Duhej të gjithë të fikeshin dhe të shkruaja biçikletën time.

Dhe ja, imazhi filloi të lëvizë:

Receiver SDR DVB-T2 në C++

Modulimi QAM64 me një kthesë specifike të ngjarjes në standardin DVB-T2:

Receiver SDR DVB-T2 në C++

Nëse e përmbledhim, kjo është rezultati i kalimit të mishit prapa, përmes grirësit. Standarti parashikon katër lloje përzierjeje:

  • bit interleaving (pĂ«rzierje bitesh me shkrirje kolonash)
  • cell interleaving (pĂ«rzierje e qelizave nĂ« bllokun e kodimit)
  • interleaving i kohĂ«zisĂ« (e cila gjithashtu Ă«shtĂ« nĂ« grupin e blloqeve tĂ« kodimit)
  • interleaving i frekuencave (miximi i frekuencave nĂ« simbolin OFDM)

Si rezultat kemi një sinjal të tillë në hyrje:

Receiver SDR DVB-T2 në C++

E gjitha kjo është një luftë për qëndrueshmërinë e sinjalit të koduar.

Përfundimi

Tani mund të shohim jo vetëm sinjalin dhe formën e tij, por edhe informacionin shërbimes.
Në eter ka dy multiplexa. Në secilin janë dy kanale fizike (PLP).

Një çuditëri është vërejtur në multiplexin e parë - PLP i parë ka etiketën 'multiple', që është logjike, pasi nuk është ai i vetmi në multiplex, ndërsa PLP i dytë ka etiketën 'single' dhe kjo është e çuditshme.
Më interesante është çuditëria e dytë në multiplexin e dytë - të gjitha programet janë në PLP të parë, ndërsa në PLP të dytë në shpejtësi të ulët është një sinjal i natyrës së panjohur. Të paktën, VLC player, i cili kupton rreth pesëdhjetë formate video dhe aq muzikore, nuk e njeh atë.

Projektin mund ta gjeni këtu.

Projekti është krijuar me qëllimin për të përcaktuar mundësinë e dekodimit të DVB-T2 me ndihmën e SdrPlay (dhe tani edhe AirSpy), prandaj kjo nuk është as një version alfa.

P.S. Ndërsa artikulli shkruhej me vështirësi, arrita ta bashkëngjisë në projekt PlutoSDR.

Dikush do ta thotë se ka vetëm 6Msps për sinjalin IQ në dalje të USB2.0, kurse është e nevojshme të paktën 9,2Msps, por kjo është një temë tjetër.

Burimi: habr.com

Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« đŸ”„ Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« | ProHoster