الراديو المعرف برمجيا – Software Defined Radio


#1

الاختصارات

ADC = Analog to Digital Converter
ASIC = Application Specific Integrated Circuit
CPU = Central Processing Unit
DSP = Digital Signal Processor
DVB-T = Digital Video Broadcasting – Terrestrial
FFT = Fast Fourier Transform
FIR = Finite Impulse Response
FPGA = Field Programmable Gate Array
GPU = Graphical Processing Unit
IEEE = Institute of Electrical and Electronics Engineers
LNA = Low Noise Amplifier
LO = Local Oscillator
MAC = Multiply ACcumulate
RFIC = Radio Frequency Integrated Circuit
SDR = Software Defined Radio
SNR = Signal to Noise Ratio

1- المقدمة

بحسب الـ IEEE، يعرف الـ SDR على أنه “راديو فيه بعض أو كل وظائف الطبقة الفيزيائية (physical layer) محددة برمجياً”، بمعنى أن بعض أو كل الوظائف قابلة للبرمجة. كلمة برمجة هنا كلمة عامة، فمثلاً إمكانية تغيير مستوى الطاقة (power level) الصادرة هو شكل من أشكال القابلية للبرمجة، أما إمكانية تغيير شكل الموجة (waveform) الصادرة بحد ذاتها فهذا شكل آخر ويشكل مستوى أعلى من السابق من حيث القابلية للبرمجة، وهكذا.

ظهر مصطلح Software Defined Radio لأول مرة عام 1991، إلا أن هذه التقنية لم تصبح شائعة إلا في العقد الأخير نظراً لأن المعالجات (تحديداً FPGA) أصبحت رخيصة الثمن وفي متناول أي هاوٍ أو باحث.

الميزة الكبرى للـ SDR هي، بالطبع، قابليته للبرمجة. تخيل أن لديك جهاز راديو لاستقبال محطات الـ FM. تقليدياً، لا يمكنك استخدام الجهاز لأي غرض آخر. لكن إن كان لديك SDR، فيمكنك أن تبرمجه ليعمل كمستقبل/مرسل لتقنيات الـ FM، Cellular، GPS أو حتى لاستقبال بث محطة الفضاء الدولية، الأمر الوحيد الذي يمكن أن يقيدك هو نطاق التردد (Frequency Range) ومعدل نقل البيانات (Bandwidth) الخاص بالـ Front End. أحياناً قد تشكل قدرة المعالجة عائقاً أيضاً.

الشكل أدناه يوضح المخطط العام لأي جهاز راديو. ما يميز الـ SDR هو أن مرحلة المعالجة تتم باستخدام شرائح رقمية (digital chips) قابلة لإعادة البرمجة مما يتيح إمكانية التحكم بالراديو كيفما نشاء. يظهر أيضا في الشكل مكونات أخرى كالـ Bandpass Filter و LNA و Downconverter و Low Pass Filter. هذه المكونات أساسية في أي جهاز راديو سواء SDR أو غيره. يمكن تقسيم المكونات إلى ثلاث أقسام: الهوائي Antenna، الـ Front-End وأخيراً المعالج.

إن ما يعطي الـ SDR قابلية البرمجة programmability هو استخدامه لـ general processors بدلاً من specific processors. الأمثلة على الأولى هي الـ CPU, FPGA بينما الأمثلة على الثانية هي ASIC. بالطبع لكل نظام مميزات وعيوب. (المميزات والعيوب التي سنذكرها هي عامة لأي تطبيق وليست خاصة بالـ SDR). ميزة الـ ASIC هي السرعة النسبية، وذلك لأن الشريحة قد تم تصميمها خصيصاً لتطبيق واحد، مما سمح للمصممين بعمل optimization للسرعة وأحياناً للـ power أيضاً. ميزة الـ FPGA و CPU هي قابلية البرمجة. لاحظ أن ميزة أيّ من النظامين هي في نفس الوقت عيب للآخر: الـ FPGA أبطأ نسبياً والـ ASIC غير قابلة للبرمجة.

2- المعالج Processor

