پورت موازی یک سیستم کامپیوتر راهی جهت کنترل پروژههای سختافزاری می باشد. در این فصل با بررسی انواع پورتهای موازی، نحوه استفاده از این پورت را به عنوان نمونه در چندپروژه خواهیم آورد. نحوه برنامهریزی پورتهای موازی و استفاده از وقفهها در کنترل پورتها را نیز مورد بررسی قرار می دهیم.
دراین فصل سعی خواهیم کرد با بررسی پورت موازی یا چاپگرها،نحوۀ استفاده از آن در پروژهها و کنترل ابزارهای خروجی و ورودی و دیجیتال یا آنالوگ با آن را بررسی نماییم. گر چه این فصل چندان ارتباطی با اسلاتهای توسعه ندارد ولی نحوۀ استفاده از یک یا چند آدرس را در پروژههای سختافزاری نشان خواهد داد که برای طراحان کارتهای جانبی خارج از اسلاتها که جدیدا نیز زیاد شده است بسیار مفید خواهد بود.
پورت موازی به عنوان اینترفیس استاندارد چاپگرها در سیستمهای 8680 تعریف و استفاده میشود. این مشابه استاندارد چاپگر اپسیون Fx-100 میباشد. این پورت دارای 26 پین بوده که تعداد زیادی سیگنال زمین در آن جهت جلوگیری از تداخل نویز در نظر گرفته شده است. این 36 پایه را میتوان در 4 گروه به صورت زیر تقسیمبندی نمود:
1. خطوط اطلاعات که اطلاعات را از سیستم به چاپگر منتقل مینماید.
2. سیگنالهای حالت چاپگر. این سیگنالهای حالت چاپگر را در هر لحظه نشان میدهند.
3. سیگنالهای کنترل چاپگر. این سیگنالها به چاپگر میگوید که چه عملی باید انجام دهد.
4. سیگنالهای زمین. این سیگنالها جهت برگشت زمین هر کدام از خطوط اطلاعات و یا سیگنالهای حالت و کنترل مورد استفاده قرار میگیرد.
خطوط ورودی D1 تا D8، یک خط موازی جهت ارسال اطلاعات از سیستم کامپیوتر به چاپگر را فراهم میآورند. سیگنالهای 20 تا 28 خطوط زمین D1 تا D8 میساشند.
سیگنالهای خروجی فوق از چاپگر به سیستم آمده تا حالت قسمتهای مختلف چاپگر را به سیستم و برنامۀ کاربردی مورد نظر نشان دهد. این سیگنالها عبارتاند از:
(پین 12) PE : جهت نمایش نداشتن کاغذ توسط چاپگر
(پین 11) BUSY این سیگنال در صورت آماده نبودن چاپگر جهت دریافت اطلاعات جدید در حالت high قرار میگیرد.یعنی زمانی که چاپگر off-line است یا آمادگی دریافت اطلاعات جدید را ندارد به حالت high میرود و به سیستم میگوید که نباید برای چاپگر ارسال اطلاعات داشته باشد.
(پین 32) ERROR : یک سیگنال خروجی که درحالت معمولی high بوده و زمانی که یک خطا (مثلا نبودن کاغذ) رخ دهد به حالت low خواهد رفت.
(پین 13) SLCT : در حالت نرمال به صورت high بوده و از چاپگر به PC میرود و زمانی که چاپگر روشن میشود نشان میدهد که چاپگر انتخاب شده است.
(پین 10) ACKNLG : جواب دادن به دریافت اطلاعات ارسال شده از سوی کامپیوتر میباشد و اعلان میکند که آمادۀ دریافت اطلاعات جدید است.
دو سیگنال TROBE (پین 1) و CLNLG به عنوان مهمترین سیگنالهای کنترلی مورد استفاده قرار میگیرد. پین NIT (پین 31) به عنوان یک سیگنال ورودی بوده که در حالت نرمال high میباشد. وقتی فعال میشود (low میشود) باعث باز نشاندن چاپگر شده و یک برنامۀ خاص اجرا خواهد شد. شکل 2-11 کلیۀ سیگنالهای پورت سنترونیکس یرا نشان میدهد. برای ارسال اطلاعات از کامپیوتر به چاپگر مراحل زیر انجام میگیرد:
1) سیگنال Busy که از چاپگر به سیستم میآید توسط PC چک میشود تا نشان داده شود که چاپگر آمادۀ دریافت اطلاعات است (مشغول نیست)
2) کامپیوتر 8 بیت اطلاعات را بر روی باس اطلاعات که ما بین چاپگر و سیستم برقرار است قرار میدهد.
3) کامپیوتر سیگنال TROB را فعال میکند(به حالت low). اطلاعات باید حداقل 5/0 میکرو ثانیه روی باس اطلاعات باشد.
4) خط TROB باید به آرامی در مدت 5/0 میکرو ثانیه به حالت low برگردد.
5) فعال شدن سیگنال TROB باعث فعال شدن سیگنال Busy از سوی چاپگر خواهد شد و به کامپیوتر میگوید که باید تا پایان یافتن این مرحله منتظر شود.
6) زمانی که چاپگر آمادۀ دریافت اطلاعات جدید باشد سیگنال CLNLG را به حالت فعال ، برای کامپیوتر ارسال خواهد کرد. این سیگنال برای 5 میکروثانیه به حالت low خواهد رفت.
در سیستمهای PC و سازگار با آن ، برنامۀ POST (تست خودش در زمان روشن شدن) به عنوان قسمتی از بایاس ، برای وجود و اتصال چاپگر به پورت موازی عملیات تست را انجام میدهد.
پین رفت | پین برگشت | سیگنال | نوع ورودی/خروجی | توضیحات |
1 2 3 4 5 6 7 8 9 | 19 20 21 22 23 24 25 26 27 | STROBE D1 D2 D3 D4 D5 D6 D7 D8 | ورودی ورودی ورودی ورودی ورودی ورودی ورودی ورودی ورودی | جهت خواندن اطلاعات بوده و حداقل پهنای آن باید 5/0 میکرو ثانیه باشد. در حالت نرمال به صورت high میباشد. خطوط اطلاعات جهت ارسال اطلاعات |
10 | 28 | ACKNLG | خروجی | پالس با حدود 5/0 میکروثانیه به حالت LOWکه نشان میدهد که اطلاعات دریافت شده و آمادۀ دریافت اطلاعات بعدی است. |
11 12 13 14 15 1617 18. 30-19 31 32 33 34 35 36 | 29 30 -- - - - - GND - - - - - 36 | Busy PE SLGT UTOFEEDXT - 0V CHASISEND - - NIT ERROR GND - - LCTIN | خروجی خروجی خروجی ورودی - - - - سیگنالهای گرفتنی زمین ورودی خروجی - - - ورودی | حالت high بودن آن نشان می دهد که چاپگر آماده درایفت اطلاعات نیست . حالت high نشان میدهد که چاپگر کاغذ ندارد. نشان میدهد که چاپگر در حالت انتخاب شدهای قرار داد. با غعال بودن این سیگنال، بعد از هر چاپ یک خط را عبور خواهد داد. - سیگنال زمین یا صفر ولت جدا بودن دو سیگنال زمین از چاپگر - با غعال شدن این سیگنال چاپگربا پاک کردن بافرهایش یک برنامۀ خاص را اجرا میکند. زمانی که یک خطا رخ دهد این سیگنال از چاپگر به سیستم ارسال خواهد شد. همانند سگنالهای 19 تا 30 - با مقاومتهای 7/4 میکرواهم با 5 ولت پولآپ شدهاند. ارسال اطلاعات به چاپگر فقط زمانی که این سیگنال low باشد امکانپذیر است. |
آدرس پورتهای موازی (حداکثر 4 پورت قابل تعریف میباشد) در چهار آدرس به صورت جدول زیر در محدودۀ فضای اطلاعات بایاس قرار دارند. در این محدوده فضای آدرس چک میشود تا مشخص شود که کدام پورت وجود دارد.
مدار اینترفیس چاپگر از سه پورت I/O اصلی جهت شروع پورتهای I/O به صورت: یک پورت I/O جهت خطوط اطلاعات LPT ها، یک پورت I/O جهت خطوط کنترل ، استفاده میکند.به عنوان مثال اگر آدرس شروع برای پورت LPT1 عدد 378H باشد آنگاه پورت 378H برای اطلاعات، 379H برای خطوط حالت و 37AH برای خطوط کنترل استفاده خواهد شد که شکل 3-11 سه آدرس فوق را برای LPT1 تا LPT3 نشان میدهد.
مثال : با استفاده از نرمافزار دیباگ مشخص کنید که کدام پورت چاپگر در دسترس میباشد:
حل:
C:\>DEBUG.
D 40:08L8
0040:0008 7803000000000000
این نشان میدهد که آدرس پورت LPT1 که همان 0378H میباشد در دسترس است و پورت دیگری تعریف نشده است.
پورت چاپگر | پورت اطلاعات (r/w) | پورت حالت(فقط خواندنی) | پورت کنترل (R/W) |
LPT1 LPT2 LPT3 | 03BCH 037CH 0278H | 03BDH 0379H 0279H | 03BEH 039AH 027AH |
مثال: در شکل 3-11 آدرس پورت LPTI و 3BCH ذکر کردهایم و درمثال قبل این آدرس را 378H آوردیم، کدام مطلب درست است؟
حل: هر دو مطلب صحیح است. زیرا کارخانه اول از آدرس اصلی 3BCH استفاده کرده است و کارخانه دوم از 378H که هردو دراست است، برای درستی عمل فوق میتوان با فرمان دیباگ آدرسهای 0040.0008و 0040:0009 را خوانده وباهمدیگر مقایسه کنیم.
شکل 4 به طورکامل آدرس یک پورت به همراه سیگنالهای ورودی یاخروجی به هرکدام را نشان میدهد.
سیگنال D5 در پورت کنترل جهت مد توسعه یافته استفاده میشود. این مد اجازه میدهد که خطوط DO تا D7 به صورت دو طرفه عمل نمایند ولی سیستمهای PC قدیمی از مد توسعه یافته پشتیبانی نمی کنند(توضیحات بیشتر را در ادامه خواهیم آورد.)
در کامپیوتر های اولیه و تاسالهای 1987، پورت موازی کامپیوتر به صورت یک طرفه عمل می کرد به طوری که فقط قادر به ارسال اطلاعات از سیستم به چاپگر بودید. برای امکان دریافت اطلاعات(مثلا کابلهای لینک که دو کامپیوتر را از طریق پورت موازی به همدیگر متصل مینماید.) از طریق پورت موازی باید از پورتهای حالت و کنترل آن و همچنین از سیگنالهایی به غیر از DO تا D7 استفاده کنید.
اما در سیستمهای بعد از 1981، امکان دو طرفه بودن پورت موازی فراهم شد که دراین قسمت آنها را بررسی خواهیم کرد.
Spp استاندارد معمولی یا پورت موازی استاندارد (standard parallel port) در اولین سری کامپیوترهای PC تعریف و وجود داشت. این حالت جهت سازگاری هماکنون نیز درتمام کامپیوترهای جدید تعریف و استفاده می شود. دراین استاندارد باس اطلاعات به صورت موازی به طوریک طرفه عمل مینماید و فقط اطلاعات را از کامپیوتر به چاپگر ارال می کند. در این حالت، طراحان هیچگونه تلاشی جهت خواندن اطلاعات از طریق پورت موازی را نخواهند داشت زیرا باعث سوختن پورت خواهد شد. بدین خاطر شمانیز هیچوقت به فکر استفاده از پورت چاپگر درحالتspp جهت خواندن اطلاعات نیافتید. گرچه جهت خسارت کمتر ویا احتمالا عدم ایجاد خسارت، خطوط پورت موازی با مقاومت پولآپ شده اند.
اولین تغییر در پورت موازی چاپگرها در سال 1987 با آمدن کامپیوترهای PS/2 به وجود آمد.با آمدن این پورت موازی، سرعت انتقال به مقدار چشمگیری افزایش پیدا کرد. همچنین مدار داخلی باس اطلاعات به نحوی تغییر کرد که خطوط انتقال بتوانند به طور یکطرفه کار کنند. در زمان روشنروشن کامپیوتر، با باس به طور اتومات این پورت را درحالتspp تعریف و ست می کند. همزمان بیت کانتر5(cs)به کاربر اجازه تغییر جهت پورت را می دهد . در زمان بوت، C5=0 می باشد، و این به معنی خروجی بودن اطلاعات خواهد بود. با قراردادن C5=1، حالت پورت به صورت ورودی تغییر خواهد کرد.
مثال: فرض کنید که آدرس پایه پورت LPT2، درکامپیوترهای PS/2 و سازگار با آن آدرس 278H باشد. نحوه تغییر بیت C5 جهت تعریف پورت در حالت وروردی را نشان دهید.
حل: باتوجه به آدرس پایه H 278 برای اطلاعات، پورت حالت H279 و پورت کنترل AH27 خواهد بود.
MOV DX,27AH: DXآدرس پورت کنترل
IN AL, DX;گرفتن اطلاعات جاری
قراردادن C5=1 بدون تغییر چیزی دیگری OR AL, 00100000;
OUT DX; AL;پورت اطلاعات در حالت ورودی قراردارد.
مد EPP یا پورت توسعه یافته (enhane parallel port) شبیه پورت PS/2درقسمت قبل است با این تفاوت که سرعت آن بیشتر است. اگر از قسمتهای قبل به یاد داشته باشید، خطوط ازدست دادن همچون strobe توسط نرمافزار ایجادمیشود که دراین نوع پورتها، این خطوط به صورت سختافزاری در طراحی پورت درنظر گرفته است. در این مد یک رجیستراضافی با آدرس پایه بعلاوه 2 تعریف شده است. د رواقع درمدEPP، فضای آدرس I/O از آدرس پایه تا پایه بعلاوه 7 وجود دارد. به عنوان مثال، اگر آدرس پایه 278H باشد آنگاه 279Hو 27AH نیز مشابه 278H خواهند بود. همچنین آدرسهای I/O به مقدار 27BH تا 27FH روزر هستند.
مد EPC یا پورت با قابلیت توسعه یافته (extended capability port) شبیه EPP ولی با سرعت بالاتر می باشد. در واقع ECP یک مد EPP به علاوه یک DMA سریع جهت انتقال اطلاعات میباشد. وجوئ DMA و فشردهسازی اطلاعات در این مد، آن را به عنوان یک پورت سریع و ایدهآل جهت کاربردهایی همچون چاپگرهای لیزری و اسکنرهای سریع درآورده است. د رواقع این عامل(داشتن سرعت بالا) با عث توسعه این مد توسط شرکتهای مایکروسافت، هیولت پاکارد، و ... شد.
در سیسمتهای جدید، قابلیت نوع پورت موازی(ECP, EPP, PS/2, SPP) در ستآپ کامپیوتر وجود دارد.
واسط موازی کامپیوترهای شخصی یعنی LPTI یا LPT2 در مجموع 17 خط دیجیتال را در اختیار ما قرار میدهد که این خطوط موجب شدهاند واسط موازی برای تبادل سریع اطلاعات با سایر مدارهای واسط مناسب باشد. در این کتاب، با استفاده از این 17 خط، تعداد محدودی آزمایش که ساده نیز هستند، شرح داده شده است. در هر حال همواره باید هنگام استفاده از واسط موازی احتیاطهای لازم را انجام داد. واسط موازی در مقایسه با واسط سریال د ربرابر اشتباهات غیرعمدی آسیبپذیرتر است و نسبتا سادهتر خراب می شود. زیرا هیچیک از این 17 خط در برابر اضافهبار محافظت شده نیستند. در کار با واسط موازی، دستورات زیر باید موردتوجه قرار گیرند:
· باید تجهیزات مربوط به درگاه موازی را باید وقتی که کامپیوتر خاموش است وصل کرد .
· ولتاژهای ورودی باید بین صفر و 5 ولت باشند.
· خروجیها نباید اتصال کوتاه و یا به خروجیهای دیگر وصل شوند.
· خروجیها هرگز نباید به ولتاژ تغذیه تجهیزات دیگر وصل شوند.
جدول صفحه بعد تمامی اتصالات را نشان می دهد . شکل 1-9 نحوه اختصاصدادهشدن پایهها را در یک سوکت 25 راه موجود در کامپیوترهای شخصی نشان می دهد. همچنین در صورت به کارگیری کابل چاپگر، می توان از سوکت 36راه سنترونیکس نیز استفاده کرد. متاسفانه اتصالات کابلهای چاپگر خریداری شده همیشه کاملا مطابق با شکل نشان داده نیست لذا توصیه می شود که قبل از به کارگیری کابل، ابتدا آن را به دقت بررسی کنید.
اغلب مواقع به غیر از LPT1 واسط چاپگر دیگری که بانام LPT2 شناخته میشود، به سیستم اضافه شود. در برنامه زیر از LPT1 استفاده شده است. یک چنین برنامههایی را می توان با تغییر آدرس مبنا، باری خط موازی دیگر به کار گرفت.
LPT1 | LPT2 | |
مبنای 16 مبنای 10 | 378 888 | 278 632 |
با به کارگیری ثابت data، یک درگاه خروجی کامل هشت بیتی دردسترس قرار می گیرد که در حالت عادی با ارسال اطلاعات به چاپگر مورداستفاده واقع میشود. خروجی با TTL سازگار است لذا سطح ولتاژ حالت بین 5/3 تا 5 ولت میباشد و می تواند تقریبا جریانی معادل 10 میلی آمپر را تغذیه کند.
این درگاه برای خروجی هشت بیتی سریع مناسب است ولی قبل از دسترسی، باید درگاه را باز کرد تا بین ترتیب ویندوز اجازه خروجی فیزیکی را بدهد. تابع OPENCOM رامیتوان برای بازکردن واسط موازی کار گرفت.
VB: OPENCOM (‘LPT1:’)
OUTPORT BA,N
دلفی: OPENCOM (‘LPT1:’);
OUTPORT(BA,N);
از بین تعداد زیادی از خطوط کمکی چاپگر، تنها وضعیت پنج ورودی توسط ثبات status نشان داده شود، این ورودیها عبارتند از: ACK , PE, Select, Error و Busy که وضعیت خط Busy به صورت معکوس رانده می شود. اغلب این ورودیها با TTL سازگاری دارندلذا بازبودن ورودیها به منزله بالاکردن آنها است. همین دلیل میتوان کلیدها را به سادگی به زمین وصل کرد. وضعیت هر پنج کلید را می توان از آدرس (BA+2) خواند، البته قبل از این کار باید واسط راتوسط Open Com باز کرد.
VB: A=INPORT (‘BA+1):REM status port read
دلفی: A:=INPORT(BA+1);[status port read]
آدرس درگاه(BA+2) اجازه دسترسی به ثبات control و متعاقب آن به چهار خط کمکی Init, Auo Fec , strobe و SLST INمی دهد. در حالت عادی کامپیوتر از طریق این خطوط، اطلاعات مربوط به کنترل به چاپگر ارسال می کند. درهر صورت وضعیت این چهار خط را نیز می توان خواند. اطلاعات به خروجی کنتور- بازداده می شود. مقاومتهای بالابر(پول- آپ)به 5+ ولت، تقریبا 3/3 کیلواهم هستند. اگر وضعیت یک خروجی بالا باشد، خط خروجی در حالت امپدانس بالاست و بنابراین می توان آن را به زمین وصل کرد. وضعیت نسبی این خطوط را می توان از طریق ورودی TTL خواند، در نتیجه این چهار خط را برای ردو بدل اطلاعات در هردو جهت می توان به کار برد. باید همیشه به خاطر داشته باشید که سه خط از این چهار خط (Auto Feed , Strobe و SLCT IN) معکوس شدهاند و فقط خط Init به این صورت نیست. با استفاده از تابع XOR در برنامهها مطابق مثالهای زیر میتوان به سادگی بیت مورد نظر را معکوس کرد:
VB: (خروجی) OUTPORT BA+2 , A XOR 11
VB(ورودی) : B=(INPORT (BA+2) XOR 11) AND 15
(خروجی) دلفی : OutPort (BA+2 , A XOR 11);
(ورودی) دلفی : B:=(Inport (BA+2) XOR 11) AND 15;
تا کنون خاصیتهای توضیح داده شده در مورد واسط سنترونیکس استاندارد مصداق داشت. درکامپیوترهای مدرن ، یک واسط چاپگر توسعه یافته نیز وکود دارد که واسط ECP یا EPP است ، این واسط اجازه میدهد تا اطلاعات به صورت دو طرفه از طریق درگاه هشت بیتی چاپگر ارسال شوند. این واسطها به منظور انطباق با واسطهای چاپگر قدیمی ، همیشه در حالت سازگار یا ISA به کار برده میشوند که در آن تمامی توابع دسترسی همانهایی هستند که در بالا ذکر شده است.
به همراه استفاده از حالتهای EPPو EPC، روشهای ارسال توسعه یافتهای نیز وجود دارد که در آنها دادهها و آدرسها به طور مجزا ارسال می شوند و همچنین با این روش میتوان کل بلوکهای دادهها را ارسال کرد. متاسفانه پیاده سازی این پیشرفتها عملا کارسادهای نیست و نیازمند مدارهای بیرونی خاصی است. پیچیدگی کار حتی بیش از چیزی است که گفته شد، زیرا تراشههای مختلف که در کامپیوترهای متفاوت استفاده شدهاند، هر یک به روش خاص خود باید راهاندازی شوند. به عنوان مثال راهاندازهای مناسب قادر به کنترل ارتباط اطلاعات با درایوهای Zip و اسکنرها هستند. از آنجایی که این حالتها بسیار پیچیده میباشند، از آنها در این کتاب استفاده نشده است.
درگاه موازی مدرن یک یک مزیت دارد که کاربران مبتدی با استفاده از نرم افزار مناسب می توانند از این قابلیت استفاده کنند. اگر واسط چاپگر حالت سازگار با ps/2 را پشتیبانی کند، آنگاه در بسیاری موارد خواندن هشت بیتی از طریق درگاه چاپگر امکانپذیر می شود، بدین منظور یک یا دو بیت کنترلی به استاندارد قبلی اضافه شده است. با استفاده از بیت پنجم (DIR=1) جهت هشت بیت درگاه دادهها را میتوان به صورت خروجی یا ورودی تنظیم کرد. اگر واسط EPP یا EPC نصب شده باشد، درگاه چاپگر با PS/2 سازگار است و خواندن دادههای موازی را پشتیبانی می کند .
با استفاده از برنامه کوچک زیر که با ویژوال بیسیک 5نوشته شده است میتوان تعیین کرد که آیا واسط، خواندن اطلاعات موازی را حمایت می کند یا خیر. جهت ارسال دادهها را می توان به دو دکمه موجود تغییر داد. واسطی که فقط با ISA سازگار است همیشه آخرین بایت فرستاده شده رامیخواند. در صورتی که واسط،دادن موازی را پشتیابی کند آنگاه اگر جهت داده ها را به ورودی تغییر دهید، تمام خطوط داده به حالت بالا و امپدانس آنها بالا میرود. درگاهی که ورودیهای آن باز باشد، مقدار 255 را نمایش خواهد داد.
پس از تغییر جهت ارسال دادهها به منظور خواندن، خطوط 2 تا 9 درگاه چاپگر را به حالت 1 منطقی یعنی ؟ ولت تغییر وضعیت می دهند. در این حالت آنها امپدانس نسبتا بالایی دارند و میتوان با جریان کم تقریبا ؟ میلیآمپر مقاومت آنها را پایین آورد(pull-down) یک خواندن ساده از آدرس مبنا، وضعیت واقعی درگاه را مشخص می کند. در این حالت میتوان از واسط به عنوان ورودی موازی استفاده کرد. توصیه میشود که اگر درگاه چاپگر به عنوان ورودی سیستم به کار برده میشود، حتما از مقاومتهای محافظ استفاده شود. این کار برای محدودکردن جریان اتصال کوتاهی میباشد که ممکن است به طور اشتباه در اثر تغییر حالت درگاه به خروجی به وجودآید.
اگر واسط در جهت خروجی به کاربرده شود، تمام خطوط در حالت امپدانس پایین قرار میگیرند و قادر به تامین جریانی تا حد 30 میلیآمپر خواهند بود. اتصال مسقیم کلیدها و یاخروجی مدارات منطقی کاری پرخطر می باشدزیرا حالت فوق حالتی است که به طور معمول پس از روشنشدن کامپیوتر به وجود میآید. برای اطمینان از انتقال سریعتر اطلاعات، درگاههای مدرن چاپگر از راهاندازهای خروجی صنعتی قوی که بسیار پرقدرتتر ا زواسط قدیمی سنترونیکس هستند، استفاده می کنند. بنابراین خطوط داده میتوانند به عنوان منبع تغذیه برای مدارات کمقدرت، به کار برده شوند.