اقرأ في هذا المقال
إنّ البتتين 0 و1 تقابلان نطاقين مختلفين من الفولتية التماثلية، لذلك أثناء نقل البيانات الثنائية من نظام إلى آخر يمكن أيضاً إضافة الضوضاء، ونتيجة لذلك قد تكون هناك أخطاء في البيانات المستلمة في نظام آخر، وهذا يعني أنّ البت 0 قد يتغير إلى 1 أو قد يتغير البت 1 إلى 0، كما لا يمكن تجنب تداخل الضوضاء ولكن يمكن استعادة البيانات الأصلية أولاً عن طريق اكتشاف ما إذا كانت هناك أية أخطاء موجودة ثم تصحيح هذه الأخطاء، ولهذا الغرض يمكن استخدام بعض الرموز.
أنواع رموز تصحيح الأخطاء في الإشارات
أولاً: رموز الكشف عن الخطأ
- تُستخدم لاكتشاف الأخطاء الموجودة في تدفق البيانات المستلم.
- تحتوي هذه الرموز على بعض البتات، والتي يتم تضمينها في إلحاقها بتدفق البتات الأصلي.
- تكتشف هذه الرموز الخطأ، إذا حدث أثناء إرسال تدفق البيانات الأصلي، ومثال عليه هو رمز التكافؤ ورمز هامينج.
ثانياً: أكواد تصحيح الخطأ
- تُستخدم لتصحيح الأخطاء الموجودة في تدفق البيانات المستلم بحيث نحصل على البيانات الأصلية.
- تستخدم أكواد تصحيح الأخطاء أيضاً استراتيجية مماثلة لرموز اكتشاف الأخطاء، ومثال عليه هو كود هامينج.
- لذلك لاكتشاف الأخطاء وتصحيحها تُلحق بتات إضافية ببتات البيانات وقت الإرسال.
ما هو كود التكافؤ في عملية التصحيح
من السهل إدراج بت تعادلية واحدة إمّا إلى يسار “MSB” أو إلى يمين “LSB” لتدفق البتات الأصلي، حيث هناك نوعان من أكواد التكافؤ، وهما رمز التكافؤ الزوجي ورمز التكافؤ الفردي بناءً على نوع التكافؤ الذي يتم اختياره.
- “MSB” هي اختصار لـ “Most-significant bit”.
- “LSB” هي اختصار لـ “least significant bit”.
أولاً: رمز التكافؤ الزوجي
يجب أن تكون قيمة بت التكافؤ الزوجي صفراً، إذا كان عدد الوحدات الزوجية موجوداً في الكود الثنائي حيث خلاف ذلك يجب أن تكون واحدة، ولذلك يوجد عدد زوجي منها في رمز التكافؤ الزوجي وحتى كود التكافؤ يحتوي على بتات البيانات وحتى بت التكافؤ، كما يوضح الجدول التالي رموز التكافؤ الزوجية المقابلة لكل كود ثنائي “3 بت”، كما يتم تضمين بت التكافؤ الزوجي على يمين “LSB” للشفرة الثنائية.
كود ثنائي | بت التكافؤ الفردي | رمز التكافؤ الزوجي |
000 | 0 | 0000 |
001 | 1 | 0011 |
010 | 1 | 0101 |
011 | 0 | 0110 |
100 | 1 | 1001 |
101 | 0 | 1010 |
110 | 0 | 1100 |
111 | 1 | 1111 |
هنا يكون عدد البتات الموجودة في أكواد التكافؤ الزوجية هو 4، لذا فإنّ العدد الزوجي المحتمل للوحدات في أكواد التكافؤ الزوجية هذه هو 0 و2 و4، أمّا إذا تلقى النظام الآخر أحد رموز التكافؤ الزوجية هذه فلا يوجد خطأ في البيانات المستلمة، والبتات بخلاف بت التكافؤ الزوجي هي نفس وحدات البت الخاصة بالشفرة الثنائية.
وإذا تلقى النظام الآخر غير رموز التكافؤ الزوجية فستكون هناك أخطاء في البيانات المستلمة، وفي هذه الحالة لا يمكن التنبؤ بالشفرة الثنائية الأصلية لأنّه لا يتم معرفة مواضع البت للخطأ، لذلك حتى بت التكافؤ مفيد فقط لاكتشاف الخطأ في كود التكافؤ المستلم لكنّه لا يكفي تصحيح الخطأ.
ثانياً: كود التكافؤ الفردي
يجب أن تكون قيمة بت التكافؤ الفردي صفراَ، حيث إذا كان هناك عدد فردي من الوحدات الموجودة في الكود الثنائي، وخلاف ذلك يجب أن تكون واحدة لذلك يوجد عدد فردي من الآحاد في كود التكافؤ الفردي كما يحتوي كود التكافؤ الفردي على بتات البيانات وبت التكافؤ الفردي.
ويوضح الجدول التالي رموز التكافؤ الفردية المقابلة لكل كود ثنائي مكون من “3 بتات”، حيث يتم تضمين بت التكافؤ الفردي على يمين “LSB” للشفرة الثنائية.
كود ثنائي | بت التكافؤ الفردي | كود التكافؤ الفردي |
000 | 1 | 0001 |
001 | 0 | 0010 |
010 | 0 | 0100 |
011 | 1 | 0111 |
100 | 0 | 1000 |
101 | 1 | 1011 |
110 | 1 | 1101 |
111 | 0 | 1110 |
عدد البتات الموجودة في رموز التكافؤ الفردي هو 4، لذا فإنّ العدد الفردي المحتمل للوحدات في رموز التكافؤ الفردية هذه هو 1 و3، أمّا إذا تلقى النظام الآخر أحد رموز التكافؤ الفردية هذه فلا يوجد خطأ في البيانات المستلمة، والبتات بخلاف بت التكافؤ الفردي هي نفس وحدات البت الخاصة بالشفرة الثنائية.
وإذا تلقى النظام الآخر غير أكواد التكافؤ الفردية فهناك أخطاء في البيانات المستلمة، وفي هذه الحالة لا يمكن التنبؤ بالشفرة الثنائية الأصلية لأنّه لا يتم معرفة مواضع البت للخطأ، لذلك فإنّ بت التكافؤ الفردي مفيد فقط لاكتشاف الخطأ في كود التكافؤ المستلم لكنّه لا يكفي تصحيح الخطأ.
ثالثاً: كود هامينج Hamming
كود هامينج مفيد لكشف وتصحيح الخطأ الموجود في البيانات المستلمة، حيث يستخدم هذا الرمز بتات تكافؤ متعددة ويجب وضع بتات التكافؤ هذه في مواضع قوى 2، والحد الأدنى لقيمة ‘k’ التي تكون العلاقة التالية صحيحة لها ليست سوى العدد المطلوب من بتات التكافؤ.
2k≥n+k+1
حيث أنّ “n” هو عدد البتات في معلومات الشفرة الثنائية و”k” هو عدد بتات التكافؤ، لذلك فإنّ عدد البتات في كود “Hamming” يساوي “n + k”، قمثلاً إذا كان كود Hamming هو “bn + kbn + k − 1″ و”b3b2b1 & parity bits pk، pk − 1” و”p1″، ويمكن وضع بتات التكافؤ “k” في قوى من موضعين فقط في مواضع البت المتبقية ويمكن وضع “n” بتات الشفرة الثنائية.
وبناءً على المتطلبات يمكن استخدام التكافؤ الزوجي أو التكافؤ الفردي أثناء تكوين رمز هامينج، ولكن يجب استخدام نفس تقنية التكافؤ لمعرفة ما إذا كان هناك أي خطأ موجود في البيانات المستلمة.
كيفية إيجاد بتات التكافؤ باستعمال كود هامينج
يتم إيجاد قيمة “p1” بناءً على عدد الوحدات الموجودة في مواضع البت b3 وb5 وb7 وما إلى ذلك، وكل لاحقات مواضع البت هذه في النظام الثنائي المكافئ لها “1” في القيمة المكانية 20.
يتم إيجاد قيمة “p2” بناءً على عدد الوحدات الموجودة في مواضع البت b3 وb6 وb7 وما إلى ذلك، وكل لاحقات مواضع البت هذه في النظام الثنائي المكافئ لها “1” في القيمة المكانية 21.
يتم إيجاد قيمة “p3” بناءً على عدد الوحدات الموجودة في مواضع البت b5 وb6 وb7 وما إلى ذلك، وكل لاحقات مواضع البت هذه في النظام الثنائي المكافئ لها “1” في القيمة المكانية 22.
كما يعطي المكافئ العشري لبتات الفحص في البيانات المستلمة قيمة موضع البت، حيث يوجد الخطأ وفقط يتم إكمال القيمة الموجودة في موضع البت هذا، لذلك سوف يتم الحصول على الكود الثنائي الأصلي بعد إزالة بتات التكافؤ.
ميزات رموز اكتشاف الأخطاء
- تُستخدم هذه الرموز عندما نستخدم تقنيات تصحيح أخطاء الرسائل العكسية لنقل البيانات بشكل موثوق.
- يتم إرسال رسالة تغذية مرتدة من قبل المتلقي لإعلام المرسل بما إذا كانت الرسالة قد تم استلامها دون أي خطأ أم لا من جانب المتلقي، وإذا كانت الرسالة تحتوي على أخطاء يقوم المرسل بإعادة إرسال الرسالة.
- في أكواد اكتشاف الأخطاء وفي كتل بتات ثابتة الحجم يتم احتواء الرسالة، وفي هذا تتم إضافة البتات الزائدة لتصحيح الأخطاء واكتشافها.
- تتضمن هذه الرموز التحقق من الخطأ، وبغض النظر عن عدد بتات الخطأ الموجودة ونوع الخطأ.
- فحص التكافؤ والمجموع الاختباري و”CRC” هي تقنية اكتشاف الأخطاء.
ملاحظة:“CRC” هي اختصار لـ “Cyclic redundancy check”.