باس را ميتوان يک مجموعه خط(سيم) براي انتقال داده بين يک ارسال كننده داده و يک گيرنده تعريف کرد. معمولا خطوط سيگنالي را كه با يكديگر وجه مشتركي دارند پهلوي هم گذاشته و آن را يك باس مي ناميم. به اين ترتيب باس داده, باس آدرس و باس کنترل و غيره را به دست ميآوريم. در يک طراحي مناسب, بايد مسائلي از قبيل مصونيت در مقابل نويز, اثرهاي بارگذاري ac
و dc
, انعکاس ناشي از پالس هاي منطقي سريع و نيز تداخل بين هاديهاي موازي بايد در نظر گرفته شوند. ولي، از آنجا که ما در اين درس درصدد پرداختن به جنبه الکترونيک عناصر نيستيم، از بحث در باره اين مسائل صرف نظر مي کنيم.
سيکل ماشين بعدي اين باس آدرس دريچه ورودي/خروجي را دارد. در سيکل ماشين سوم وسيله ورودي فعال شده و داده را روي باس قرار ميدهد. چون هر سيکل ماشين تنها چهار يا پنج سيکل ساعت طول ميکشد, هر گيرنده بايد موقعي که نوبتش است داده را سريعا در لچ خود قرار دهد.
مساله اصلي باس3 همين است؛ چطور يک گيرنده يا فرستنده ميفهمد که نوبتش رسيده است؟
پاسخ اين سوال به روشهاي کدگشايي[FONT="][1]http://www.iran-eng.com/#_ftn1 باس آدرس وکنترل برميگردد, اين روشها را در آينده به تفضيل خواهيم ديد؛ ولي ايده به حد کافي ساده است. در واقع زمانبندی عملکرد اين باس از اين قرار است : اگر خط خواندن [/FONT][FONT="]I/O[/FONT]
باس کنترل فعال است, و آدرس ما روي باس آدرس قرار دارد, نوبت ماست که داده را روي باس قرار دهيم و بايد فرستنده سه حالته خود را فعال کنيم. البته باز هم بافر نياز است. شکل 1-5 روش کار را نشان ميدهد. براي هر خط دو گيت سه حالته با خطوط [FONT="]Enable[/FONT]
, [FONT="]READ[/FONT]
و [FONT="]WRITE[/FONT]
مجزا لازم است. سيگنالهاي فعال کننده را بايد از باس کنترل ميکروپرسسور گرفت.
[FONT="][1][/FONT][FONT="] [/FONT]·[FONT="] [/FONT]Decoding
يک راه براي حل اين مشکل استفاده از گيتهاي سه حالته[FONT="][1]http://www.iran-eng.com/#_ftn1 به عنوان فرستنده است. با فعال کردن تنها يک فرستنده در هر زمان, نزاع بر سر باس ختم ميشود. مسالهاي که اين راه حل به وجود ميآورد يک مدار منطقي اضافهاي است که براي اطمينان از فعال کردن فقط يک فرستنده در هر زمان بايد به کار برده شود.[/FONT]
راه حل ديگر استفاده از باس کلکتور باز (درين باز)[FONT="][2]http://www.iran-eng.com/#_ftn2 شکل 1-3 است. در اين طرح خروجي فرستندهها, کلکتور باز است.يعني اينها ميتوانند با اشباع کردن ترانزيستور خروجيشان, ولتاژ باس را به صفر بکشند, ولي براي رساندن ولتاژ باس به [/FONT]1
, به يک مقاومت بالابر(ولتاژ)[FONT="][3]http://www.iran-eng.com/#_ftn3 خارجي احتياج داريم. مثالي از اين دست, [/FONT]NAND
کلکتور باز 7401
است.
عيب اين نوع باس اين است که نميتوان تعيين کرد که کدام فرستنده باس را صفر کرده است. به اين ترتيب پروسسور مجبور است وضعيت[FONT="][4]http://www.iran-eng.com/#_ftn4 (خروجي ها) را بخواند تا بتواند وسيله فعال کننده را بيابد, اين روش, همهپرسي
[FONT="][5][/FONT] نام دارد.[/FONT]
[FONT="][1][/FONT][FONT="] .[/FONT]Tri State Output
[FONT="][2][/FONT][FONT="] .[/FONT]Open Collector(Open Drain)
[FONT="][3][/FONT][FONT="] [/FONT]·[FONT="] [/FONT](Voltage)
Pull Up (Resistor)
[FONT="][4][/FONT][FONT="] [/FONT]·[FONT="] [/FONT]Status
[FONT="][5][/FONT][FONT="] [/FONT]·[FONT="] [/FONT]Polling
1-1-1[FONT="] [/FONT] باس نوع اول
روي باس نوع 1, يک فرستنده سيگنال و يک گيرنده داريم. از آنجا که ميکروپروسسورها با استفاده از تكنولژي MOS
[FONT="][1]http://www.iran-eng.com/#_ftn1ساخته شده اند و توانايي جرياندهي شان بسيار محدود است, به عنوان يک قاعده کلي هرگاه بار روي باس از توانايي جرياندهي ميکروپروسسور بيشتر باشد, يا گيرنده در برد اصلي نباشد بافر لازم است. منظور از بافرکردن باس, اتخاذ روشي براي اطمينان از انتقال سطوح منطقي معتبر بر روي باس است.[/FONT]
شکل 1-1 چند نوع بافر [FONT="][2]http://www.iran-eng.com/#_ftn2متداول را نشان مي دهد.
آي سي هايي از خانوادة [/FONT]
[FONT="][FONT="][3][/FONT][/FONT][FONT="]TTL [/FONT] مانند[FONT="] [/FONT][FONT="]74LS245 [/FONT]
و[FONT="] [/FONT][FONT="]4LS244[/FONT]
اين جنبه گيرا را دارند که در هر آيسي هشت بافر وجود دارد. معمولا نه تنها بافر کردن فرستنده, که بافر کردن ورودي گيرنده ها نيز سودمند است, زيرا اين کار مقدار بارهايي را که مي توانند روي باس قرار بگيرند بسيار زياد ميکند. در مورد اين دو آیسی در بخش 1-1-3 بيشتر توضيح داده شده است.
[FONT="][1][/FONT][FONT="] [/FONT][FONT="].[/FONT]Metal Oxyde Semiconductor
[FONT="][2][/FONT][FONT="] . [/FONT]Buffer
[FONT="][3][/FONT][FONT="] [/FONT]Transistor Transistor Logic.
1-1-1[FONT="] [/FONT] باس نوع دوم
در باس نوع 2, چند فرستنده و يک گيرندة سيگنال داريم. اين نوع باس را نميتوان با گيتهاي TTL
استاندارد ساخت. شکل 1-2 دليل اين امر را نشان ميدهد. تا وقتي هر دو فرستنده ميخواهند مقدار منطقي يکساني روي خط قرار دهند, اشکالي پيش نميآيد. ولي همين که خروجي يکي 1
و يکي 0
باشد, باس وضعيت مبهمي پيدا ميکند و بدتر اينکه امکان دارد از گيتي با خروجي 1
جريان زيادي وارد گيتي با خروجي 0
شود و هر دو گيت آسيب مي ببينند. اين وضعيت, نزاع بر سر باس نام دارد.
1-1-1[FONT="] [/FONT]باس نوع سوم
باس نوع3, يک باس دو جهته است که روي آن چند ين فرستنده وچند گيرنده قرار دارد.
متداولترين مثال, باس داده[FONT="][1]http://www.iran-eng.com/#_ftn1 در يك سيستم ميکروپروسسوري است. شکل 1-4 جهت عبور داده از يک وسيله ورودي به [/FONT]CPU
را نشان ميدهد. توجه کنيد که تمام فرستندهها به صورت گيتهاي سه حالته وتمام گيرندهها به صورت لچ[FONT="][2]http://www.iran-eng.com/#_ftn2 شامل فيليپ فلاپهاي [/FONT]D
نشان داده شدهاند.
لزوم سه حالته بودن فرستندهها بايد روشن باشد. در هر زمان تنها بايد يک فرستنده, کنترل باس را در دست داشته باشد، اما ممکن است لزوم لچ داشتن گيرنده چندان واضح نباشد. چيزي که بايد به ياد داشته باشيم اين است که داده براي مدت کوتاهي روي باس قرار ميگيرد.
[FONT="][1][/FONT][FONT="] [/FONT]·[FONT="] [/FONT]Data Bus
[FONT="][2][/FONT][FONT="] [/FONT]·[FONT="] [/FONT]Latch