نقفل الدايرة: من الأرقام للـ signal تاني
الدروس التلاتة اللي فاتوا مشيوا ورا الـ signal (الإشارة) المستمرة وهي بتتحوّل لأرقام منفصلة: الـ sampling (أخذ العيّنات) بيحوّل الزمن لسلسلة لحظات، والـ quantization (التكميم) بيحوّل الـ amplitude (السعة) لمجموعة محدودة من المستويات. بس أي نظام صوت رقمي لازم في الآخر يطلّع صوت — موجة ضغط في الهوا. والشاشة لازم تطلّع نور. والـ transmitter بتاع الراديو لازم يطلّع موجة كهرومغناطيسية مستمرة. فلازم السلسلة المنفصلة من الأرقام تتحوّل لـ signal تناظرية ناعمة ومستمرة. العملية العكسية دي اسمها إعادة البناء (reconstruction)، والجهاز اللي بيعملها هو الـ digital-to-analog converter (المحوّل الرقمي-التناظري) أو DAC.
إعادة البناء مش مجرد عكس للـ sampling. الـ signal المستمرة الأصلية كانت موجودة قبل الـ sampling، ومفيش hardware يقدر يرجّع معلومة ضاعت في العملية دي. اللي إعادة البناء المثالية بتعمله إنها تطلّع الـ signal المحدودة الـ band الوحيدة اللي ماشية مع قيم الـ samples اللي عندك. ولما شرط نايكويست يكون متحقق وقت الـ sampling، الـ signal دي بتبقى هي الأصلية بالظبط. وعشان كده إعادة البناء مربوطة جامد بنظرية الـ sampling: النظرية مش بس بتضمن إن samples كفاية بتحدد الـ signal المحدودة الـ band بشكل وحيد، لأ وكمان بتدّيك المعادلة الرياضية اللي ترجّعها بيها.
الـ signal المحدودة الـ band اللي أعلى frequency فيها fmax ممكن تتبني تاني بالظبط من samples متاخدة بمعدّل fs ≥ 2fmax (الـ Nyquist rate). كل sample بتتضرب في دالة sinc متزحزحة وبعدين المساهمات بتتجمع — ودي معادلة الـ interpolation بتاعة ويتاكر-شانون.
إعادة البناء المثالية: الـ sinc interpolation
معادلة ويتاكر-شانون للـ interpolation بتقول إن الـ signal المحدودة الـ band x(t) ممكن ترجع بالظبط من الـ samples بتاعتها x[n] = x(nTs) كده:
دالة sinc — يعني sinc(t/Ts) = sin(πt/Ts) / (πt/Ts) — هي الـ impulse response (الاستجابة النبضية) في الزمن لـ low-pass filter (مرشح تمرير منخفض) مثالي الـ cutoff بتاعه fs/2. وإعادة البناء المثالية في الـ frequency domain هي ببساطة filtering بـ low-pass filter: عدّي كل حاجة تحت fs/2، واكتم كل اللي فوقها. الـ filter بيشيل النسخ اللي في الـ spectrum (الـ images) اللي بتظهر عند مضاعفات الـ sampling frequency، وبيسيب بس النسخة الأساسية من الـ spectrum الأصلي.
الربط أنيق بس مش عملي. دالة sinc المثالية مدتها في الزمن لانهائية ومحتاجة معالجة non-causal — يعني محتاجة “تشوف” المستقبل. فإعادة البناء الحقيقية لازم تقرّب المثالي بـ filters سببية طولها محدود. وجودة التقريب ده من أهم التحديات الهندسية في تصميم الـ DAC.
الـ spectral images: مشكلة المرايات
عشان تفهم ليه محتاجين filter لإعادة البناء أصلًا، تخيّل الـ DAC بيطلّع إيه فعلًا قبل أي filtering. السلسلة الرقمية x[n] بتدخل على دايرة بتحدّث فولت الخرج بتاعها كل فترة sample Ts. والناتج موجة على شكل سلّم: سلسلة نبضات مستطيلة، كل واحدة ثابتة لمدة فترة sample واحدة، بـ amplitude الـ sample المقابلة. العملية دي اسمها الـ zero-order hold (الإبقاء من الدرجة الصفر) أو ZOH.
خرج الـ ZOH مستمر في الزمن — مبقاش سلسلة نبضات — بس الـ spectrum بتاعه فيه نسخ مش عايزينها عند كل مضاعفات الـ sampling frequency: fs، 2fs، 3fs، وهكذا. النسخ دي اسمها spectral images (صور طيفية). ولو متشالتش، بتظهر كتشويه في الخرج التناظري: في الصوت بتسمع artifacts عالية، وفي الاتصالات بتتداخل مع القنوات اللي جنبك.
الـ zero-order hold ليه frequency response على شكل sinc: HZOH(f) = Ts ⋅ sinc(fTs). وده بيكتم الـ frequencies العالية جوه الـ baseband وكمان الـ images. وfilter إعادة البناء لازم يعوّض الاتنين: يكتم الـ images، ويصلّح الـ sinc roll-off.
الـ zero-order hold هو أخشن إعادة بناء ممكنة — درجة مفلطحة بتفضل ثابتة لكل sample. والخطوة اللي بعدها هي الـ first-order hold (الإبقاء من الدرجة الأولى) أو FOH، اللي بيوصّل الـ samples اللي ورا بعض بخطوط مستقيمة بدل الهضاب المفلطحة، فبيطلّع خرج خطي حتة حتة. والـ linear interpolation هو convolution لسلسلة الـ samples مع نبضة مثلثية عرضها 2Ts — واللي هي نفسها convolution لنبضتين ZOH مستطيلين — وعشان كده الـ frequency response بتاع الـ FOH هو مربّع response الـ ZOH بالظبط. والتمن sample تأخير زيادة، لأن الخط المستقيم للـ sample اللي بعدها مينفعش يترسم قبل ما الـ sample دي توصل.
الـ first-order hold ليه response على شكل sinc تربيع: HFOH(f) = Ts ⋅ sinc2(fTs). تربيع الـ sinc بتاع الـ ZOH بيضاعف كتم الـ images بالديسيبل — فالموجة الخطية حتة حتة أنعم بوضوح من السلّم — بس بيضاعف كمان الـ roll-off في الـ passband وبيزوّد sample تأخير. لا الـ ZOH ولا الـ FOH مثالي؛ المثالي هو الـ sinc اللانهائي بس. والـ FOH بيوري الاتجاه وخلاص: الـ holds اللي درجتها أعلى بتقايض رفض الـ images بالـ roll-off في الـ baseband والتأخير، وعشان كده الـ DACs العملية بتجمع zero-order hold بسيط مع الـ oversampling (تحت) بدل ما تطلع لـ holds درجتها أعلى.
filter إعادة البناء
الـ reconstruction filter (مرشح إعادة البناء) (أو الـ anti-imaging filter) هو low-pass filter بيتطبّق على خرج الـ ZOH. وشغلانته:
1. يشيل الـ spectral images. أي طاقة فوق fs/2 لازم تتكتم قبل ما الـ signal تخرج من النظام الرقمي. والـ stopband لازم يدّي attenuation كفاية بحيث مفيش أي image تتسمع أو تتقاس في الخرج النهائي. وفي الصوت ده معناه عادةً كتم بمقدار −80 ديسيبل أو أحسن.
2. يعوّض الـ roll-off بتاع الـ ZOH. خرج السلّم بيكتم الـ frequencies العالية جوه الـ baseband. والـ reconstruction filter الكويس فيه sinc correction: تعلية للـ frequencies العالية في الـ baseband بتعكس تخفيف الـ ZOH بالظبط، فبترجّع response مفرود على نطاق الصوت كله.
3. يدخّل أقل تشويه ممكن في الـ passband. زي الـ anti-aliasing filter اللي قبل الـ ADC بالظبط، الـ reconstruction filter لازم يبقى magnitude بتاعه مفرود والـ phase بتاعه خطي في الـ passband، وإلا هتسمع تلوين في طابع الصوت أو تشتّت في الـ signal.
الـ oversampling: مقايضة بين الـ sample rate وتعقيد الـ filter
إنك تبني reconstruction filter تناظري بميل حاد حاجة صعبة. الـ response اللي زي الحيطة تمامًا عند fs/2 محتاج عدد لانهائي من الـ poles. والـ filter التناظري الحقيقي بيوصل لميل بالتدريج بس، فبيسيب transition band بين حافة الـ passband وأول image، والـ images اللي واقعة في الـ transition band ده مبتتكتمش بالكامل. والحل، اللي كل الـ DACs الحديثة ماشية عليه، هو الـ oversampling (المعدل الزائد): تشغّل الـ DAC بمعدّل أعلى بكتير من الـ sampling frequency الاسمية، وتدخّل samples متعمل لها interpolation تملا الفراغات.
لو الـ DAC شغّال بـ 8 أضعاف معدّل الصوت، أقرب images بتتنقل لـ 8fs − fmax بدل fs − fmax. الـ images بتتزق بعيد في الـ frequency، والـ reconstruction filter التناظري ممكن يبقى تصميم لطيف درجته واطية بيكتمها بسهولة.
الـ interpolation (رفع الـ sample rate) اللي الـ oversampling محتاجه بيتعمل رقميًا قبل الـ DAC. والـ interpolation filter الرقمي ليه cutoff حاد ودقيق مستحيل يتعمل في التناظري. ودي الفكرة الأساسية: انقل مشكلة الـ filtering الصعبة من التناظري (غالي ومش دقيق) للرقمي (رخيص ومظبوط). أما الـ filter التناظري اللي بعده، فمحتاج بس response لطيف من الدرجة الأولى أو التانية.
الـ sigma-delta DAC: دقة bit واحد بمعدّلات متطرّفة
الطرف المتطرّف من الـ oversampling هو الـ sigma-delta DAC، اللي مستخدم في تقريبًا كل أنظمة الصوت عالية الدقة الحديثة. بدل ما يطلّع خرج بـ bits كتير بالـ Nyquist rate، الـ sigma-delta DAC بيستخدم خرج بـ bit واحد (أو كام bit) بس بيشتغل بمئات أضعاف الـ sampling rate بتاع الصوت. كل sample خرج يا “عالية” يا “واطية”، بس كثافة النبضات العالية هي اللي بتشفّر الـ amplitude المطلوب: الـ signal القوية فيها نبضات عالية أكتر، والهادية فيها أقل.
الـ modulator الرقمي اللي بيحوّل الـ samples متعددة الـ bits لسيل النبضات ده اسمه delta-sigma modulator. وبيستخدم feedback loop بتزق الـ quantization noise (ضوضاء التكميم) — اللي جاية من اختصار bits كتير لـ bit واحد — للـ frequencies العالية حيث الـ output filter يقدر يشيلها. التقنية دي اسمها الـ noise shaping (تشكيل الضوضاء)، وبتوصل لـ signal-to-noise ratios عالية بشكل مدهش من quantization خشن جدًا: الـ sigma-delta DAC المتصمّم كويس بيوصل لـ 120 ديسيبل أو أكتر من الـ dynamic range باستخدام تحويل بـ bit واحد بس عند كام ميجاهرتز.
بديل للـ sigma-delta هو الـ R-2R ladder DAC: شبكة مقاومات بتحوّل على طول كلمة رقمية من N bit لفولت تناظري بالتوازي. كل bit بيتحكّم في مفتاح؛ والمساهمات المتضروبة بأوزان ثنائية بتتجمع. سريعة وبتتستخدم في التطبيقات عالية السرعة زي مولّدات signals الراديو وDACs الفيديو.
سلسلة الـ ADC–DAC الكاملة
دلوقتي تقدر تشوف الأربع خطوات بتوع الـ DSP كخط إنتاج كامل. الـ input التناظري بيتعمله filtering الأول بـ anti-aliasing filter، وبعدين بيتاخد منه samples ويتعمله quantization بالـ ADC. الـ processor الرقمي بيعالج الـ samples. والـ DAC بيبني signal مستمرة تاني، والـ reconstruction filter بيشيل الـ images. أربع عمليات — اتنين في التناظري واتنين في الرقمي — هما مع بعض العمود الفقري لكل audio codec وكل transmitter لاسلكي وكل آلة رقمية في الدنيا.
ولكل مرحلة عيبها الخاص لما تبقى ناقصة:
الـ anti-aliasing filter → تشويه في الـ passband لو الـ filter مش مفرود وphase بتاعه مش خطي في نطاق الـ signal.
الـ sampling (ADC) → الـ aliasing لو شرط نايكويست اتكسر.
الـ quantization (ADC) → quantization noise وclipping لو الـ bit depth مش كفاية أو الـ input عدّى مدى الـ converter.
الـ DAC والـ reconstruction filter → spectral images وroll-off وjitter لو الـ filter مش كفاية، أو نسبة الـ oversampling قليلة، أو ساعة الـ samples مش مستقرة.
الـ jitter: لما الساعة تتهز
فيه عيب واحد في إعادة البناء يستاهل نذكره لوحده: الـ jitter (الاهتزاز) (Jitter). إعادة البناء المثالية بتفترض إن الـ samples بتطلع على فترات متساوية تمامًا Ts. عمليًا، ساعة الـ DAC فيها أخطاء توقيت عشوائية صغيرة — الـ samples بتوصل بدري أو متأخر شوية. وعدم اليقين ده في التوقيت بيشوّه موجة الخرج حتى لو قيم الـ amplitude مظبوطة تمامًا.
تأثير الـ jitter زي noise في الـ amplitude: لو خرج الـ DAC sine wave عند frequency f0 وساعته فيها jitter في التوقيت قيمته الـ rms σt، يبقى تدهور الـ signal-to-noise ratio تقريبًا:
الـ jitter بيقل باستخدام crystal oscillators قليلة الـ noise، وphase-locked loops (PLL) بـ loop bandwidth ضيّق، وتصميم دقيق للبوردة بيعزل الساعة عن مصادر الـ noise الرقمية. وفي الصوت الاحترافي، signal word clock منفصلة بتتوزّع على كذا جهاز عشان كل الـ converters تفضل phase-locked مع بعض.
- إعادة البناء المثالية بتضرب كل sample في sinc متزحزحة وتجمع؛ وفي الـ frequency domain ده بيساوي low-pass filtering مثالي تحت fs/2.
- الـ DAC بيطلّع الأول موجة سلّم (ZOH) فيها spectral images عند مضاعفات الـ sampling frequency ولازم يتعملها filtering.
- الـ reconstruction filter (الـ anti-imaging) بيشيل الـ images وبيصلّح الـ sinc roll-off بتاع الـ ZOH جوه الـ passband.
- الـ oversampling بيزق الـ images لـ frequencies أعلى، فبيسمح بـ filters تناظرية أبسط ودرجتها أوطى.
- الـ sigma-delta DACs بتستخدم oversampling متطرّف (256×+) وnoise shaping عشان توصل لـ dynamic range عالي جدًا.
- الـ jitter بيحوّل عدم اليقين في التوقيت لـ noise في الـ amplitude، بيزيد مع الـ frequency بتاعة الـ signal.