C++ хэл дээрх SDR DVB-T2 хүлээн авагч

Програм хангамжийн тодорхойлогдсон радио нь метал хийцийг (энэ нь таны эрүүл мэндэд тустай) програмчлалын толгойн өвчинөөр солих арга юм. SDR нь гайхалтай ирээдүйг урьдчилан таамаглаж байгаа бөгөөд гол давуу тал нь радио протоколыг хэрэгжүүлэхэд хязгаарлалтыг арилгах явдал юм. Жишээ нь зөвхөн SDR аргаар боломжтой болсон OFDM (Orthogonal frekans-division multiplexing) модуляцийн арга юм. Гэхдээ SDR нь бас нэг цэвэр инженерийн боломжтой байдаг - хамгийн бага хүчин чармайлтаар дурын цэг дээр дохиог хянах, дүрслэх чадвар.

Сонирхолтой харилцааны стандартуудын нэг бол хуурай газрын DVB-T2 телевиз юм.
Юуны төлөө? Мэдээжийн хэрэг, та зүгээр л босохгүйгээр зурагтаа асааж болно, гэхдээ тэнд үзэх зүйл огт байхгүй бөгөөд энэ бол миний бодол биш, харин эмнэлгийн баримт юм.

DVB-T2 нь маш өргөн боломжуудтай бөгөөд үүнд:

  • доторх хэрэглээ
  • QPSK-аас 256QAM хүртэл модуляц
  • 1,7МГц-аас 8МГц хүртэл зурвасын өргөн

Би SDR зарчмаар дижитал телевиз хүлээн авч байсан туршлагатай. DVB-T стандарт нь алдартай GNURadio төсөлд байдаг. DVB-T2 стандартын хувьд gr-dvbs2rx блок байдаг (бүгд ижил GNURadio-д зориулагдсан), гэхдээ энэ нь урьдчилсан дохионы синхрончлолыг шаарддаг бөгөөд энэ нь урам зориг өгдөг (Рон Экономос-д онцгой талархал илэрхийлэв).

Бидэнд байгаа зүйл.

ETSI EN 302 755 стандарт байдаг бөгөөд энэ нь дамжуулалтыг нарийвчлан тодорхойлдог боловч хүлээн авахгүй.

Уг дохио нь 9,14285714285714285714 МГц-ийн зурваст 32768 зөөвөрлөгчтэй COFDM модуляцлагдсан 8 МГц давтамжтай агаарт байна.

Орон нутгийн осцилляторын тогтмол гүйдлийн офсет болон "нэвчилт" -ийг арилгахын тулд ийм дохиог дээж авах давтамжийг хоёр дахин их (юу ч алдахгүйн тулд), завсрын давтамжид илүү их зурвасын өргөнтэй (супергетеродин хүлээн авах) авахыг зөвлөж байна. (LO) хүлээн авагчийн оролт руу. Эдгээр нөхцлийг хангасан төхөөрөмжүүд нь зөвхөн сониуч зан гаргахад хэтэрхий үнэтэй байдаг.

10Msps 10bit-тай SdrPlay эсвэл ижил төстэй шинж чанартай AirSpy нь хамаагүй хямд юм. Энд түүврийн давтамжийг хоёр дахин нэмэгдүүлэх тухай асуудал байхгүй бөгөөд хүлээн авалтыг зөвхөн шууд хөрвүүлэх (Тэг IF) хийх боломжтой. Тиймээс (санхүүгийн шалтгааны улмаас) бид хамгийн бага техник хангамжийн хөрвүүлэлт бүхий "цэвэр" SDR-ийг баримтлагчдын талд шилжиж байна.

Хоёр асуудлыг шийдэх шаардлагатай байсан:

  1. Синхрончлол. Фазын нарийвчлалтай RF-ийн хазайлт ба дээж авах давтамжийн хазайлтыг олж мэдээрэй.
  2. DVB-T2 стандартыг буцааж бичнэ үү.

Хоёр дахь даалгавар нь илүү их код шаарддаг боловч тэвчээртэйгээр шийдэж, туршилтын дохиог ашиглан хялбархан шалгаж болно.

Туршилтын дохиог BBC сервер ftp://ftp.kw.bbc.co.uk/t2refs/ дээр дэлгэрэнгүй зааврын хамт авах боломжтой.

Эхний асуудлын шийдэл нь SDR төхөөрөмжийн шинж чанар, түүний удирдлагын чадвараас ихээхэн хамаардаг. Санал болгож буй давтамжийн хяналтын функцийг ашиглах нь тэдний хэлснээр амжилтанд хүрээгүй боловч тэдгээрийг уншихад маш их туршлага өгсөн. баримтжуулах, нэвтрүүлэг хийх, олон ангит кино үзэх, философийн асуултуудыг шийдвэрлэх..., товчхондоо төслөө орхих боломжгүй байсан.

"Цэвэр SDR"-д итгэх итгэл улам хүчтэй болсон.

Бид дохиог байгаагаар нь авч, бараг аналог болгон интерполяци хийж, салангид, гэхдээ бодиттой төстэй дохиог гаргаж авдаг.

Синхрончлолын блок диаграмм:

C++ хэл дээрх SDR DVB-T2 хүлээн авагч

