قراءة
وضع القصص

الـ DSP في الاتصالات

~15 دقيقة قراءة الدرس 3 من الوحدة 12

الـ modem هو ماكينة DSP

كل مرة الموبايل بيتبادل بيانات مع access point Wi-Fi أو بيتصل بـ base station 5G، فيه عشرات من خوارزميات الـ DSP شغّالة في الـ real time جوه الـ baseband processor بتاع الجهاز. الـ filtering والـ FFT والـ correlation والـ equalization والـ interpolation والـ error-correction decoding شغّالين على طول — بمعدل ملايين الـ samples في الثانية — عشان يطلّعوا stream bits نضيف من signal القناة شوّهتها، والـ noise دفنها، والـ interference بوّظها. ده مجال الاتصالات الرقمية، والـ DSP هو المحرّك بتاعه.

الدرس ده بيمشي ورا سلسلة الاستقبال (receive chain) بتاعة modem OFDM حديث — نفس البنية المستخدمة في Wi-Fi (802.11a/g/n/ac/ax) وLTE و5G NR. كل block في السلسلة خوارزمية DSP محدّدة. وإنك تفهم السلسلة دي بيربط كل مفهوم من الوحدات اللي فاتت — الـ DFT والـ correlation والـ filtering والـ multirate processing — بنظام حقيقي ملموس.

الفكرة الأساسية

الـ OFDM (Orthogonal Frequency-Division Multiplexing) بيقسم الـ bandwidth المتاح لمئات أو آلاف الـ subcarriers الضيقة وبينقل البيانات عليهم كلهم في نفس الوقت. كل subcarrier بيشوف قناة flat تقريبًا، فمشكلة الـ wideband equalization المعقّدة بتتحوّل لمسائل single-tap بسيطة. الـ IDFT بيولّد الـ waveform بتاعة OFDM في ناحية الإرسال؛ والـ DFT بيرجّع symbols الـ subcarriers في ناحية الاستقبال.

الـ OFDM: الـ multicarrier modulation

القناة اللاسلكية العريضة النطاق قناة frequency-selective — مكوّنات الـ frequency المختلفة بتتعرّض لتغييرات مختلفة في الـ amplitude والـ phase بسبب الـ multipath propagation. والـ carrier الواحد العريض النطاق هيتشوّه جامد بسبب الـ selectivity دي. والـ OFDM بيتخطّى المشكلة دي بإنه بيقسم الـ bandwidth لـ N subcarrier ضيق، كل واحد ضيق كفاية إنه يشوف قناة flat (مش selective) جوه الـ bandwidth بتاعه.

الـ vector بتاع symbols الـ N subcarrier بيتعمله modulation بإنك تبعت الـ inverse discrete Fourier transform بتاع الـ symbol vector. ولأن الـ IDFT بيطلّع مجموع complex exponentials orthogonal عند frequencies k/NT، كل subcarrier بيبقى orthogonal أوتوماتيك مع كل الباقيين، ومبيتداخلش معاهم حتى لو الـ spectra بتاعتهم متداخلة. والـ receiver بيطبّق DFT لقدّام عشان يرجّع كل subcarrier لوحده في عملية حسابية واحدة.

الـ OFDM symbol (IDFT)
x[n] = \frac{1}{N} \sum_{k=0}^{N-1} X[k]\, e^{\,j2\pi kn/N}
الـ sample الزمنية المبعوتة x[n] هي الـ IDFT للـ N symbol في الـ frequency domain X[k]. وعمليًا، ده بيتحسب بـ IFFT بـ N نقطة، وده بيخلّي توليد الـ OFDM عملية تعقيدها O(N log N) مهما كان عدد الـ subcarriers.

عشان تمنع الـ intersymbol interference (ISI) اللي جاي من قناة الـ multipath، كل OFDM symbol بيتحط قدّامه cyclic prefix (CP) — نسخة من آخر L sample من الـ symbol بتتضاف في أوله، حيث L على الأقل أطول من الـ impulse response بتاعة القناة. والـ cyclic prefix بيحوّل الـ linear convolution بتاع القناة لـ circular convolution، اللي بيبقى diagonal في الـ DFT domain بحيث كل subcarrier بيشوف ضرب scalar بس — مش convolution.

