Ricevitore SDR DVB-T2 in C++

Software Defined Radio hè un metudu di rimpiazzà u travagliu di metalli (chì hè veramente bonu per a vostra salute) cù u mal di testa di prugrammazione. SDR predice un grande futuru è u vantaghju principale hè cunsideratu cum'è a rimuzione di restrizioni in l'implementazione di protokolli radio. Un esempiu hè u metudu di modulazione OFDM (Orthogonal frequency-division multiplexing), chì hè pussibule solu da u metudu SDR. Ma SDR hà ancu una altra opportunità, puramente ingegneria - a capacità di cuntrullà è visualizà un signalu in ogni puntu arbitrariu cù u minimu sforzu.

Unu di i normi di cumunicazione interessanti hè a televisione terrestre DVB-T2.
Perchè? Di sicuru, pudete simpricimenti accende a TV senza alzà, ma ùn ci hè assolutamente nunda di fighjà quì è questu ùn hè più a mo opinione, ma un fattu medico.

Seriu, DVB-T2 hè cuncepitu cù capacità assai larghe, cumprese:

  • applicazione interna
  • modulazione da QPSK à 256QAM
  • larghezza di banda da 1,7MHz à 8MHz

Aghju sperienza in riceve a televisione digitale cù u principiu SDR. U standard DVB-T hè in u prughjettu GNURadio ben cunnisciutu. Ci hè un bloccu gr-dvbs2rx per u standard DVB-T2 (tuttu per u stessu GNURadio), ma esige una sincronizazione di signale preliminare è hè inspirante (grazie speciale à Ron Economos).

Ciò chì avemu.

Ci hè un standard ETSI EN 302 755 chì detalla a trasmissione, ma micca a ricezione.

U signale hè in aria cù una freccia di campionamentu di 9,14285714285714285714 MHz, modulatu da COFDM cù 32768 trasportatori, in una banda di 8 MHZ.

Hè ricumandemu di riceve tali signali cù a doppia frequenza di campionamentu (per ùn perde nunda) è à a freccia intermedia più larghezza di banda (ricezione superheterodina), per sguassà l'offset di corrente diretta (DC) è a "filtrazione" di l'oscillatore lucale. (LO) à l'input di u ricevitore. I dispusitivi chì soddisfanu queste cundizioni sò troppu caru per a mera curiosità.

SdrPlay cù 10Msps 10bit o AirSpy cù caratteristiche simili hè assai più prezzu. Ùn ci hè micca quistione di doppia a frequenza di campionamentu quì è a ricezione pò esse fatta solu cù cunversione diretta (Zero IF). Dunque (per ragioni finanziarii) avemu cambiatu à u latu di l'aderenti di SDR "pura" cù un minimu di cunversione di hardware.

Era necessariu di risolve dui prublemi:

  1. Sincronizazione. Scopri l'esatta deviazione RF precisa in fase e la deviazione di frequenza di campionamento.
  2. Riscrivite u standard DVB-T2 in daretu.

U secondu compitu richiede assai più codice, ma pò esse risoltu cù perseveranza è pò esse facilmente verificatu cù signalazioni di prova.

I segnali di prova sò dispunibili nantu à u servitore BBC ftp://ftp.kw.bbc.co.uk/t2refs/ cù struzzioni dettagliate.

A suluzione à u primu prublema hè assai dipendente di e caratteristiche di u dispusitivu SDR è e so capacità di cuntrollu. Utilizà e funzioni di cuntrollu di freccia ricumandate, cum'è dicenu, ùn hè micca successu, ma hà datu assai sperienza à leghje quelli. ducumentazione, prugrammazione, fighjulà serie TV, risolviri dumande filosofiche..., insomma, ùn si pudia abbandunà u prugettu.

A fede in "SDR puri" hè solu più forte.

Pigliemu u signalu cum'è, l'interpolate quasi à un analogu è pigliamu un discretu, ma simili à u veru.

Schema di bloccu di sincronizazione:

Ricevitore SDR DVB-T2 in C++

