SDR DVB-T2 panrima ing C ++

Radio Defined Piranti Lunak minangka cara kanggo ngganti karya logam (sing bener-bener apik kanggo kesehatan sampeyan) kanthi sirah program. SDRs prédhiksi mangsa gedhe lan kauntungan utama dianggep aman saka watesan ing implementasine saka protokol radio. Conto yaiku metode modulasi OFDM (Orthogonal frequency-division multiplexing), sing mung bisa ditindakake kanthi metode SDR. Nanging SDR uga duwe siji liyane, kesempatan engineering murni - kemampuan kanggo ngontrol lan nggambarake sinyal ing sembarang titik sembarang karo gaweyan paling.

Salah sawijining standar komunikasi sing menarik yaiku televisi terrestrial DVB-T2.
Kanggo apa? Mesthi wae, sampeyan mung bisa ngaktifake TV tanpa tangi, nanging pancen ora ana sing bisa ditonton lan iki dudu pendapatku, nanging kasunyatan medis.

Serius, DVB-T2 dirancang kanthi kapabilitas sing wiyar, kalebu:

  • aplikasi njero ruangan
  • modulasi saka QPSK kanggo 256QAM
  • bandwidth saka 1,7MHz kanggo 8MHz

Aku duwe pengalaman nampa televisi digital nggunakake prinsip SDR. Standar DVB-T ana ing proyek GNURadio sing kondhang. Ana pemblokiran gr-dvbs2rx kanggo standar DVB-T2 (kabeh kanggo GNURadio padha), nanging mbutuhake sinkronisasi sinyal pambuka lan menehi inspirasi (khusus thanks kanggo Ron Economos).

Apa kita duwe.

Ana standar ETSI EN 302 755 sing rincian transmisi, nanging ora nampa.

Sinyal kasebut ana ing udara kanthi frekuensi sampling 9,14285714285714285714 MHz, dimodulasi dening COFDM kanthi operator 32768, ing pita 8 MHZ.

Disaranake kanggo nampa sinyal kasebut kanthi frekuensi sampling kaping pindho (supaya ora kelangan apa-apa) lan ing frekuensi penengah luwih bandwidth (resepsi superheterodyne), kanggo nyisihake offset arus langsung (DC) lan "bocor" saka osilator lokal. (LO) menyang input panrima. Piranti sing nyukupi kahanan kasebut larang banget kanggo penasaran.

SdrPlay nganggo 10Msps 10bit utawa AirSpy kanthi ciri sing padha luwih murah. Ora ana pitakonan babagan frekuensi sampling kaping pindho ing kene lan resepsi mung bisa ditindakake kanthi konversi langsung (Zero IF). Mulane (kanggo alasan finansial) kita ngalih menyang sisih penganut SDR "murni" kanthi minimal konversi hardware.

Sampeyan perlu kanggo ngatasi rong masalah:

  1. Sinkronisasi. Temokake panyimpangan RF fase-akurat sing pas lan panyimpangan frekuensi sampling.
  2. Tulis maneh standar DVB-T2 mundur.

Tugas kapindho mbutuhake kode luwih akeh, nanging bisa ditanggulangi kanthi ketekunan lan bisa diverifikasi kanthi gampang nggunakake sinyal tes.

Sinyal tes kasedhiya ing server BBC ftp://ftp.kw.bbc.co.uk/t2refs/ kanthi instruksi rinci.

Solusi kanggo masalah pisanan gumantung banget marang karakteristik piranti SDR lan kemampuan kontrol. Nggunakake fungsi kontrol frekuensi dianjurake, lagi ngomong, ora sukses, nanging menehi akèh pengalaman maca sing. dokumentasi, program, nonton serial TV, mecahaken pitakonan filosofis ..., ing cendhak, iku ora bisa kanggo ninggalake project.

Iman ing "SDR murni" mung saya kuwat.

Kita njupuk sinyal kasebut, interpolasi meh dadi analog lan njupuk sing diskrit, nanging padha karo sing asli.

Diagram blok sinkronisasi:

SDR DVB-T2 panrima ing C ++

