بخشی از مقاله
پيشگفتار
در اوايل دهه 60 ميلادي ايالات متحده در آستانه شکل گيري تکنولوژي نويني در مهندسي برق بود. ترانزيستور که کمي پس از پايان جنگ جهاني دوم توسط سه دانشمند در آزمايشگاههاي كمپاني بل ابداع شده بود، کم کم جايگزين رقيبش لامپ خلا مي شد.
در سال 1968 رابرت نويس و گوردون مور، دو نفر از پايه گذاران اصلي كمپاني فيرچايلد شرکت جديدي موسوم به اينتل تاسيس نمو دند. در سال 1969 يک شرکت ژاپني سازنده ماشين حساب, به آنها سفارش يک آي سي خاص براي ماشين حسابهاي جديد خود داد و يک پردازنده مرکزي (CPU) چهار بيتي بر روي يک تراشه ساخته شد و بدين ترتيب خانواده IC هاي اينتل 4000 متولد گرديد. اين روند ادامه پيدا کرد و در سال 1972, آي سي هشت بيتي 8008 , پس از آن 8080 , 8085 ودر اواخر دهه1970 چند ميکروپروسسور 16 بيتي به بازار عرضه شد .
اين تحول تا امروز ادامه داشته است و ميکروپروسسورهاي 32 بيتي و 64 بيتي(پنتيوم) پا به عرصه وجود گذاشتهاند. اکثر ميکروکامپيوتر هاي اوليه به صورت کيت فروخته مي شدند و براي انجام کاري خاص, بايد به زبان ماشين برنامه ريزي مي شدند و قابليت توليد انبوه را نداشتند, تا اينکه در1982 شرکت IBM براي اولين بار شروع به فروش کامپيوترهاي شخصي نمود و امروزه شاهد جهش هاي ناباورانه اي در زمينه رشد تکنولوژي وقا بليت هاي کامپيوترهاي شخصي هستيم.
گردآورنده
مقدمه
اين مجموعه به بررسي مباني تکنولوژي ريز پردازندهها مي پردازد و به عنوان يک منبع درسي, براي درس ساختار و زبان ماشين در نظر گرفته شده است. تمرکز ما در اين کتاب، فهم اجزاء سخت افزاري يک سيستم ميکروکامپيوتر و نقش نرم افزار در کنترل سخت افزار است.
قسمت عمده آنچه در اين مجموعه ملاحظه مي شود, از بخش هاي مختلف چند کتاب و نيز جزوه درس ساختار و زبان ماشين گردآوري شده است. در اين مجموعه به بررسي ميکروپروسسور هشت بيتي" شريف"، ميکروپروسسور هشت بيتي 8085 , ميکروکنترلر هشت بيتي 8051 و در انتها به اختصار به ميکروکنترلر AVR مي پردازيم. البته در مورد ميکروپروسسور" شريف"، به دليل آنکه صرفا يک مدل براي يادگيري و آشنايي اوليه است, به سخت افزار چنداني
پرداخته نمي شود. دو مورد بعدی که از ميکروپروسسور هاي واقعي و ساخت شرکت اينتل هستند بطور مفصل تر مورد بررسی قرار می گيرند. يادآوري مي نمايدكه تاکيد بر ساختار سه باسه( CPU هاي استفاده كننده از سه باس) است که در فصل هاي بعدي بهنگام افزودن حافظه و I/O به کار مي آيد، به همين منظور, در فصل اول به معرفي باس مي پردازيم. همچنين، در اين درس به آيسيهاي پشتيبان ويژه 8085 و روشهاي I/O ي سري خواهيم پرداخت. همچنين، به اختصار به معرفي فلسفه و توري پايه DMA و AVR مي پردازيم.
فصل اول
باسها و اجزای داخلی يك کامپيوتر
در اين فصل ابتدا با باسها و زمانبندی عملکرد صحيح آنها, مطالبي از قبيل سهحالته و امکان اتصال خروجيهاي چند گيت به يکديگر آشنا خواهيم شد. ادامه اين فصل به ساير اجزاي اصلي کامپيوتر(CPU) اختصاص دارد.
1-1 باسها و عملکردشان
باس را ميتوان يک مجموعه خط(سيم) براي انتقال داده بين يک ارسال كننده داده و يک گيرنده تعريف کرد. معمولا خطوط سيگنالي را كه با يكديگر وجه مشتركي دارند پهلوي هم گذاشته و آن را يك باس مي ناميم. به اين ترتيب باس داده, باس آدرس و باس کنترل و غيره را به دست ميآوريم. در يک طراحي مناسب, بايد مسائلي از قبيل مصونيت در مقابل نويز, اثرهاي بارگذاري ac و dc, انعکاس ناشي از پالس هاي منطقي سريع و نيز تداخل بين هاديهاي موازي بايد در نظر گرفته شوند. ولي، از آنجا که ما در اين درس درصدد پرداختن به جنبه الکترونيک عناصر نيستيم، از بحث در باره اين مسائل صرف نظر مي کنيم.
1-1-1 باس نوع اول
روي باس نوع 1, يک فرستنده سيگنال و يک گيرنده داريم. از آنجا که ميکروپروسسورها با استفاده از تكنولژي MOS ساخته شده اند و توانايي جرياندهي شان بسيار محدود است, به عنوان يک قاعده کلي هرگاه بار روي باس از توانايي جرياندهي ميکروپروسسور بيشتر باشد, يا گيرنده در برد اصلي نباشد بافر لازم است. منظور از بافرکردن باس, اتخاذ روشي براي اطمينان از انتقال سطوح منطقي معتبر بر روي باس است.
شکل 1-1 چند نوع بافر متداول را نشان مي دهد. آي سي هايي از خانوادة TTL مانند 74LS245 و 4LS244 اين جنبه گيرا را دارند که در هر آيسي هشت بافر وجود دارد. معمولا نه تنها بافر کردن فرستنده, که بافر کردن ورودي گيرنده ها نيز سودمند است, زيرا اين کار مقدار بارهايي را که مي توانند روي باس قرار بگيرند بسيار زياد ميکند. در مورد اين دو آیسی در بخش 1-1-3 بيشتر توضيح داده شده است.
شكل 1-1 باس نوع يك
تمام بافرهاي شکل 1-2 توانايي سه حالته بودن را دارند, به اين معني که علاوه بر دو حالت 0 و1 منطقي, يک حالت سوم هم ميتوانند داشته باشند. اين حالت سوم در واقع حالت امپدانس بالا يا مدار باز است. بافرهاي سه حالته اجازه ميدهند چند فرستنده يک خط باس را کنترل کنند. اگر تمام فرستندهها بجز يکي در حالت امپدانس بالا قرار گيرند هيچ تداخلي پيش نميآيد. اين خاصيت در مورد باس نوع سوم مورد استفاده قرار ميگيرد.
1-1-2 باس نوع دوم
در باس نوع 2, چند فرستنده و يک گيرندة سيگنال داريم. اين نوع باس را نميتوان با گيتهاي TTL استاندارد ساخت. شکل 1-2 دليل اين امر را نشان ميدهد. تا وقتي هر دو فرستنده ميخواهند مقدار منطقي يکساني روي خط قرار دهند, اشکالي پيش نميآيد. ولي همين که خروجي يکي 1 و يکي 0 باشد, باس وضعيت مبهمي پيدا ميکند و بدتر اينکه امکان دارد از گيتي با خروجي 1 جريان زيادي وارد گيتي با خروجي 0 شود و هر دو گيت آسيب مي ببينند. اين وضعيت, نزاع بر سر باس نام دارد.
شكل 1-2 باس نوع دو
يک راه براي حل اين مشکل استفاده از گيتهاي سه حالته به عنوان فرستنده است. با فعال کردن تنها يک فرستنده در هر زمان, نزاع بر سر باس ختم ميشود. مسالهاي که اين راه حل به وجود ميآورد يک مدار منطقي اضافهاي است که براي اطمينان از فعال کردن فقط يک فرستنده در هر زمان بايد به کار برده شود.
راه حل ديگر استفاده از باس کلکتور باز (درين باز) شکل 1-3 است. در اين طرح خروجي فرستندهها, کلکتور باز است.يعني اينها ميتوانند با اشباع کردن ترانزيستور خروجيشان, ولتاژ باس را به صفر بکشند, ولي براي رساندن ولتاژ باس به 1, به يک مقاومت بالابر(ولتاژ) خارجي احتياج داريم. مثالي از اين دست, NAND کلکتور باز 7401 است.
عيب اين نوع باس اين است که نميتوان تعيين کرد که کدام فرستنده باس را صفر کرده است. به اين ترتيب پروسسور مجبور است وضعيت (خروجي ها) را بخواند تا بتواند وسيله فعال کننده را بيابد, اين روش, همهپرسي نام دارد.
شكل 1-3 باس نوع 2 با دروازه هاي كلكتور باز
البته در بسياري حالات لازم نيست CPU بداند چه وسيلهاي باس را صفر کرده است, مثلا حالت انتظار که از طرف يک حافظه کند که نميتواند به سرعت داده مورد تقاضاي CPU را فراهم آورد درخواست ميشود. در اين حالت اينکه کدام حافظه تقاضاي انتظار کرده مهم نيست.
1-1-3 باس نوع سوم
باس نوع3, يک باس دو جهته است که روي آن چند ين فرستنده وچند گيرنده قرار دارد.
متداولترين مثال, باس داده در يك سيستم ميکروپروسسوري است. شکل 1-4 جهت عبور داده از يک وسيله ورودي به CPU را نشان ميدهد. توجه کنيد که تمام فرستندهها به صورت گيتهاي سه حالته وتمام گيرندهها به صورت لچ شامل فيليپ فلاپهاي D نشان داده شدهاند.
لزوم سه حالته بودن فرستندهها بايد روشن باشد. در هر زمان تنها بايد يک فرستنده, کنترل باس را در دست داشته باشد، اما ممکن است لزوم لچ داشتن گيرنده چندان واضح نباشد. چيزي که بايد به ياد داشته باشيم اين است که داده براي مدت کوتاهي روي باس قرار ميگيرد. به عنوان مثال، هنگام اجراي يک دستور ورودي در سيکل M1 روي باس
شكل 1-4 جهت عبور داده بر روي يك باس دو جهته
داده آپ کد دستور IN وجود دارد. (مراحل اجراي يک دستور در فصلهاي بعدي به تفضيل شرح داده خواهد شد) در سيکل ماشين بعدي اين باس آدرس دريچه ورودي/خروجي را دارد. در سيکل ماشين سوم وسيله ورودي فعال شده و داده را روي باس قرار ميدهد. چون هر سيکل ماشين تنها چهار يا پنج سيکل ساعت طول ميکشد, هر گيرنده بايد موقعي که نوبتش است داده را سريعا در لچ خود قرار دهد.
مساله اصلي باس3 همين است؛ چطور يک گيرنده يا فرستنده ميفهمد که نوبتش رسيده است؟
پاسخ اين سوال به روشهاي کدگشايي باس آدرس وکنترل برميگردد, اين روشها را در آينده به تفضيل خواهيم ديد؛ ولي ايده به حد کافي ساده است. در واقع زمانبندی عملکرد اين باس از اين قرار است : اگر خط خواندن I/O باس کنترل فعال است, و آدرس ما روي باس آدرس قرار دارد, نوبت ماست که داده را روي باس قرار دهيم و بايد فرستنده سه حالته خود را فعال کنيم. البته باز هم بافر نياز است. شکل 1-5 روش کار را نشان ميدهد. براي هر خط دو گيت سه حالته با خطوط Enable, READ و WRITE مجزا لازم است. سيگنالهاي فعال کننده را بايد از باس کنترل ميکروپرسسور گرفت.
شكل 1-5 بافر باس دو جهت. در هر زمان فقط يك دروازه فعال مي شود
بعضي از انواع متداول اين بافرها در شکل 1-6 نشان داده شده است. از اين ميان 74LS245 براي اين کاربرد بسيار مناسب است؛ چون اين آيسي هشت زوج سه حالته با خطوط کنترل مجزاي Enable و انتخاب جهت دارد.
شكل 1-6 فرستنده گيرنده هاي متداول براي بافر كردن باس داده ميكروپروسسور
همچنين در مورد لچ 74LS373 , براي جدا کردن خطوط آدرس و داده در 8085 که مالتيپلکس شدهاند لازم است. '373 (فرم اختصاري 74LS373 , درادامه مورد اين نوع نمايش بيشتر توضيح خواهيم داد), هشت فيليپ فلاپ با يک ورودي مشترک فعال بالا دارد. وقتي سيگنال ALE يک است خطوط AD0 تا AD7 بخش مرتبه پايين آدرس را حمل ميکند. نيز لچ 74LS374 براي اتصالاتي از قبيل 8085 به خروجيهايي مانند LED مناسب است. هر دو لچ, با يک شدن OE, خروجيهايشان
امپدانس بالا ميشود. '373 داراي 20 پايه است, 8 پايه آن به عنوان ورودي و8 پايه به عنوان خروجي تعريف شدهاند. علاوه بر اين 16 پايه، يک پايه ورودي OE نيز وجود دارد كه اگر فعال شود ورودي لچ را به خروجي مدار مجتمع متصل مي کند و اگر اكتيو نباشد خروجي به حالت شناور ميرود. پايه ديگر اين IC ، ورودي Clock است كه با علامت اختصاري CLK نمايش داده ميشود. CLK، ساعت سيستم (پالس مربعي با فركانس ثابت) است. اين پالس مربعي توسط يک کريستال توليد
مي شود. اين پايهها در شكل 1-7 نشان داده شده اند. اين IC، حساس به سطح است يعني در طول مدت زماني كه CLK اكتيو است، IC ورودي را به خروجي منتقل ميكند. '374 مشابه '373 است، تنها تفاوتش در اين است كه اين IC، حساس به لبه است يعني زماني كه CLK، از صفر به يك ميرود سيگنال ورودي به خروجي منتقل ميشود. اين پايهها در شكل 1-8 نشان داده شده اند.