C++ میں SDR DVB-T2 ریسیور

سافٹ ویئر ڈیفائنڈ ریڈیو میٹل ورک (جو درحقیقت آپ کی صحت کے لیے اچھا ہے) کو پروگرامنگ کے سر درد سے بدلنے کا ایک طریقہ ہے۔ SDRs ایک عظیم مستقبل کی پیشین گوئی کرتے ہیں اور اہم فائدہ ریڈیو پروٹوکول کے نفاذ میں پابندیوں کو ہٹانا سمجھا جاتا ہے۔ ایک مثال 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 میگاہرٹز کے نمونے لینے کی فریکوئنسی کے ساتھ آن ایئر ہے، جسے COFDM نے 32768 کیریئرز کے ساتھ 8 MHZ کے بینڈ میں ماڈیول کیا ہے۔

اس طرح کے سگنلز کو نمونے لینے کی فریکوئنسی دوگنی (تاکہ کسی چیز سے محروم نہ ہو) اور انٹرمیڈیٹ فریکوئنسی پر زیادہ بینڈوڈتھ (سپر ہیٹروڈائن ریسیپشن) کے ساتھ وصول کرنے کی سفارش کی جاتی ہے تاکہ براہ راست کرنٹ (DC) آفسیٹ اور مقامی آسکیلیٹر کے "لیکیج" سے چھٹکارا حاصل کیا جا سکے۔ (LO) وصول کنندہ ان پٹ پر۔ ان شرائط کو پورا کرنے والے آلات محض تجسس کے لیے بہت مہنگے ہیں۔

10Msps 10bit کے ساتھ SdrPlay یا اسی طرح کی خصوصیات کے ساتھ AirSpy بہت سستا ہے۔ یہاں نمونے لینے کی فریکوئنسی کو دوگنا کرنے کا سوال ہی پیدا نہیں ہوتا اور استقبال صرف براہ راست تبدیلی (زیرو IF) کے ساتھ کیا جا سکتا ہے۔ لہذا (مالی وجوہات کی بناء پر) ہم کم سے کم ہارڈ ویئر کی تبدیلی کے ساتھ "خالص" SDR کے پیروکاروں کی طرف جا رہے ہیں۔

دو مسائل کو حل کرنا ضروری تھا:

  1. ہم وقت سازی درست مرحلے کے درست RF انحراف اور نمونے لینے کی فریکوئنسی انحراف معلوم کریں۔
  2. DVB-T2 معیار کو پیچھے کی طرف دوبارہ لکھیں۔

دوسرے کام کے لیے بہت زیادہ کوڈ درکار ہیں، لیکن اسے ثابت قدمی کے ساتھ حل کیا جا سکتا ہے اور ٹیسٹ سگنلز کے ذریعے آسانی سے تصدیق کی جا سکتی ہے۔

تفصیلی ہدایات کے ساتھ BBC سرور ftp://ftp.kw.bbc.co.uk/t2refs/ پر ٹیسٹ سگنل دستیاب ہیں۔

پہلے مسئلے کا حل SDR ڈیوائس کی خصوصیات اور اس کے کنٹرول کی صلاحیتوں پر بہت زیادہ منحصر ہے۔ تجویز کردہ فریکوئنسی کنٹرول فنکشنز کا استعمال، جیسا کہ وہ کہتے ہیں، کامیاب نہیں تھا، لیکن ان کو پڑھنے سے کافی تجربہ ہوا۔ دستاویزات، پروگرامنگ، ٹی وی سیریز دیکھنا، فلسفیانہ سوالات کو حل کرنا...، مختصر یہ کہ اس منصوبے کو ترک کرنا ممکن نہیں تھا۔

"خالص ایس ڈی آر" میں یقین صرف مضبوط ہوا ہے۔

ہم سگنل کو ویسا ہی لیتے ہیں، اسے تقریباً ایک ینالاگ تک لگاتے ہیں اور ایک مجرد نکالتے ہیں، لیکن اصلی کی طرح۔

