امروز انتقال اطلاعات نقش مهمی در زندگی ما ایفا میکند. روشهای مختلفی برای انتقال اطلاعات وجود دارد که هر کدام از آنها در جای خود کاربردی هستند. میبایست با توجه به کاربرد و امکانات موجود، بهترین روش را انتخاب کرده تا با بهترین هزینه به بالاترین کیفیت دست یابیم. در این مقاله روشهای انتقال را بررسی کرده و به طور خاص به توضیح ارتباط سریال خواهیم پرداخت. در انتها نیز با روشهای انتقال اطلاعات در پورت سریال آشنا میشویم.
فهرست محتوای آموزش
انواع روشهای انتقال اطلاعات
به طور کلی برای انتقال اطلاعات از 2 روش میتوان استفاده کرد:
- انتقال موازی (Paraller)
- انتقال سریال (Serial)
انتقال موازی
در انتقال موازی تمامی بیتهای یک داده، به طور همزمان طی یک پالس ساعت منتقل میشوند. برای برقراری این ارتباط باید برای هر بیت، یک سیم از مبدأ به مقصد در نظر گرفته شود.
در صورتی که دادههای ما 8 بیتی باشد، نیاز به 8 رشته سیم برای انتقال داده داریم و یا اگر دادههای ما 16 بیتی باشد، نیاز به 16 رشته سیم خواهیم داشت.
این روش برای انتقال اطلاعات در مسیرهای کوتاه قابل استفاده است. با توجه به اینکه تمام بیتها به طور هم زمان به مقصد میرسند، سرعت انتقال اطلاعات بسیار زیاد است.
اما اگر فاصله مبدأ و مقصد زیاد باشد، هزینه ناشی از ایجاد ارتباط (سیم کشی) بسیار زیاد خواهد شد. به نوعی استفاده از روش ارتباط موازی در فاصلههای طولانی صرفه اقتصادی خوبی ندارد.
انتقال سریال
در انتقال سری و استفاده از پورت سریال، طی هر پالس ساعت یک بیت منتقل میشود. برای برقراری ارتباط باید حداقل یک سیم از مبدأ به مقصد وجود داشته باشد.
بنابراین برای انتقال یک داده 8 بیتی، به 8 پالس کلاک نیاز خواهیم داشت و انتقال داده در 8 مرحله انجام میشود.
برای پیادهسازی ارتباط سریال،معمولاً از یک شیفت رجیستر استفاده میشود. به این صورت که دادهای مورد نظر برای انتقال را مرتباً به سمت راست شیفت داده و بیت اضافی را از طریق یک سیم به مقصد منتقل میکنند.
مزیت اصلی روش سریال نسبت به انتقال موازی، این است که اگر مبدا و مقصد از هم دور باشند، هزینه اجرای ارتباط (سیم) به شدت کاهش خواهد یافت.
اما سرعت انتقال اطلاعات به صورت سریال پایینتر از روش موازی است و این مسئله به عنوان یکی از اصلیترین معایب این نوع انتقال است.
البته با وجود تکنولوژیهای جدید در ارتباطات و افزایش سرعت انتقال، این گونه مشکلات تا حدودی رفع شده است.
برای آشنایی با انواع پورتهای سریال میتوانید به این مقاله در سایت ویکیپدیا مراجعه کنید.
ارتباط سریال میتواند با توجه به نحوه ارتباط فرستنده و گیرنده، به 2 روش آسنکرون و سنکرون صورت گیرد.
ارتباط سریال به روش آسنکرون (غیرهمزمان)
در این روش برای انتقال اطلاعات از فرستنده به گیرنده تنها از یک سیم استفاده میشود. بیتهای مربوط به داده به ترتیب بر روی این سیم قرار گرفته و برای گیرنده ارسال میشوند.
از طرفی برای کمک به گیرنده در دریافت صحیح و به موقع اطلاعات، علاوه بر بیتهای اصلی، یک بیتِ شروع در ابتدای داده و یک بیتِ پایان در انتهای آن فرستاده میشود. همچنین در صورتی که گیرنده بخواهد از صحت اطلاعات دریافت شده اطمینان حاصل کند، میتوان علاوه بر بیتهای قبلی، یک بیت توازن (Parity) نیز فرستاد.
به عبارت دیگر روند ارسال بیتها به کمک ارتباط سریال غیرهمزمان به صورت زیر خواهد بود:
- بیت شروع انتقال (که معمولاً صفر است) ارسال میشود.
- بلافاصله بیتهای داده اصلی به ترتیب و پشتِ سرِ هم ارسال میشوند.
- (در صورت نیاز به بیت توازن) بیت توازن ارسال شده
- و در نهایت بیت پایان (که معمولاً 1 است) ارسال خواهد شد.
گیرنده با انتظار و جستجوی بیت شروع، خود را با فرستنده همزمان میکند.
برای درک بهتر، فرض کنید میخواهیم عدد 75 در مبنای هگز (75H) را با توازن زوح در منطق آسنکرون ارسال کنیم. در اینصورت به روش زیر عمل میکنیم.
75= ( 0 1 1 1 0 1 0 1 )
با توجه به اینکه تعداد یک ها در عدد 75 فرد میباشد، بیت توازن را مقدار 1 در نظر میگیریم تا توازن زوج برقرار شود. معمولا در اکثر روشهای انتقال سریال، انتقال بیتهای داده را از بیت کم ارزش شروع میکنند.
فرستنده برای تنظیم زمان هر بیت از یک پالس ساعت که معمولا تقسیمی از فرکانس کلاک اصلی است استفاده خواهد کرد.
فرکانس این پالس ساعت همان نرخ انتقال (Baud rate) را تعیین میکند. مثلاً اگر بخواهیم 9800 بیت در هر ثانیه انتقال دهیم، فرکانس پالس ساعت ارتباط معادل 9800 هرتز خواهد بود و بدین طریق زمان هر بیت 1/9800 ثانیه خواهد بود.
ارتباط سریال به روش سنکرون (همزمان)
در این روش، حداقل 2 سیم بین فرستنده و گیرنده لازم داریم. یک سیم حاوی دادهای است که به طور سریال در آمده و سیم دیگر حاوی همان پالس ساعتی است که فرستنده، دادهها را بر اساس آن زمانبندی و آماده کرده است. گیرنده به کمک همان پالس ساعت که از فرستنده ارسال شده، خود را تنظیم و همزمان میکند تا از روی خط داده، اطلاعات را را به درستی بردارد.
همان مثال قبل را در نظر بگیرید. این بار میخواهیم عدد 75 در مبنای هگز را به صورت سنکرون انتقال دهیم.
چون گیرنده پالس ساعت ارسالی از طرف فرستنده را نیز دارد، در لبه بالاروندهی آن از دادهها نمونه برداری کرده و آنها را در یک ثبات به صورت 8 بیتی ذخیره میکند.
از آنجایی که پالس ساعت در اختیار گیرنده میباشد دیگر نیازی به بیت شروع و پایان برای هر داده 8 بیتی نیست. البته فقط در ابتدای انتقال دادهها، یک کاراکتر سنکرون، ارسال میشود و بالافاصله بیتهای داده اصلی فرستاده خواهد شد.
این موضوع باعث بالا رفتن سرعت انتقال دادهها در روش سنکرون میگردد.
مقایسه سرعت انتقال سنکرون و آسنکرون
اگر بخواهیم یک میلیون بایت را در روش آسنکرون ارسال کنیم، علاوه بر 8 میلیون بیت مربوط به داده اصلی، میبایست 2 میلیون بیت شروع و پایان نیز فرستاده شود. زیرا برای هر داده 8 بیتی، یک بیت شروع و یک بیت پایان مورد نیاز است.
به این صورت زمان انتقال داده و حجم دادههای ارسالی به دلیل وجود بیتهای بیشتر، افزایش خواهد داشت.
در حالی که در روش سنکرون به دلیل وجود پالس ساعتی که فرستنده، داده ها را بر اساس آن ارسال میکند، نیازی به ارسال آن 2 میلیون بیت شروع و پایان نبوده و به محض برقراری ارتباط، داده های 8 بیتی پشتِ سر هم ارسال خواهند شد.
ارتباط سنکرون و روش Master-Slave
در روش ارتباط همزمان، فرستنده یا گیرنده میتوانند به صورت Master یا Slave تعریف شوند. هنگامی که فرستنده Master تعریف میشود پالس ساعت، توسط فرستنده برای گیرنده ارسال شده و شروع انتقال اطلاعات توسط Master مشخص میشود.
اما در صورتی که فرستنده Slave تعریف شود اجازه ارسال پالس ساعت را نخواهد داشت! در این حالت گیرنده که نقش Master را دارد پالس ساعت را برای فرستنده ارسال کرده و فرستنده موظف است دادهها را بر اساس پالس ساعت دریافتی از آن تنظیم و ارسال نماید.
در حالتی که فرستنده Master تعریف شود، گیرنده نقش Slave خواهد داشت و بالعکس؛ اگر فرستنده Slave باشند گیرنده نقش Master را بازی خواهد کرد.
کاربرد ارتباط Master-Slave بیشتر در زمانی است که تعداد زیادی دستگاه بخواهند همزمان با یکدیگر ارتباط سریال داشته باشند. بهرهگیری از این روش سبب برقراری یک استراتژی مناسب برای استفاده بهینه از خطوط ارتباطی و زمان بندی مناسب خواهد شد.
انواع مدل فرستنده و گیرنده در ارتباط با پورت سریال
به طور کلی سه مدل ارتباطی در حالت سریال وجود دارد
- مدل یک طرفه (Simplex)
- مدل نیمه دو طرفه (Half Duplex)
- مدل دو طرفه (Full Duplex)
مدل ارتباط یک طرفه
در این روش اطلاعات فقط در یک جهت انتقال یافته و جای فرستنده و گیرنده و نقش آنها عوض نمیشود. مانند ارسال داده از کامپیوتر به چاپگر، که کامپیوتر در این حالت فرستنده و چاپگر گیرنده اطلاعات میباشد.
مدل ارتباط نیمه دو طرفه
در این روش اطلاعات میتواند در دو جهت انتقال یابد؛ اما در هر زمان فقط امکان انتقال در یک جهت وجود دارد. یعنی عملیات ارسال و دریافت را نمیتوان به طور همزمان انجام داد.
بیسیمهایی که برای ارتباط استفاده میشود را میتوان مثالی از این مدل ارتباط دانست. پروتکل ارتباط دو سیمه (I2C) نیز دارای خاصیت نیمه دوطرفه میباشد. این خاصیت بیشتر در مواقعی است که یک کانال ارتباطی مشترک برای ارسال و دریافت در نظر گرفته میشود.
مدل ارتباط دو طرفه
در این روش اطلاعات در یک لحظه در هر دو جهت میتواند انتقال یابد. پروتکل SPI یک مثال از این نوع ارتباط میباشد. خطوط تلفن معمولی نیز از این نوع ارتباط استفاده میکنند.
ارتباط سریال USART
پروتکل سریال USART یکی از پروتکلهایی است که توسط انواع کامپیوترها پشتیتبانی میشود. برای برقراری ارتباط بین میکروکنترلر و کامپیوترها نیز اکثراً از این پروتکل استفاده میشود.
در میکروکنترلر ATmega32 قابلیتهای متنوعی برای پروتکل USART در نظر گرفته شده است؛ برخی از آنها عبارتند از:
- عملکرد ارتباط دو طرفه
- ارتباط سنکرون و آسنکرون
- ارتباط به صورت Master-Slave در حالت سنکرون
- امکان تولید پالس ساعت دقیق جهت انتقال اطلاعات
- امکان انتقال داده به صورت ۵، ۶، ۷، ۸ یا ۹ بیتی
- امکان تولید بیت توازن به صورت زوج یا فرد در فرستنده و امکان چک کردن سخت افزاری این بیت در گیرنده برای اطمینان از صحت اطلاعات
- تشخیص خطاهای سرریز و عدم دریافت بیت پایان
- امکان تولید وقفه در پایان عملیات ارسال یا دریافت
- کار در حالت ارتباط چند پردازندهای
- امکان دو برابر کردن سرعت انتقال در حالت آسنکرون
- امکان تعریف بیت پایان به صورت 1 بیت تا 2 بیت
جمع بندی: پورت سریال و روشهای ارتباط سریال
برای برقراری ارتباط بین دستگاههای مختلف به صورت سریال، روشهای مختلفی برای انتقال اطلاعات وجود دارد. تعدادی از آنها از جمله RS232 و USB در کامپیوتر پشتیبانی میشود. برای برقراری ارتباط سریال بین دو میکروکنترلر مختلف نیز میتوان از پروتکلهایی نظیر RS232 ، RS485 ، I2C (دوسیمه) ، 1 Wire (تک سیمه) ، SPI و USB استفاده کرد.
در این مقاله انواع روشهای انتقال را بررسی کردیم و به طور مفصل به بررسی انواع ارتباط در پورت سریال پرداختیم. با ارتباطات همزمان (Synchronous) و غیرهمزمان (Asynchronous) آشنا شدیم و انواع مدلهای ارتباطی را شناختیم.
این آموزش برای همیشه رایگانه! میتونید با اشتراکگذاری لینک این صفحه از ما حمایت کنید یا با خرید یه فنجون نوشیدنی بهمون انرژی بدید!
میخوام یه نوشیدنی مهمونتون کنم
عرض سلام و خسته نباشی بابت مطالب بسیار ارزنده وخوبتون بنده سوالی دارم که خواهشا اگر در این ضمینه اطلاعات یا لینکی دارید برام ارسال کنید قبلا ازلطف شما سپاسگزارم .
بنده یه برد کنترلر دارم که بوسیله کابل یو اس بی با سیستم در ارتباط است و در نرم افزار را ه انداز برای تعریف پین و پورت از لفظ پورت 25 پین استفاده کرده ومن گیج شدم نمیدونم این پینها چگونه با یو اس بی انتقال پیدا میکنه ممنونمیشم اگه راهنمایی کنید
سلام
متناسب با کنترلر و نرمافزارتون باید دنبال جواب دقیق باشید؛ اما به طور کلی احتمالاً یک مبدل USB به سریال لازم دارید که تبدیل سیگنالهای دیجیتال از پینهای برد به سیگنالهای قابل فهم برای usb و برعکس رو انجام بده.
ممنون امروزم
با دیروزم فرق کرد
خوشحالیم که این آموزش برات مفید بوده
متشکرم لذت بردم
چه عالی روان جام و کامل بود سپاس
خوشحالیم که براتون مفید بوده 🙂
خیلی عالی بود متشکرم
عالی
دید پیدا کردم
سپاس
خوشحالیم که براتون مفید بوده رضای عزیز
خیلی مقاله خوبی بود
ممنونم
سلامت باشی حسام عزیز
خوشحالیم که کاربرانی چون شما داریم. 🙂
ممنون….مقاله خوبی بود
خوشحالیم که براتون مفید بوده و ممنون بابت انرژی خوبی که به ما میدید.