دانلود جزوه درس ساختار و زبان ماشين با فرمت ورد ودر141 صفحه قابل ویرایش
قسمتی از متن جزوه
مقدمه.. 7
فصل اول.. 8
باسها و اجزای داخلی کامپيوتر.. 8
1-1 باسها و عملکردشان.. 8
1-1-1 باس نوع يک.. 9
1-1-2 باس نوع دو.. 10
1-1-3 باس نوع3.. 12
1-2 ثباتها.. 17
1-3 واحد محاسبه و منطق(ALU).. 18
1-4 رجيستر دستورالعمل (IR).. 19
1-5 واحد کنترل و زمانبندی.. 19
فصل دوم.. 20
حافظهها.. 20
2-1 ROM... 20
2-2 EPROM... 20
2-3 E2PROM... 20
2-4 RAM... 21
2-5 RAM هایاستاتيك و ديناميک.. 21
فصل سوم.. 21
کامپيوتر شريف.. 21
3-1 بلوک دياگرام کامپيوتر شريف.. 22
3-1-1 باس داده (DB). 22
3-1-2 واحد محاسبه ومنطق (ALU).. 23
3-1-3 رجيستر وضعيت.. 23
3-1-4 آکومولاتور (Acc).. 24
3-1-5 واحد زمانبندی و کنترل.. 24
3-1-6 رجيستر دستورالعمل (IR).. 25
3-1-7 شمارنده برنامه (PC). 25
3 -1-8 باس آدرس (AB). 25
3-2 دو عمل اصلی CPU... 25
3-3 عملکرد کامپيوتر شريف و قالب بندي دستورالعملها.. 27
3-4 شاخصها.. 28
فصل چهارم.. 30
ميکرو پروسسور 8085.. 30
4-1 پايههای 8085.. 30
4-1-1 0AD-7AD... 30
4-1-2 15A-8A... 30
4-1-3 Error! Objects cannot be created from editing field codes.31
4-1-4 READY... 31
4-1-5 HOLD... 31
4-1-6 HLDA .. 31
4-1-7 INTR. 31
4-1-8 INTA.. 32
4-1-9 (7.5, 6.5) RST5.5. 32
4-1-10 TRAP.. 32
4-1-11 RESET IN... 32
4-1-12 RESET OUT.. 32
4-1-13 X1,X2.. 32
4-1-14 CLK OUT.. 33
4-1-15 SID... 33
4-2 شاخصها.. 33
4-3 انواع آدرسدهی در 8085.. 34
4-3-1 روش آدرسدهي مستقيم.. 34
4-3-2 روش آدرسدهي ثباتي.. 35
4-3-3 روش آدرسدهي فوري.. 35
4-3-4 روش آدرسدهي غير مستقيم.. 35
4-3-5 روش آدرسدهي مستتر.. 35
4-4 برنامهنويسی در 8085.. 36
4-4-1 انتقال داده.. 36
4-4-2 گروه دستورهاي محاسباتي.. 38
4-4-3 گروه شامل دستورات منطقي.. 41
4-4-4 گروه دستورات پرش.. 42
4-4-5 گروه دستورات O/I و كنترل ماشين و Stack.. 42
4-5 وقفه ها.. 45
4-6 زمانبندی .. 47
4-6-1 سيكل خواندن.. 47
4-6-2 سيکل نوشتن.. 48
4-6-3 زمانبندی يک دستورالعمل نمونه.. 48
4-5 IC هاي جانبی 8085.. 49
4-6-1 IC های 8755 و 8355.. 49
4-6-2 IC های 8155 و 8156.. 50
4-6-3 8255 (PPI) .. 51
4-7 اسکن صفحه کليد.. 54
4-8 کنترل موتور پلهای.. 56
4-9 برنامة چراغ راهنما.. 57
4-9 ثابتها و آرايهها در زبان اسمبلی.. 59
فصل پنجم.. 61
ميکروکنترلر 8051.. 61
5-1 بررسی اجمالی پايههای 8051.. 62
5-1-1 درگاه صفر.. 62
5-1-2 درگاه يک.. 63
5-1-3 درگاه دو.. 63
5-1-4 درگاه سه.. 63
5-1-5 PSEN... 64
5-1-6 ALE.. 64
5-1-7 ..... 64
5-1-8 RST.. 64
5-1-9 وروديهاي نوسانساز.. 65
5-1-10 اتصالات تغذيه.. 65
5-2 سازمان حافظه.. 66
5-2-1 RAMهمه منظوره.. 66
5-2-2 RAM بيت آدرس پذير.. 66
5-2-3 بانک های ثبات .. 67
5-2-4 ثباتهای کاربرد خاص.. 68
5-3 دستيابی به حافظه کد و داده خارجی.. 70
5-4 روشهای آدرس دادن.. 71
5-4-1 آدرسدهی ثبات.. 71
5-4-2 آدرس دهی مستقيم.. 72
5-4-3 آدرس دهی غير مستقيم.. 73
5-4-4 آدرس دهی فوری .. 73
5-4-5 آدرس دهی نسبی .. 74
5-4-6 آدرس دهی مطلق .. 74
5-4-7 آدرس دهی طولانی .. 75
5-4-8 آدرس دهی انديس دار.. 75
5-5 انواع دستورالعملها.. 75
5-5-2 دستورالعملهای منطقی.. 76
5-5-3-1 RAM داخلی.. 77
5-5-3-2 RAM خارجی.. 77
5-5-3-3 جدولهای جستجو.. 78
5-5-4 دستورالعملهاي بولي.. 78
5-5-5 دستورالعملهای انشعاب برنامه.. 79
5-6 تايمرها.. 79
5-6-1 ثبات حالت تايمر.. 80
5-6-2 ثبات كنترل تايمر.. 82
5-7 شروع به كار، توقف و كنترل تايمرها.. 83
5-8 عمليات درگاه سريال.. 85
5-8-1 حالت 1.. 85
5-8-2 حالت 2.. 86
5-8-3 حالت 3.. 86
5-8 وقفه ها.. 88
5-8-1 سازمان وقفه.. 88
5-8-2 فعال و غير فعال کردن وقفه ها.. 88
5-8-3 تقدم وقفه ها.. 89
5-8-4 اجراي وقفهها.. 90
5-8-5 بيتهاي پرچم وقفهها.. 90
5-8-6 بردارهاي وقفه.. 91
فصل ششم.. 94
ميکروکننده های AVR.. 94
6-1 مقدمه.. 94
6-2 پايه ها و سيگنال ها.. 95
6-3 امكانات موجود در AVR.. 97
6-3-1 CPU... 97
6-3-2 حافظه ها.. 101
6-3-2-1 حافظه برنامه.. 101
6-3-3 مدارات راه اندازي و كنترل.. 103
6-3-4 واحدهاي جانبي (I/O).. 105
فصل هفتم.. 107
DMA 107
7-1 مفهوم DMA... 107
7-2 برنامه ريزي تراشه 8237 DMA... 108
7-3 ثبات هاي كنترل داخلي 8237.. 108
7-3-1 ثبات فرمان.. 109
7-3-2 ثبات وضعيت.. 109
7-3-3 ثبات مد.. 109
7-3-4 ثبات تك پوشش.. 110
7-3-5 ثبات تمام پوشش.. 110
7-3-6 ثبات موقت/پاك كردن اصلي.. 110
7-3-7 پاك كردن ثبات پوشش.. 110
پيشگفتار
در اوايل دهه 60 ميلادي ايالات متحده در آستانه شکل گيري تکنولوژي نويني در مهندسي برق بود. ترانزيستور که کمي پس از پايان جنگ جهاني دوم توسط سه دانشمند در آزمايشگاههاي كمپاني بل ابداع شده بود، کم کم جايگزين رقيبش لامپ خلا مي شد.
در سال 1968 رابرت نويس و گوردون مور، دو نفر از پايه گذاران اصلي كمپاني فيرچايلد شرکت جديدي موسوم به اينتل[1] تاسيس نمو دند. در سال 1969 يک شرکت ژاپني سازنده ماشين حساب, به آنها سفارش يک آي سي خاص براي ماشين حسابهاي جديد خود داد و يک پردازنده مرکزي (CPU) چهار بيتي بر روي يک تراشه ساخته شد و بدين ترتيب خانواده IC هاي اينتل 4000 متولد گرديد. اين روند ادامه پيدا کرد و در سال 1972, آي سي هشت بيتي 8008 , پس از آن 8080 , 8085 ودر اواخر دهه1970 چند ميکروپروسسور 16 بيتي به بازار عرضه شد .
اين تحول تا امروز ادامه داشته است و ميکروپروسسورهاي 32 بيتي و 64 بيتي(پنتيوم) پا به عرصه وجود گذاشتهاند. اکثر ميکروکامپيوتر هاي اوليه به صورت کيت فروخته مي شدند و براي انجام کاري خاص, بايد به زبان ماشين برنامه ريزي مي شدند و قابليت توليد انبوه را نداشتند, تا اينکه در1982 شرکت IBM براي اولين بار شروع به فروش کامپيوترهاي شخصي[2] نمود و امروزه شاهد جهش هاي ناباورانه اي در زمينه رشد تکنولوژي وقا بليت هاي کامپيوترهاي شخصي هستيم.
گردآورنده
اين مجموعه به بررسي مباني تکنولوژي ريز پردازندهها[3] مي پردازد و به عنوان يک منبع درسي, براي درس ساختار و زبان ماشين در نظر گرفته شده است. تمرکز ما در اين کتاب، فهم اجزاء سخت افزاري يک سيستم ميکروکامپيوتر و نقش نرم افزار در کنترل سخت افزار است.
قسمت عمده آنچه در اين مجموعه ملاحظه مي شود, از بخش هاي مختلف چند کتاب و نيز جزوه درس ساختار و زبان ماشين گردآوري شده است. در اين مجموعه به بررسي ميکروپروسسور هشت بيتي" شريف"، ميکروپروسسور هشت بيتي 8085 , ميکروکنترلر[4] هشت بيتي 8051 و در انتها به اختصار به ميکروکنترلر AVR مي پردازيم. البته در مورد ميکروپروسسور" شريف"، به دليل آنکه صرفا يک مدل براي يادگيري و آشنايي اوليه است, به سخت افزار چنداني پرداخته نمي شود. دو مورد بعدی که از ميکروپروسسور هاي واقعي و ساخت شرکت اينتل هستند بطور مفصل تر مورد بررسی قرار می گيرند. يادآوري مي نمايدكه تاکيد بر ساختار سه باسه( CPU هاي استفاده كننده از سه باس) است که در فصل هاي بعدي بهنگام افزودن حافظه و I/O به کار مي آيد، به همين منظور, در فصل اول به معرفي باس مي پردازيم. همچنين، در اين درس به آيسيهاي پشتيبان[5] ويژه 8085 و روشهايI/O ي سري خواهيم پرداخت. همچنين، به اختصار به معرفي فلسفه و توري پايه DMA و AVR مي پردازيم.
فصل اول
در اين فصل ابتدا با باسها[6] و زمانبندی[7] عملکرد صحيح آنها, مطالبي از قبيل سهحالته[8] و امکان اتصال خروجيهاي چند گيت[9] به يکديگر آشنا خواهيم شد. ادامه اين فصل به ساير اجزاي اصلي کامپيوتر(CPU) اختصاص دارد.
باس را ميتوان يک مجموعه خط(سيم) براي انتقال داده بين يک ارسال كننده داده و يک گيرنده تعريف کرد. معمولا خطوط سيگنالي را كه با يكديگر وجه مشتركي دارند پهلوي هم گذاشته و آن را يك باس مي ناميم. به اين ترتيب باس داده, باس آدرس و باس کنترل و غيره را به دست ميآوريم. در يک طراحي مناسب, بايد مسائلي از قبيل مصونيت در مقابل نويز, اثرهاي بارگذاري ac و dc, انعکاس ناشي از پالس هاي منطقي سريع و نيز تداخل بين هاديهاي موازي بايد در نظر گرفته شوند. ولي، از آنجا که ما در اين درس درصدد پرداختن به جنبه الکترونيک عناصر نيستيم، از بحث در باره اين مسائل صرف نظر مي کنيم.
روي باس نوع 1, يک فرستنده سيگنال و يک گيرنده داريم. از آنجا که ميکروپروسسورها با استفاده از تكنولژي MOS [10]ساخته شده اند و توانايي جرياندهي شان بسيار محدود است, به عنوان يک قاعده کلي هرگاه بار روي باس از توانايي جرياندهي ميکروپروسسور بيشتر باشد, يا گيرنده در برد اصلي نباشد بافر لازم است. منظور از بافرکردن باس, اتخاذ روشي براي اطمينان از انتقال سطوح منطقي معتبر بر روي باس است.
شکل 1-1 چند نوع بافر [11]متداول را نشان مي دهد. آي سي هايي از خانوادة [12]TTL مانند74LS245 و4LS244 اين جنبه گيرا را دارند که در هر آيسي هشت بافر وجود دارد. معمولا نه تنها بافر کردن فرستنده, که بافر کردن ورودي گيرنده ها نيز سودمند است, زيرا اين کار مقدار بارهايي را که مي توانند روي باس قرار بگيرند بسيار زياد ميکند. در مورد اين دو آیسی در بخش 1-1-3 بيشتر توضيح داده شده است.
شكل 1-1 باس نوع يك
تمام بافرهاي شکل 1-2 توانايي سه حالته بودن را دارند, به اين معني که علاوه بر دو حالت 0 و1 منطقي, يک حالت سوم هم ميتوانند داشته باشند. اين حالت سوم در واقع حالت امپدانس بالا[13] يا مدار باز است. بافرهاي سه حالته اجازه ميدهند چند فرستنده يک خط باس را کنترل کنند. اگر تمام فرستندهها بجز يکي در حالت امپدانس بالا قرار گيرند هيچ تداخلي پيش نميآيد. اين خاصيت در مورد باس نوع سوم مورد استفاده قرار ميگيرد.
در باس نوع 2, چند فرستنده و يک گيرندة سيگنال داريم. اين نوع باس را نميتوان با گيتهاي TTL استاندارد ساخت. شکل 1-2 دليل اين امر را نشان ميدهد. تا وقتي هر دو فرستنده ميخواهند مقدار منطقي يکساني روي خط قرار دهند, اشکالي پيش نميآيد. ولي همين که خروجي يکي 1 و يکي 0 باشد, باس وضعيت مبهمي پيدا ميکند و بدتر اينکه امکان دارد از گيتي با خروجي 1 جريان زيادي وارد گيتي با خروجي 0 شود و هر دو گيت آسيب مي ببينند. اين وضعيت, نزاع بر سر باس نام دارد.
شكل 1-2 باس نوع دو
يک راه براي حل اين مشکل استفاده از گيتهاي سه حالته[14] به عنوان فرستنده است. با فعال کردن تنها يک فرستنده در هر زمان, نزاع بر سر باس ختم ميشود. مسالهاي که اين راه حل به وجود ميآورد يک مدار منطقي اضافهاي است که براي اطمينان از فعال کردن فقط يک فرستنده در هر زمان بايد به کار برده شود.
راه حل ديگر استفاده از باس کلکتور باز (درين باز)[15] شکل 1-3 است. در اين طرح خروجي فرستندهها, کلکتور باز است.يعني اينها ميتوانند با اشباع کردن ترانزيستور خروجيشان, ولتاژ باس را به صفر بکشند, ولي براي رساندن ولتاژ باس به 1, به يک مقاومت بالابر(ولتاژ)[16] خارجي احتياج داريم. مثالي از اين دست, NAND کلکتور باز 7401 است.
عيب اين نوع باس اين است که نميتوان تعيين کرد که کدام فرستنده باس را صفر کرده است. به اين ترتيب پروسسور مجبور است وضعيت[17] (خروجي ها) را بخواند تا بتواند وسيله فعال کننده را بيابد, اين روش, همهپرسي[18] نام دارد.
شكل 1-3 باس نوع 2 با دروازه هاي كلكتور باز
البته در بسياري حالات لازم نيست CPU بداند چه وسيلهاي باس را صفر کرده است, مثلا حالت انتظار[19] که از طرف يک حافظه کند که نميتواند به سرعت داده مورد تقاضاي CPU را فراهم آورد درخواست ميشود. در اين حالت اينکه کدام حافظه تقاضاي انتظار کرده مهم نيست.
باس نوع3, يک باس دو جهته است که روي آن چند ين فرستنده وچند گيرنده قرار دارد.
متداولترين مثال, باس داده[20] در يك سيستم ميکروپروسسوري است. شکل 1-4 جهت عبور داده از يک وسيله ورودي به CPU را نشان ميدهد. توجه کنيد که تمام فرستندهها به صورت گيتهاي سه حالته وتمام گيرندهها به صورت لچ[21] شامل فيليپ فلاپهاي D نشان داده شدهاند.
لزوم سه حالته بودن فرستندهها بايد روشن باشد. در هر زمان تنها بايد يک فرستنده, کنترل باس را در دست داشته باشد، اما ممکن است لزوم لچ داشتن گيرنده چندان واضح نباشد. چيزي که بايد به ياد داشته باشيم اين است که داده براي مدت کوتاهي روي باس قرار ميگيرد. به عنوان مثال، هنگام اجراي يک دستور ورودي در سيکل M1 روي باس
شكل 1-4 جهت عبور داده بر روي يك باس دو جهته
داده آپ کد دستور IN وجود دارد. (مراحل اجراي يک دستور در فصلهاي بعدي به تفضيل شرح داده خواهد شد) در سيکل ماشين بعدي اين باس آدرس دريچه ورودي/خروجي را دارد. در سيکل ماشين سوم وسيله ورودي فعال شده و داده را روي باس قرار ميدهد. چون هر سيکل ماشين تنها چهار يا پنج سيکل ساعت طول ميکشد, هر گيرنده بايد موقعي که نوبتش است داده را سريعا در لچ خود قرار دهد.
مساله اصلي باس3 همين است؛ چطور يک گيرنده يا فرستنده ميفهمد که نوبتش رسيده است؟
پاسخ اين سوال به روشهاي کدگشايي[22] باس آدرس وکنترل برميگردد, اين روشها را در آينده به تفضيل خواهيم ديد؛ ولي ايده به حد کافي ساده است. در واقع زمانبندی عملکرد اين باس از اين قرار است : اگر خط خواندن I/O باس کنترل فعال است, و آدرس ما روي باس آدرس قرار دارد, نوبت ماست که داده را روي باس قرار دهيم و بايد فرستنده سه حالته خود را فعال کنيم. البته باز هم بافر نياز است. شکل 1-5 روش کار را نشان ميدهد. براي هر خط دو گيت سه حالته با خطوط Enable, READ و WRITE مجزا لازم است. سيگنالهاي فعال کننده را بايد از باس کنترل ميکروپرسسور گرفت.
شكل 1-5 بافر باس دو جهت. در هر زمان فقط يك دروازه فعال مي شود
بعضي از انواع متداول اين بافرها در شکل 1-6 نشان داده شده است. از اين ميان 74LS245 براي اين کاربرد بسيار مناسب است؛ چون اين آيسي هشت زوج سه حالته با خطوط کنترل مجزاي Enable و انتخاب جهت[23] دارد.
شكل 1-6 فرستنده گيرنده هاي متداول براي بافر كردن باس داده ميكروپروسسور
همچنين در مورد لچ 74LS373 , براي جدا کردن خطوط آدرس و داده در 8085 که مالتيپلکس شدهاند لازم است. 373 (فرم اختصاري 74LS373 , درادامه مورد اين نوع نمايش بيشتر توضيح خواهيم داد), هشت فيليپ فلاپ با يک ورودي مشترک فعال بالا[24] دارد. وقتي سيگنال ALE[25] يک است خطوط AD0 تا AD7 بخش مرتبه پايين آدرس را حمل ميکند. نيز لچ 74LS374 براي اتصالاتي از قبيل 8085 به خروجيهايي مانند LED مناسب است. هر دو لچ, با يک شدن OE, خروجيهايشان امپدانس بالا ميشود. 373 داراي 20 پايه است,8 پايه آن به عنوان ورودي و8 پايه به عنوان خروجي تعريف شدهاند. علاوه بر اين 16 پايه، يک پايه ورودي OE[26] نيز وجود دارد كه اگر فعال شود ورودي لچ را به خروجي مدار مجتمع متصل مي کند و اگر اكتيو نباشد خروجي به حالت شناور ميرود. پايه ديگر اين IC، ورودي Clock است كه با علامت اختصاري CLK نمايش داده ميشود. CLK، ساعت سيستم (پالس مربعي با فركانس ثابت) است. اين پالس مربعي توسط يک کريستال توليد مي شود. اين پايهها در شكل 1-7 نشان داده شده اند. اين IC،حساس به سطح[27]است يعني در طول مدت زماني كه CLK اكتيو است، IC ورودي را به خروجي منتقل ميكند. 374 مشابه 373 است،تنها تفاوتش در اين است كه اين IC، حساس به لبه[28] است يعني زماني كه CLK، از صفر به يك ميرود سيگنال ورودي به خروجي منتقل ميشود. اين پايهها در شكل 1-8 نشان داده شده اند.
در اين قسمت به نامگذاري و علامت اختصاري IC ها اشارهاي ميکنيم. مثلاً چرا 74LS373 را با 373 نشان ميدهند؟ IC ها به گروه هاي مختلفي تقسيم مي شوند وهر IC در يک گروه قرار ميگيرد. IC هاي هم گروه IC هايي هستند که چند حرف اول نامشان شبيه به هم است ولي تفاوت درحروف آخرشان است. بنابراين به جاي تكرار حروف مشابه, علامت () ميگذاريم؛ مثلاً در گروه IC هايي كه با 74 شروع ميشوند، نامهايي از قبيل 74L ، 74LS ،74H، 74C، 74AC، 74S و... ديده مي شود كه هر كدام معرف خصوصيتي هستند.
بعنوان توضيح, 74LS که يکي از متداولترين گروههاست, Lاش به خاطر اين است كه فعال پايين[29] است يعني با صفر فعال و با يك غير فعال ميشود و S اش به خاطر اين است كه Shot key است يعني سرعت عملکرد آن بالاست. و يا 74H، High power است و 74C به خاطر اين است كه از CMOS در اين IC استفاده شده است. به عنوان مثالي ديگر بجاي اينكه بنويسيم 0074HC مينويسيم : 00 و... .
شکل 1-7 آیسی 74LS373 شکل 1-8 آیسی 74LS374
همچنين’138(74LS138)يک دکودر 3 به 8 پرکاربرد است وخروجيهاي ايندکودر، فعال پايين ميباشند. سه ورودي Enable داردکه E1 وE2 بايد Low باشند وE3 بايد High باشد تا IC فعال باشد. 3 پايه ديگر انتخابگرها هستند و 8 پايه هم به عنوان خروجي تعيين شدهاند. خروجيها توسط ترکيبي از سه ورودي توانا کننده فعال ميشوند. وروديهاي فعال کننده به پايههاي A، BوC آي سي اعمال ميشوند و با ديکد شدن وروديها خروجي مورد نظر فعال ميشود. اين خروجيها ميتواند به فعال کننده يک تراشه مثلRAM, ROM و... وصل شود. بنابراين با اين IC ميتوانيم 8 تراشه را فعال يا غير فعال کنيم. مثلاً اگر عدد 010 را به پايههاي انتخابگر بدهيم خروجي 2 فعال ميشود و به همين ترتيب براي 8 خروجي ديگر. شماتيک اين IC مطابق شکل 1-9 است.
شکل 1-9 آیسی 74ALS138
مورد ديگر (74LS244)’244است. اين قطعه شامل 8 خط بافر فعال بالا ميباشد. خروجي آن سه حالته است،0, 1 وحالت امپدانس بالا (Z)؛ اين قطعه 8 پايه ورودي و8 پايه خروجي و 2 پايه Enable دارد. پايههاي بافر به دو گروه تقسيم بندي ميشوند، گروه يک شامل پايههاي A0,A1,A2,A3 و است و اگر فعال باشد وروديها (A0-A3) درخروجيها (Y0-Y3)ظاهر ميشوندوگرنه خروجيها (Y0-Y3) به حالت Zميروند.
گروه دو شامل پايههاي A4,A5,A6,A7 و است و اگر فعال باشد وروديها (A4-A7) درخروجيها (Y4-Y7)ظاهر ميشوندوگرنه خروجيها (Y4-Y7) به حالت Z ميروند. اين بافر در شکل 1-10 مشاهده ميشود.
74LS245 هم يک بافر مانند 74LS244 است, با اين تفاوت که دو طرفه است.
شکل 1-10 آیسی 74ALS244
همه ميکروپروسسورها معمولا داراي چندين ثبات هستند. مثلا 8085 شش رجيستر همه منظوره هشت بيتي با نامهاي B, C, D, E, H و L دارد. همچنين داراي دو رجيستر خاص است, يکي A (آکومولاتور[31] يا انباره) و ديگري رجيستر F (رجيستر پرچم)[32] که اين دو نيز هشت بيتي هستند. نيز دو رجيستر 16 بيتي با نامهاي SP و PC دارد. رجيستر PC شمارنده برنامه[33] است و طول آن (16 بيت) با باس آدرس 8085 سازگار است. شمارنده برنامه آدرس دستورالعمل بعدي را کهCPU از حافظه احضار ميکند, نگه مي دارد. اين قضيه در مورد 8051 و ماشين شريف هم همين طور است. رجيستر SP اشارهگر[34] پشته ناميده مي شود. اين رجيستر نيز يک آدرس 16 بيتي را در خود نگه مي دارد, ولي اين آدرس به بخش خاصي از حافظه موسوم به پشته اشاره مي کند. از بخش پشته ميتوان به عنوان تعداد تقريبا نامحدودي رجيستر خارج از آيسي استفاده کرد. البته فلسفه اصلي تعريف پشته, حفظ آدرس برگشت هنگامي که يک زير برنامه(سابروتين)[35] صدا زده ميشود, ميباشد.
توضيح در مورد رجيستر F اينکه, در 8085 اين رجيستر شامل پنج پرچم وضعيت و سه بيت تعريف نشده است؛ در واقع اين پرچمها فليپ فلاپهاي 1 بيتي هستند که ميتوانند يک يا صفر باشند. در حالت کلي بعضي دستورالعملهاي 8085 بر تمام يا بعضي از آنها تاثير دارد و بعضي از دستورالعملها نيز بر هيچ کدام تاثير ندارند. اين پنج پرچم عبارتند از:
CY (رقم نقلي)[36] : اگر در جمع, رقم نقلي توليد شود يا اجراي دستور تفريق مستلزم رقم قرضي (borrow) شود اين پرچم set در غير اين صورت reset مي شود.
P (توازن)[37] : اگر تعداد بيتهاي حاصل يک عمل زوج باشد اين پرچم set در غير اين صورت reset مي شود.
AC (رقم نقلي کمکي)[38] : اگر دستورالعملي باعث ايجاد رقم نقلي از بيت 3 به 4 شود, اين بيت set در غير اين صورت reset خواهدشد.
Z (صفر)[39] : اگر نتيجه يک دستورالعمل مقدار صفر باشد اين پرچم set در غير اين صورت reset مي شود.
S (علامت)[40] : اگر با ارزش ترين بيت حاصل يک عمل 1 باشد, اين پرچم set در غير صورت reset مي شود.
وضعيت در مورد 8051 و شريف نيز مشابه است که در جاي خود توضيح داده خواهد شد.
واحد ALU كه به آن واحد محاسبه و منطقگويند دو ورودي ميگيرد يکي آکومولاتور و ديگري رجيستر Temp ؛ پس از انجام عمل خواسته شده (كه از طريق پايههاي كنترلي به اين واحد دستور داده ميشود) خروجي را تحويل ميدهد. اين واحد هم اعمال محاسباتي و هم اعمال منطقي را انجام ميدهد.مثلاً براي جمع دو عدد 11 و20 , يكي از اين اعداد در آكومولاتور ذخيره مي شود و عدد ديگر به رجيستر كمكي Temp انتقال مييابد، پس از محاسبه در خروجي ALU عدد 31 قرار ميگيرد.
هر دستوري كه fetch ميشود بصورت يک عدد باينري است, اين اعداد بايد تحليل شوند. در اين قسمت هر دستور ابتدا ديکد ميشود و سپس به واحد واحد کنترل و زمانبندی[43] فرستاده ميشود تا پايههاي كنترل واحدها بنا به دستوري كه وارد CPU مي شودفعال يا غير فعال شوند .
اين واحد, كنترل سيستم را بر عهده دارد. وروديهاي اين بخش, پالس ساعت وخروجي IR است. بر اساس اينکه چه دستوري بايد انجام شود سيگنالهاي مناسبي از قبيل Memory Read , Memory Write, و... بايد فعال شوند.
تمام قسمتهاي گفته شده تا اينجا, ارکان اصلي يک CPU هستند. در ميکروپروسسورهاي مختلف ممکن است اين اجزاء با هم اندکي تفاوت داشته باشند, در فصلهای آينده با جزئيات بيشتر, به طور خاص با 8085 , کامپيوتر شريف و 8051 آشنا ميشويم
دیدگاه خود را ثبت کنید