C++లో SDR DVB-T2 రిసీవర్

సాఫ్ట్‌వేర్ డిఫైన్డ్ రేడియో అనేది ప్రోగ్రామింగ్ తలనొప్పితో మెటల్ వర్క్‌ను (వాస్తవానికి మీ ఆరోగ్యానికి మంచిది) భర్తీ చేసే పద్ధతి. SDRలు గొప్ప భవిష్యత్తును అంచనా వేస్తాయి మరియు రేడియో ప్రోటోకాల్‌ల అమలులో పరిమితులను తొలగించడం ప్రధాన ప్రయోజనంగా పరిగణించబడుతుంది. ఒక ఉదాహరణ OFDM (ఆర్తోగోనల్ ఫ్రీక్వెన్సీ-డివిజన్ మల్టీప్లెక్సింగ్) మాడ్యులేషన్ పద్ధతి, ఇది SDR పద్ధతి ద్వారా మాత్రమే సాధ్యమవుతుంది. కానీ SDRకి మరొకటి, పూర్తిగా ఇంజినీరింగ్ అవకాశం కూడా ఉంది - తక్కువ ప్రయత్నంతో ఏదైనా ఏకపక్ష పాయింట్ వద్ద సిగ్నల్‌ను నియంత్రించగల మరియు దృశ్యమానం చేయగల సామర్థ్యం.

ఆసక్తికరమైన కమ్యూనికేషన్ ప్రమాణాలలో ఒకటి టెరెస్ట్రియల్ టెరెస్ట్రియల్ టెలివిజన్ DVB-T2.
దేనికోసం? వాస్తవానికి, మీరు లేవకుండా టీవీని ఆన్ చేయవచ్చు, కానీ అక్కడ చూడటానికి ఖచ్చితంగా ఏమీ లేదు మరియు ఇది ఇకపై నా అభిప్రాయం కాదు, వైద్యపరమైన వాస్తవం.

తీవ్రంగా, DVB-T2 చాలా విస్తృత సామర్థ్యాలతో రూపొందించబడింది, వీటిలో:

  • ఇండోర్ అప్లికేషన్
  • QPSK నుండి 256QAMకి మాడ్యులేషన్
  • 1,7MHz నుండి 8MHz వరకు బ్యాండ్‌విడ్త్

SDR సూత్రాన్ని ఉపయోగించి డిజిటల్ టెలివిజన్‌ని స్వీకరించడంలో నాకు అనుభవం ఉంది. DVB-T ప్రమాణం బాగా తెలిసిన GNURadio ప్రాజెక్ట్‌లో ఉంది. DVB-T2 ప్రమాణం కోసం gr-dvbs2rx బ్లాక్ ఉంది (అన్నీ ఒకే GNURadio కోసం), కానీ దీనికి ప్రాథమిక సిగ్నల్ సింక్రొనైజేషన్ అవసరం మరియు ఇది స్ఫూర్తిదాయకం (Ron Economosకి ప్రత్యేక ధన్యవాదాలు).

మన దగ్గర ఉన్నది.

ప్రసారాన్ని వివరించే ETSI EN 302 755 ప్రమాణం ఉంది, కానీ రిసెప్షన్ కాదు.

9,14285714285714285714 MHZ బ్యాండ్‌లో 32768 క్యారియర్‌లతో COFDM ద్వారా మాడ్యులేట్ చేయబడిన 8 MHz నమూనా ఫ్రీక్వెన్సీతో సిగ్నల్ ప్రసారం చేయబడుతుంది.

డైరెక్ట్ కరెంట్ (DC) ఆఫ్‌సెట్ మరియు స్థానిక ఓసిలేటర్ యొక్క “లీకేజ్” నుండి బయటపడటానికి, నమూనా ఫ్రీక్వెన్సీ (ఏదీ కోల్పోకుండా ఉండటానికి) మరియు ఇంటర్మీడియట్ ఫ్రీక్వెన్సీలో ఎక్కువ బ్యాండ్‌విడ్త్ (సూపర్‌హెటెరోడైన్ రిసెప్షన్)తో ఇటువంటి సిగ్నల్‌లను స్వీకరించాలని సిఫార్సు చేయబడింది. (LO) రిసీవర్ ఇన్‌పుట్‌కు. ఈ పరిస్థితులను సంతృప్తిపరిచే పరికరాలు కేవలం ఉత్సుకత కోసం చాలా ఖరీదైనవి.

10Msps 10bitతో SdrPlay లేదా సారూప్య లక్షణాలతో AirSpy చాలా తక్కువ ధర. ఇక్కడ నమూనా ఫ్రీక్వెన్సీని రెట్టింపు చేయడం గురించి ఎటువంటి ప్రశ్న లేదు మరియు రిసెప్షన్ ప్రత్యక్ష మార్పిడి (జీరో IF)తో మాత్రమే చేయబడుతుంది. అందువల్ల (ఆర్థిక కారణాల వల్ల) మేము కనీస హార్డ్‌వేర్ మార్పిడితో “స్వచ్ఛమైన” SDR యొక్క అనుచరుల వైపుకు మారుతున్నాము.

రెండు సమస్యలను పరిష్కరించడానికి ఇది అవసరం:

  1. సమకాలీకరణ. ఖచ్చితమైన దశ-ఖచ్చితమైన RF విచలనం మరియు నమూనా ఫ్రీక్వెన్సీ విచలనం కనుగొనండి.
  2. DVB-T2 ప్రమాణాన్ని వెనుకకు తిరిగి వ్రాయండి.

రెండవ పనికి చాలా ఎక్కువ కోడ్ అవసరం, కానీ పట్టుదలతో పరిష్కరించవచ్చు మరియు పరీక్ష సంకేతాలను ఉపయోగించి సులభంగా ధృవీకరించవచ్చు.

పరీక్ష సంకేతాలు BBC సర్వర్ ftp://ftp.kw.bbc.co.uk/t2refs/లో వివరణాత్మక సూచనలతో అందుబాటులో ఉన్నాయి.

మొదటి సమస్యకు పరిష్కారం SDR పరికరం యొక్క లక్షణాలు మరియు దాని నియంత్రణ సామర్థ్యాలపై ఎక్కువగా ఆధారపడి ఉంటుంది. సిఫార్సు చేయబడిన ఫ్రీక్వెన్సీ కంట్రోల్ ఫంక్షన్‌లను ఉపయోగించడం, వారు చెప్పినట్లు, విజయవంతం కాలేదు, కానీ వాటిని చదవడం చాలా అనుభవాన్ని ఇచ్చింది. డాక్యుమెంటేషన్, ప్రోగ్రామింగ్, TV సిరీస్ చూడటం, తాత్విక ప్రశ్నలను పరిష్కరించడం..., సంక్షిప్తంగా, ప్రాజెక్ట్‌ను వదిలివేయడం సాధ్యం కాదు.

"స్వచ్ఛమైన 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 రిసీవర్

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

ఒక వ్యాఖ్యను జోడించండి