64
subcarrier في 802.11a/g (20 ميجاهرتز)
3276
subcarrier في 5G NR (100 ميجاهرتز)
CP
الـ cyclic prefix بيلغي الـ ISI

الـ timing والـ frequency synchronization

قبل ما تقدر تعمل decoding لـ symbol subcarrier واحد، الـ receiver لازم يحل مشكلتين synchronization. الـ timing synchronization بيلاقي حدود الـ sample بالظبط اللي بيبدأ عندها كل OFDM symbol؛ والـ timing offset بيحرّك كل خرج الـ DFT بـ linear phase ramp، فبيلف الـ constellation. والـ frequency synchronization بيصلّح الـ carrier frequency offset (CFO) بين الـ oscillators بتوع الـ transmitter والـ receiver؛ والـ CFO بيدخّل intercarrier interference (ICI) لأن الـ subcarriers مبقتش بتتاخد samples بتاعتها عند نقط الـ orthogonality بتاعتها.

الـ receivers الحديثة بتحل المشكلتين باستخدام الـ preamble correlation. الـ transmitter بيحط قدّام كل packet training sequence معروفة. والـ receiver بيعمل cross-correlation مستمر للـ samples الجاية مع نسخة محلية من الـ preamble. وقمة الـ correlation بتحدّد حدود الـ symbol (الـ timing)؛ وفرق الـ phase بين نصّين preamble متكرّرين ومتطابقين بيقيس الـ CFO الكسري. والـ correlation ده بيتحسب بكفاءة بـ sliding-window accumulator — ودي تطبيق لمفهوم الـ matched filter من الوحدة 10.

تقدير الـ frequency offset
\widehat{\Delta f} = \frac{1}{2\pi L / f_s} \angle \sum_{n=0}^{L-1} r[n+L]\, r^*[n]
تقدير الـ CFO بيتشتق من زاوية الـ correlation بين جزئين متكرّرين متطابقين من الـ preamble (كل واحد طوله L)، مقسومة على 2πL/f_s. وده بيدّي تقدير CFO دقيق جوه ±f_s/(2L) هرتز.

بعد الـ coarse correction للـ timing والـ frequency، الـ receiver بيطبّق phase-locked loop (PLL) عشان يتابع الـ phase noise الباقي sample بـ sample. والـ PLL نفسها مش أكتر من نظام feedback IIR من الدرجة الأولى، والـ loop bandwidth بتاعها بيتختار واسع كفاية إنه يتابع الـ phase noise، وضيق كفاية إنه يرفض الـ additive noise — مقايضة DSP كلاسيكية بين الـ tracking bandwidth والـ noise floor.

الـ channel estimation والـ equalization

حتى بعد الـ synchronization، القناة بتضعّف كل subcarrier وبتلف الـ phase بتاعه بـ complex scale مختلف. وقبل ما تقدر تعمل decoding للـ symbols، الـ receiver لازم يقدّر معاملات القناة لكل subcarrier ويعكسها. ودي الـ channel equalization في الـ frequency domain، وهي من أهم مزايا الـ OFDM: كل subcarrier محتاج قسمة مركّبة واحدة بس، مش FIR filter كامل.

الـ channel estimation بيستخدم الـ pilot subcarriers — subcarriers شايلة symbols معروفة بدل البيانات. والـ receiver بيشوف قيم الـ pilots المستقبَلة وبيقسمها على القيم المبعوتة المعروفة، فبياخد الـ channel frequency response عند أماكن الـ pilots. وبعدين بيعمل interpolation (باستخدام الـ linear interpolation أو المبني على الـ DFT من الوحدة 11) عشان يقدّر القناة عند كل frequencies الـ subcarriers بتاعة البيانات. والطريقة دي — pilots وبعدين interpolation — بتوازن بين دقة التقدير وتكلفة الـ overhead اللي جاية من إنك تخصّص subcarriers للـ pilots بدل البيانات.

