C++ тіліндегі SDR DVB-T2 қабылдағышы

Software Defined Radio - бұл металл өңдеуді (бұл сіздің денсаулығыңыз үшін жақсы) бағдарламалаудың бас ауруымен ауыстыру әдісі. SDR үлкен болашақты болжайды және негізгі артықшылығы радио хаттамаларды енгізудегі шектеулерді жою болып саналады. Мысал ретінде тек 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) қабылдағыш кірісіне. Бұл шарттарды қанағаттандыратын құрылғылар жай қызығушылық үшін тым қымбат.

SdrPlay 10Msps 10bit немесе ұқсас сипаттамалары бар AirSpy әлдеқайда арзан. Бұл жерде екі есе іріктеу жиілігі туралы мәселе жоқ және қабылдауды тек тікелей түрлендіру арқылы жасауға болады (Нөл IF). Сондықтан (қаржылық себептер бойынша) біз ең аз аппараттық түрлендірумен «таза» SDR жақтаушыларының жағына ауысамыз.

Екі мәселені шешу қажет болды:

  1. Синхрондау. Фазалық дәл РЖ ауытқуын және дискретизация жиілігінің ауытқуын табыңыз.
  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 кадрының қашан басталатынын білсеңіз жақсы жұмыс істейді. Ол үшін сигналда Р1 кіріспе символы беріледі. 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 декодтау мүмкіндігін анықтау мақсатында жасалған, сондықтан бұл тіпті альфа нұсқасы емес.

PS Мақаланы жазу барысында мен PlutoSDR-ді жобаға біріктіре алдым.

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

Ақпарат көзі: www.habr.com

пікір қалдыру