Synchronous vs Asynchronous Transmission: كيف تتزامن البيانات؟

مشاركة

الفرق بين Synchronous Transmission وAsynchronous Transmission يتعلق أساسًا بالطريقة التي يعرف بها المستقبل متى يقرأ البتات أو الرموز القادمة. المصطلحان لا يعنيان أن التطبيق نفسه يعمل «فوريًا» أو «في الخلفية»، بل يصفان آلية التوقيت والمزامنة المستخدمة في واجهة أو وصلة الاتصال.

Synchronous vs Asynchronous Transmission: كيف تتزامن البيانات؟

في المثال الكلاسيكي للإرسال غير المتزامن، مثل UART، لا يوجد خط Clock مشترك لكل بت؛ يتفق الطرفان مسبقًا على إعدادات الاتصال، ويستخدم المستقبل Start Bit لإعادة ضبط توقيت القراءة عند بداية كل وحدة. أما في الأنظمة المتزامنة فتوجد آلية تحفظ توافق المستقبل مع توقيت البيانات، إما عبر Clock منفصلة أو عبر استعادة التوقيت من الإشارة نفسها.

هذا الموضوع يقع ضمن وظائف الطبقة الفيزيائية Physical Layer التي تتعامل مع الإشارات والتوقيت والترميز والوسط المستخدم لنقل المعلومات.

لماذا تحتاج البيانات إلى المزامنة أصلًا؟

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

إذا كان توقيت المستقبل مختلفًا بدرجة كبيرة عن توقيت المرسل، فقد يبدأ أخذ العينات في المواضع الخطأ، فتتغير البتات التي يفسرها حتى لو كانت الإشارة الفيزيائية نفسها وصلت إلى الطرف الآخر.

لذلك تحتاج كل وصلة رقمية إلى طريقة تحدد Timing. الاختلاف بين التقنيات هو كيف يتحقق هذا التوقيت، وليس وجوده أو عدم وجوده.

ما هو Asynchronous Transmission؟

في الإرسال غير المتزامن لا يحتاج الطرفان عادة إلى Clock Line مشتركة طوال عملية نقل كل بت. المثال الأشهر هو UART — Universal Asynchronous Receiver/Transmitter.

يضبط المرسل والمستقبل مسبقًا معدل الإرسال وعدد Data Bits وإعداد Parity وعدد Stop Bits. عندما تبدأ وحدة جديدة، توفر Start Bit نقطة مرجعية يستخدمها المستقبل لتوقيت العينات التالية.

توضح وثائق Microchip حول UART أن الاتصال غير المتزامن يعمل دون إشارة Clock مشتركة، وأن إطار UART يتكون عادة من Start Bit وData Bits وParity اختيارية وStop Bit.

كيف يبدو UART Frame؟

إطار UART شائع يمكن أن يأخذ الشكل التالي:

Start → Data Bits → Optional Parity → Stop

ومن أكثر الإعدادات انتشارًا 8N1، ومعناه:

  • 8 Data Bits.
  • No Parity.
  • 1 Stop Bit.

مع إضافة Start Bit يصبح نقل 8 بتات من البيانات بحاجة إلى 10 فترات بت في هذا المثال.

وتوضح وثائق USART الرسمية من Microchip أن التنسيقات الممكنة قد تتضمن 5 إلى 9 Data Bits، وParity اختيارية، وواحدة أو اثنتين من Stop Bits حسب الجهاز والإعداد.

ما وظيفة Start Bit؟

عندما يكون خط UART في حالة Idle، يستطيع المستقبل انتظار الانتقال الذي يدل على بداية إطار جديد. بعد اكتشاف Start Bit يبدأ توقيت العينات التي ستُستخدم لقراءة Data Bits التالية.

هذه النقطة مهمة: الإرسال يسمى Asynchronous لأن الطرفين لا يستخدمان Clock Line مشتركة لكل بت، وليس لأن المستقبل يعمل بلا توقيت. لكل طرف Clock داخلية، ويجب أن تكون إعدادات ومعدلات الطرفين متوافقة بما يكفي لكي تبقى العينات في مواضع صحيحة حتى نهاية الإطار.

هل يمكن ترك فاصل بين حرف وآخر؟

نعم. من خصائص UART غير المتزامن أن الإطار التالي لا يحتاج بالضرورة إلى البدء فور انتهاء السابق. يمكن أن يبقى الخط Idle ثم تبدأ وحدة جديدة لاحقًا، وعندها توفر Start Bit نقطة مزامنة جديدة.

لهذا يكون الأسلوب مناسبًا لواجهات بسيطة ترسل البيانات على دفعات متفرقة، مثل منافذ Debug أو الاتصال بين Microcontroller ووحدة خارجية.