عند الحديث عن المعالجات القابلة للبرمجة، هناك عدة تقنيات تتبادر إلى الذهن. بداية، هناك الـ CPU، وهذه التقنية موجودة في جميع أجهزة الحاسوب والهواتف الذكية، إلا أن عيبها هو أنها تعمل بشكل sequential وليس شكل parallel. التقنية الأخرى هي GPU ورغم أن هذه التقنية تعمل بشكل parallel إلا أنها مُحسّنة (optimized) للاستخدام في معالجة الرسوميات (graphics). المنافس الأقرب للـ FPGA هو الـ DSP، ورغم أنها تعمل بشكل sequential إلا أنها صممت لتسريع خوارزميات كالـ FFT والـ FIR Filter والتي تعتمد على حسابات مخصصة كالـ MAC، مما يجعلها خياراً مناسباً لكثير من التطبيقات، لدرجة أن بعض الـ SDR تحتوي على كل من الـ FPGA والـ DSP معاً. إضافة إلى ذلك، بعض الـ FPGAs تحتوي على DSP slices بشكل مدمج.

سنخصص الحديث عن الـ FPGA نظراً لأنها الأوسع انتشاراً في الـ SDR. لسنا هنا بمعرض الحديث عن تفاصيل هذه التقنية فهذا ليس هدفنا، لكن نريد أن نعرف ما هي أهم الخصائص المميزة وبالتالي ستستطيع المقارنة بين SDR وآخر. سنأخذ منتجات شركة Xilinx الأمريكية كمثال نظراً لأنها تمتلك الحصة السوقية الأكبر في العالم، إلا أن ما سنتناوله ينطبق على منتجات أي شركة أخرى. السبب الوحيد الذي يدفعنا لاختيار مثال محدد هو أننا نريد ربط النظرية بالواقع. الراديو USRP B200 يحتوي على معالج FPGA من نوع XC6SLX75، مواصفاته كالتالي:

الخاصية الأولى لأي FPGA هي سعتها. بما أننا نتحدث عن Gates إذن من المنطقي أنه كلما زاد عدد الأخيرة كلما توفرت لنا – بشكل عام – قدرة معالجة أكبر. سنعبر عن الـ Gates بوحدة Logic Cell والتي في حالة عائلة المنتجات Spartan 6 تشكل 6-input logic circuit. في مثالنا هنالك 75000 خلية منطقية.

الخاصية الثانية هي الـ RAM. لاحظ أن الـ RAM المدمجة في الـ FPGA سعتها قليلة وهي موجودة للعمليات التي تحتاج سرعة أكبر (lower latency)، من الشائع جداً استخدام RAM خارجية، مثلاً الكثير من الـ SDR تحتوي على 1 GB DDR2 RAM خارجية. في مثالنا هنالك حوالي 3MB RAM.

الخاصية الثالثة هي الـ DSP slices. في مثالنا هنالك DSP slice 132 كلُ منها يحتوي على 18×18 multiplier. تعمل هذه الـ slices بسرعة 390 Mhz.

الخاصية الرابعة هي الـ I/O. في هذا المثال هناك قرابة الـ 400 I/O.

الخاصة الخامسة هي السرعة. لاحظ أننا هنا لا نستطيع الحديث عن السرعة بنفس الطريقة التي نتحدث فيها عن سرعة المعالج، فالأمر هنا يعتمد على التطبيق أكثر من اعتماده على الـ Hardware. لذلك إن تصفحت الـ datasheet لن تجد السرعة مذكورة بشكل واضح. على أي حال، الـ FPGA في هذا المثال يمكنها أن تصل إلى سرعة 400MHz لكن مرة أخرى هذا يعتمد بشكل مباشر على التطبيق لدرجة أنك ستجد هذا الرقم غير مفيد أساساً. أمر آخر يجب ذكره هو الـ speed grade. في حالة عائلة منتجات Spartan-6 فإن -1 هي الأبطأ و -3 هي الأسرع. طبعا الشركة تذكر هاتين الكلمتين بشكل نسبي ولا تقدم أي رقم محدد للسرعة. لاحظ أن فرق السرعة قد يعكس فرقاً بالسعر يصل إلى 10 دولارات في هذا المثال، حيث يتراوح السعر بين 95 و 105 دولارات.

بهذه النبذة السريعة يمكنك معرفة الفرق بين الـ SDRs المختلفة.

3- الـ Front-End

