كدهاي بلوكي و كدهاي كانولوشن
فصل اول : كدهاي بلوكي و كدهاي كانولوشن
1-1- مقدمه :
امروزه دو نوع عمومي از كدها استفاده مي شود : كدهاي بلوكي و كدهاي كانولوشن . انكدينگ يك كد بلوكي را به تر تيبي از اطلاعات در قالب بلوكهاي پيغام از k بيت اطلاعات براي هر كدام تقسيم مي كند . يك بلوك پيغام با k مقدار باينري كه بصورت u=(u1,u2,…,uk) نشان داده مي شود ، يك پيغام ناميده مي شود . در كدينگ بلوكي از سمبل u جهت نشان دادن k بيت پيغام از كل ترتيب اطلاعات استفاده مي گردد .
تعداد كل بيت هاي پيغام متفادت موجود پيغام است . انكدر هر پيغام u را بطور غير وابسته ، بصورت يك n تايي v=(v1,v2,…,vn) كه كلمه كد (codeword) ناميده مي شود ، ارسال مي دارد . در كدينگ بلوكي سمبل v براي مشخص كردن سمبل بلوك از كل ترتيب انكد شده استفاده مي گردد .
از پيغام قابل ساخت ، كلمه كد مختلف در خروجي انكدر قابل ايجاد است . اين مجموعه كلمات كد با طول n يك كد بلوكي (n,k) ناميده مي شود. نسبت R=k/n نرخ كد ناميده مي شود . نرخ كد مي تواند تعداد بيتهاي اطلاعات كه انكد مي شود را در هر سمبل انتقال يافته ،محدود كند . در حالتيكه n سمبل خروجي كلمه كد كه فقط به k بيت ورودي پيغام وابسته باشد ، انكدر را بدون حافظه (memory-less) گويند . انكدر بدون حافظه با تركيبي از مدارات لاجيك قابل ساخت يا اجرا است . در كد باينري هر كلمه كد v باينري است . براي اينكه كد باينري قابل استفاده باشد ، بعبارت ديگر براي داشتن كلمات كد متمايز بايد يا باشد . هنگاميكه k<n باشد ، n-k بيتهاي افزونگي (redundant) مي تواند به بيتهاي يك پيغام اضافه گردد و كلمه كد را شكل دهد . اين بيتهاي اضافه شده توانايي كد را در مبارزه با نويز كانال فراهم مي آورد . با نرخ ثابتي از كد ، بيت هاي افزونگي بيشتري را مي توان با افزايش دادن طول بلوك n از كد ، با پيغام جمع كرد و اين تا هنگامي است كه نسبت k/n ثابت نگه داشته شود .
چگونگي انتخاب بيت هاي افزونگي تا اينكه ارسال قابل اطميناني در يك كانال نويزي داشته باشيم از اصلي ترين مسائل طراحي يك انكدر است .
انكدر يك كد كانولوشن نيز به همان ترتيب ، k بيت بلوكي از ترتيب اطلاعات u را مي پذيرد و ترتيب انكد شده ( كلمه كد ) v با n سمبل بلوكي را مي سازد . بايد توجه كرد كه در كدينگ كانولوشن سمبل هاي u و v جهت مشخص كردن بلوكهاي بيشتر از يك بلوك استفاده مي گردند . بعبارت ديگر هر بلوك انكد شده اي نه تنها وابسته به بلوك پيغام k بيتي متناظرش است ( در واحد زمان ) بلكه همچنين وابسته به m بلوك پيغام قبلي نيز مي باشد . در اين حالت انكدر داراي حافظه (memory ) با مرتبه m است .
محصول انكد شده ترتيبي است از يك انكدر k ورودي ، n خروجي با حافظه مرتبه m كه كد كانولوشن (n,k,m) ناميده مي شود . در اينجا نيز R=k/n نرخ كد خواهد بود و انكدر مذكور با مدارات لاجيك ترتيبي قابل ساخت خواهد بود . در كد باينري كانولوشن ، بيت هاي افزونگي براي تقابل با كانال نويزي مي تواند در حالت k<n يا R<1 به ترتيب اطلاعات اضافه مي گردد .
معمولاً k و n اعداد صحيح كوچكي هستند و افزونگي بيشتر با افزايش مرتبه حافظه از اين كدها بدست مي آيد . و از اين رو k و n و در نتيجه R ثابت نگه داشته مي شود .
اينكه چگونه استفاده كنيم از حافظه تا انتقالي قابل اطمينان در يك كانال نويزي داشته باشيم ، از مسائل مهم طراحي انكدر ها محسوب مي شود .
1-2– ماكزيمم احتمال ديكدينگ Maximum Likelihood Decoding
يك بلوك دياگرام از سيستم كد شده در يك كانال AWGN با كوانتيزاسيون محدود خروجي در شكل 1 نشان داده شده است :
در اين سيستم خروجي منبع u نشاندهنده پيغام k بيتي ، خروجي انكدر ، v نشاندهنده كلمه كد n- سمبلي خروجي ديمدولاتور ، r نشاندهنده آرايه Q دريافت شده n تايي متناظر و خروجي ديكدر نشاندهنده تخميني از پيغام انكد شده k بيتي است . در سيستم كد شده كانولوشن ، u ترتيبي از kl بيت اطلاعات و v يك كلمه كد است كه داراي N=nl+nm=n(l+m) سمبل مي باشد . kl طول ترتيب اطلاعات و N طول كلمه كد است . سرانجام nm سمبل انكد شده بعد از آخرين بلوك از بيتهاي اطلاعات در خروجي ايجاد مي گردد . اين عمل در طول m واحد زماني حافظه انكدر انجام مي پذيرد . خروجي دي مدولاتور ، r يك N تايي دريافت شده Q- آرايه اي است و خروجي يك تخمين از ترتيب اطلاعات مي باشد. در واقع ديكدر مي بايستي يك تخمين از ترتيب اطلاعات u براساس ترتيب دريافت شده r توليد نمايد . پس يك تناظر يك به يك بين ترتيب اطلاعات u و كلمه كد v وجود دارد كه ديكدر بر اين اساس مي تواند يك تخمين از كلمه كد v بدست آورد . روشن است كه در صورتي است ، اگر و فقط اگر .