همانطور که در مطلب اصول اوليه کدگذاري دادهها به طور مفصل توضيح داديم، براي انتقال دادهها چه به صورت ديجيتال و چه به صورت آنالوگ، بسته به نوع محيط انتقال دادههاي بايد به صورت ديجيتال يا آنالوگ کد گذاري شوند. در اين مقاله تلاش بر اين است که خوانندگان با تکنيکهاي کدگذاري به صورت دقيق تر آشنا شوند.
وقتي ميخواهيم از دستگاه ديجيتالي دادههايي را به دستگاه ديجيتالي ديگري ارسال کنيم، در ساده ترين حالت سيگنالهاي ارسالي نيز ديجيتالي خواهند بود. مانند ارسال اطلاعات از کامپيوتر به چاپگر. در اينگونه ارسالها صفر و يک به پالسهاي سيگنال تبديل ميشوند و سطح ولتاژ نشاندهنده مقدار داده است.
در مقاله "اصول اوليه کدگذاري دادهها" دلايل نياز به کدگذاري را توضيح داديدم. مهم ترين اين دلايل، هم گام سازي ميان فرستنده و گيرنده و کاهش ميزان خطاست. فرض کنيد يک ها با ولتاژ hight و صفر ها با ولتاژ low کد شوند. اگر ارسال 8 بيت در رسانه انتقال 1 ثانيه زمان ببرد. و فرستنده با نرخ 8 بيت بر ثانيه دادهها را ارسال ميکند. اگر به دلايلي، گيرنده در يکي از اين ارسالها 1.2 ثانيه زمان براي خواندن صرف کند. با اين حساب1 بيت اضافي ارسال شده خوانده ميشود که متعلق به رشتهي بيتي اوليه نيست و اين يک اضافي در هر بار رمز گشايي سبب ايجاد خطا ميشود.
براي کد گذاري داده ديجيتال به سيگنال ديجيتال 3 دسته روش اصلي وجود دارد
• Unipolar يا تک قطبي
• Polar يا قطبي
• Bipolar يا دو قطبي
Unipolar يا تک قطبي
اين روش کد گذاري از تمام روشها ساده تر است. به اين صورت که براي ارسال سيگنال از ولتاژ صفر براي نشان دادن صفر و از ولتاژ بالا يا پايين (يکي از پلاريته ها) براي نشان دادن يک استفاده ميشود. اين روش به دليل استفاده از تنها يک پلاريته، تک قطبي نام گرفته است. در اين روش مشکلاتي چون هم گام سازي به چشم ميخورد.
Polar يا قطبي
در اين روش بر خلاف روش قبل که تنها از يکي از سطوح ولتاژ استفاده کرديم، از دو سطح ولتاژ استفاده ميکنيم. هر چه تعداد سطوح ولتاژ بيشتر شود، تشخيص دادن کدهاي ارسالي سختتر خواهد شد. اين روش خود سه زير مجموعه معروف دارد.
• RZ يا بازگشت به صفر (مخفف Return to Zero)
• NRZ يا عدم بازگشت به صفر (مخفف Non Return to Zero)
• Biphase يا دوفازي
کدگذاري RZ
همان طور که توضيح داديم اگر رشته بيتي شامل تعداد زيادي صفر يا يک پشت سر هم باشد، گيرنده ممکم است در تشخيص آنها دچار خطا شود. يک راه حل ساده اما پر هزينه براي بر طرف کردن اين مشکل، ارسال سيگنال کلاک (سيگنالي که با توجه به آن بيتهاي يک و صفر تفسير ميشوند) به صورت جداگانه است. يکي از ويژگيهاي مهم روشهاي کد گذاري سعي در گنجاندن سيگنال کلاک در خود سيگنال داده است. به طوري که سيگنال ارسالي خود عمل کلاک و هم گام سازي را انجام دهد.
براي دست يابي به هدف، سيگنال به ازاي هر بيت بايد تغيير کند. در روش RZ، سيگنال نه تنها به ازاي هر بيت تغيير ميکند بلکه در طول يک دوره بيتي نيز تغيير ميکند. شکل را ببينيد تا خوب متوجه شويد.
همان طور که مشاهده ميکنيد، در اين روش براي نشان دادن يک از ولتاژ high به صفر ميرويم و براي نشان دادن صفر از ولتاژ low به صفر ميرويم. در واقع ما در نيمه هر دوره بيتي بازگشت به صفر داريم.
کد گذاري NRZ
در اين روش باز گشت به صفر نداريم و تغييرات سيگنال تنها در پايان هر دوره بيتي ( مدت زماني که طول ميکشد تا يک بيت ارسال شود) رخ ميدهد. در اين روش يک را با سطح ولتاژ high و صفر را با سطح ولتاژ low نشان ميدهيم.
نسخه ديگري از اين روش کد گذاري وجود دارد که به NRZ-I يا NRZ-m (NRZ-mark) مشهور است. اين روش کدگذاري بر مبناي نوع ورودي قبلي است. به اين معنا که اگر در آغاز دوره بيتي 1 داشتيم، در سطح سيگنال تغيير ايجاد ميکنيم ولي اگر صفر داشتيم، سطح سيگنال ثبت ميماند و تغيير نميکند. براي درک بهتر حتما تصوير زير را ببينيد.
کد گذاري دو فازي
روش دوفازي پدر اين روش سعي شده مشکلات دو روش قبلي تا حدودي حل شود. خود اين روش به قسمت منچستر (Manchester) و منچستر تفاضلي (Differential Manchester) تقسيم بندي ميشود که در مقاله بعدي به توضيح آن خواهيم پرداخت.