الـ equalization في الـ frequency domain
\hat{X}[k] = \frac{Y[k]}{\hat{H}[k]} \quad (\text{ZF}), \qquad \hat{X}[k] = \frac{\hat{H}^*[k]}{|\hat{H}[k]|^2 + \sigma^2} Y[k] \quad (\text{MMSE})
الـ zero-forcing (ZF) equalization بيقسم كل subcarrier مستقبَل Y[k] على معامل القناة المتقدّر Ĥ[k] عشان يرجّع الـ symbol المبعوت X̂[k]. والـ MMSE equalization بيضيف حد noise regularization σ² في المقام عشان يتجنّب تكبير الـ noise على الـ subcarriers اللي عليها fading شديد.

على الـ subcarriers اللي القناة فيها عاملة fading شديد (|H[k]| ≈ 0)، الـ zero-forcing equalization بيكبّر الـ noise بشكل كارثي. والـ MMSE equalization بيتجنّب ده بإنه بيعمل regularization لعملية العكس: المقام بيضيف حد لقدرة الـ noise بيمنع الـ gain إنه يعدّي 1/SNR. والـ MMSE هو المثالي لما الـ variance بتاع الـ noise يبقى معروف؛ بيدخّل bias صغير بس قصاد تقليل كبير في تكبير الـ noise على الـ subcarriers الضعيفة.

الـ error-correction decoding

حتى بعد الـ equalization، الـ symbols اللي رجعت فيها soft errors من الـ additive noise. والـ forward error correction (FEC) هو الآلية اللي بتحوّل الـ soft decisions اللي فيها noise دي لـ stream bits تعتمد عليه. وكل standard لاسلكي حديث بيضيف redundancy في ناحية الإرسال باستخدام channel code؛ والـ decoder في الـ receiver بيستغل الـ redundancy دي عشان يصلّح الأخطاء.

الـ Wi-Fi والـ LTE الأوّلاني بيستخدموا convolutional codes بيفكّها خوارزمية Viterbi — بحث dynamic programming على trellis حالات الـ encoder. كل خطوة في الـ trellis بتاخد score بالـ log-likelihood بتاع الـ soft symbol المستقبَل لو افترضنا الـ bit المبعوت. وخوارزمية Viterbi بتلاقي أكتر مسار محتمل في الـ trellis في O(N · 2K) عملية، حيث K هو الـ constraint length بتاع الـ code. والـ LTE Release 8 قدّم كمان الـ turbo codes بـ iterative decoding بيتبادل فيه decoderين convolutional مكوّنين، فبيقرّبوا من سعة Shannon لحد 0.5 ديسيبل.

الـ 5G NR استبدل الـ turbo codes بـ LDPC codes (low-density parity-check codes) وpolar codes. والـ LDPC decoding بيستخدم خوارزمية belief propagation على bipartite graph sparse: الـ variable nodes والـ check nodes بيتبادلوا رسايل log-likelihood ratio (LLR) بشكل iterative لحد ما الـ bits المتفكّكة تحقق كل قيود الـ parity أو عدد الـ iterations يوصل لأقصاه. والـ LDPC codes بتتوازى وبتتفك في الـ hardware بمعدلات multi-gigabit في الثانية في chips الـ 5G الحديثة.

الـ soft decisions قصاد الـ hard decisions

الـ decoders بتوع Viterbi والـ belief propagation بيشتغلوا على الـ soft information — الـ log-likelihood ratios (LLRs) اللي بتشفّر قيمة الـ bit والثقة في القيمة دي مع بعض. والـ hard-decision decoder بيرمي معلومات الثقة وبيفك على قرارات 0/1؛ وده بيكلّف حوالي 2 ديسيبل من الـ coding gain. وتقريبًا كل الـ receivers الحديثة بتستخدم soft-input decoders عشان تحافظ على الـ 2 ديسيبل دول، اللي بيترجموا على طول لمدى أوسع أو modulation order أعلى بنفس الـ link margin.

