پرش به محتوا

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

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

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

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

[ویرایش]