کدِ extended Hamming میتواند در قراردادِ حداکثر دو خطایِ بیتی، تکخطا را اصلاح و دوخطا را آشکار کند. تشخیصِ دوخطا به معنیِ داشتنِ دادهٔ اصلاحشده نیست. این تمرین برای تمامِ پیامهایِ چهاربیتی، خطاها را عمداً تزریق میکند و مرزِ تضمین را با یک ضدنمونهٔ سهخطایی نشان میدهد.
چهار بیتِ داده، هشت جایگاه
شمارهگذاریِ این فایل از یک است. دادهها در جایگاههایِ ۳،۵،۶ و۷،بیتهایِ parityِ همینگ در۱،۲ و۴ وparityِ کل در۸ قرار دارند. جمعِ بیتها برای کنترل، پیمانهٔ دو است؛ این چیدمان را باید همراهِ کد نگه داشت.
parityِ شمارهٔ۱، جایگاههایی را میپوشاند که بیتِ یکانِ اندیسشان روشن است؛ parityِ ۲ و۴ هم با بیتِ متناظرِ اندیس کار میکنند. بیتِ ۸ طوری ساخته میشود که جمعِ کلِ هشت بیت زوج باشد. تمامِ ۱۶پیامِ چهاربیتی واقعاً کد میشوند و بدونِ خطا دوباره همان داده را میدهند.
دو مشاهده برای تصمیمِ گیرنده
گیرنده سه کنترلِ داخلی را دوباره میگیرد و از آنها syndromeِ صفر تا۷ میسازد. جداگانه parityِ کلِ هشت بیت را نیز حساب میکند. فقط دیدنِ syndrome کافی نیست؛ این دو مشاهده با هم در قراردادِ خطا معنا دارند.
| syndrome | parityِ کل | رفتار تحتِ فرضِ حداکثر دو خطا |
|---|---|---|
| صفر | زوج | خطایی دیده نشد |
| غیرصفر | فرد | اصلاحِ جایگاهِ syndrome |
| صفر | فرد | اصلاحِ parityِ کل در۸ |
| غیرصفر | زوج | دوخطا؛ داده قابلِ اتکا نیست |
در حالتِ آخر، کد data=null برمیگرداند؛ بیتهایِ ظاهراً موجود را پاسخِ اصلاحشده معرفی نمیکند.
۱۲۸تکخطا و۴۴۸دوخطا
برای هر۱۶پیام، هر یک از هشت جایگاه را یک بار برمیگردانیم؛۱۲۸اجرایِ تکخطایی داریم. decoder هم جایگاهِ اصلاح را درست گزارش میکند و هم چهار بیتِ اصلی را بازمیسازد. خطایِ یکی از parityهایِ داخلی،بیتِ داده وparityِ کل در۸ جدا در دفتر مشخصاند.
سپس برای هر پیام، هر جفتِ متمایز از هشت جایگاه را برمیگردانیم؛۱۶ضربدر۲۸، یعنی۴۴۸اجرا. همه با double_detected وdataِ نامعتبر گزارش میشوند. این شمارش، نرخِ خطایِ یک کانالِ واقعی یا درصدِ قابلیتِ اطمینانِ سختافزار نیست.
oracle از فاصلهٔ دفترِ کد میآید
برای کنترلِ مستقل، تمامِ ۲۵۶رشتهٔ هشتبیتیِ دریافتی را میگیریم. فاصلهٔ همینگِ هر رشته تا تمامِ ۱۶کلمهٔ معتبر با شمارشِ مستقیمِ بیتهایِ متفاوت محاسبه میشود؛ این مسیر syndrome یا دستورِ اصلاح را استفاده نمیکند.
۱۶رشته فاصلهٔ صفر،۱۲۸رشته نزدیکترینِ یکتایِ فاصلهٔ یک و۱۱۲رشته کمترینِ فاصلهٔ دو دارند. در دو حالتِ اول، دادهٔ decoder با کلمهٔ نزدیک برابر است؛ در حالتِ سوم، خروجیِ داده ندارد. تعدادِ ۱۱۲رشتهٔ متمایز را با۴۴۸تزریقِ پیامبهپیام اشتباه نگیرید؛ یک دریافت میتواند از چند پیام با دو خطا حاصل شود.
سه خطا میتواند درست طبقهبندی نشود
پیامِ همهصفر را کد و بیتهایِ ۱،۲ و۳ را خراب میکنیم. syndrome صفر وparityِ کل فرد میشود؛ decoder آن را خطایِ بیتِ ۸ مینامد، ولی دادهٔ حاصل با اصل فرق دارد. این ضدنمونه واقعاً اجرا شده و صریحاً بیرونِ تضمینِ حداکثر دو خطاست.
طولِ اشتباه،بولین،بیتِ غیر۰یا۱ و ورودیِ غیرلیست در چهار آزمون رد میشوند. منبعِ Open Logic،parityِ کل را در جایگاهِ صفر دارد؛ قراردادِ ما آن را در۸ میگذارد و اجرایِ VHDLِ همان پروژه نیست. parity نه امضایِ هویت است و نه محرمانگی.
هافمن دربارهٔ کدگذاریِ فشرده است و اثباتِ مرکل دربارهٔ inclusion در ریشهٔ موردِ اعتماد؛ هیچکدام این مدلِ اصلاحِ بیت نیستند. ادامه در مبانی هوش مصنوعی؛ این کد،کدکِ صوت یا سازوکارِ تأییدشدهٔ اپرا نیست.
فایل تمرین و منبع
کد مستقلِ تمرین و کنترلها؛ Python · تمامِ ورودیها و نتیجهٔ اجرای واقعیِ تمرین؛ JSON
- یادداشتِ اصلی MIT۶٫۰۲،آخرین اصلاح۲۳سپتامبر۲۰۱۲؛ بخش۵٫۷و۵٫۷٫۱ صفحات چاپی۵۹تا۶۱،parity وsyndrome و شمارهگذاری خوانده شد
- مستنداتِ اصلی Open Logic FT؛ SECDED،پرچمِ دادهٔ نامعتبر در دوخطا و نبودِ تضمین برایسهخطا؛ چیدمان وVHDLِ آن عینِ این تمرین نیست
منابع در 2026-11-04 خوانده شدند؛ این تاریخ، تاریخ انتشار منبع نیست. مثالها و فایلهای این راهنما آموزشی و ساختهٔ تحریریهاند.