کد پیچشی

از ویکی‌پدیا، دانشنامهٔ آزاد
پرش به: ناوبری، جستجو

در مخابرات ٬ کدهای پیچشی (به انگلیسی: 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، 1979. 

پیوند به بیرون[ویرایش]

منابع[ویرایش]

  • مشارکت‌کنندگان ویکی‌پدیا، «convolutional code»، ویکی‌پدیای انگلیسی، دانشنامهٔ آزاد (بازیابی در ۲۴ اردیبهشت ۱۳۹۲).