Kabeh ing kene miturut buku teks. Sabanjure rada rumit. Penyimpangan kudu diitung. Ana akeh literatur lan artikel riset sing mbandhingake kaluwihan lan kekurangan saka macem-macem metode. Saka klasik - iki "Michael Speth, Stefan Fechtel, Gunnar Fock, Heinrich Meyr, Desain Panrima Optimal kanggo Transmisi Broadband Berbasis OFDM - Bagian I lan II." Nanging aku durung ketemu insinyur siji sing bisa lan pengin ngetung, mula pendekatan teknik digunakake. Nggunakake cara sinkronisasi sing padha, detuning dienal menyang sinyal tes. Kanthi mbandhingake metrik sing beda karo panyimpangan sing dikenal (dheweke ngenalake dhewe), sing paling apik dipilih kanggo kinerja lan gampang diimplementasikake. Penyimpangan frekuensi panrima diwilang kanthi mbandhingake interval njaga lan bagean sing mbaleni. Fase frekuensi panampa lan frekuensi sampling dikira saka panyimpangan fase sinyal pilot lan iki uga digunakake ing ekualiser linear sing prasaja saka sinyal OFDM.

Karakteristik ekualiser:

SDR DVB-T2 panrima ing C ++

Lan kabeh iki bisa uga yen sampeyan ngerti nalika pigura DVB-T2 diwiwiti. Kanggo nindakake iki, simbol preamble P1 ditularaké ing sinyal. Cara kanggo ndeteksi lan dekoding simbol P1 diterangake ing Spesifikasi Teknis ETSI TS 102 831 (ana uga akeh rekomendasi sing migunani kanggo resepsi).

Autokorelasi sinyal P1 (titik paling dhuwur ing wiwitan pigura):

SDR DVB-T2 panrima ing C ++

Gambar pisanan (mung nem sasi isih nganti gambar obah ...):

SDR DVB-T2 panrima ing C ++

Lan ing kene kita sinau apa ora seimbang IQ, offset DC lan bocor LO. Minangka aturan, ganti rugi kanggo distorsi kasebut khusus kanggo konversi langsung ditindakake ing driver piranti SDR. Mulane, iku njupuk wektu dawa kanggo ngerti: nuthuk metu lintang saka rasi lintang QAM64 loropaken minangka karya saka fungsi ganti rugi. Aku kudu mateni kabeh lan nulis sepedaku.

Banjur gambar kasebut pindhah:

SDR DVB-T2 panrima ing C ++

Modulasi QAM64 kanthi rotasi konstelasi spesifik ing standar DVB-T2:

SDR DVB-T2 panrima ing C ++

Ing cendhak, iki minangka asil nglewati daging cincang bali liwat gilingan daging. Standar kasebut nyedhiyakake papat jinis campuran:

  • dicokot interleaving
  • sel interleaving (campuran sel ing blok kode)
  • interleaving wektu (uga ana ing klompok blok enkoding)
  • frekuensi interleaving (campuran frekuensi ing simbol OFDM)

Akibaté, kita duwe sinyal ing ngisor iki ing input:

SDR DVB-T2 panrima ing C ++

Kabeh iki minangka perjuangan kanggo kekebalan gangguan saka sinyal sing dikodekan.

Asile

Saiki kita bisa ndeleng ora mung sinyal dhewe lan wangun, nanging uga informasi layanan.
Ana rong multiplex ing udhara. Saben duwe rong saluran fisik (PLP).

Siji aneh ditemokake ing multiplex pisanan - PLP pisanan diwenehi label "multiple", sing logis, amarga ana luwih saka siji ing multiplex, lan PLP kapindho diwenehi label "single" lan iki minangka pitakonan.
Sing luwih menarik yaiku oddity kapindho ing multiplex kapindho - kabeh program ana ing PLP pisanan, nanging ing PLP kapindho ana sinyal sing ora dingerteni kanthi kacepetan sing kurang. Paling ora pamuter VLC, sing ngerti babagan sèket format video lan jumlah audio sing padha, ora ngerti.

Proyek kasebut dhewe bisa ditemokake ing kene.

Proyèk iki digawe kanthi tujuan kanggo nemtokake kemungkinan banget dekoding DVB-T2 nggunakake SdrPlay (lan saiki AirSpy.), Dadi iki dudu versi alpha.

PS Nalika aku nulis artikel kanthi angel, aku bisa nggabungake PlutoSDR menyang proyek kasebut.

Wong bakal langsung ngomong sing ana mung 6Msps kanggo sinyal IQ ing output USB2.0, nanging sampeyan kudu paling 9,2Msps, nanging iki topik kapisah.

Source: www.habr.com

Add a comment