هل Start وStop Bits تعنيان وجود هدر كبير دائمًا؟

توجد تكلفة إضافية بالفعل، لكن نسبتها تعتمد على إعداد UART، لذلك لا توجد نسبة واحدة صحيحة لكل Asynchronous Transmission.

في إعداد 8N1 مثلًا:

  • 8 بتات Payload.
  • 1 Start Bit.
  • 1 Stop Bit.

أي 10 فترات بت لنقل 8 بتات من البيانات، فتكون كفاءة Payload على مستوى هذا التأطير 80%.

أما إعداد مثل 8E1 الذي يضيف Even Parity فيحتاج 11 فترة بت، فتكون النسبة 8 ÷ 11 ≈ 72.7%.

هذه الحسابات تصف فقط Overhead الخاص بتنسيق UART، ولا ينبغي تحويلها إلى قاعدة عامة لكل تقنية تسمى Asynchronous.

ما هو Synchronous Transmission؟

في الاتصال المتزامن توجد آلية تجعل المستقبل متوافقًا مع Timing الخاص بالرموز أو البتات بصورة منتظمة، ولذلك لا يحتاج النظام بالضرورة إلى Start وStop Bits مستقلة حول كل بايت بالطريقة المعروفة في UART.

لكن عبارة «Clock مشتركة» تحتاج إلى بعض الدقة؛ فالمزامنة يمكن تنفيذها بأكثر من أسلوب.

1. خط Clock منفصل

في بعض الواجهات يوجد خط مخصص لنقل Clock إلى جانب البيانات. عندها يعرف المستقبل مباشرة متى يأخذ العينات.

تستخدم بعض وحدات USART وضعًا متزامنًا يحتوي على إشارة Clock منفصلة؛ وتوضح وثائق Microchip وجود خط XCK لساعة الإرسال في التشغيل المتزامن.

2. استعادة Clock من الإشارة

الروابط السريعة لا تحتاج دائمًا إلى سلك Clock مستقل. يمكن تصميم الإشارة والترميز بحيث يستطيع المستقبل استخراج معلومات التوقيت من الإشارة المستلمة نفسها، وهي عملية تعرف باسم Clock Recovery أو Clock and Data Recovery — CDR.

وبذلك يسافر Data Stream عبر الوصلة، بينما تعيد دائرة الاستقبال تكوين التوقيت الذي تحتاجه لتحديد مواضع الرموز وأخذ العينات.

ترتبط هذه العملية بموضوع أوسع هو كيفية تحويل المعلومات الرقمية إلى إشارات قابلة للانتقال، وهو ما يشرحه مقال Baseband Transmission.

الفرق بين Synchronous وAsynchronous باختصار

المعيار Asynchronous Synchronous
مرجع التوقيت لا توجد عادة Clock Line مشتركة لكل بت؛ يعاد ضبط التوقيت عند وحدات مثل UART Frames يوجد Timing منظم عبر Clock منفصلة أو Clock Recovery أو آلية يحددها الرابط
Start/Stop لكل حرف شائعة في UART ليست مطلوبة بهذه الصورة عادة
الفواصل بين الوحدات يمكن أن تكون غير منتظمة في UART تعتمد على تصميم البروتوكول أو PHY
التعقيد بسيط نسبيًا في تطبيقات مثل UART قد يحتاج دوائر وآليات Timing أكثر تعقيدًا
مثال واضح UART في الوضع غير المتزامن واجهة بClock منفصلة أو رابط يستعيد Clock من الإشارة

هل Synchronous يعني أن البيانات لا تتوقف أبدًا؟

لا. هذه من التبسيطات التي تسبب ارتباكًا.

يمكن أن توجد فترات Idle أو آليات لإيقاف واستئناف النقل حسب التقنية. ما يحدد كون الآلية متزامنة هو كيفية المحافظة على Timing أو إعادة إنشائه، وليس شرطًا أن يستمر Payload المفيد بلا توقف إلى الأبد.

كما أن النظام المتزامن ليس خاليًا من Overhead. قد يستخدم Headers أوPreambles أوDelimiters أوError-Checking أوTraining Sequences أوControl Symbols حسب البروتوكول.

هل Ethernet متزامن أم غير متزامن؟

من الأفضل عدم اختزال Ethernet الحديث في الجدول التعليمي البسيط «UART مقابل Synchronous Transmission».

Ethernet عائلة كبيرة من تقنيات MAC وPHY، وتختلف طريقة الإشارة والترميز والمزامنة باختلاف السرعة والوسط الفيزيائي المستخدم.