في القسم رقم 2 شرحنا أحد المكونات الثلاثة لأي SDR. في هذا القسم سنتطرق فقط للمكون الثاني وهو الـ Front End.

كمثال، الراديو USRP B200 يحتوي على Front End (تسمى أيضاً RFIC) من نوع AD9361 من شركة Analog Devices الأمريكية. حيث أننا قد ذكرنا خصائص المعالج أعلاه، سنذكر هنا أهم خصائص الـ Front End تلك، وكما سبق أن وضحنا، فالخصائص عامة والفكرة تنطبق على أي Front End آخر مع تغيير الأرقام.

• الخاصية الأولى هي النطاق الترددي. في مثالنا، 70MHz إلى 6GHz، لاحظ أن هذا النطاق يشمل تقنيات الـ FM، GSM، 3G، WiFi وحتى WiMAX.

• الخاصية الثانية هي الـ Bandwidth. في هذا المثال من 200kHz وحتى 56MHz، للمقارنة لاحظ أن الـ bandwidth المطلوب للـ DVB-T لا يتجاوز 8 MHz.

• الخاصية الثالثة هي الـ Sampling rate والـ Resolution (وهي مرتبطة بالخاصية الثانية). في هذا المثال هناك ADC بقدرة 61.44M sample/s ودقة 12-bits.

• الخاصية الرابعة هي القدرة المرسلة Transmit Power، ورغم أنك تستطيع نظرياً استخدام amplifier خارجي إلا أن هذه الخاصية ما تزال مهمة. في هذا المثال يمكنك الإرسال بقدرة حتى 10dBm.

• الخاصية الخامسة هي الـ Noise Figure للمستقبل، وهي مقياس على الانحطاط (degradation) في الـ SNR الذي يسببه مكوّن ما من مكوّنات الراديو. بالطبع كلما كان الانحطاط أقل كلما كان أفضل. في هذا المثال لدينا 2dB. انتبه إلى أن الـ Noise Figure للراديو ككل قد يختلف، ففي مثال الـ USRP B200 لدينا 8dB.

بالطبع هناك خصائص أخرى كثيرة لكن لعل ما ذكرناه يشكل أهم الخصائص.

4- الهوائي Antenna

ليس هناك الكثير لذكره هنا، فما ينطبق على أي نظام اتصالات ينطبق أيضاً على الـ SDR دون أي تغيير. لكن عموماً، من الجدير بالذكر أنه مؤخراً أصبحت تقنية الـ MEMA تستخدم لعمل مكونات الراديو المختلفة بما في ذلك الهوائي، وهذا يجعل الهوائي قابلة للبرمجة هو الآخر (البرمجة هنا بمعنى radiation patter reconfigurability و polarization control).

5- البرمجة Software

الميزة الأساسية للـ SDR هي قابليته للبرمجة، إذن من الطبيعي أن يكون هناك برنامج معين نستخدمه. هناك بشكل عام ثلاث برامج هي الأكثر شيوعاً. لاحظ أنه نظراً لوجود SDRs مختلفة في السوق، فبعضها قد يدعم برنامجاً معيناً دون الأخر.

• MATLAB. بالتحديد .Simulink سيلزمك الـ toolbox خاص بالـ communication، وأيضاً الـ toolbox المسمى HDL Coder (والخاص بالتواصل مع الـ FPGA)، إضافة إلى الـ Driver الخاص بالمنتج.

• LABVIEW. هذا أيضاً برنامج آخر شائع. مجدداً، يلزمك Add on خاص بالـ communication وآخر خاص بالـ FPGA، إضافة للـ Driver.

• GNURADIO. البرنامج المفضل للهواة وكثير من الباحثين على حد سواء. كما هو واضح من الاسم فهذا البرنامج مجاني ومفتوح المصدر، يعمل على أنظمة Linux. يمكن اعتبار هذا البرنامج مشابهاً للـ Simulink مع دعم للـ communication فقط.

6- منتجات تجارية

سنتناول هنا مثالين اثنين، الأول هو الأكثر شيوعاً بين الهواة، والثاني هو الأكثر شيوعاً بين الباحثين.

أ‌. RTL-SDR

