Marrës SDR DVB-T2 në C++

Radio e Definuar nga Softueri (Software Defined Radio) është një metodë që zëvendëson punën me metal (çka, në parim, është e dobishme për shëndetin) me dhimbjen e kokës të programimit. SDR i parashikohet një të ardhme të madhe dhe cilësia kryesore është heqja e kufizimeve në realizimin e protokolleve të radios. Një shembull është metoda e modulimit OFDM (Modulimi me ndarje ortogonale të frekuencave), e cila është bërë e mundur vetëm përmes SDR. Por, në SDR ka një mundësi tjetër, krejt inxhinierike - është mundësia për të kontrolluar dhe vizualizuar sinjalin në çdo pikë të rastësishme me minimal përpjekje.

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

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

  • aplikimi nĂ« ambiente tĂ« brendshme
  • modulimi nga QPSK deri nĂ« 256QAM
  • gjerĂ«si bandes nga 1.7MHz deri nĂ« 8MHz

Eksperienca e marrjes së televizionit digjital përmes SDR ekziston. Standardi DVB-T është i pranishëm në projektin e njohur GNURadio. Ekziston blloku gr-dvbs2rx për standardin DVB-T2 (përsëri për GNURadio), por që kërkon sinkronizim të mëparshëm të sinjalit dhe është frymëzuese (falë të veçantë Ron Economos).

ČfarĂ« kemi.

Ekziston standardi ETSI EN 302 755, i cili përshkruan me detaje transmetimin, por jo marrjen.

Sinjali në eter me frekuencë mostrimi 9,14285714285714285714 MHz, i modulueshëm COFDM me 32768 mb carries, në gjerësi bandes 8 MHZ.

Marrja e këtyre sinjaleve rekomandohet me frekuencë të dyfishuar mostrimi (që të mos humbasë asgjë) dhe në frekuencë të ndërmjetme më të lartë se gjerësia e bandes (pranimi superheterodin) për të eliminuar përjashtimin nga DC dhe "curjen" e gjeneratorit lokal në hyrje të marrësit. Pajisjet që plotësojnë këto kushte janë shumë të shtrenjta për një kuriozitet të thjeshtë.

SdrPlay me 10Msps 10bit ose AirSpy me karakteristika të ngjashme janë shumë më të lira. Këtu nuk është fjala për frekuencë të dyfishuar mostrimi dhe marrja mund të bëhet vetëm me konvertim të drejtpërdrejtë (Zero IF). Prandaj (për arsye financiare) kalojmë në anën e ndjekësve të SDR "të pastër" me minim të transformimit harduerik.

Duhej të zgjidheshin dy detyra:

  1. Sinkronizimi. Të zbulojmë devijimin e saktë të frekuencës radio me saktësi deri në fazë dhe devijimin e frekuencës së mostrimit.
  2. Riformuloni standardin DVB-T2 mbrapsht.

Detyra e dytë kërkon shumë më shumë kod, por zgjidhet me durim dhe verifikohet lehtë me sinjalet testuese.

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

Zgjidhja e detyrës së parë varet shumë nga karakteristikat e pajisjes SDR dhe mundësitë e menaxhimit. Përdorimi i funksioneve të rekomanduara të menaxhimit të frekuencës, siç thuhet, nuk rezultoi me sukses, por ofroi shumë përvojë në leximin e dokumentacionit teknik, programimin, shikimin e serive, zgjidhjen e pyetjeve filozofike... në Përgjithësi, projekti nuk u braktis.

Besimi në «pure SDR» vetëm sa u forcua.

Pranojmë sinjalin si është, e interpolojmë pothuajse deri në analog dhe nxjerrim tashmë të diskretë, por të ngjashme me të vërtetën.

Diagrami i sinkronizimit:

Marrës SDR DVB-T2 në C++

