C++ တွင် SDR DVB-T2 လက်ခံကိရိယာ

Software Defined Radio သည် ပရိုဂရမ်ရေးသားခြင်း၏ ခေါင်းကိုက်ခြင်းနှင့်အတူ သတ္တုလုပ်ငန်း (အမှန်တကယ် သင့်ကျန်းမာရေးအတွက် ကောင်းမွန်သည်) ကို အစားထိုးသည့် နည်းလမ်းတစ်ခုဖြစ်သည်။ SDR များသည် ကြီးကျယ်သော အနာဂတ်ကို ခန့်မှန်းကြပြီး အဓိက အားသာချက်မှာ ရေဒီယို ပရိုတိုကောများကို အကောင်အထည်ဖော်ရာတွင် ကန့်သတ်ချက်များကို ဖယ်ရှားခြင်းဟု ယူဆပါသည်။ ဥပမာတစ်ခုသည် OFDM (Orthogonal frequency-division multiplexing) modulation method ဖြစ်ပြီး၊ SDR နည်းလမ်းဖြင့်သာ ဖြစ်နိုင်သည်။ သို့သော် SDR တွင် ကြိုးပမ်းအားထုတ်မှု အနည်းဆုံးဖြင့် မည်သည့်အရာမဆို မတရားသောအချက်ကို ထိန်းချုပ်ရန်နှင့် မြင်သာစေရန် စွမ်းရည်သက်သက်ရှိသော အင်ဂျင်နီယာအခွင့်အရေးတစ်ခုလည်း ရှိပါသည်။

စိတ်ဝင်စားစရာကောင်းသော ဆက်သွယ်ရေးစံနှုန်းများထဲမှ တစ်ခုမှာ ကုန်းနေကုန်းနေ ရုပ်မြင်သံကြား DVB-T2 ဖြစ်သည်။
ဘာအတွက်လဲ? ဟုတ်ပါတယ်, သင်မထဘဲ TV ကိုရိုးရှင်းစွာဖွင့်နိုင်သည်, ဒါပေမယ့်အဲဒီမှာကြည့်ဖို့လုံးဝဘာမှမရှိဘူး, ဒါကငါ့အထင်မဟုတ်တော့ဘူး, ဒါပေမယ့်ဆေးဘက်ဆိုင်ရာအမှန်တကယ်.

လေးနက်စွာပင်၊ DVB-T2 သည် အလွန်ကျယ်ပြန့်သောစွမ်းရည်များဖြင့် ဒီဇိုင်းထုတ်ထားသည်၊

  • အတွင်းခန်းလျှောက်လွှာ
  • QPSK မှ 256QAM သို့ ပြုပြင်မှု
  • bandwidth 1,7MHz မှ 8MHz အထိ

SDR နိယာမကို အသုံးပြု၍ ဒစ်ဂျစ်တယ် ရုပ်မြင်သံကြား လက်ခံရရှိခြင်းတွင် ကျွန်ုပ် အတွေ့အကြုံရှိသည်။ DVB-T စံနှုန်းသည် လူသိများသော GNURadio ပရောဂျက်တွင် ဖြစ်သည်။ DVB-T2 စံနှုန်းအတွက် gr-dvbs2rx ဘလောက်တစ်ခု ရှိသည် (အားလုံးသည် တူညီသော GNURadio အတွက်)၊ သို့သော် ၎င်းသည် ပဏာမအချက်ပြမှုကို ထပ်တူပြုခြင်း လိုအပ်ပြီး ၎င်းသည် စိတ်အားထက်သန်စေသည် (Ron Economos ၏ အထူးကျေးဇူးတင်ရှိပါသည်)။

ငါတို့မှာ ဘာရှိတယ်။

ဂီယာအသေးစိတ်ဖော်ပြသော ETSI EN 302 755 စံနှုန်းတစ်ခုရှိသော်လည်း လက်ခံခြင်းမပြုပါ။

အချက်ပြမှုသည် 9,14285714285714285714 MHz ၏နမူနာကြိမ်နှုန်းဖြင့် လေထဲတွင်ရှိနေသည်၊၊ COFDM မှ 32768 carriers၊ 8 MHZ တီးဝိုင်းဖြင့် ပြုပြင်ထားသည်။

နမူနာကြိမ်နှုန်း (ဘာမှမဆုံးရှုံးစေရန်) နှင့် အလယ်အလတ်ကြိမ်နှုန်း (superheterodyne reception) တွင် အဆိုပါအချက်ပြမှုများကို လက်ခံရရှိရန် အကြံပြုထားသည်၊ (LO) လက်ခံသူထံသို့ ထည့်သွင်းခြင်း။ ဤအခြေအနေများကို ကျေနပ်စေသော စက်ပစ္စည်းများသည် စူးစမ်းလိုစိတ်သက်သက်အတွက် ဈေးကြီးသည်။

အလားတူလက္ခဏာများနှင့်အတူ 10Msps 10bit သို့မဟုတ် AirSpy ဖြင့် SdrPlay သည် များစွာစျေးသက်သာသည်။ ဤနေရာတွင်နမူနာအကြိမ်ကြိမ်နှစ်ဆကိုမေးခွန်းထုတ်စရာမရှိပါ၊ နှင့်လက်ခံမှုကိုတိုက်ရိုက်ပြောင်းလဲခြင်း (Zero IF) ဖြင့်သာလုပ်ဆောင်နိုင်သည်။ ထို့ကြောင့် (ဘဏ္ဍာရေးဆိုင်ရာအကြောင်းပြချက်များအတွက်) ကျွန်ုပ်တို့သည် ဟာ့ဒ်ဝဲပြောင်းလဲခြင်း အနည်းဆုံးဖြင့် "သန့်စင်သော" SDR ၏ ကပ်တွယ်သူများဘက်မှ ကူးပြောင်းနေပါသည်။

ပြဿနာနှစ်ခုကို ဖြေရှင်းရန် လိုအပ်ပါသည်။

  1. ထပ်တူပြုခြင်း။ တိကျသောအဆင့်-တိကျသော RF သွေဖည်မှုနှင့် နမူနာကြိမ်နှုန်းသွေဖည်မှုကို ရှာဖွေပါ။
  2. DVB-T2 စံနှုန်းကို နောက်ပြန်ရေးပါ။

ဒုတိယလုပ်ငန်းမှာ ကုဒ်များစွာ လိုအပ်သော်လည်း ဇွဲလုံ့လဖြင့် ဖြေရှင်းနိုင်ပြီး စမ်းသပ်မှုအချက်ပြမှုများကို အသုံးပြု၍ အလွယ်တကူ အတည်ပြုနိုင်သည်။

စမ်းသပ်မှုအချက်ပြမှုများကို အသေးစိတ်ညွှန်ကြားချက်များဖြင့် BBC ဆာဗာ ftp://ftp.kw.bbc.co.uk/t2refs/ တွင် ရနိုင်ပါသည်။

ပထမပြဿနာ၏ဖြေရှင်းချက်သည် SDR ကိရိယာ၏ဝိသေသလက္ခဏာများနှင့် ၎င်း၏ထိန်းချုပ်မှုစွမ်းရည်များပေါ်တွင် အလွန်မူတည်ပါသည်။ အကြံပြုထားသည့် ကြိမ်နှုန်းထိန်းချုပ်မှု လုပ်ဆောင်ချက်များကို အသုံးပြုခြင်းသည် မအောင်မြင်သော်လည်း ၎င်းတို့ကို ဖတ်ရှုခြင်း အတွေ့အကြုံများစွာ ပေးခဲ့သည်။ စာတမ်းပြုစုခြင်း၊ ပရိုဂရမ်ရေးဆွဲခြင်း၊ တီဗီစီးရီးကြည့်ခြင်း၊ အတွေးအခေါ်ဆိုင်ရာမေးခွန်းများကိုဖြေရှင်းခြင်း...၊ အတိုချုပ်ပြောရလျှင် ပရောဂျက်ကို စွန့်လွှတ်ရန် မဖြစ်နိုင်ပါ။

"စင်ကြယ်သော SDR" ကိုယုံကြည်ခြင်းသည်သာ ပို၍ အားကောင်းလာသည်။

ကျွန်ုပ်တို့သည် ၎င်းကဲ့သို့ အချက်ပြမှုကို ယူ၍ ၎င်းကို analogue တစ်ခုနှင့် နီးပါး ပေါင်းစပ်ကာ သီးခြားတစ်ခုကို ထုတ်သော်လည်း တကယ့်အစစ်နှင့် ဆင်တူသည်။

စင့်ခ်လုပ်ခြင်း ဘလောက်ပုံစံ-

C++ တွင် SDR DVB-T2 လက်ခံကိရိယာ