ہم وقت سازی بلاک ڈایاگرام:

C++ میں SDR DVB-T2 ریسیور

یہاں سب کچھ نصابی کتاب کے مطابق ہے۔ اگلا تھوڑا زیادہ پیچیدہ ہے۔ انحراف کا حساب لگانے کی ضرورت ہے۔ مختلف طریقوں کے فوائد اور نقصانات کا موازنہ کرنے والے بہت سارے ادب اور تحقیقی مضامین موجود ہیں۔ کلاسیکی سے - یہ ہے "Michael Speth, Stefan Fechtel, Gunnar Fock, Heinrich Meyr, Optimum Receiver Design for OFDM-based Broadband Transmission – Part 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 ریسیور

مختصر میں، یہ گوشت کی چکی کے ذریعے کیما بنایا ہوا گوشت واپس منتقل کرنے کا نتیجہ ہے۔ معیار چار قسم کے اختلاط کے لیے فراہم کرتا ہے:

  • تھوڑا سا interleaving
  • سیل انٹرلیونگ (کوڈنگ بلاک میں خلیات کو ملانا)
  • ٹائم انٹرلیونگ (یہ انکوڈنگ بلاکس کے گروپ میں بھی ہے)
  • فریکوئنسی انٹرلیونگ (او ایف ڈی ایم علامت میں تعدد مکسنگ)

نتیجے کے طور پر، ہمارے پاس ان پٹ پر درج ذیل سگنل ہے:

C++ میں SDR DVB-T2 ریسیور

یہ سب انکوڈڈ سگنل کے شور سے استثنیٰ کی جدوجہد ہے۔

کل

اب ہم نہ صرف خود سگنل اور اس کی شکل دیکھ سکتے ہیں بلکہ سروس کی معلومات بھی دیکھ سکتے ہیں۔
دو ملٹی پلیکس آن ایئر ہیں۔ ہر ایک کے دو فزیکل چینلز (PLP) ہوتے ہیں۔

پہلے ملٹی پلیکس میں ایک عجیب بات دیکھی گئی تھی - پہلی PLP پر "متعدد" کا لیبل لگایا گیا ہے، جو کہ منطقی ہے، کیونکہ ملٹی پلیکس میں ایک سے زیادہ ہیں، اور دوسری PLP پر "سنگل" کا لیبل لگا ہوا ہے اور یہ ایک سوال ہے۔
اس سے بھی زیادہ دلچسپ دوسرے ملٹی پلیکس میں دوسری عجیب بات ہے - تمام پروگرام پہلے پی ایل پی میں ہیں، لیکن دوسرے پی ایل پی میں کم رفتار سے نامعلوم نوعیت کا اشارہ ہے۔ کم از کم VLC پلیئر، جو تقریباً پچاس ویڈیو فارمیٹس اور اتنے ہی آڈیو کو سمجھتا ہے، اسے نہیں پہچانتا۔

پروجیکٹ خود یہاں پایا جاسکتا ہے۔.

پروجیکٹ کو SdrPlay (اور اب AirSpy) کا استعمال کرتے ہوئے DVB-T2 کو ڈی کوڈنگ کرنے کے بہت امکان کا تعین کرنے کے مقصد کے ساتھ بنایا گیا تھا، لہذا یہ الفا ورژن بھی نہیں ہے۔

PS جب میں مشکل سے مضمون لکھ رہا تھا، میں PlutoSDR کو پروجیکٹ میں ضم کرنے میں کامیاب ہوگیا۔

کوئی فوراً کہے گا کہ USB6 آؤٹ پٹ پر IQ سگنل کے لیے صرف 2.0Msps ہے، لیکن آپ کو کم از کم 9,2Msps کی ضرورت ہے، لیکن یہ ایک الگ موضوع ہے۔

ماخذ: www.habr.com

نیا تبصرہ شامل کریں