C++ тилинде SDR DVB-T2 кабыл алгыч

Software Defined Radio - бул металлдан жасалган жумушту (бул сиздин ден соолугуңуз үчүн жакшы) программалоонун баш оорусу менен алмаштыруу ыкмасы. SDRs улуу келечекти болжолдойт жана негизги артыкчылыгы радио протоколдорду ишке ашырууда чектөөлөрдү алып салуу болуп саналат. Мисал катары SDR ыкмасы менен гана мүмкүн болгон OFDM (Ортогоналдык жыштык-бөлүштүрүү мультиплекстөө) модуляция ыкмасын айтсак болот. Бирок 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 стандартын артка кайра жазыңыз.

Экинчи тапшырма дагы бир топ кодду талап кылат, бирок аны туруктуулук менен чечсе болот жана тесттик сигналдар аркылуу оңой эле текшерилиши мүмкүн.

Сыноо сигналдары Би-Би-Си серверинде ftp://ftp.kw.bbc.co.uk/t2refs/ кеңири нускамалар менен жеткиликтүү.

Биринчи маселени чечүү 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 дисбаланс, DC офсет жана LO агып кетүү деген эмне экенин билебиз. Эреже катары, түз конверсияга мүнөздүү бул бурмалоолордун ордун толтуруу SDR түзүлүшүнүн драйверинде ишке ашырылат. Ошондуктан, түшүнүү үчүн көп убакыт талап кылынды: достук QAM64 жылдыз тобунан жылдыздарды жок кылуу - компенсация функцияларынын иши. Баарын өчүрүп, велосипедимди жазууга туура келди.

Анан сүрөт жылды:

C++ тилинде SDR DVB-T2 кабыл алгыч

QAM64 модуляциясы DVB-T2 стандартында өзгөчө топ жылдыздын айлануусу менен:

C++ тилинде SDR DVB-T2 кабыл алгыч

Кыскасы, бул фаршты кайра эт туурагычтан өткөрүүнүн натыйжасы. Стандарт аралаштыруунун төрт түрүн камсыз кылат:

  • бир аз аралаштыруу
  • клеткаларды аралаштыруу (коддоо блогундагы клеткаларды аралаштыруу)
  • убакыт аралыгы (ал ошондой эле коддоо блокторунун тобуна кирет)
  • жыштык аралашуу (OFDM белгисинде жыштыктарды аралаштыруу)

Натыйжада, биз киргизүүдө төмөнкү сигнал бар:

C++ тилинде SDR DVB-T2 кабыл алгыч

Мунун баары коддолгон сигналдын ызы-чуунун иммунитети үчүн күрөш.

жыйынтык

Эми биз сигналдын өзүн жана анын формасын гана эмес, кызматтык маалыматты да көрө алабыз.
Эфирде эки мультиплекс бар. Ар биринде эки физикалык канал (PLP) бар.

Биринчи мультиплексте бир кызыкчылык байкалды - биринчи PLP "бир нече" деп белгиленген, бул логикалуу, анткени мультиплексте бирден көп, ал эми экинчи PLP "бирдиктүү" деп белгиленген жана бул суроо.
Андан да кызыгы экинчи мультиплекстеги экинчи кызык – бардык программалар биринчи PLPде, бирок экинчи PLPде төмөн ылдамдыкта белгисиз мүнөздөгү сигнал бар. Жок дегенде элүүгө жакын видео форматтарды жана бирдей көлөмдөгү аудиону түшүнгөн VLC ойноткуч аны тааныбайт.

Долбоордун өзүн бул жерден тапса болот.

Долбоор SdrPlay (жана азыр AirSpy) аркылуу DVB-T2 декоддоо мүмкүнчүлүгүн аныктоо максатында түзүлгөн, андыктан бул альфа версиясы да эмес.

PS Мен макаланы кыйынчылык менен жазып жатып, PlutoSDRди долбоорго киргизе алдым.

Кимдир бирөө дароо USB6 чыгышында IQ сигналы үчүн 2.0Msps гана бар деп айтышат, бирок сизге жок дегенде 9,2Msps керек, бирок бул өзүнчө тема.

Source: www.habr.com

Комментарий кошуу