Энд бүх зүйл сурах бичгийн дагуу байдаг. Дараа нь арай илүү төвөгтэй юм. Хазайлтыг тооцоолох шаардлагатай. Төрөл бүрийн аргын давуу болон сул талуудыг харьцуулсан олон тооны уран зохиол, судалгааны нийтлэлүүд байдаг. Сонгодог зохиолуудаас - энэ бол "Майкл Спет, Стефан Фехтел, Гуннар Фок, Хайнрих Мейр, OFDM-д суурилсан өргөн зурвасын дамжуулалтын оновчтой хүлээн авагчийн загвар - I ба II хэсэг." Гэхдээ тоолж чаддаг, тоолохыг хүсдэг нэг ч инженертэй таарч байгаагүй болохоор инженерийн арга барилыг ашигласан. Ижил синхрончлолын аргыг ашиглан туршилтын дохионд саармагжуулалтыг нэвтрүүлсэн. Өөр өөр хэмжүүрүүдийг мэдэгдэж буй хазайлттай харьцуулж (тэр өөрөө танилцуулсан) гүйцэтгэл, хэрэгжүүлэхэд хялбар байдлаар хамгийн сайныг нь сонгосон. Хүлээн авах давтамжийн хазайлтыг хамгаалалтын интервал ба түүний давтагдах хэсгийг харьцуулах замаар тооцоолно. Хүлээн авах давтамжийн үе шат ба түүвэрлэлтийн давтамжийг туршилтын дохионы фазын хазайлтаар тооцдог бөгөөд үүнийг OFDM дохионы энгийн, шугаман тэнцүүлэгчид ашигладаг.

Эквалайзерын шинж чанар:

C++ хэл дээрх SDR DVB-T2 хүлээн авагч

Хэрэв та DVB-T2 хүрээ хэзээ эхлэхийг мэддэг бол энэ бүхэн сайн ажилладаг. Үүнийг хийхийн тулд оршил тэмдэг P1 дохиогоор дамждаг. P1 тэмдгийг илрүүлэх, тайлах аргыг ETSI TS 102 831 Техникийн тодорхойлолтод тайлбарласан болно (хүлээн авах талаар олон ашигтай зөвлөмжүүд бас байдаг).

P1 дохионы автокорреляци (хүрээний эхэн дэх хамгийн өндөр цэг):

C++ хэл дээрх SDR DVB-T2 хүлээн авагч

Эхний зураг (хөдөлгөөнтэй зураг гарахад ердөө зургаан сар л үлдлээ...):

C++ хэл дээрх SDR DVB-T2 хүлээн авагч

Эндээс бид IQ тэнцвэргүй байдал, тогтмол гүйдлийн офсет, LO алдагдал гэж юу болохыг олж мэдэх болно. Дүрмээр бол шууд хөрвүүлэхэд хамаарах эдгээр гажуудлын нөхөн төлбөрийг SDR төхөөрөмжийн драйвер дээр хэрэгжүүлдэг. Тиймээс ойлгоход удаан хугацаа шаардагджээ: найрсаг QAM64 одны оддыг таслах нь нөхөн олговрын функцүүдийн ажил юм. Би бүх зүйлийг унтрааж, дугуйгаа бичих хэрэгтэй болсон.

Тэгээд зураг хөдөлсөн:

C++ хэл дээрх SDR DVB-T2 хүлээн авагч

DVB-T64 стандарт дахь тусгай одны эргэлттэй QAM2 модуляц:

C++ хэл дээрх SDR DVB-T2 хүлээн авагч

Товчхондоо энэ нь татсан махыг мах бутлуурын дундуур буцааж хийсэн үр дүн юм. Стандарт нь дөрвөн төрлийн холигчийг агуулдаг.

  • жаахан завсарлага
  • эс хоорондын зай (кодлох блок дахь эсүүдийг холих)
  • цаг завсарлах (энэ нь бас кодлох блокуудын бүлэгт багтдаг)
  • давтамжийг холих (OFDM тэмдэгт давтамжийг холих)

Үүний үр дүнд бид оролтод дараах дохио байна.

C++ хэл дээрх SDR DVB-T2 хүлээн авагч

Энэ бүхэн нь кодлогдсон дохионы дуу чимээний дархлааны төлөөх тэмцэл юм.

Үр дүн

Одоо бид дохио өөрөө болон түүний хэлбэр төдийгүй үйлчилгээний мэдээллийг харж болно.
Агаарт хоёр мультиплекс байдаг. Тус бүр нь хоёр физик сувагтай (PLP).

Эхний мультиплекс дээр нэг хачирхалтай зүйл ажиглагдсан - эхний PLP-ийг "олон" гэж тэмдэглэсэн нь логик юм, учир нь мультиплекс дотор нэгээс олон, хоёр дахь PLP нь "ганц" гэсэн шошготой байдаг бөгөөд энэ нь асуулт юм.
Хоёрдахь мультиплекс дэх хоёр дахь хачирхалтай байдал нь илүү сонирхолтой юм - бүх програмууд эхний PLP-д байгаа боловч хоёр дахь PLP-д бага хурдтай үл мэдэгдэх шинж чанартай дохио байдаг. Наад зах нь тавин видео формат, ижил хэмжээний аудиог ойлгодог VLC тоглуулагч үүнийг танихгүй.

Төслийг өөрөө эндээс олж болно.

Энэхүү төсөл нь SdrPlay (мөн одоо AirSpy) ашиглан DVB-T2 кодыг тайлах боломжийг тодорхойлох зорилготойгоор бүтээгдсэн тул энэ нь альфа хувилбар ч биш юм.

Жич Би нийтлэлийг бичиж байхдаа хэцүүхэн байхдаа PlutoSDR-ийг төсөлд нэгтгэж чадсан.

Хэн нэгэн тэр даруй USB6 гаралтын IQ дохионы хувьд ердөө 2.0Msps байна гэж хэлэх болно, гэхдээ танд дор хаяж 9,2Msps хэрэгтэй, гэхдээ энэ нь тусдаа сэдэв юм.

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх