اقرأ في هذا المقال
- ما هو كود هامينج Hamming code
- كيفية عمل كود هامينج Hamming code
- الخوارزمية العامة لكود هامينج
- كيفية تحديد بتات التكافؤ
كود هامينج هو تقنية تم تطويرها بواسطة (RW Hamming) لتصحيح الخطأ، بحيث تعمل هذه الطريقة على تصحيح الخطأ من خلال إيجاد الحالة التي حدث فيها الخطأ.
ما هو كود هامينج Hamming code
كود هامينج (Hamming code): هو عبارة عن مجموعة من أكواد تصحيح الأخطاء التي يمكن استخدامها لاكتشاف وتصحيح الأخطاء، والتي يمكن أن تحدث عند نقل البيانات أو تخزينها من المرسل إلى المتلقي.
كيفية عمل كود هامينج Hamming code
1- البت الزائدة عن الحاجة
البتات الزائدة: هي بتات ثنائية إضافية يتم إنشاؤها وإضافتها إلى وحدات نقل البيانات التي تحمل المعلومات لضمان عدم فقد أي بت أثناء نقل البيانات، بحيث توضع بتات التكرار في مواضع محسوبة معينة لإزالة الأخطاء وتسمى المسافة بين بتات التكرار “مسافة Hamming”.
تُستخدم الصيغة التالية لإيجاد عدد البتات الزائدة عن الحاجة:
عدد الأخطاء أحادية البت = M + R
عدد الحالات لعدم وجود خطأ = 1
لذلك، يجب أن يفي عدد البتات الزائدة (R) التي تمثل جميع الكودات (M + R + 1)، وأنّ:
2𝑅 ≥ 𝑀 + R + 1
حيث أنّ R = بت فائض وM = بت البيانات.
2- رمز تصحيح الخطأ
رمز تصحيح الخطأ: هي العلاقة بين بتات البيانات وبتات التكرار لتصحيح خطأ أحادي البت، بحيث يتكون الرتل A من بتات البيانات M والبتات الزائدة عن الحاجة R، كما أنّ الطول الإجمالي للإطار هو (N (N = M + R))، وغالباً ما يشار إلى وحدة N-bit التي تحتوي على بيانات وبتة التحقق على أنّها كلمة تشفير N-bit.
3- بتات التكافؤ
يتم إلحاق بت التكافؤ قليلاً ببيانات من البتات الثنائية للتأكد من أنّ العدد الإجمالي لـ 1 في البيانات زوجي أو فردي، كما تستخدم بتات التكافؤ لاكتشاف الخطأ وهناك نوعان من بتات التكافؤ:
أولاً: بت التكافؤ الزوجي
بت التكافؤ الزوجي: هو حالة التكافؤ الزوجي لمجموعة معينة من البتات يتم حساب عدد 1، وإذا كان هذا العدد فردياً يتم وضع قيمة بت التكافؤ على 1، ممّا يجعل العدد الإجمالي للتكرارات لـ 1 عدداً زوجياً وإذا كان العدد الإجمالي لـ 1 في مجموعة معينة من البتات زوجياً بالفعل فإنّ قيمة بت التكافؤ هي 0.
ثانياً: بت التكافؤ الفردي
بت التكافؤ الفردي: هو حالة التكافؤ الفردي لمجموعة معينة من البتات يتم حساب عدد 1 وإذا كان هذا العدد زوجياً يتم تعيين قيمة بت التكافؤ على 1، ممّا يجعل العدد الإجمالي للتكرارات لـ 1 عدداً فردياً وإذا كان العدد الإجمالي لـ 1 في مجموعة معينة من البتات فردياً بالفعل، فإنّ قيمة بت التكافؤ هي 0.
4- كيفية العثور على Hamming code
تستخدم طريقة (Hamming) التكافؤ الإضافية للسماح بتحديد خطأ أحادي البت:
- اكتب أولاً مواضع البت التي تبدأ من 1 في شكل ثنائي (1 و10 و11100 ،إلخ).
- العمل على تمييز جميع مواضع البت التي هي قوى لاثنين على أنها بتات تكافؤ (1 و2 و4 و8 و16 و32 و64 ،إلخ).
- جميع مواضع البتات الأخرى مخصصة للبيانات المراد تشفيرها باستخدام (3 و5 و6 و7 و9 و10 و11 ،إلخ)، كما تحسب كل بت تماثل التكافؤ لبعض البتات في كلمة الرمز ويحدد موضع التكافؤ تسلسل البتات التي يتحقق منها ويتخطى بدلاً من ذلك.
5- مواضع بتات التكافؤ في تسلسل البتات
- تحقق من 1 بت ثم تخطي 1 بت وتحقق من 1 بت ثم تخط 1 بت وهكذا (مثال 1 و3 و5 و7 و11 ،إلخ).
- تحقق من 2 بت ثم تخطي 2 بت وتحقق من 2 بت ثم تخطي 2 بت (مثال 2 و3 و6 و7 و10 و11 و14 و15 ،إلخ).
- تحقق من 4 بت ثم تخطي 4 بت وفحص 4 بت ثم تخطي 4 بت (مثال 4 و5 و6 و7 و12 و13 و14 و15 ،إلخ).
- تحقق من 8 بت ثم تخطي 8 بتات وتحقق من 8 بت ثم تخطي 8 بت (مثال 8 و9 و10 و11 و12 و13 و14 و15 و24 و25 و26 ، 27 و28 و29 و30 و31).
ملاحظة: عيّن بت التكافؤ 1 إذا كان العدد الإجمالي لـ 1s في المواضع التي يتحقق منها فردياً أو عيّن بت التكافؤ 0 إذا كان العدد الإجمالي 1s في المواضع التي يتحقق منها بشكل متساوٍ.
الخوارزمية العامة لكود هامينج
إّن قانون Hamming هو ببساطة استخدام بتات تكافؤ إضافية للسماح بتحديد الخطأ.
- اكتب مواضع البت التي تبدأ من 1 في شكل ثنائي (1 ، 10 ، 11 ، 100 ، إلخ).
- يتم تمييز جميع مواضع البت التي تمثل قوة 2 على أنّها بتات تكافؤ (1 ، 2 ، 4 ، 8 ، إلخ).
- يتم تمييز جميع مواضع البت الأخرى على أنّها بتات بيانات.
- يتم تضمين كل بت بيانات في مجموعة فريدة من بتات التكافؤ، كما تم تحديد موضع البت الخاص بها في شكل ثنائي.
- بشكل عام تغطي كل بت تكافؤ جميع وحدات البت، حيث يكون الاتجاه “AND” من موضع التكافؤ وموضع البت
- إذا كانت غير صفرية ونظراً لأنّه يتم التحقق من وجود تكافؤ متساوٍ، فإنّه يتم تعيين بت تكافؤ إلى 1 إذا كان العدد الإجمالي للوحدات في المواضع التي يتحقق منها.
- إذا كانت صفرية، عيِّن بت التكافؤ إلى 0 إذا كان العدد الإجمالي للوحدات في المواضع التي يتحقق فيها متساويًا.
كيفية تحديد بتات التكافؤ
- يتم حساب بت (R1) باستخدام اختبار التكافؤ في جميع مواضع البتات التي يشتمل تمثيلها الثنائي على 1 في الموضع الأقل أهمية، حيث أنّ (R1) هي البتات 1 و3 و5 و7 و9 و11.
- للعثور على البت الفائض (R1)، يتم التحقق من التكافؤ الزوجي ونظراً لأنّ العدد الإجمالي لـ 1 في جميع مواضع البت المقابلة لـ R1 هو رقم زوجي، فإن قيمة R1 (قيمة بت التكافؤ) = 0.
- يتم حساب بت R2 باستخدام فحص التكافؤ في جميع مواضع البتات التي يشتمل تمثيلها الثنائي على 1 في الموضع الثاني من البت الأقل أهمية، وحيث أنّ (R2) هي البت 2 و3 و6 و7 و10 و11.
- للعثور على البت الفائض R2 يتم التحقق من التكافؤ الزوجي، نظراً لأنّ العدد الإجمالي لـ 1 في جميع مواضع البت المقابلة لـ R2 هو عدد فردي، فإن قيمة R2 (قيمة بت التكافؤ) = 1.
- يتم حساب بت (R4) باستخدام فحص التكافؤ في جميع مواضع البتات التي يشتمل تمثيلها الثنائي على 1 في الموضع الثالث من البت الأقل أهمية، حيث أنّ (R4) هي البت 4 و5 و6 و7.
- للعثور على البت الفائض R4، يتم التحقق من التكافؤ المتساوي، ونظراً لأنّ العدد الإجمالي لـ 1 في جميع مواضع البت المقابلة لـ R4 هو عدد فردي فإنّ قيمة R4 (قيمة بت التكافؤ) = 1.
- يتم حساب بت R8 باستخدام فحص التكافؤ في جميع مواضع البتات التي يشتمل تمثيلها الثنائي على 1 في الموضع الرابع من البت الأقل أهمية، حيث أنّ (R8) هي البت 8 و9 و10 و11.
- للعثور على البت الزائد R8) يتم التحقق من التكافؤ المتساوي، ونظراً لأنّ العدد الإجمالي لـ 1 في جميع مواضع البت المقابلة لـ R8 هو رقم زوجي، فإنّ قيمة R8 (قيمة بت التكافؤ) = 0.