کد تصحیح خطا

در رایانش، مخابرات، نظریه اطلاعات و نظریه کدگذاری، **تصحیح خطای پیشرو (FEC)** یا **[[کدگذاری کانال]]**، تکنیکی برای کنترل خطاها در ارسال داده‌ها از طریق کانال‌های مخابراتی غیرقابل اعتماد یا پرنوفه می‌باشد.

ایده اصلی این است که فرستنده پیام را به صورت افزونه‌ای، اغلب با استفاده از **کد تصحیح کننده خطا یا کد تصحیح خطا (ECR)** کدگذاری می‌کند. این افزونگی به گیرنده این امکان را می‌دهد که نه تنها خطاهایی را که ممکن است در هر نقطه‌ای از پیام رخ دهد تشخیص دهد، بلکه اغلب تعداد محدودی از خطاها را نیز تصحیح کند؛ بنابراین ممکن است به کانال معکوس، برای ارسال مجدد نیازی نباشد. هزینه این روش افزایش و ثبات پهنای باند پیشرو می‌باشد.

ریاضیدان آمریکایی ریچارد همینگ این حوزه را در دهه ۱۹۴۰ پایه‌گذاری کرد و اولین کد تصحیح خطا را در سال ۱۹۵۰ به وجود آورد: کد همینگ(۷، ۴).

تحصیح خطای پیشرو (FEC)، می‌تواند در موقعیت‌هایی که ارسال مجدد هزینه بر یا ناممکن است، همانند لینک‌های ارتباطی یک طرفه یا درحین ارسال پیام به چند گیرنده به صورت چند بخشی، به کار گرفته شود. اتصالات با تأخیر طولانی نیز می‌توانند از این روش بهره ببرند؛ در مورد یک ماهواره که به دور مدار اورانوس در چرخش است، ارسال مجدد به دلیل خطا، می‌تواند تأخیری به مدت ۵ ساعت ایجاد کند. FEC به‌طور گسترده در مودم‌ها و شبکه‌های سلولی نیز استفاده می‌شود.

پردازش FEC در یک گیرنده ممکن است به یک جریان بیت دیجیتالی یا دمدوله سازی یک حامل دیجیتالی مدوله شده اعمال شود. در مورد بخش دوم، FEC یک بخش جدایی ناپذیر از مبدل آنالوگ به دیجیتال اولیه در گیرنده‌ها می‌باشد. رمزگشای ویتربی یک الگوریتم انتخابی نرم را برای وامدوله‌سازی داده‌های دیجیتال از یک سیگنال آنالوگ آلوده به نویز پیاده‌سازی می‌کند. بسیاری از رمزگشاهای FEC قادرند یک سیگنال نرخ خطای بیت را تولید کند که می‌تواند به عنوان یک بازخورد برای تنظیم الکترونیک دریافت آنالوگ استفاده شود.

اطلاعات FEC به دستگاه‌های ذخیره‌سازی انبوه (مغناطیسی، نوری، حالت جامد/ فلش) اضافه می‌شود تا امکان بازیابی داده‌های آلوده را فراهم کند، و همچنین به عنوان حافظه رایانه‌ای ئی‌سی‌سی در سامانه‌هایی که به شرایط ویژه‌ای برای اعتبار و اطمینان نیاز دارند استفاده می‌شوند.

حداکثر مقدار خطاها یا بیت‌های گمشدهای که می‌تواند تصحیح شود بر اساس طراحی ECC تعیین می‌شود، بنابراین کدهای FEC مختلف برای شرایط متفاوتی مناسب می‌باشند. به‌طور کلی، یک کد قوی تر افزونگی بیشتر را ایجاد می‌کند که نیاز دارد توسط پهنای موجود منتقل شود و این کار نرخ بیت مؤثر را کاهش و در عین حال نسبت سیگنال به نویز مؤثر دریافت شده را افزایش می‌دهد. نظریه کدگذاری کانال پُرنوفه کلود شانون در محاسبه حداکثر مقدار پهنای باند ارتباطی قابل دستیابی برای یک خطای احتمالی قابل قبول حداکثری استفاده می‌شود. این قضیه یک محدودیت بر حداکثر نرخ انتقال اطلاعات تئوری یک کانال همراه با سطحی از نوفه پایهٔ مشخص را به وجود می‌آورد. هرچند، اثبات آن مفید نیست و به این دلیل هیچ بینشی در مورد چگونگی ساخت یک کد درحال دستیابی به ظرفیت ارائه نمی‌دهد. بعد از سال‌ها تحقیق و پژوهش، برخی از سیستم‌های FEC پیشرفته همانند کد قطبی به حداکثر نظری که در ظرفیت کانال شانون تحت عنوان قاب با طول بینهایت مطرح شده، نزدیک شده‌اند.

## جستارهای وابسته
* Burst error-correcting code
* Code rate
* Erasure codes
* تشخیص و تصحیح خطا
* Error-correcting codes with feedback
* کد خطی
* تصحیح خطای کوانتومی
* Soft-decision decoder
## منابع

*"Hamming codes for NAND flash memory devices" Archived 21 August 2016 at the Wayback Machine. EE Times-Asia. Apparently based on "Micron Technical Note TN-29-08: Hamming Codes for NAND Flash Memory Devices" Archived 29 August 2017 at the Wayback Machine. 2005. Both say: "The Hamming algorithm is an industry-accepted method for error detection and correction in many SLC NAND flash-based applications."
* Tse, David; Viswanath, Pramod (2005), Fundamentals of Wireless Communication, Cambridge University Press, UK
*  Charles Wang; Dean Sklar; Diana Johnson (Winter 2001–2002). "Forward Error-Correction Coding". Crosslink. 3 (1). The Aerospace Corporation. Archived from the original on 14 March 2012. Retrieved 5 March 2006.
*Charles Wang; Dean Sklar; Diana Johnson (Winter 2001–2002). "Forward Error-Correction Coding". Crosslink. 3 (1). The Aerospace Corporation. Archived from the original on 14 March 2012. Retrieved 5 March 2006. How Forward Error-Correcting Codes Work]
*Maunder, Robert (2016). "Overview of Channel Coding"
*Glover, Neal; Dudley, Trent (1990). Practical Error Correction Design For Engineers (Revision 1.1, 2nd ed.). CO, USA: Cirrus Logic. ISBN 0-927239-00-0.
* Hamming, Richard Wesley (April 1950). "Error Detecting and Error Correcting Codes". Bell System Technical Journal. 29 (2). USA: AT&T: 147–160. doi:10.1002/j.1538-7305.1950.tb00463.x. [S2CID](https://en.wikipedia.org/wiki/S2CID_(identifier)) 61141773.

رده:آشکارسازی و اصلاح خطا