ဒီမှာ အားလုံးက ပြဌာန်းစာအုပ်အတိုင်းပါပဲ။ နောက်တစ်ခုက နည်းနည်းပိုရှုပ်ထွေးတယ်။ သွေဖည်မှုများကို တွက်ချက်ရန် လိုအပ်ပါသည်။ မတူညီသောနည်းလမ်းများ၏ အားသာချက်များနှင့် အားနည်းချက်များကို နှိုင်းယှဉ်ထားသော စာပေနှင့် သုတေသနဆောင်းပါးများစွာရှိပါသည်။ ဂန္ထဝင်များမှ - ၎င်းသည် "Michael Speth၊ Stefan Fechtel၊ Gunnar Fock၊ Heinrich Meyr၊ OFDM-Based Broadband Transmission အတွက် အကောင်းဆုံးလက်ခံသူဒီဇိုင်း - အပိုင်း I နှင့် II" ဖြစ်သည်။ ဒါပေမယ့် ရေတွက်နိုင်တဲ့ အင်ဂျင်နီယာတစ်ဦးတည်းနဲ့ ကျွန်တော် မဆုံဖူးတဲ့အတွက် အင်ဂျင်နီယာပညာရပ်ကို အသုံးပြုခဲ့ပါတယ်။ တူညီသောထပ်တူပြုခြင်းနည်းလမ်းကိုအသုံးပြု၍ စမ်းသပ်ခြင်းအချက်ပြမှုတွင် detuning ကို ထည့်သွင်းခဲ့သည်။ ကွဲပြားသော မက်ထရစ်များကို သိရှိထားသော သွေဖည်မှုများနှင့် နှိုင်းယှဉ်ခြင်းဖြင့် (၎င်းတို့ကို သူကိုယ်တိုင် မိတ်ဆက်ခဲ့သည်)၊ အကောင်းဆုံးများကို စွမ်းဆောင်ရည်နှင့် အကောင်အထည်ဖော်ရလွယ်ကူစေရန်အတွက် အကောင်းဆုံးများကို ရွေးချယ်ခဲ့သည်။ ဧည့်ခံကြိမ်နှုန်းသွေဖည်မှုကို guard interval နှင့် ၎င်း၏ ထပ်တလဲလဲအပိုင်း နှိုင်းယှဉ်ခြင်းဖြင့် တွက်ချက်သည်။ လက်ခံကြိမ်နှုန်း၏အဆင့်နှင့် နမူနာကြိမ်နှုန်းကို ရှေ့ပြေးအချက်ပြမှုများ၏ အဆင့်သွေဖည်မှုမှ ခန့်မှန်းတွက်ချက်ထားပြီး ၎င်းကို OFDM အချက်ပြမှု၏ ရိုးရှင်းသော၊ မျဉ်းဖြောင့်တန်းတူညီမျှမှုတွင်လည်း အသုံးပြုသည်။

ညီမျှခြင်းလက္ခဏာ-

C++ တွင် SDR DVB-T2 လက်ခံကိရိယာ

DVB-T2 ဖရိန်စတင်ချိန်ကို သင်သိပါက ဤအရာအားလုံးသည် ကောင်းမွန်စွာအလုပ်လုပ်ပါသည်။ ဒါကိုလုပ်ဖို့၊ အကြိုသင်္ကေတ P1 ကို signal မှာ ပို့ပါတယ်။ P1 သင်္ကေတကို ရှာဖွေခြင်းနှင့် ကုဒ်ဖျက်ခြင်းနည်းလမ်းကို နည်းပညာဆိုင်ရာ သတ်မှတ်ချက် ETSI TS 102 831 တွင်ဖော်ပြထားသည် (ဧည့်ခံခြင်းအတွက် အသုံးဝင်သော အကြံပြုချက်များလည်း များစွာရှိသည်)။

P1 အချက်ပြ၏ အလိုအလျောက်ဆက်စပ်မှု (ဘောင်၏အစတွင် အမြင့်ဆုံးအမှတ်)

C++ တွင် SDR DVB-T2 လက်ခံကိရိယာ

ပထမပုံ (ရွေ့လျားနေသည့်ပုံအထိ ခြောက်လသာကျန်တော့သည်...)

C++ တွင် SDR DVB-T2 လက်ခံကိရိယာ

ဤနေရာတွင် IQ မညီမျှမှု၊ DC offset နှင့် LO ယိုစိမ့်မှုတို့သည် အဘယ်အရာကို လေ့လာနိုင်မည်နည်း။ စည်းမျဉ်းအရ၊ ဤပုံပျက်ခြင်းများအတွက် လျော်ကြေးငွေကို တိုက်ရိုက်ပြောင်းလဲခြင်းအတွက် SDR စက်ဒရိုက်ဗာတွင် အကောင်အထည်ဖော်ပါသည်။ ထို့ကြောင့် နားလည်ရန် အချိန်အတော်ကြာသည်- ဖော်ရွေသော QAM64 ကြယ်စုမှ ကြယ်များကို ဖယ်ထုတ်ခြင်းသည် လျော်ကြေးပေးသည့် လုပ်ငန်းဆောင်တာများ၏ အလုပ်ဖြစ်သည်။ အားလုံးကို ပိတ်ပြီး ဆိုင်ကယ်ကို ရေးခိုင်းတယ်။

ပြီးတော့ ပုံပြောင်းသွားတယ်

C++ တွင် SDR DVB-T2 လက်ခံကိရိယာ

DVB-T64 စံနှုန်းတွင် တိကျသော ကြယ်စုများ လည်ပတ်မှုနှင့်အတူ QAM2 မော်ဂျူး

