بخشی از مقاله
آشنایی با رابط قابل برنامه ریزی 8255A
رابط قابل برنامه ریزی وسائل جانبی ، 8255 یک تراشه ارزان قسمت بسیار متداول است که امروزه کاربردهای زیادی یافته است . این تراشه دارای 24 پایه برای I/O است که در گروههای 12 پایه ای قابل برنامه ریزی هستند . هر گروهی می تواند در به حالت مجزا کار کند : I/O ساده ، IO استروب شده و I/O دو طرفه ، 8255 قادر است هر وسیله I/O موازی سازگار با TTL را به آسانی به ریز پردازنده Z80 ارتباط دهد .
توضیح کلی :
وضعیت پایه ها و شمای کلی 8255 در شکل 1 نشان داده شده است . پایه ها نشان می دهد که 8255 سه در گاه I/O دارد( A,B,C) که در دو گروه 12 پایه ای برنامه ریزی می شوند. گروه A از در گاه A (PA0-PA7) و نیمه بالایی در گاه C ( PC4-PC7) و گروه B ( PB0-PB7) و نیمه پائینی درگاه C(PC0-PC3)تشکیل می شود .
انتخاب در گاه بوسیله پایه CS و پایه های آدرس A0,A1 ، انجام می شود. که با هم بطور داخلی یک در گاه I/O یا ثبات فرمان را بر می گزینند .
ورودی RESET باعث می شود که در گاه I/O به عنوان در گاه ورودی برنامه ریزی شود تا آسیبی به مدارهای متصل به پایه های در گاه برسد . اگر این درگاه بخواهد به عنوان درگاه خروجی بکار رود .8255 را باید از طریق درگاه فرمان برنامه ریزی نمود تا به عنوان خروجی عمل کنند..
روش برنامه ریزی 8255
برنامه ریزی 8255 کارنسبتا ساده ای است زیرا تراشه فقط دارای 2 ثبات فرمان داخلی است که برنامه ریزی می شوند.شکل 3 ثبات فرمان اصلی را نشان می دهد که به استفاده کننده اجازه می دهد تا در گاه I/O گروههای A و B را به طور جداگاه برنامه ریزی نماید . این ثبات فرمان
یک در گاه ورودی یا خروجی برنامه ریزی می شود که در گاه C به عنوان سیگنال های کنترل انتقال اطلاعات برای آن عمل می کند .حالات 0و1 مشابه حالات در گروه B هستند .و حالت 2 در گاه A را به عنوان یک درگاه I/O دو طرفه بکار می گیرد که درگاه C تامین کننده سیگنال های کنترل انتقال اطلاعات برای آن است.
اگر یک صفر در آخرین بیت ثبات فرمان (از سمت چپ) قرار داده شود بیتهای درگاه C را میتوان به طور مجزا آدرس داد، به نحویکه در حالات 1و2 می توان هر یک از آنها را نشاند و یا پاک نمود. در حالت 0 ، اطلاعات مستقیما به در گاه C فرستاده می شوند.
عملیات حالت صفر
در حالت صفر- اطلاعات را می توان به در گاه A,B,C فرستاد و در آنجا از آنها تا دستورالعمل بعدی (OUT) نگهداری می شود.
حالت 1 ورودی استروب شده – در 8255 با یکار گیری پایه های در گاه C بعنوان سیگنال های کنترل انتقال اطلاعات عملیات دست تکانی را برای در گاه B,A انتخاب می کند . شکل 4 ساختار داخلی 8255 را برای عملیات ورودی استروب شده و همچنین سیگنالهای زمانبندی مربوطه را در حالت 1 نشان می دهد.
- استروب : این ورودی برای وارد کردن اطلاعات بداخل قفل در گاه A یا B بکار می رود. این اطلاعات تا زمانیکه بوسیله یک دستورالعمل IN بداخل ریز پردازنده برده نشود در آنجا نگهداری می شود.
IBF = (INPUT BUFFER FULL) این خروجی نشان می دهد که قفل ورودی ، اطلاعاتی برای ریز پردازنده در بر دارد . سیگنال این پایه خروجی را می نشاند و دستورالعمل IN آنرا پاک می کند .
INTR - (در خواست وقفه )این خروجی برای درخواست نمودن یک وقفه بکار میرود. وقتی سیگنال به سطح منطقی 1 می رود این خروجی 1 می شود و با اجرا شدن دستورالعمل IN پاک می گردد .
INTE - فعال کننده وقفه : این فعال کننده یک ورودی یا خروجی نیست ، بلکه یک بیت داخلی است که بوسیله ثبات فرمان BSR برنامه ریزی می شود .INTE A به عنوان PC4 و INTE B به عنوان PC2 برنامه ریزی می شود .
در این حالت PC6,PC7 به عنوان I/O همه منظوره در عملیات ورودی استروب شده حالت 1 هستند. این پایه ها وفتی به عنوان پایه های خروجی به کار می روند بوسیله BSR کنترل می شوند و وقتی به عنوان پایه های ورودی بکار می روند ، از طریق درگاه C خوانده می شوند.
عملیات خروجی استروب شده (حالت 1 )
ساختار داخلی 8255 برای عملیات خروجی استروب شده و سیگنال های زمانبندی مربوطه را نشان می دهد .
تعاریف درگاه C برای خروجی استروب شده حالت 1 :
- بافر خروجی پر است : هر گاه اطلاعاتی به قفل در گاه A یا B فرستاده شود این خروجی پایین می رود . این سیگنال با برگشتن پالس از یک وسیله خارجی نشانده می شود و وقتی اطلاعات با یک دستور العمل OUT در درگاه نوشته می شود ، پاک می گردد.
- ورودی اعلام دریافت اطلاعات : سیگنالی که باعث می شود پایه به سطح منطقی 1 برگردد . پاسهای از یک وسیله خارجی است که نشان می دهد وسیله اطلاعات را از 8255 دریافت کرده است .
INTR – در خواست وقفه : هرگاه یک وسیله خارجی ، دریافت اطلاعات خروجی را اعلام کند ( ) از این سیکنال می توان برای دادن وقفه به ریز پردازنده استفاده کرد .
INTE فعال کننده وقفه : این فعال کننده یک ورودی یا خروجی نیست ، بلکه یک بیت داخلی است که بوسیله ثبات فرمان BSR برنامه ریزی می شود.
INTE A به عنوان بیت PC6 و INTE B به عنوان PC2 برنامه ریزی می شود.
عملیات دو طرفه (حالت 2)
عملیات دو طرفه فقط برای پایه های گروه A انجام می شود. در گاه A به صورت یک در گاه دو طرفه در می آید که امکان ارسال و در یافت اطلاعات را بر روی هشت سیم مشترک بوجود می آورد . اطلاعات دو طرفه در ارتباط دهی دو کامپیوتر مفید است شکل 6 ساختار داخلی و سیگنال های زمانبندی را برای عملیات دو طرفه درگاه A نشان می دهد.
در این حالت نیز سیگنالهای کنترلی از تعاریف در 2 حالت قبل پیروی میکنند
تمام این مباحث که گفته شد زمینه ای برای بیان ساختار داخلی اجزا تشکیل دهنده و روش ارتباطی بین اینها است که بصورت کامل بیان خواهدشد.
روش استفاده از 8255 :
برای راه اندازی و استفاده از 8255 باید vcc را به +5 ولت و Gnd را به 0 ولت متصل می کنیم . cs باید در سطح منطقی صفر ( 0) باشد .
حالIC آماده فعالیت است . ابتدا باید آن را برنامه ریزی کرد . برای این کار A0,A1 را مقدار 1 می دهیم و کلمه کنترلی را روی گذرگاه قرار می دهیم .سپس کلید WR را به سطح منطقی صفر آورده و دوباره به 1 باز می گردانیم .
توجه به این نکته ضروری است که چون پایه های WR,RD,CS حالت ACTIVE LOW دارند باید حتما با مدار PULL UP یا PULL DOWN شود تا به مدار آسیبی نرسد .
در این زمان CONTROL REGISTER برنامه ریزی شده است . حال اگر مثلا با پرت A می خواهیم به صورت خروجی کار کنیم ، کافی است آدرس A0,A1 را به ترتیب 0و0 بدهیم و دکمه WR را فشار دهیم تا اطلاعات به خروجی پرت A منتقل شود.
اگر پرت A در حالت ورودی باشد با قرار گرفتن اطلاعات در سر PIN های پرت A و زدن کلید RD اطلاعات از پرت A به Z80 منتقل می شود .
توصیف سخت افزاری :
حال می خواهیم با توجه به روش کار 8255 مدار داخلی آن را به اختصار توصیف نماییم .
با توجه به تحلیلات سخت افزاری مدار را به قسمتهای زیر تقسیم بندی می کنیم و هر قسمت را توضیح می دهیم .
1-PORT A
2- PORT B
3- PORT C
4-CONTROL REGISTER
5-PROCESS CONTROL
6- DATA BUS BUFFER &MULTIPLEXER
PORT A:
پرت A :
این پرت 8 بیتی است . در طراحی سخت افزار ما سعی می کنیم تا یک یا چند فطعه را تولید نماییم و بقیه قسمتها را با آنها پیاده سازی نماییم . بنابراین کافی است اصول کار را برای یک بیت طراحی کنیم و برای بقیه تعمیم دهیم.
ورودیها برای پرت A :
A0,A1: که برای تعیین آدرس پرت A در یک رمز بردار (DECODER) قرار داده می شود تا پرت A را فعال یا غیر فعال نماید .
RD,WR : برای تعیین عمل خواندن از وسیله جانبی یا نوشتن روی وسیله جانبی استفاده می شود.
CW6,CW5,CW4: که به ترتیب بیتهای 4و5و6 از کلمه کنترلی هستند این بیتها برای تعیین حالات (3 حالت) پرت A بکار میروند . این سه بیت نیز همانند A0, A1 در یک رمز بردار قرار گرفته و کد حاصل نوع عملیات A را مشخص می کند .
مثلا خروجی OUTPUT MODE برای شکل فوق نشان دهنده این است که اگر پرت A در حالت مود0 و خروجی باشد این سیگنال اجازه انتقال اطلاعات را به بیرون می دهد .
هسته پرت A
این هسته همانطور که در شکل9 نشان داده شده است دارای 2 عدد D-FLOP است که کار نگهداری اطلاعات (جهت انتقال به خارج یا دریافت از خارج) را بر عهده دارند. این D_FLOP ها با دکمه های RD, WR که در رمز بردار شکل 8 نشان داده شده است فعال می شوند .
این سلول دارای 2 ورودی دیگر است یکی OUTPUT MODE که در شکل8 چگونگی ایجاد این سیگنال مشخص است و دیگری ACK است که بوسیله رمز بردار زیر تولید می شود .
در این رمز بردار هم سیگنال ورودی ACK از پرت C پایه شماره 6 می آید .سیگنال حاصل از این رمز بردار برای اجازه خروج اطلاعات در زمانی که A در مود 1و2 حالت خروجی دارد بکار می رود . اگر این سیگنال فعال شود اجازه خروج را به اطلاعات میدهد. و با زدن هر WR اطلاعات جدید در سر PIN ها مشاهده میشود.
ورودی IBF , MASTER RESET نیز برای انجام عمل دست تکانی به کار می رود. هر گاه MASTER RESET =0 باشد با فعال شدنIBF اطلاعات روی ورودی قفل می شود . و اگر MASTER RESET =1 باشد با فعال شدن IBF سلول RESET شده و در سطح منطقی 1 قرار می گیرد .
پرت B :
پرت B نیز همانند پرت A دارای همین مشخصات تکنیکی در پیاده سازی است واختلاف آن فقط در سیگنالهای ورودی کلمه کنترلی است .
A0,A1: همانند پرت A برای رمز برداری جهت فعال کردن پرت B استفاده می شود .
RD,WR: برای عمل خواندن و نوشتن استفاده میشود.
CW2,CW3: برای تنظیم مود مورد نظر برای پرت B این سیگنال ها وارد یک رمز بردار می شوند سیگنال خروجی با اتصال به ورودی OUTPUT MODE سلول مرکزی نوع عملیات را مشخص می کند .
IBF-ACK: در این پرت بر خلاف پرت A که دو سیگنال جداگانه برای IBF, ACK داده میشود ، یک سیگنال وارد می شود و در داخل پرت B نوع آن مشخص شده و به مکان مورد نظر فرستاده میشود.
پرت C:
مهمترین قسمت این IC در این پرت قرار دارد . در این پرت کنترل عملیات دست تکانی ،BSR ، فرستادن سیگنالهای کنترلی برای پرتهای دیگر انجام می شود .
این پرت دارای قسمتهای زیر است :
1- سلول مرکزی که هسته فعالیتهای هر بیت می باشد .
2- یک دیکودر 3 به 8 که وظیفه فعال کردن عمل WR را در زمانی که پرت C در حالت BSR فرار دارد را بر عهده دارد . با فعال شدن این دیکودر که دارای 3 پایه فعال کننده است (2 عدد فعال 1 و دیگری فعال 0) که دو پایه اول به A0,A1 متصل می شود و پایه سوم به بیت 7 وارد شده به پرت C ازBUS میانی متصل میشود . سه بیت 1 الی 3 که به آن وارد می شوند رمز برداری شده و یکی از 8 خروجی آن در حالت 0 قرار می گیرد .
3- یک رمز بردار BSR/NORMAL که وظیفه این رمز بردار عبور 8 بیت ورودی ( که از BUS داخلی می آید ) به روردی هر تک سلول در حالت نرمال و اگر پرت C در حالت BSR بود اطلاعات ر ا دیکود کرده و BIT صفر را به خروجی مورد نظر که بیت رمز برداری شده توسط دیکودر 3 به 8 آنرا تعیین می کند می فرستد.
4- یک رمز بردار آدرس، در صورتی که A0,A1 به ترتیب 1و0 بودند اجازه ورود و خروج اطلاعات را می دهد .
5-یک رمز بردار جهت تعیین اینکه INT فعال شده است یا نه و انتفال سیگنال مورد نظر به MASTER RESET ، PIN های مورد نظر تا اعمال INTRUPT شود .
6- یک رمز بردار جهت اعمال به IBF ,ACK , MASTER RESET که دارای سیگنالهای ورودی است که از سر PIN های پرت C می آید خروجیها به پر تهای A,B و به سلولهای C مرتبط می شوند .
CONTROL REGISTER:
این سلول دارای 7 بیت D_FLOP است که کار ذخیره اطلاعات را بر عهده دارد .
عمل نوشتن بر روی کلمه کنترلی زمانی صورت می گیرد که بیت 7 ورودی مقدار 1 داشته باشد و آدرس ورودی 3 باشد (A0,A1 به ترتیب 1و1 باشند) اطلاعات در این سلول ها تا زمانی که WR مجددی صورت نگیرد یا پایهRESET فعال نشود حفظ می شود . این قسمت دارای ورودیهای A0,A1,WR,RST است کــه بـه D_ FLOP ها متصل می شوند .ویک ورودی 8 بیت و یک خروجی 8 بیت دارد . ورودی از BUS میانی می آید و خروجی به پرتهای A,B,C و DATA BUS BUFFER & MULTIPLEXER وارد می شود.
PROCESS CONTROL :
این قسمت ازIC کار دریافت و هدایت سیگنالهای کنترلی را بر عهده دارد . سیگنالهای ورودب را از PIN ها در یافت کرده عمل پزدازش را انجام می دهد و در صورت موفقیت بودن اجازه عبور را می دهد .
سیگنال هایی که به این قسمت وارد می شوند مستقیما از PIN ها است و شامل سیگنال های زیر است :
RD,WR,A0,A1,RST,VCC,GND,CS
در این میان سه سیگنال عمل کتنرل عبور بقیه سیگنالها را بر عهده دارند .این سیگنالها عبارتند از VCC,GND,CS که به ترتیب باید مقادیر 0و0و1 منطقی را داشته باشند .
با برقرار بودن این شرط RD, WR,A0,A1,RST می توانند به پرت A ,B,C, وارد شوند . در غیر این صورت مقادیر انتشار یافته حالت امپدانس بالا خواهند داشت .
DAT BUS BUFFER & MULTIPLEXER:
این قسمت دارای 4 ورودی کنترلی A0,A1,RD,WR به همراه چهار ورودی(8 بیتی) از پرت های A,B,C و CONTOL REGISTER هستند و یک ورودی خروجی (8بیتی) برای اتصال به Z80 دارد .
کار این قسمتMULTIPLEXE کردن 4 ورودی از پرتهای A,B,Cو CONTOL REGISTER و خروج یکی از آنها به پایه های ورودی خروجی در صورت زدنRD است و عبور سیگنالها از پایه های ورودی خروجی به BUS میانی می باشد .
این قسمت از یک مالتی پلکسر 4 به 1 به همراه یک BUS با قابلیت HOLD تشکیل شده است .
با زدن کلید RD یکی از اطلاعات از پرت های A,B,C و CONTOL REGISTER که بوسیله MUX و با توجه به سلکتور های A0,A1 انتخاب شده است به خارج انتقال پیدا می کند و همزمان HOLD می شود .
و تا زمانی که عمل RD یا WR انجام نشود در آنجا باقی خواهند ماند .