Tuttu quì hè secondu u libru di testu. Dopu hè un pocu più complicatu. A deviazioni deve esse calculata. Ci hè una mansa di letteratura è articuli di ricerca paragunendu i vantaghji è i svantaghji di i metudi diffirenti. Da i classici - questu hè "Michael Speth, Stefan Fechtel, Gunnar Fock, Heinrich Meyr, Design Optimum Receiver per a Trasmissione a Banda Larga Basata in OFDM - Parte I è II". Ma ùn aghju micca scontru un solu ingegnere chì pò è vole cuntà, cusì hè stata aduprata un accostu di l'ingegneria. Utilizendu u stessu metudu di sincronizazione, u detuning hè statu introduttu in u signale di prova. Paragunendu diverse metriche cù deviazioni cunnisciute (li hà introduttu ellu stessu), i megliu sò stati scelti per u rendiment è a facilità di implementazione. A deviazione di frequenza di ricezione hè calculata paragunendu l'intervallu di guardia è a so parte ripetitiva. A fase di a frequenza di ricezione è a frequenza di campionamentu sò stimati da a deviazione di fasa di i signali piloti è questu hè ancu utilizatu in un equalizer lineale simplice di un signalu OFDM.

Caratteristica di equalizzatore:

Ricevitore SDR DVB-T2 in C++

E tuttu questu funziona bè se sapete quandu u quadru DVB-T2 principia. Per fà questu, u simbulu di preambulu P1 hè trasmessu in u signale. U metudu per a rilevazione è a decodificazione di u simbulu P1 hè descrittu in a Specifica Tecnica ETSI TS 102 831 (ci sò ancu assai cunsiglii utili per a ricezione).

Autocorrelazione di u signale P1 (u puntu più altu à u principiu di u quadru):

Ricevitore SDR DVB-T2 in C++

Prima foto (solu sei mesi mancanu finu à l'imaghjini in muvimentu...):

Ricevitore SDR DVB-T2 in C++

È questu hè induve amparà ciò chì hè u sbilanciamentu di l'IQ, l'offset DC è a fuga LO. In regula, a compensazione per queste distorsioni specifiche à a cunversione diretta hè implementata in u driver di u dispositivu SDR. Per quessa, hà pigliatu assai tempu per capiscenu: chjappà stelle da a custellazione amica QAM64 hè u travagliu di e funzioni di compensazione. Aviu avutu à spegne tuttu è scrive a mo bicicletta.

È dopu a stampa si move:

Ricevitore SDR DVB-T2 in C++

Modulazione QAM64 cù rotazione di custellazione specifica in u standard DVB-T2:

Ricevitore SDR DVB-T2 in C++

In corta, questu hè u risultatu di passà a carne macinata torna à traversu u macinatu di carne. U standard prevede quattru tipi di mischju:

  • un pocu intrecciatu
  • interleaving di cellule (miscendu cellule in un bloccu di codificazione)
  • interleaving di u tempu (hè ancu in u gruppu di blocchi di codificazione)
  • interleaving di frequenza (mischje di freccia in un simbulu OFDM)

In u risultatu, avemu u seguente signale à l'input:

Ricevitore SDR DVB-T2 in C++

Tuttu chistu hè una lotta per l'immunità di u rumore di u signale codificatu.

U risultatu

Avà pudemu vede micca solu u signale stessu è a so forma, ma ancu l'infurmazioni di serviziu.
Ci sò dui multiplex in aria. Ciascunu hà dui canali fisichi (PLP).

Una stranezza hè stata nutata in u primu multiplex - u primu PLP hè chjamatu "multiple", chì hè logicu, postu chì ci hè più di unu in u multiplex, è u sicondu PLP hè tichjatu "single" è questu hè una quistione.
Ancu più interessante hè a seconda oddity in u sicondu multiplex - tutti i prugrammi sò in u primu PLP, ma in u sicondu PLP ci hè un signalu di natura scunnisciutu à una bassa veloce. Almenu u lettore VLC, chì capisce una cinquantina di formati video è a listessa quantità di audio, ùn u ricunnosce micca.

U prughjettu stessu pò esse truvatu quì.

U prugettu hè statu creatu cù u scopu di determinà a pussibilità di decodificà DVB-T2 cù SdrPlay (è avà AirSpy.), cusì ùn hè ancu una versione alfa.

PS Mentre scrivu l'articulu cun difficultà, aghju sappiutu integrà PlutoSDR in u prugettu.

Qualchissia dicerà immediatamente chì ci hè solu 6Msps per u signale IQ à l'uscita USB2.0, ma avete bisognu di almenu 9,2Msps, ma questu hè un tema separatu.

Source: www.habr.com

Add a comment