C++ တွင် SDR DVB-T2 လက်ခံကိရိယာ

အတိုချုပ်ပြောရလျှင်၊ ဤသည်မှာ လှီးထားသောအသားကို အသားကြိတ်စက်ဖြင့် ပြန်ဖြတ်ခြင်း၏ ရလဒ်ဖြစ်သည်။ စံနှုန်းသည် ရောစပ်ခြင်း အမျိုးအစားလေးမျိုးအတွက် ပံ့ပိုးပေးသည်-

  • နည်းနည်း နှောက်ယှက်တယ်။
  • cell interleaving (ဆဲလ်များကို coding block တစ်ခုတွင် ရောနှောခြင်း)
  • အချိန်ကြားဝင်ခြင်း (၎င်းသည် ကုဒ်လုပ်ကွက်များအုပ်စုတွင်ပါရှိသည်)
  • ကြိမ်နှုန်းကြားဖြတ်ခြင်း (OFDM သင်္ကေတတစ်ခုတွင် ကြိမ်နှုန်းရောနှောခြင်း)

ရလဒ်အနေဖြင့်၊ ကျွန်ုပ်တို့သည် input တွင် အောက်ပါအချက်များရှိသည်။

C++ တွင် SDR DVB-T2 လက်ခံကိရိယာ

ဤအရာအားလုံးသည် encoded signal ၏ဆူညံသံခံနိုင်ရည်အတွက်ရုန်းကန်မှုဖြစ်သည်။

ရလဒ်

ယခု ကျွန်ုပ်တို့သည် signal ကိုယ်တိုင်နှင့် ၎င်း၏ပုံသဏ္ဍာန်ကိုသာမက ဝန်ဆောင်မှုအချက်အလက်များကိုပါ တွေ့မြင်နိုင်ပြီဖြစ်သည်။
လေထဲတွင် ဘီဘီနှစ်ခုရှိသည်။ တစ်ခုစီတွင် ရုပ်ပိုင်းဆိုင်ရာချန်နယ် (PLP) နှစ်ခုရှိသည်။

ပထမ multiplex တွင် ထူးခြားချက်တစ်ခုကို သတိပြုမိခဲ့သည် - ပထမ PLP ကို ​​အကြိမ်ရေတွင် တစ်ခုထက်ပိုသော တစ်ခုထက်ပိုသောကြောင့် ယုတ္တိရှိသောကြောင့် ပထမ PLP ကို ​​"multiple" ဟု တံဆိပ်တပ်ထားပြီး ဒုတိယ PLP ကို ​​"single" ဟု တံဆိပ်တပ်ထားပြီး ဒါက မေးခွန်းတစ်ခုဖြစ်သည်။
ပို၍စိတ်ဝင်စားစရာကောင်းသည်မှာ ဒုတိယ multiplex တွင် ဒုတိယထူးခြားမှုဖြစ်သည် - ပရိုဂရမ်အားလုံးသည် ပထမ PLP တွင်ရှိသော်လည်း ဒုတိယ PLP တွင် အနိမ့်အမြန်နှုန်းဖြင့် အမည်မသိသဘာဝတစ်ခု၏ အချက်ပြမှုတစ်ခုရှိသည်။ အနည်းဆုံး ဗီဒီယိုဖော်မတ်ငါးဆယ်ခန့်နှင့် အသံပမာဏကို နားလည်သည့် VLC ပလေယာသည် ၎င်းကို အသိအမှတ်မပြုပါ။

ပရောဂျက်ကိုယ်တိုင်က ဒီမှာ တွေ့နိုင်ပါတယ်။.

SdrPlay (ယခု AirSpy) ကို အသုံးပြု၍ DVB-T2 ကို ကုဒ်ပြောင်းနိုင်ခြေကို ဆုံးဖြတ်ရန် ရည်ရွယ်ချက်ဖြင့် ပရောဂျက်ကို ဖန်တီးခဲ့ခြင်းဖြစ်ပြီး ၎င်းသည် alpha ဗားရှင်းပင် မဟုတ်ပေ။

PS ဆောင်းပါးကို ခက်ခက်ခဲခဲ ရေးနေစဉ်တွင် PlutoSDR ကို ပရောဂျက်တွင် ပေါင်းစပ်နိုင်ခဲ့သည်။

USB6 အထွက်တွင် IQ အချက်ပြမှုအတွက် 2.0Msps သာရှိကြောင်း တစ်စုံတစ်ဦးမှ ချက်ချင်းပြောလိမ့်မည်၊ သို့သော် သင်သည် အနည်းဆုံး 9,2Msps လိုအပ်သည်၊ သို့သော် ၎င်းသည် သီးခြားအကြောင်းအရာဖြစ်သည်။

source: www.habr.com