سلسلة الاستقبال الكاملة

مراحل الـ OFDM receiver بتتوصّل في سلسلة معالجة خطية، كل مرحلة فيها خوارزمية DSP مختلفة:

ADC
sampling وتحويل
→
Sync
timing وfrequency
→
CP Remove
شيل الـ prefix
→
FFT
للـ frequency domain
→
Ch. Eq.
لكل subcarrier
→
FEC Dec.
soft decoding

الـ ADC بيعمل digitizing للـ baseband signal التناظرية بضعف الـ bandwidth (الـ Nyquist rate). والـ synchronization بيلاقي حدود الـ symbol وبيصلّح الـ carrier offset عن طريق الـ preamble correlation. وشيل الـ cyclic prefix بيقشّر الـ guard interval قبل الـ DFT. والـ FFT بيحوّل الـ symbol من الـ time domain للـ frequency domain بتعقيد O(N log N). والـ channel equalization بيطبّق القسمة المركّبة لكل subcarrier. وفي الآخر، الـ FEC decoding بيحوّل قيم الـ LLR الـ soft بتاعة الـ symbols لـ stream bits تعتمد عليه.

السلسلة دي كلها بتشتغل من غير توقّف على blocks متداخلة، وعادةً بتتنظّم كـ pipeline جوه الـ hardware. والـ chip بتاعة Wi-Fi 6 (802.11ax) بتعالج 8 spatial streams كل واحد عرضه 80 ميجاهرتز، فبتشغّل 8 عمليات FFT متوازية بـ 1024 نقطة كل 12.8 ميكروثانية — يعني أكتر من 5 مليار عملية ضرب في الثانية، متنفّذة في كام ملّيمتر مربع من سيليكون CMOS بحسابات fixed-point وبنى VLSI للـ DSP متوازية جدًا.

الدرس الجاي: الـ machine learning بيقابل الـ DSP — signal classifiers بالـ neural networks، والـ learned filters، والطرق المعتمدة على البيانات بتروح لأبعد من الـ DSP الكلاسيكي فين.

الخلاصة الأساسية
  • الـ OFDM بيحوّل قناة wideband frequency-selective لـ subchannels narrowband flat كتير باستخدام الـ IDFT في الإرسال والـ DFT في الاستقبال؛ وكل subcarrier محتاج equalizer single-tap بس.
  • الـ cyclic prefix بيحوّل الـ linear convolution بتاع القناة لـ circular convolution، فبيخلّي matrix القناة diagonal في الـ DFT domain وبيلغي الـ ISI.
  • الـ timing synchronization بيستخدم الـ preamble correlation (matched filtering) عشان يلاقي حدود الـ symbol؛ والـ frequency synchronization بيقدّر الـ carrier offset من phase الـ correlation بتاع جزء preamble متكرّر.
  • الـ channel estimation بيستخدم الـ pilot subcarriers: القناة بتتقدّر عند frequencies الـ pilots بقسمة المستقبَل على المعروف، وبعدين بيتعملها interpolation للـ subcarriers بتاعة البيانات.
  • الـ zero-forcing equalization بيعكس القناة بقسمة مركّبة واحدة لكل subcarrier؛ والـ MMSE equalization بيضيف noise regularization عشان يتجنّب تكبير الـ noise على الـ subcarriers اللي عليها fading.
  • الـ FEC الحديث بيستخدم LDPC codes (5G NR) بيفكّها الـ belief propagation على bipartite graphs sparse؛ والشغل على LLR inputs soft بدل الـ hard decisions بيحافظ على ~2 ديسيبل من الـ coding gain.
الدرس اللي بعده الـ machine learning بيقابل الـ DSP نظرة عامة على الموديول اللي فات سلسلة المؤثرات الصوتية