ذكرنا وجود عدة معالجات يمكن استخدامها، منها الـ CPU والـ FPGA. في حالة استخدام الـ CPU يمكنك ببساطة استخدام جهاز الحاسوب الذي أمامك. كل ما تحتاجه هو Front-End و Antenna. لاحظ أن استخدام الحاسوب كـ SDR ينحصر على الهواة فقط، جميع التطبيقات التجارية والعلمية تستخدم الـ FPGA إلا ما ندر.

الـ Front-End المستخدمة هي شريحة تسمى RTL2832U من إنتاج شركة Realtik التايوانية، وهي نوع من الـ TV Tuner بتقنية DVB-T المستخدمة في أوروبا وأستراليا ومصر والسعودية ودول أخرى، لاستقبال بث التلفاز الرقمي (أي يمكن اعتبارها “كرت تلفزيون”). هناك بالطبع أنواع أخرى لكن هذه هي الأشهر بين الهواة، نظراً لأن سعرها بالكاد يتجاوز الـ 20 دولار (أنظر المرجع رقم 3). يمكن وصل هذا الـ Tuner أو الـ Dongle كما يحب الهواة تسميته، مباشرة عبر منفذ الـ USB الخاص بالحاسوب. هناك موقع مفيد جداً مخصص لكل ما يتعلق بهذا الـ SDR: www.rtl-sdr.com

خصائص هذه الـ Front-End غير محددة بشكل دقيق نظراً لأنها مخصصة للاستخدام في تطبيق واحد هو DVB-T إلا أن استخدامها في تطبيقات أخرى هو نتاج إبداع مجتمع الهواة. عموماً، تم استخدامه في تطبيقات بتردد يصل إلى 1700MHz.

ب‌. USRP

هذه عائلة منتجات من شركة Ettus Research الأمريكية (والمملوكة لشركة National Instruments). تعتبر هذه المنتجات هي الأوسع انتشاراً في الوسط العلمي للأغراض البحثية، نظراً لقدراتها العالية ولكون كل ما يتعلق بها (كالـ Drivers مثلاً) مفتوح المصدر (open source). يتراوح سعر هذه المنتجات بين 500 إلى 1000 دولار تقريباً، ورغم أن هذا يبدو وكأنه رقم كبير إلا أنك عند قراءة قسم التطبيقات ستعلم أن هذا السعر رخيص جداً مقابل ما يمكنك فعله.

أحد أحدث أجهزة الراديو من هذه العائلة هو الـ USRP B200 ويبلغ سعره 675 دولار. المعالج المذكور في قسم 2 هو المعالج المستخدم في هذا الراديو، والـ Front End هو الذي ذكرناه في القسم 3، ولذلك ليس هناك المزيد لذكره هنا.

7- تطبيقات

سنذكر هنا عدة تطبيقات بشكل مختصر، للتفاصيل يمكن زيارة المواقع المذكورة في كل حالة. لمزيد من التطبيقات يمكن البحث في الموقع http://www.rtl-sdr.com/category/article/.

• استقبال صور القمر الصناعي NOAA الخاص بالأرصاد الجوية. مرة أخرى باستخدام RTL-SDR وبرامج للـ decoding مذكورة في المرجع 7، إضافة إلى تفاصيل أخرى.

• تحليل بيانات الـ GSM غير المشفرة. في المرجع 6 هناك شرح مفصل يوضح كيفية تلقي معلومات الـ signaling الخاصة بشبكة GSM وعرضها باستخدام RTL-SDR وجهاز حاسوب، وهوائي مناسب. البرنامج المستخدم لعمل الـ decoding هو Airprobe وهو مجاني. لاحظ أن بيانات المكالمات والرسائل مشفرة ولا يمكن عرضها.

• استقبال بث الـ AM. هنا تم استخدام USRP موصول بالحاسوب وتم عمل الـ decoding على الـ MATLAB. التفاصيل في المرجع 8.

• تحديد زاوية الوصول Angle of Arrival لإشارة راديو معينة. باستخدام وحدتين في موقعين معروفين، يمكنك تحديد مكان جهاز Radio باستخدام حساب المثلثات. يمكنك البحث عن هذا المفهوم على الانترنت ضمن الكلمة المفتاحية RF Localization. هذا المثال يستخدم USRP. التفاصيل في المرجع 9.

شكر وتقدير: نشكر م. عبدالله الشيخ علي على مراجعته للمقال.

المراجع