پورتهای سریال و موازی
فکر می کنید سابقه ی ارتباطات دیجیتال چند سال باشه؟ شاید تعجب کنید اگه بگم 160 سال! از زمانی که ساموئل مورس و همکارش آلفرد وایل اولین پیام تلگراف رو در در 24 می 1844 از مریلند به واشنگتن فرستادند تقریبا 160 سال میگذره. ممکنه بگید پس انسان های بدوی هم که با آتش با هم ارتباط برقرار می کردن لابد تو تاریخچه ی ارتباطات دیجیتال قرار می گیرند، پاسخ مثبته! اونها با هم ارتباط دیجیتال سریال آسنکرون داشته اند!!! البته پروتکل هم داشته ولی متاسفانه من اسمشو نمی دونم!
خب اونها با عبور دادن پارچه از روی آتش (به عنوان کریر) دود اون رو قطع و وصل میکردن و در واقع با ایجاد پف، دود رو مدوله می کردن و اینطوری صفر و یک منطقی تولید میکردن! و فرد گیرنده این پیام رو بر حسب یک قرارداد از پیش تعریف شده دیکد میکرده و پیام رو استخراج می کرده. حتی دقیقا یک بایت (کلمه) بیت شروع و پایان داشته! البته سرعتش خیلی پایین بود مثلا یک یا نیم بایت (حرف) در دقیقه!
اما منظور من از تاریخچه ی مخابرات دیجیتال، شکل الکترونیکی اون بود که همونطور که گفتم این مسئله به اختراع تلگراف برمیگرده.
مثلا کد زیر به زبان مورس یعنی IBMW:
=.=...===.=.=.=...===.===...=.===.===
به صورتی که "=" معادل یک منطقی و "." معادل صفر منطقی است. مقایسه کنید با کد این کلمه در استاندارد اسکی:
01001001010000100100110101010111
که در اینجا "1" معادل یک منطقی و "0" معادل صفر منطقی است.
تلگراف به مرور زمان پیشرفت کرد و شبکه های تلکس بر مبنای آن به وجود آمدند تا جاییکه امروز ایمیل از نوادگان همان تلگراف است!
ارتباطات سریال
تعریف
مبادله ی بیت به بیت اطلاعات تنها از طریق یک کانال (البته بجز زمین) را ارتباط سریال می گویند.
انواع
سنکرون (همزمان):
یک سیگنال زمانی از طریق یک کانال مجزا همراه با پیام ارسال می شود. (مثل استاندارد I2C و RS232 )
آسنکرون (غیرهمزمان):
در این روش اطلاعات زمان بندی همراه با سیگنال ارسال می شود. (مثل RS232, RS485)
بررسی
از لحاظ تئوری تنها یک سیم برای انتقال اطلاعات سریال به صورت آسنکرون لازم است اما در واقعیت این مسئله عملی نیست. به عنوان مثال اگر یک بیت از اطلاعات بر اثر خطا یا نویز تغییر کند ممکن است کل اطلاعات بعد از آن یک بیت شیفت پیدا کند و پس از تفسیر و تبدیل به دیتای موازی کل اطلاعات مخدوش شود. بنابراین نیاز به استاندارهایی وجود دارد که امکان ارتباط قابل اطمینان را فراهم کند. یکی از این استانداردها RS232-C است که در سال 1969 توسط موسسه EIA تعریف شد. اگرچه نام این استاندارد RS232-C است اما معمولا به نام RS232 شناخته می شود و مخفف Recommended Serial می باشد. این استاندارد معمولا در پورت سریال کامپیوترهای شخصی استفاده می شود.
پروتکل ارتباطی RS232 در لایه ی هفتم مدل OSI قرار می گیرد و موارد زیر در آن تعریف شده است:
- مشخصات الکتریکی سیگنال از قبیل سطح ولتاژ، نرخ سیگنال، زمان بندی و Slew Rate، سطح مقاومت ولتاژ، رفتار اتصال کوتاه، بیشینه ی جریان ظرفیتی و طول کابل
- مشخصات مکانیکی واسط از قبیل سوکت اتصال و تعریف پین ها.
- عملکرد هر مدار در کانکتور واسط
- زیر مجموعه های استاندارد از مدارهای واسط برای آن کاربرد ارتباطی
همانطور که گفته شد این استاندارد در لایه های زیرین مدل OSI کار می کند و مشخصات لایه های بالا از جمله کدگذاری کاراکتر (مثلا ASCII) و همچنین قالب بندی کاراکتر (مثل بیت شروع و پایان یا بیت توازن) در قالب این استاندارد قرار نمی گیرد و معمولا بوسیله ی نرم افزار تعیین و تفسیر می شوند. این استاندارد سقف ماکزیمم نرخ بیت را 20.000 bps تعریف کرده است در حالی که بسیاری از تجهیزات جانبی مثل مودم ها از این اندازه تجاوز کرده و با نرخ هایی بالاتر از این (مثل: 38.400 ، 37.600 و 115.200) با سطح ولتاژ RS232 کار می کنند.
سطوح سیگنال RS23:
در این استاندارد سطح ولتاژ 3+ تا 12+ نمایانگر وضعیت Space یا صفر منطقی و بازه ی 3- تا 12- ولت نمایشگر وضعیت Mark یا یک منطقی می باشد. این در حالی است که تجهیزات استاندار TTL (مثل میکروکنترلر 8051) با سطوح بین 0 و 5 ولت کار می کنند. برای تبدیل ولتاژ RS232 و TTL به یکدیگر باید از مبدل های ولتاژ استفاده کرد که یکی از این ها مدار مجتمع MAX232 و یا HIN232 می باشد. که MAX232 یک تراشه ی 16 پایه است که شامل 2 فرستنده و 2 گیرنده است. در زیر یک مدار نمونه را برای کار با این IC مشاهده می کنید.
ولت، ولتاژ نامی در حالت بی باری است و معمولا در حالت مدار باز دقیقا 12 ولت نیست و کمی کمتر است، مثلا در مورد PC من این اندازه 11.25 ولت بود. اما در مورد جریان نیز، جریان نامی بین 7 تا 10 میلی آمپر در حالت اتصال کوتاه است و این مقدار بستگی که مدار اینترفیس PC (شامل UART و غیره) شما دارد و مثلا در مورد کامپیوتر من این مقدار 8.9 میلی آمپر بود. استاندارد RS232 برای وسایل استاندارد با مقاومت بین 3 تا 7 کیلو اهم طراحی شده است و بنابراین با افزایش جریان، ولتاژ پورت شدیدا افت می کند و معمولا به ازای هر میلی آمپر جریان اضافی، 1 الی 2 ولت فشار کم می شود و در نهایت روی حدود 0.7 ولت متوقف می شود. لازم به ذکر است که این پورت بر خلاف پورت موازی در مقابل اتصال کوتاه محافظت شده است و همان طور که گفته شد در این حالت جریانی بین 7 تا 10 میلی آمپر می دهد یا می کشد.
:: توپولوژی شبکه ای
یکی از معایب استاندارد RS232 بر خلاف RS422 و RS485 این است که تنها برای ارتباط نظیر به نظیر (Peer to Peer) طراحی شده است و امکان شبکه شدن با دیگر ادوات را ندارد. این استاندارد برای فواصل تا حدود 15 متر مناسب می باشد و برای فواصل بیشتر می توان از روش 20mA loop استفاده کرد. (مثل پروگرامر بعضی PLC های زیمنس) اما روش مناسب دیگر در محیط های صنعتی استفاده از RS485 می باشد که در فواصل زیاد تا فرکانس 1MHz نیز کار می کند. بنابراین RS232 برای ارتباطات کم دامنه مثل اتصال دو PC ،PC با یک دستگاه یا دو دستگاه با یکدیگر استفاده می شود.
:: دو مفهومی را که باید در مورد استاندارد RS232 بدانید، اصطلاحات DTE و DCE هستند:
DTE سرنام Data Terminal Equipment است
و DCE مخفف Data Communications Equipment.
این عبارات برای نشان دادن پین های کانکتور یک دستگاه و جهت ارتباطی سیگنال در پین ها می باشند. معمولا کامپیوتر یک DTE می باشد و دستگاه های دیگر یک DCE و شما می توانید در ادامه ی توضیحات DTE را یک کامپیوتر و DCE را یک دستگاه دیگر فرض کنید. در این استاندارد DTE از یک کانکتور 9 پین Female (یا 25 پین) و DCE از یک کانکتور 9 پین Male (یا 25 پین) استفاده می کند. بنابراین می توان یک DCE را مستقیما به یک DTE کرد اما در حالتهای غیر از این باید از کابل های Null Modem استفاده کرد که در ادامه به آن خواهم پرداخت. اگرچه استاندارد RS232 برای کانکتور 25 پین نیز تعریف شده است اما ما در اینجا بحثمان را بر روی کانکتور 9 پین متمرکز می کنیم چون اغلب PC ها از این کانکتور استفاده می کنند و DB9 نام دارد.
:: قالب اطلاعات ارسالی:
همانطور که در پست قبل اشاره شد مطالب مربوط به قالب بندی کاراکتر و فریم اطلاعاتی در چارچوب این استاندارد قرار نمی گیرد و توسط نرم افزار تعیین می شود. به طوری که در یک قاب اطلاعاتی که توسط بیت شروع و بیت پایان محصور شده است معمولا 7 یا 8 بیت دیتا قرار می گیرد و یک بیت توازن نیز تعریف می شود. بیت شروع متناظر با صفر منطقی است و بیت پایان (که ممکن است 1 یا 2 بیت باشد) توسط یک شناسایی می شود. مثلا در نمودار زمانی زیر قاب اطلاعاتی شامل 10 بیت است که هفت بیت آن شامل دیتا یک بیت آغازین و یک بیت پایانی و یک بیت توازن (زوج) قبل از بیت پایان می باشد.
:: در زیر مشخصات پین های کانکتور 9 پین استاندارد RS232 را از DTE ملاحظه می کنید:
پین1 و 9:
این پین ها به ترتیب Carrier Detect و Ring Indicator یا CD و RI نام دارند و مربوط به مودم می شوند که اولی برای تشخیص حامل بر روی خط و دومی برای اعلان یک تماس تلفنی به مودم شماست و معمولا در طراحی های کنترلری به ندرت مورد استفاده قرار می گیرند.
پین های 2و3:
این پین ها به ترتیب Received Data و Transmitted Data یا RD و TD نام دارند و به ترتیب جهت دریافت داده ها یک از یک DCE و ارسال داده ها از یک DTE به یک DCE به کار می روند. این نامگذاری ها ممکن است فریبنده باشند چون پین TD در یک DCE جهت دریافت داده ها به کار گرفته می شود! خط TD در زمان معطلی توسط DTE در حالت مارک نگه داشته می شود.
پین های 7و8:
ابتدا کمی در مورد مفهوم Flow Control:
فرض کنید که یک DTE را به یک DCE متصل کرده ایم، از آنجایی که معمولا سرعت DTE (کامپیوتر) از سرعت یک DCE (مثلا یک مودم یا یک میکروکنترلر) بیشتر می باشد. اگر مکانیسمی جهت کنترل انتقال اطلاعات وجود نداشته باشد، DCE قادر نخواهد بود همه اطلاعات ارسالی از DTE را دریافت کند. این مکانیسم را Flow Control یعنی کنترل جریان اطلاعات می گویند.
پین های 7 و 8 به ترتیب Request to Send و Clear to Send یا RTS و CTS می نامند. فرض کنید که DTE می خواهد یک کاراکتر را برای DCE ارسال کند، در این حالت DTE از طریق پین RTS یک منطقی ارسال می کند و در صورتیکه DCE قادر به دریافت اطلاعات باشد یک سیگنال پاسخ از طریق پین CTS ارسال می کند و در غیر اینصورت خط در حالت صفر نگه داشته می شود و DTE اجازه ندارد اطلاعات را ارسال کند. به این روش Handshaking یا دست دادن نیز می گویند.
پین های 4و6:
واضح است که DCE به علت سرعت کمتر برای ارسال نیاز به کسب مجوز از DTE ندارد اما در صورت لزوم پین های Data Set Ready و Data Terminal Ready به ترتیب نقشی مشابه RTS و CTS را ایفا می کنند. (به ترتب خطوط 4 و 6)
پین 5:
زمین سیگنال می باشد.
:: و نکته ی پایانی ادامه ی توضیحات پین های 7 و 8 می باشد:
فرض کنید دو DTE یا دو DCE بخواهند با هم ارتباط برقرار کنند در اینصورت به علت یکسان بود سرعت دو وسیله نیاز به Flow Control نمی باشد بنابراین پین های 7، 8، 4 و 6 نیاز نمی باشند و گفتیم که خطوط 1 و 9 نیز اغلب در کاربردهای کنترلی استفاده نمی شود پس استاندارد RS232 را در ساده ترین حالت خود به صورت Full Duplex تنها با سه سیم می توان پیاده سازی کرد که به این حالت Null Modem (یعنی بدون مودم) می گویند. برای ساخت یک کابل Null Modem تنها باید خطوط RD و TD را به صورت ضربدری (Cross) به یکدیگر متصل کرد و خط سیگنال (5) را نیز به نظیر خود وصل کرد.
پورت موازی
به طور کلی کامپیوترهای سازگار با IBM دارای دو دسته پورت موازی و سری هستند و پورت موازی که مورد بحث ماست دارای یک کانکتور 25 پین Female در پشت کیس کامپیوتر است که این کانکتور D25 نام دارد. سیستم عامل ویندوز پورت موازی را با نام LPT می شناسد و پورت های سریال را با نام های COM2 ،COM1 و USB و اخیرا Firewire یا IEEE1394 که هر کدام دارای استاندارهای خاص خود می باشند و سعی می کنم در آینده در مورد ارتباطات سریال و استاندارهای ارتباطی آن (RS232 و RS485) که بسیار موضوع پرکاربرد و جالبی هستند، بنویسم.
در تصویر زیر کانکتور پورت موازی (در قسمت فوقانی) و در زیر آن دو پورت سریال را مشاهده می کنید.
می دانیم که در ارتباطات موازی یک بایت که شامل هشت بیت است به صورت موازی و همزمان منتقل می شود و در ارتباط سریال هر بایت توسط یک ثبات انتقالی (Shift Register) به شکل سریال در می آید و سپس توسط یک کانال انتقالی (یک بیت یا یک سیم سیگنال و یک سیم زمین) منتقل می شود. بنابراین کوچکتر بودن کانکتور سریال (معمولا 9 پین) نسبت به پورت موازی بدین دلیل است. امروزه پورت سریال کاربردهای نسبتا کمی دارد و تقریبا در آینده ای نزدیک جای خود را به اتصالات سریال و مخصوصا استاندارد سریع USB خواهد داد به طوری که امروزه حتی بخش عمده ای از پرینترها با اتصال USB وارد بازار می شوند. سرعت استاندارد پورت موازی بین 50 تا 100 کیلوبایت در ثانیه می باشد و وظیفه هر یک از پین های این پورت در زیر توضیح داده شده است:
پین 1: سیگنال strobe را حمل می کند. قابل ذکر است که زمان بندی و انتقال اطلاعات در هر بیت می تواند به دو صورت سنکرون و آسنکرون انجام شود که در روش سنکرون یک سیگنال زمانی به همراه اطلاعات فرستاده می شود تا مرجعی برای تشخیص و تفکیک بیت ها فراهم آورد که به این سیگنال Strobe گفته می شود. در ارتباطات سریال معمولا از روش آسنکرون استفاده می شود که در آن صورت بیت شروع و بیت پایان به همراه اطلاعات ارسال می شود و زمان بندی را انجام می دهد. (در این مورد در یادداشت ارتباطات سریال بیشتر توضیح خواهم داد.) سطح ولتاژ این پین معمولا بین 2.8 تا 5 ولت است اما زمان ارسال یک بایت اطلاعات به حدود 0.5 ولت کاهش می یابد.
پین 2 تا 9: این پین ها وظیفه حمل یک بایت اطلاعات (Data) را بر عهده دارند و در واقع یک منطقی معادل 5 ولت و 0 منطقی معادل حدود صفر ولت می باشد.
پین 10: وظیفه ی ارسال Acknowledgment را بر عهده دارد. بدین ترتیب که مانند سیگنال Strobe با ارسال 0 منطقی اعلان دریافت اطلاعات ارسال شده را بر عهده دارد.
پین 11: یک بودن این پین اعلام می کند که پرینتر مشغول است و با صفر شدن آن به کامپیوتر اجازه ی ارسال اطلاعات را می دهد.
پین 12: پرینتر با ارسال یک منطقی از طریق این پین اعلام می دارد که کاغذ ندارد!پین 13: پرینتر با ارسال یک اعلام می کند که به کامپیوتر متصل است.
پین 14: کامپیوتر با ارسال یک منطقی به صورت خودکار نقش جلوبرنده یا Auto Feed را بازی می کند.
پین 15: در صورت بروز مشکل برای پرینتر با ارسال صفر منطقی، کامپیوتر را بروز خطا مطلع می کند.
پین 16: کامپیوتر با ارسال صفر پرینتر را برای وظیفه ی بعدی آماده می کند.
پین 17: وظیفه اش این است که در صورت لزوم به صورت از راه دور با ارسال یک منطقی اتصال پرینتر را از کامپیوتر قطع کند.
پین 18 تا 25: زمین سیگنال هستند و به عنوان مرجع ولتاژ برای پین های دیگر استفاده می شوند.عملیات فوق در جدول زیر نیز آورده شده است:
ستون دوم مربوط استاندارد 36 پین Centronics که امروزه در کامپیوترهای سازگار با IBM کمتر استفاده می شود.
همان طور که ملاحظه می شود ارتباطات پورت موازی با استاندار اصلی به صورت Simplex یا یکطرفه می باشد. اما در سال های بعد از معرفی استاندارد اولیه، در سال 1991 استاندارد (Enhanced Parralel Port (EPP توسط شرکت های Intel, Xircom و Zenith معرفی شد. EPP سرعتی بین 500 کیلوبایت تا 2 مگابایت دارد و معمولا برای اتصالات وسائل جانبی غیر از پرینتر استفاده می شود. پس از آن در سال 1992 استاندارد (Extended Capabilities Port (ECP توسط Microsoft و Hewlett Packard برای بهبود عملکرد واسط پرینتر معرفی شد. و سرانجام یک سال بعد استاندارد IEEE 1284 توسط سازمان IEEE شد که مشخصات کار با هر دو نوع EPP و ECP را دارا بود.
در حال حاضر معمولا کامپیوترهای IBM از استاندارد ECP جهت پورت موازی یا LPT استفاده می کنند. (جهت اطلاع از این مسئله در سیستم عامل ویندوز در Device Manager شاخه ی Ports را بررسی کنید. وظایف تخصیص داده شده به پین های پورت موازی با استاندارد ECP در جدول زیر آورده شده است:
رعایت نکردن نکات زیر نیز خالی از ضرر نیست:
1. پورت موازی از امکان Hot Swapping یا تعویض در حین کار پشتیبانی نمی کند. بنابراین باید در زمانی که سیستم عامل بوت نشده و یا در زمان خاموش بودن آن باید تجهیزات را به این پورت متصل یا جدا کنید.
2. ولتاژهای ورودی نباید از 5 ولت بیشتر شوند و یا از صفر کمتر.
3. پورت موازی در مقابل جریان بیش از حد محافظت نشده بنابراین مراقب اتصال کوتاه باشید و برای بارهای بزرگ از بافر استفاده کنید.