تحدد IEEE 802.3 مجموعة واسعة من Physical Layers تعمل عبر النحاس والألياف ووسائط أخرى. لذلك فالجملة الأدق هي أن Ethernet PHY يحتاج إلى آليات Timing ومزامنة مناسبة للـPHY المحدد، بدل القول ببساطة إن «Ethernet يستخدم Clock Wire مشتركة».

كما يجب التفريق بين هذا الموضوع وبين Synchronous Ethernet أو SyncE، وهو مفهوم خاص بتوزيع مرجع التردد بين معدات الشبكات، وليس مجرد اسم آخر لطريقة نقل Ethernet Frames العادية.

ماذا عن Preamble وStart Frame Delimiter في Ethernet؟

وجود Preamble أوStart Frame Delimiter لا يجعل Ethernet نسخة كبيرة من UART.

هذه الحقول مرتبطة ببنية وآلية استقبال Ethernet، بينما Start وStop في UART جزء من تنسيق الإرسال غير المتزامن لكل Character. لفهم موقع Preamble وSFD وFCS بصورة منفصلة، راجع شرح بنية الـFrame في الشبكات.

هل Parity وCRC مرتبطان بالفرق بين Synchronous وAsynchronous؟

ليس مباشرة.

Parity آلية بسيطة لاكتشاف بعض الأخطاء ويمكن استخدامها في UART، لكنها اختيارية ولا تستطيع اكتشاف كل أنماط الأخطاء ولا تصحيح البيانات بنفسها.

وفي المقابل تستخدم بروتوكولات أخرى آليات أقوى مثل CRC، لكن وجود CRC لا يعني تلقائيًا أن النقل «Synchronous»، كما أن وجود Parity لا يكفي لتصنيف النظام «Asynchronous». آلية كشف الأخطاء وآلية Timing مفهومان مختلفان.

هل SSH أو البريد الإلكتروني Asynchronous Transmission؟

لا يصح استخدام المصطلح بهذه الطريقة.

SSH وHTTP والبريد الإلكتروني بروتوكولات أو تطبيقات تعمل في طبقات أعلى. كون المستخدم يكتب أمرًا ثم ينتظر عدة ثوان قبل الأمر التالي لا يجعل SSH «Asynchronous Transmission» بالمعنى الفيزيائي الذي نتحدث عنه هنا.

يمكن لبيانات التطبيق نفسه أن تمر عبر عدة طبقات ثم تُنقل فعليًا باستخدام Ethernet أوWi-Fi أوتقنية أخرى لها آليات Timing خاصة بها. ولهذا من المهم الفصل بين وظيفة البروتوكول الشبكي وبين طريقة تمثيل الإشارة ونقلها على الوصلة.

هل Synchronous أسرع دائمًا؟

لا يمكن استنتاج سرعة تقنية فقط من كلمة Synchronous أوAsynchronous.

في المقارنات التعليمية، يسمح نقل كتل أكبر دون Start وStop حول كل Byte بتقليل Overhead مقارنة بـUART البسيط، وهذا أحد الأسباب التي تجعل آليات التوقيت المتقدمة مناسبة للروابط عالية السرعة.

لكن السرعة الحقيقية تعتمد على عوامل أخرى مثل:

  • Symbol Rate.
  • نوع Modulation أوLine Coding.
  • عدد القنوات أوLanes.
  • خصائص الوسط الفيزيائي.
  • Error Correction وProtocol Overhead.
  • تصميم الـPHY نفسه.

لذلك لا توجد قاعدة تقول إن كل نظام متزامن أسرع من كل نظام غير متزامن.

ما الفكرة التي يجب تذكرها؟

Asynchronous Transmission لا يعني «بلا توقيت»؛ بل يعني أن الطرفين لا يعتمدان بالضرورة على Clock مشتركة مستمرة لكل بت. في UART مثلًا، توفر Start Bit نقطة مزامنة لكل Frame ويستخدم الطرفان إعداد معدل متفقًا عليه.

Synchronous Transmission يعتمد على ارتباط أكثر انتظامًا بتوقيت البيانات، وقد يتحقق ذلك عبر Clock منفصلة أو عبر استعادة Clock من الإشارة نفسها.

وعند دراسة تقنيات حديثة مثل Ethernet، لا يكفي وضع اسم التقنية بالكامل في خانة واحدة من مقارنة مدرسية. السؤال الأدق دائمًا هو: أي واجهة أوPHY نتحدث عنها، وكيف يحصل المستقبل على Timing الذي يحتاجه لقراءة الإشارة؟

شارك برأيك

لديك إضافة، سؤال أو تجربة مرتبطة بالموضوع؟ اكتبها وشارك بها القراء.