پرش به محتوا

کد کانولوشنال

از ویکی‌پدیا، دانشنامهٔ آزاد

نسخه‌ای که می‌بینید نسخه‌ای قدیمی از صفحه است که توسط Xqbot (بحث | مشارکت‌ها) در تاریخ ‏۲۰ آوریل ۲۰۲۰، ساعت ۱۱:۲۷ ویرایش شده است. این نسخه ممکن است تفاوت‌های عمده‌ای با نسخهٔ فعلی داشته باشد.

در مخابرات ٬ کدهای پیچشی (به انگلیسی: convolutional code) نوعی کد تصحیح خطا هستند که یک رشته‌ی m بیتی را به n بیت تبدیل می کنند که n ≥ m و m/n نرخ کدگذاری است. این تبدیل٬ در هر لحظه تابعی از k نماد قبلی است.

کدهای پیچشی به طور گسترده در سامانه‌های مخابراتی کاربرد دارند٬ از جمله در مخابرات ماهواره‌ای و تلفن همراه. پیش از کدهای توربو ٬ عملکرد این کدها به حد شنون نزدیکترین بود.

پیاده‌سازی در متلب

می‌توان این کدها را به راحتی در متلب پیاده‌سازی کرد. برای نمونه سیستم زیر را به این صورتی که در ادامه می‌آید می‌توان شبیه‌سازی کرد:

Img.1. Rate 1/3 non-recursive, non-systematic convolutional encoder with constraint length 3

در تصویر:

n1 = m1 + m0 + m-1
n2 = m0 + m-1
n3 = m1 + m-1.
    G1 = 7;% octal 7 corresponds to binary 111 n1 = m1 + m0 + m-1 
    G2 = 3;% octal 3 corresponds to binary 011 n1 = m0  + m-1 
    G3 = 5;% octal 5 corresponds to binary 101 n1 = m1  + m-1 
    constLen = 3;   % Constraint length 
    
    % Create the trellis that represents the convolutional code
    convCodeTrellis = poly2trellis(constLen, [ G1 G2 G3 ]);
    uncodedWord = [1 ];
    codedWord1 = convenc(uncodedWord, convCodeTrellis) 
    uncodedWord = [1 0 0 0];
    codedWord2 = convenc(uncodedWord, convCodeTrellis)

خروجی می شود:

codedWord1 =

1     0     1

codedWord2 =

1     0     1     1     1     0     1     1     1     0     0     0

کدهای توربو

کدهای پیچشی که با الگوریتم ویتربی دیکد می‌شوند ٬ در حال جایگزین شدن با کدهای توربو (از سال ۱۹۹۳) هستند که عملکرد آن‌ها به حد شنون بسیار نزدیکتر است و الگوریتم دیکدینگ آن‌ها نیز از پیچیدگی محاسباتی بسیار کمتری از الگوریتم ویتربی برخوردار است .

مطالعه بیشتر

  • Andrew Viterbi (۱۹۷۹). Principles of Digital Communications and Coding. McGraw-Hill.

پیوند به بیرون

منابع