در این مقاله به بیان مبانی ارتباط سریال ناهمزمان خواهیم پرداخت. ارتباط سریال پرکاربردترین رابط برای انتقال دادهها بین دستگاههای جانبی است. در پست قبلی از اسکایتک، ارتباط سریال همزمان را معرفی و بررسی کردیم.
ارتباط سریال ناهمزمان، رابطی است که در آن، سیگنالهای مورد استفاده، متناسب با یک سیگنال ساعت مشترک، همگام نمیشوند. به جای سیگنال ساعت، از بیتهای شروع و پایان برای نشان دادن شروع و پایان یک پیام استفاده میکنند.
این نوع ارتباط از نوع رابط نقطه به نقطه بهره میبرد، به این معنی که فقط دو دستگاه قادر به برقراری ارتباط با یکدیگر هستند. علاوه بر این، این دو دستگاه باید بر سر نرخ ارسال و دریافت بیتها، که به عنوان نرخ باود شناخته میشود، سازگاری داشته باشند.
در دستگاههای الکترونیکی، برای انتقال داده از نرخی به نام baud استفاده میکنند تا میزان و سرعت ارسال و دریافت اطلاعات مشخص شود.
زیرا هیچ سیگنال ساعتی برای نشان دادن چنین انتقالی وجود ندارد. ارتباط سریال ناهمزمان را نیز میتوان در پیکربندی دوبلکس کامل (خطوط انتقال و دریافت مستقل) یا نیمه دوبلکس (خط انتقال و دریافت مشترک) پیاده سازی کرد که آن را به پروتکل ارتباطی همه کاره تبدیل میکند.
ارتباط سریال ناهمزمان شامل یک سیگنال دریافت کننده (RX) و یک سیگنال ارسال کننده (TX) است. همان طور که در شکل زیر نشان داده شده است، در حالت تمام دوبلکس، پایهی RX یک دستگاه باید به پایهی TX دستگاه دیگر وصل شود.
ارتباط سریال ناهمزمان معمولاً با استفاده از یک گیرنده – فرستندهی ناهمزمان جهانی (UART) اجرا میشود. بیشتر UART ها در میکروکنترلرها دیده میشوند، اما میتوانند به عنوان مدارهای مجتمع (IC) جداگانه نیز وجود داشته باشند.
رابط UART که خلاصه شدهی عبارت ارتباط سریال ناهمزمان جهانی است، به دلیل نیاز به حداقل تعداد سیم مورد نیاز بسیار رایج است. امکان تغییر بستهی داده بر اساس نیازهای پروژه را فراهم میکند و برای انتقال دادهها نیازی به سیگنال ساعت جداگانه ندارد.
با این حال، رابط UART فقط به منظور برقراری ارتباط بین دو دستگاه استفاده میشود و نرخ بیت و بستههای داده باید در هر دو دستگاه یکسان باشند، در غیر این صورت اطلاعات به اشتباه تفسیر خواهند شد.
انتقال دادهها از طریق ارتباط سریال ناهمزمان به صورت بستههای بیتی انجام میشوند. این بستهها میتوانند شامل یک بیت شروع، 5 تا 9 بیت داده قابل تنظیم، یک بیت توازن به صورت اختیاری و 1 تا 2 بیت توقف، باشند.
ساختار یک بستهی بیت UART به نام 8-N-1 دارای هشت بیت داده، بدون بیت توازن و یک بیت توقف است. این بیتها در ترکیب با یک بیت شروع، یک بسته بیتی به طول ده بیت ایجاد میکنند.
هر دو دستگاهی که از طریق گذرگاه سریال، ارتباط برقرار میکنند باید برای بستههای بیتی به طور کامل یکسان پیکربندی شوند و بیتها را با سرعت یکسان یا نرخ باود یکسان، منتقل کنند.
بیتهای شروع و توقف به عنوان بیتهای همگامسازی شناخته میشوند؛ زیرا به دستگاه گیرنده نشان میدهند که بسته شروع یا پایان مییابد.
خطوط دادهی ارتباطی سریال ناهمزمان در حالت بیکاری با سطح منطقی High نگه داشته میشوند و بیت شروع، خط داده را از حالت High به حالت Low منتقل میکند.
هنگامی که دریافتکننده این انتقال را به عنوان بیت شروع شناسایی میکند، 5 تا 9 بیت داده با نرخ باود مشخص شده خوانده میشود. بیت توقف، پایان بسته داده را با کشیدن خط داده به حالت بیکاری High مشخص میشود.
بیت توازن یک بیت اختیاری است که در سطح منطقی پایین و برای تشخیص خطا به کار میرود. دستگاههای الکترونیکی از تداخلهای الکترومغناطیسی و نویزهای ناخواسته در امان نیستند. این تداخلها میتوانند باعث تغییر بستههای دادهها شوند.
در صورت استفاده از بیت توازن، میتوان تعیین کرد که آیا تعداد بیتهای “1” بستهی داده فرد است یا خیر. اگر فرد باشد، مقدار بیت توازن به “0” تنظیم میشود و در غیر این صورت به “1” تغییر خواهد کرد.
در صورتی که یکی از بیتهای داده در حین انتقال تغییر کند، بیت توازن میتواند نشان دهد که تعداد بیتهای “1” نادرست است. با این حال، استفاده از بیت توازن چندان رایج نیست. زیرا در صورت بروز بیش از یک خطا، تشخیص پیام نادرست بعید به نظر میرسد.
یکی از ویژگیهای مهم ارتباط سریال ناهمزمان، سرعت انتقال دادهها است. تعداد بیتهای ارسال شده در یک ثانیه را نرخ باود میگویند. نرخ باود میتواند بازه گستردهای از مقادیر را شامل شود و در حقیقت میتواند هر مقداری باشد. با این حال، به دلیل نیاز به سازگاری نرخ باود در دو دستگاه، مقادیر خاصی برای نرخ باود استاندارد تعریف شدهاند.
جدول زیر نرخ باود استاندارد و زمان لازم برای انتقال ۱۰۰ بایت داده با استفاده از پیکربندی استاندارد 8-N-1 (که نیاز به ۱۰ بیت در هر بایت داده دارد) را نشان میدهد.
ارتباط سریال ناهمزمان را میتوان بسته به کاربرد، با روشهای مختلفی پیاده سازی کرد. برخی از استانداردهای رایج برای ترجمهی سطح ولتاژ عبارتاند از : منطق ترانزیستور-ترانزیستور (TTL) و RS-232 و RS-422 و RS485.
هر کدام از این استانداردها بر اساس آستانهی ولتاژهای مختلف به عنوان صفر منطقی یا یک منطقی، سیگنال ارسال شده را ترجمه میکنند. اتصال دو دستگاه با استانداردهای سخت افزاری متفاوت میتواند باعث آسیب به یک یا هر دو دستگاه شود.
منطق ترانزیستور-ترانزیستور (TTL)، یک پیادهسازی فیزیکی از ارتباط سریال ناهمزمان است که برای ارتباطات سطح برد ایدهآل به شمار میرود. زیرا طول سیم ارتباطات در سطح مدار چاپی باید کوتاه باشند.
این پیادهسازی سختافزاری از یک نوع سیگنال تک سر استفاده میکند، به این معنی که ولتاژهای ارسال شده در خطوط ارتباطی به زمین ارجاع داده میشود.
همان طور که در شکل زیر نشان داده شده است، برای حالت پایین (بیت “0”)، هر ولتاژی بین 0 تا 0.8 ولت و برای حالت بالا (بیت “1”) هر ولتاژی بین 2 تا 5 ولت در نظر گرفته میشود. تفاوت در سطوح ولتاژ قابل قبول برای ورودی و خروجی باعث تلفات و نویز در خط سیگنال میشود.
این رابط معمولاً از کابلها برای اتصال دستگاهها استفاده میکند که طول آنها تا فاصلهی 10 متر میباشد و در بسیاری از پروژهها کاربرد دارند.
همانند منطق ترانزیستور-ترانزیستور دارای سیگنالهای تک سر و غیرفعال در حالت High است، اما از ولتاژهای آن بین 15- تا 15 ولت است. آستانهی ولتاژ برای حالت پایین (بیت “0”) از 3 تا 15 ولت و برای حالت بالا (بیت “1”) از 15- تا 3- ولت است.
استاندارد RS-422 در صنعت به طور گسترده استفاده میشود. این رابط در مقایسه با TTL و RS-232 از سیگنالهای تفاضلی استفاده میکند که اختلاف ولتاژ بین دو سیم را به جای مقایسهی سیگنال با زمین مشترک، اندازه گیری میکند.
استفاده از سیگنالهای دیفرانسیل باعث ایجاد ایمنی بیشتر در برابر تداخل و کاهش تلفات در کابل میشود و توانایی انتقال در مسافتهای طولانیتر نسبت به سایر استانداردها را دارد.
معمولاً، سیگنالهای دیفرانسیل با نامهای RX+ و RX برای دریافت داده و TX+ و TX- برای ارسال داده شناخته میشوند. با این حال، در بعضی موارد ممکن است با اسمهایی مانند RXA و RXB و TXA و TXB و یا سیگنالهای معکوس و نامعکوس روبرو شوید.
متأسفانه، این استاندارد دارای نامگذاری خاصی نیست و تنها سطحهای ولتاژ سیگنال را مشخص میکند. بنابراین، هر سازندهای میتواند هراسمی را برای سیگنالها انتخاب کند. به همین دلیل، در طراحی باید با دقت برگهی اطلاعات را مطالعه کنید تا بتوانید سیگنالها را درست تشخیص دهید.
میتوان استانداردهای RS-422 و RS-485 را باحالتهای دوبلکس کامل یا نیمه دوبلکس پیکربندی کرد. در حالت دوبلکس کامل سیگنالهای RX و TX به دو دستگاه اجازه میدهد تا دادهها را به طور مستقل و همزمان به یکدیگر منتقل کنند.
از طرفی، در پیکربندی نیمه دوبلکس، از یک سیگنال ارتباطی مشترک استفاده میشود که تنها به یک دستگاه اجازه میدهد دادهها را در یک زمان انتقال دهد و نیمی از سیمها مورد نیاز است.
در رابط سریال ناهمزمان، سیگنال ساعت وجود ندارد. رابطهای سریال ناهمزمان را میتوان بیشتر در کاربردهای مسافت طولانی مشاهده کرد و کاملاً برای برقراری ارتباط پایدار مناسب هستند.
به جای سیگنال ساعت، از بیتهای توازن، شروع و توقف استفاده میشود و دارای استانداردهای TTL و RS-232 و RS-422 و RS-485 هستند که سطحهای ولتاژ آنها متفاوتاند.