KĂ«tu gjithçka Ă«shtĂ« sipas manualit. MĂ« pas bĂ«het pak mĂ« e komplikuar. Nevojitet tĂ« llogariten devijimet. Ka shumĂ« literaturĂ« dhe artikuj kĂ«rkimorĂ« qĂ« krahasojnĂ« pĂ«rfitimet dhe disavantazhet e metodave tĂ« ndryshme. NjĂ« nga klasikĂ«t Ă«shtĂ« «Michael Speth, Stefan Fechtel, Gunnar Fock, Heinrich Meyr, Optimum Receiver Design for OFDM-Based Broadband Transmission – Pjesa I dhe II». VetĂ«m se nuk kam takuar asnjĂ« inxhinier qĂ« di dhe dĂ«shiron tĂ« llogarisĂ«, prandaj u pĂ«rdor njĂ« qasje inxhinierike. Me tĂ« njĂ«jtin metodĂ« sinkronizimi u bĂ«nĂ« devijime nĂ« sinjalin testues. Duke krahasuar metrikat e ndryshme me devijimet e njohura (ato i kam bĂ«rĂ« unĂ«), u zgjodhĂ«n 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 qĂ« pĂ«rsĂ«ritet. Faza e frekuencĂ«s sĂ« marrjes dhe frekuenca e mostrave vlerĂ«sohen nĂ« bazĂ« tĂ« devijimit tĂ« fazave tĂ« sinjaleve pilot dhe pĂ«rdoren gjithashtu nĂ« ekualizuesin e thjeshtĂ« dhe linear tĂ« sinjalit OFDM.

Karakteristika e ekualizuesit:

Marrës SDR DVB-T2 në C++

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

Autokorelacioni i sinjalit P1 (pika më e lartë fillimi i kadrit):

Marrës SDR DVB-T2 në C++

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

Marrës SDR DVB-T2 në C++

Dhe pikĂ«risht kĂ«tu ne mĂ«sojmĂ« se çfarĂ« Ă«shtĂ« disbalanca IQ, DC offset dhe rrjedhja LO. NĂ« pĂ«rgjithĂ«si, kompensimi i kĂ«tyre anashkallimeve tĂ« veçanta pĂ«r konvertimin e drejtpĂ«rdrejtĂ« realizohet nĂ« drejtorinĂ« e pajisjes SDR. Prandaj, mori shumĂ« kohĂ« pĂ«r tĂ« kuptuar: nxjerrja e yjeve nga grupi miqĂ«sor QAM64 Ă«shtĂ« puna e funksioneve tĂ« kompensimit. Duhej ta ç’tĂ« gjithçka dhe tĂ« shkruaja njĂ« biçikletĂ« tĂ« re.

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

Marrës SDR DVB-T2 në C++

Modulimi QAM64 me një kthesë të veçantë të grupit në standardin DVB-T2:

Marrës SDR DVB-T2 në C++

Nëse e përmbledhim, kjo është pasojë e kalimit të mishit përsëri përmes grirëses. Standardi parashikon katër lloje të përzierjes:

  • bit interleaving (pĂ«rzierja e bitĂ«ve me ngjyrimin e kolonave)
  • cell interleaving (pĂ«rzierja e qelqeve nĂ« grupin e kodimit)
  • time interleaving (po nĂ« grupin e kodimit)
  • frequency interleaving (pĂ«rzierja e frekuencave nĂ« simbolin OFDM)

Në rezultat, në hyrje kemi këtë sinjal:

Marrës SDR DVB-T2 në C++

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

Përfundimi

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

NjĂ« çuditĂ«ri Ă«shtĂ« vĂ«nĂ« re nĂ« multiplexin e parĂ« — PLP i parĂ« ka etiketĂ«n "multiple", qĂ« Ă«shtĂ« logjike, pasi nuk Ă«shtĂ« njĂ« vetĂ« nĂ« multiplex, ndĂ«rsa PLP i dytĂ« ka etiketĂ«n "single" dhe kjo Ă«shtĂ« njĂ« pyetje.
PĂ«r mĂ« tepĂ«r, çuditĂ«ria e dytĂ« nĂ« multiplexin e dytĂ« — tĂ« gjitha programet nĂ« PLP tĂ« parĂ«, ndĂ«rsa nĂ« PLP tĂ« dytĂ«, nĂ« njĂ« shpejtĂ«si tĂ« ulĂ«t, Ă«shtĂ« njĂ« sinjal i panjohur. TĂ« paktĂ«n, VLC player, qĂ« kupton rreth njĂ«zet formate video dhe po aq audio, nuk arrin ta njohĂ«.

Projektin mund ta gjeni këtu.

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

P.S. Ndërsa u shkrua me vështirësi artikulli, arrita ta lidh këtë projekt me PlutoSDR.

Disa do të thonë menjëherë se aty ka vetëm 6Msps për sinjalin IQ në daljen USB2.0, ndërsa nevojitet të paktën 9,2Msps, por kjo është një temë tjetër.

Burimi: habr.com

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster