آموزش طراحي ديجيتال به زبان ساده

bardiajoon

عضو جدید
درود بر همه مهندسين عزيز

با توجه به وجود مراجع مختلف مبحث مدار منطقي مي خوام تو اين تاپيك به زبان خودماني و ساده اين مبحث رو بشكافم و توضيح بدم خوشحال ميشم دوستان و صاحب نظران هم كمك كنند و اگه استقبال بشه تا هر جايي كه بخواهيد كمك مي كنم.:)
 

bardiajoon

عضو جدید
پيشگفتار

پيشگفتار

در اوايل دهه 60 ميلادي ايالات متحده در آستانه شکل گيري تکنولوژي نويني در مهندسي برق بود. ترانزيستور که کمي پس از پايان جنگ جهاني دوم توسط سه دانشمند در آزمايشگاههاي كمپاني بل ابداع شده بود، کم کم جايگزين رقيبش لامپ خلا مي شد.
در سال 1968 رابرت نويس و گوردون مور، دو نفر از پايه گذاران اصلي كمپاني فيرچايلد شرکت جديدي موسوم به اينتل[FONT=&quot][1]http://www.iran-eng.com/#_ftn1 تاسيس نمو دند. در سال 1969 يک شرکت ژاپني سازنده ماشين حساب, به آنها سفارش يک آي سي خاص براي ماشين حسابهاي جديد خود داد و يک پردازنده مرکزي ([/FONT]CPU) چهار بيتي بر روي يک تراشه ساخته شد و بدين ترتيب خانواده IC هاي اينتل 4000 متولد گرديد. اين روند ادامه پيدا کرد و در سال 1972, آي سي هشت بيتي 8008 , پس از آن 8080 , 8085 ودر اواخر دهه1970 چند ميکروپروسسور 16 بيتي به بازار عرضه شد .
اين تحول تا امروز ادامه داشته است و ميکروپروسسورهاي 32 بيتي و 64 بيتي(پنتيوم) پا به عرصه وجود گذاشته‏اند. اکثر ميکروکامپيوتر هاي اوليه به صورت کيت فروخته مي شدند و براي انجام کاري خاص, بايد به زبان ماشين برنامه ريزي مي شدند و قابليت توليد انبوه را نداشتند, تا اينکه در1982 شرکت IBM براي اولين بار شروع به فروش کامپيوترهاي شخصي[FONT=&quot][2]http://www.iran-eng.com/#_ftn2 نمود و امروزه شاهد جهش هاي ناباورانه اي در زمينه رشد تکنولوژي وقا بليت هاي کامپيوترهاي شخصي هستيم.[/FONT]<font size="4">

[FONT=&quot][1][/FONT]·Integrated Electronics
 
آخرین ویرایش:

bardiajoon

عضو جدید
باس‏‏ها و اجزای داخلی يك کامپيوتر

باس‏‏ها و اجزای داخلی يك کامپيوتر

باس را مي‏توان يک مجموعه خط(سيم) براي انتقال داده بين يک ارسال كننده داده و يک گيرنده تعريف کرد. معمولا خطوط سيگنالي را كه با يكديگر وجه مشتركي دارند پهلوي هم گذاشته و آن را يك باس مي ناميم. به اين ترتيب باس داده, باس آدرس و باس کنترل و غيره را به دست مي‏آوريم. در يک طراحي مناسب, بايد مسائلي از قبيل مصونيت در مقابل نويز, اثرهاي بارگذاري ac و dc, انعکاس ناشي از پالس هاي منطقي سريع و نيز تداخل بين هادي‏‏هاي موازي بايد در نظر گرفته شوند. ولي، از آنجا که ما در اين درس درصدد پرداختن به جنبه الکترونيک عناصر نيستيم، از بحث در باره اين مسائل صرف نظر مي کنيم.
سيکل ماشين بعدي اين باس آدرس دريچه ورودي/خروجي را دارد. در سيکل ماشين سوم وسيله ورودي فعال شده و داده را روي باس قرار مي‏دهد. چون هر سيکل ماشين تنها چهار يا پنج سيکل ساعت طول مي‏کشد, هر گيرنده بايد موقعي که نوبتش است داده را سريعا در لچ خود قرار دهد.
مساله اصلي باس3 همين است؛ چطور يک گيرنده يا فرستنده مي‏فهمد که نوبتش رسيده است؟
پاسخ اين سوال به روشهاي کدگشايي[FONT=&quot][1]http://www.iran-eng.com/#_ftn1 باس آدرس وکنترل برمي‏گردد, اين روشها را در آينده به تفضيل خواهيم ديد؛ ولي ايده به حد کافي ساده است. در واقع زمان‏بندی عملکرد اين باس از اين قرار است : اگر خط خواندن [/FONT][FONT=&quot]I/O[/FONT] باس کنترل فعال است, و آدرس ما روي باس آدرس قرار دارد, نوبت ماست که داده را روي باس قرار دهيم و بايد فرستنده سه حالته خود را فعال کنيم. البته باز هم بافر نياز است. شکل 1-5 روش کار را نشان مي‏دهد. براي هر خط دو گيت سه حالته با خطوط [FONT=&quot]Enable[/FONT], [FONT=&quot]READ[/FONT] و [FONT=&quot]WRITE[/FONT] مجزا لازم است. سيگنالهاي فعال کننده را بايد از باس کنترل ميکروپرسسور گرفت.
[FONT=&quot][1][/FONT][FONT=&quot] [/FONT]·[FONT=&quot] [/FONT]Decoding



يک راه براي حل اين مشکل استفاده از گيت‏هاي سه حالته[FONT=&quot][1]http://www.iran-eng.com/#_ftn1 به عنوان فرستنده است. با فعال کردن تنها يک فرستنده در هر زمان, نزاع بر سر باس ختم مي‏شود. مساله‏اي که اين راه حل به وجود مي‏آورد يک مدار منطقي اضافه‏اي است که براي اطمينان از فعال کردن فقط يک فرستنده در هر زمان بايد به کار برده شود.[/FONT]
راه حل ديگر استفاده از باس کلکتور باز (درين باز)[FONT=&quot][2]http://www.iran-eng.com/#_ftn2 شکل 1-3 است. در اين طرح خروجي فرستنده‏ها, کلکتور باز است.يعني اينها مي‏توانند با اشباع کردن ترانزيستور خروجي‏شان, ولتاژ باس را به صفر بکشند, ولي براي رساندن ولتاژ باس به [/FONT]1, به يک مقاومت بالابر(ولتاژ)[FONT=&quot][3]http://www.iran-eng.com/#_ftn3 خارجي احتياج داريم. مثالي از اين دست, [/FONT]NAND کلکتور باز 7401 است.
عيب اين نوع باس اين است که نمي‏توان تعيين کرد که کدام فرستنده باس را صفر کرده است. به اين ترتيب پروسسور مجبور است وضعيت[FONT=&quot][4]http://www.iran-eng.com/#_ftn4 (خروجي ها) را بخواند تا بتواند وسيله فعال کننده را بيابد, اين روش, همه‏پرسي[FONT=&quot][5][/FONT] نام دارد.[/FONT]

[FONT=&quot][1][/FONT][FONT=&quot] .[/FONT]Tri State Output

[FONT=&quot][2][/FONT][FONT=&quot] .[/FONT]Open Collector(Open Drain)

[FONT=&quot][3][/FONT][FONT=&quot] [/FONT]·[FONT=&quot] [/FONT](Voltage) Pull Up (Resistor)

[FONT=&quot][4][/FONT][FONT=&quot] [/FONT]·[FONT=&quot] [/FONT]Status

[FONT=&quot][5][/FONT][FONT=&quot] [/FONT]·[FONT=&quot] [/FONT]Polling




1-1-1[FONT=&quot] [/FONT] باس نوع اول


روي باس نوع 1, يک فرستنده سيگنال و يک گيرنده داريم. از آنجا که ميکروپروسسورها با استفاده از تكنولژي MOS [FONT=&quot][1]http://www.iran-eng.com/#_ftn1ساخته شده اند و توانايي جرياندهي شان بسيار محدود است, به عنوان يک قاعده کلي هرگاه بار روي باس از توانايي جرياندهي ميکروپروسسور بيشتر باشد, يا گيرنده در برد اصلي نباشد بافر لازم است. منظور از بافرکردن باس, اتخاذ روشي براي اطمينان از انتقال سطوح منطقي معتبر بر روي باس است.[/FONT]
شکل 1-1 چند نوع بافر [FONT=&quot][2]http://www.iran-eng.com/#_ftn2متداول را نشان مي دهد. آي سي هايي از خانوادة [/FONT][FONT=&quot][FONT=&quot][3][/FONT][/FONT][FONT=&quot]TTL [/FONT] مانند[FONT=&quot] [/FONT][FONT=&quot]74LS245 [/FONT] و[FONT=&quot] [/FONT][FONT=&quot]4LS244[/FONT] اين جنبه گيرا را دارند که در هر آي‏سي هشت بافر وجود دارد. معمولا نه تنها بافر کردن فرستنده, که بافر کردن ورودي گيرنده ها نيز سودمند است, زيرا اين کار مقدار بارهايي را که مي توانند روي باس قرار بگيرند بسيار زياد مي‏کند. در مورد اين دو آی‏سی در بخش 1-1-3 بيشتر توضيح داده شده است.
[FONT=&quot][1][/FONT][FONT=&quot] [/FONT][FONT=&quot].[/FONT]Metal Oxyde Semiconductor

[FONT=&quot][2][/FONT][FONT=&quot] . [/FONT]Buffer

[FONT=&quot][3][/FONT][FONT=&quot] [/FONT]Transistor Transistor Logic.


1-1-1[FONT=&quot] [/FONT] باس نوع دوم


در باس نوع 2, چند فرستنده و يک گيرندة سيگنال داريم. اين نوع باس را نمي‏توان با گيت‏هاي TTL استاندارد ساخت. شکل 1-2 دليل اين امر را نشان مي‏دهد. تا وقتي هر دو فرستنده مي‏خواهند مقدار منطقي يکساني روي خط قرار دهند, اشکالي پيش نمي‏آيد. ولي همين که خروجي يکي 1 و يکي 0 باشد, باس وضعيت مبهمي پيدا مي‏کند و بدتر اينکه امکان دارد از گيتي با خروجي 1 جريان زيادي وارد گيتي با خروجي 0 شود و هر دو گيت آسيب مي ببينند. اين وضعيت, نزاع بر سر باس نام دارد.
1-1-1[FONT=&quot] [/FONT]باس نوع سوم


باس نوع3, يک باس دو جهته است که روي آن چند ين فرستنده وچند گيرنده قرار دارد.
متداولترين مثال, باس داده[FONT=&quot][1]http://www.iran-eng.com/#_ftn1 در يك سيستم ميکروپروسسوري است. شکل 1-4 جهت عبور داده از يک وسيله ورودي به [/FONT]CPU را نشان ميدهد. توجه کنيد که تمام فرستنده‏ها به صورت گيت‏هاي سه حالته وتمام گيرنده‏ها به صورت لچ[FONT=&quot][2]http://www.iran-eng.com/#_ftn2 شامل فيليپ‏ فلاپهاي [/FONT]D نشان داده شده‏اند.
لزوم سه حالته بودن فرستنده‏ها بايد روشن باشد. در هر زمان تنها بايد يک فرستنده, کنترل باس را در دست داشته باشد، اما ممکن است لزوم لچ داشتن گيرنده چندان واضح نباشد. چيزي که بايد به ياد داشته باشيم اين است که داده براي مدت کوتاهي روي باس قرار مي‏گيرد.
[FONT=&quot][1][/FONT][FONT=&quot] [/FONT]·[FONT=&quot] [/FONT]Data Bus

[FONT=&quot][2][/FONT][FONT=&quot] [/FONT]·[FONT=&quot] [/FONT]Latch


:heart:








 

bardiajoon

عضو جدید
واحد محاسبه و منطق و ثبات ها

واحد محاسبه و منطق و ثبات ها

شكل بالا فرستنده گيرنده هاي متداول براي بافر كردن باس داده ميكروپروسسور



همچنين در مورد لچ‏ 74LS373 , براي جدا کردن خطوط آدرس و داده در 8085 که مالتي‏پلکس شده‏اند لازم است. '373 (فرم اختصاري 74LS373 , درادامه مورد اين نوع نمايش بيشتر توضيح خواهيم داد), هشت فيليپ فلاپ با يک ورودي مشترک فعال بالا[FONT=&quot][1]http://www.iran-eng.com/#_ftn1 دارد. وقتي سيگنال [/FONT]ALE[FONT=&quot][2][/FONT] يک است خطوط AD0 تا AD7 بخش مرتبه پايين آدرس را حمل مي‏کند. نيز لچ 74LS374 براي اتصالاتي از قبيل 8085 به خروجي‏هايي مانند LED مناسب است. هر دو لچ, با يک شدن OE, خروجيهايشان امپدانس بالا مي‏شود. '373 داراي 20 پايه است,8 پايه آن به عنوان ورودي و8 پايه به عنوان خروجي تعريف شده‌اند. علاوه بر اين 16 پايه، يک پايه ورودي OE[FONT=&quot][3][/FONT] نيز وجود دارد كه اگر فعال شود ورودي لچ را به خروجي مدار مجتمع متصل مي کند و اگر اكتيو نباشد خروجي به حالت شناور مي‌رود. پايه‌ ديگر اين IC، ورودي Clock است كه با علامت اختصاري CLK نمايش داده مي‌شود. CLK، ساعت سيستم (پالس مربعي با فركانس ثابت) است. اين پالس مربعي توسط يک کريستال توليد مي شود. اين پايه‌ها در شكل 1-7 نشان داده شده اند. اين IC،حساس به سطح[FONT=&quot][4]http://www.iran-eng.com/#_ftn4[/FONT] است يعني در طول مدت زماني كه CLK اكتيو است، IC ورودي را به خروجي منتقل مي‌كند. '374 مشابه '373 است، تنها تفاوتش در اين است كه اين IC، حساس به لبه[FONT=&quot][5]http://www.iran-eng.com/#_ftn5 است يعني زماني كه [/FONT]CLK، از صفر به يك مي‌رود سيگنال ورودي به خروجي منتقل مي‌شود. اين پايه‌ها در شكل 1-8 نشان داده شده اند.
در اين قسمت به نامگذاري و علامت اختصاري IC ها اشاره‌اي مي‌کنيم. مثلاً چرا 74LS373 را با '373 نشان مي‌دهند؟ IC ها به گروه هاي مختلفي تقسيم مي شوند وهر IC در يک گروه قرار مي‌گيرد. IC‌ هاي هم گروه IC‌ هايي هستند که چند حرف اول نامشان شبيه به هم است ولي تفاوت درحروف آخرشان است. بنابراين به جاي تكرار حروف مشابه, علامت (') مي‌گذاريم؛ مثلاً در گروه IC هايي كه با 74 شروع مي‌شوند، نامهايي از قبيل 74L ، 74LS ،‌74H، 74C، 74AC، 74S و... ديده مي شود كه هر كدام معرف خصوصيتي هستند.
بعنوان توضيح, [FONT=&quot]74LS[/FONT] که يکي از متداولترين گروههاست, [FONT=&quot] L[/FONT]اش به خاطر اين است كه فعال پايين[FONT=&quot][6]http://www.iran-eng.com/#_ftn6 است يعني با صفر فعال و با يك غير فعال مي‌شود و [/FONT][FONT=&quot]S[/FONT] اش به خاطر اين است كه [FONT=&quot]Shot key[/FONT] است يعني سرعت عملکرد آن بالاست. و يا [FONT=&quot]74H[/FONT]، [FONT=&quot]High power[/FONT] است و [FONT=&quot]74C[/FONT] به خاطر اين است كه از [FONT=&quot]CMOS[/FONT] در اين [FONT=&quot]IC[/FONT] استفاده شده است. به عنوان مثالي ديگر بجاي اينكه بنويسيم [FONT=&quot]00[/FONT][FONT=&quot]74HC[/FONT] مي‌نويسيم : [FONT=&quot]00[/FONT][FONT=&quot]'[/FONT] و... .
[FONT=&quot][1][/FONT]·Active High
[FONT=&quot][2][/FONT]·Address Latch Enable
[FONT=&quot][3][/FONT]·Output Enable
[FONT=&quot][4][/FONT]·Level Triggered
[FONT=&quot][5][/FONT]·Edge Triggered
[FONT=&quot][6][/FONT]·Active Low
همچنين[FONT=&quot]’138[/FONT][FONT=&quot](74LS138)[/FONT]يک دکودر 3 به 8 پرکاربرد است وخروجي‌هاي ايندکودر، فعال پايين مي‌باشند. سه ورودي [FONT=&quot]Enable[/FONT] داردکه [FONT=&quot]E1[/FONT] و[FONT=&quot]E2[/FONT] بايد [FONT=&quot]Low[/FONT] باشند و[FONT=&quot]E3[/FONT] بايد [FONT=&quot]High[/FONT] باشد تا [FONT=&quot]IC[/FONT] فعال باشد. 3 پايه ديگر انتخابگرها هستند و 8 پايه هم به عنوان خروجي تعيين شده‏اند. خروجيها توسط ترکيبي از سه ورودي توانا کننده فعال مي‌شوند. ورودي‌هاي فعال کننده به پايه‌هاي [FONT=&quot]A[/FONT]، [FONT=&quot]B[/FONT]و[FONT=&quot]C[/FONT] آي سي اعمال مي‌شوند و با ديکد شدن ورودي‌ها خروجي مورد نظر فعال مي‌شود. اين خروجيها مي‌تواند به فعال کننده‌ يک تراشه مثل[FONT=&quot]RAM[/FONT], [FONT=&quot]ROM[/FONT] و... وصل شود. بنابراين با اين [FONT=&quot]IC[/FONT] مي‌توانيم 8 تراشه را فعال يا غير فعال کنيم. مثلاً اگر عدد [FONT=&quot]010[/FONT] را به پايه‌هاي انتخابگر بدهيم خروجي 2 فعال مي‌شود و به همين ترتيب براي 8 خروجي ديگر.
مورد ديگر (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 مشاهده مي‏شود.
[FONT=&quot]74LS245[/FONT]هم يک بافر مانند است,
-2 ثبات‏ها[FONT=&quot][1]http://www.iran-eng.com/#_ftn1[/FONT]

همه ميکروپروسسورها معمولا داراي چندين ثبات‏ هستند. مثلا 8085 شش رجيستر همه منظوره هشت بيتي با نام‏هاي B, C, D, E, H و L دارد. همچنين داراي دو رجيستر خاص است, يکي A (آکومولاتور[FONT=&quot][2]http://www.iran-eng.com/#_ftn2 يا انباره) و ديگري رجيستر [/FONT]F (رجيستر پرچم)[FONT=&quot][3]http://www.iran-eng.com/#_ftn3 که اين دو نيز هشت بيتي هستند. نيز دو رجيستر 16 بيتي با نامهاي [/FONT]SP و PC دارد. رجيستر PC شمارنده برنامه[FONT=&quot][4]http://www.iran-eng.com/#_ftn4 است و طول آن (16 بيت) با باس آدرس 8085 سازگار است. شمارنده برنامه آدرس دستورالعمل بعدي را که[/FONT]CPU از حافظه احضار مي‏کند, نگه مي دارد. اين قضيه در مورد 8051 و ماشين شريف هم همين طور است. رجيستر SP اشاره‏گر[FONT=&quot][5]http://www.iran-eng.com/#_ftn5 پشته ناميده مي شود. اين رجيستر نيز يک آدرس 16 بيتي را در خود نگه مي دارد, ولي اين آدرس به بخش خاصي از حافظه موسوم به پشته اشاره مي کند. از بخش پشته مي‏توان به عنوان تعداد تقريبا نامحدودي رجيستر خارج از آي‏سي استفاده کرد. البته فلسفه اصلي تعريف پشته, حفظ آدرس برگشت هنگامي که يک زير برنامه(سابروتين)[FONT=&quot][6][/FONT] صدا زده مي‏شود, مي‏باشد.[/FONT]
توضيح در مورد رجيستر F اينکه, در 8085 اين رجيستر شامل پنج پرچم وضعيت و سه بيت تعريف نشده است؛ در واقع اين پرچم‏ها فليپ فلاپهاي 1 بيتي هستند که مي‏توانند يک يا صفر باشند. در حالت کلي بعضي دستورالعمل‏هاي 8085 بر تمام يا بعضي از آنها تاثير دارد و بعضي از دستورالعمل‏ها نيز بر هيچ کدام تاثير ندارند. اين پنج پرچم عبارتند از:
CY (رقم نقلي)[FONT=&quot][7]http://www.iran-eng.com/#_ftn7 : اگر در جمع, رقم نقلي توليد شود يا اجراي دستور تفريق مستلزم رقم قرضي ([/FONT]borrow) شود اين پرچم set در غير اين صورت reset مي شود.
P (توازن)[FONT=&quot][8]http://www.iran-eng.com/#_ftn8 : اگر تعداد بيتهاي حاصل يک عمل زوج باشد اين پرچم [/FONT]set در غير اين صورت reset مي شود.
AC (رقم نقلي کمکي)[FONT=&quot][9]http://www.iran-eng.com/#_ftn9 : اگر دستورالعملي باعث ايجاد رقم نقلي از بيت 3 به 4 شود, اين بيت [/FONT]set در غير اين صورت reset خواهدشد.
Z (صفر)[FONT=&quot][10]http://www.iran-eng.com/#_ftn10 : اگر نتيجه يک دستورالعمل مقدار صفر باشد اين پرچم [/FONT]set در غير اين صورت reset مي شود.
S (علامت)[FONT=&quot][11]http://www.iran-eng.com/#_ftn11 : اگر با ارزش ترين بيت حاصل يک عمل 1 باشد, اين پرچم [/FONT]set در غير صورت reset مي شود.
وضعيت در مورد 8051 و شريف نيز مشابه است که در جاي خود توضيح داده خواهد شد.


پي نويس ها متعاقبا اضافه خواهد شد!
 

bardiajoon

عضو جدید
واحد محاسبه و منطقALU و رجيستر دستورالعمل

واحد محاسبه و منطقALU و رجيستر دستورالعمل


1-3 واحد محاسبه و منطق(ALU)[FONT=&quot][12][/FONT]

واحد ALU كه به آن واحد محاسبه و منطق‌گويند دو ورودي مي‌گيرد يکي آکومولاتور و ديگري رجيستر Temp ؛ پس از انجام عمل خواسته شده (كه از طريق پايه‌هاي كنترلي به اين واحد دستور داده مي‌شود) خروجي را تحويل مي‌دهد. اين واحد هم اعمال محاسباتي و هم اعمال منطقي را انجام مي‌دهد.مثلاً براي جمع دو عدد 11 و20 , يكي از اين اعداد در آكومولاتور ذخيره مي شود و عدد ديگر به رجيستر كمكي Temp انتقال مي‌يابد، پس از محاسبه در خروجي ALU عدد 31 قرار مي‌گيرد.

1-4 رجيستر دستورالعمل (IR)[FONT=&quot][13][/FONT]

هر دستوري كه fetch مي‏شود بصورت يک عدد باينري است, اين اعداد بايد تحليل شوند. در اين قسمت هر دستور ابتدا ديکد مي‌شود و سپس به واحد واحد کنترل و زمان‏بندی[FONT=&quot][14]http://www.iran-eng.com/#_ftn14 فرستاده مي‏شود تا پايه‌هاي كنترل واحدها بنا به دستوري كه وارد [/FONT]CPU مي شودفعال يا غير فعال شوند .

1-5 واحد کنترل و زمان‏بندی

اين واحد, كنترل سيستم را بر عهده دارد. ورودي‏هاي اين بخش, پالس ساعت وخروجي IR است. بر اساس اينکه چه دستوري بايد انجام شود سيگنال‏هاي مناسبي از قبيل Memory Read , Memory Write, و... بايد فعال شوند.

تمام قسمت‏هاي گفته شده تا اينجا, ارکان اصلي يک [FONT=&quot]CPU[/FONT] هستند. در ميکروپروسسور‏هاي مختلف ممکن است اين اجزاء با هم اندکي تفاوت داشته باشند, در فصل‏های آينده با جزئيات بيشتر, به طور خاص با 8085 , کامپيوتر شريف و 8051 آشنا مي‏شويم.
[FONT=&quot][1][/FONT]·Register

[FONT=&quot][2][/FONT]·Accumulator

[FONT=&quot][3][/FONT]·Flag Register

[FONT=&quot][4][/FONT]·Program counter

[FONT=&quot][5][/FONT]·Stack Pointer

[FONT=&quot][6][/FONT]·Subroutine

[FONT=&quot][7][/FONT]·Carry

[FONT=&quot][8][/FONT]·Parity

[FONT=&quot][9][/FONT]·Auxiliary Carry

[FONT=&quot][10][/FONT]·Zero

[FONT=&quot][11][/FONT]·Sign

[FONT=&quot][12][/FONT]·Arithmetic Logic Unit

[FONT=&quot][13][/FONT]·Instruction Register

[FONT=&quot][14][/FONT]·Timing And Control


-2 ثبات‏ها[FONT=&quot][1]http://www.iran-eng.com/#_ftn1[/FONT]

همه ميکروپروسسورها معمولا داراي چندين ثبات‏ هستند. مثلا 8085 شش رجيستر همه منظوره هشت بيتي با نام‏هاي B, C, D, E, H و L دارد. همچنين داراي دو رجيستر خاص است, يکي A (آکومولاتور[FONT=&quot][2]http://www.iran-eng.com/#_ftn2 يا انباره) و ديگري رجيستر [/FONT]F (رجيستر پرچم)[FONT=&quot][3]http://www.iran-eng.com/#_ftn3 که اين دو نيز هشت بيتي هستند. نيز دو رجيستر 16 بيتي با نامهاي [/FONT]SP و PC دارد. رجيستر PC شمارنده برنامه[FONT=&quot][4]http://www.iran-eng.com/#_ftn4 است و طول آن (16 بيت) با باس آدرس 8085 سازگار است. شمارنده برنامه آدرس دستورالعمل بعدي را که[/FONT]CPU از حافظه احضار مي‏کند, نگه مي دارد. اين قضيه در مورد 8051 و ماشين شريف هم همين طور است. رجيستر SP اشاره‏گر[FONT=&quot][5]http://www.iran-eng.com/#_ftn5 پشته ناميده مي شود. اين رجيستر نيز يک آدرس 16 بيتي را در خود نگه مي دارد, ولي اين آدرس به بخش خاصي از حافظه موسوم به پشته اشاره مي کند. از بخش پشته مي‏توان به عنوان تعداد تقريبا نامحدودي رجيستر خارج از آي‏سي استفاده کرد. البته فلسفه اصلي تعريف پشته, حفظ آدرس برگشت هنگامي که يک زير برنامه(سابروتين)[FONT=&quot][6][/FONT] صدا زده مي‏شود, مي‏باشد.[/FONT]
توضيح در مورد رجيستر F اينکه, در 8085 اين رجيستر شامل پنج پرچم وضعيت و سه بيت تعريف نشده است؛ در واقع اين پرچم‏ها فليپ فلاپهاي 1 بيتي هستند که مي‏توانند يک يا صفر باشند. در حالت کلي بعضي دستورالعمل‏هاي 8085 بر تمام يا بعضي از آنها تاثير دارد و بعضي از دستورالعمل‏ها نيز بر هيچ کدام تاثير ندارند. اين پنج پرچم عبارتند از:
CY (رقم نقلي)[FONT=&quot][7]http://www.iran-eng.com/#_ftn7 : اگر در جمع, رقم نقلي توليد شود يا اجراي دستور تفريق مستلزم رقم قرضي ([/FONT]borrow) شود اين پرچم set در غير اين صورت reset مي شود.
P (توازن)[FONT=&quot][8]http://www.iran-eng.com/#_ftn8 : اگر تعداد بيتهاي حاصل يک عمل زوج باشد اين پرچم [/FONT]set در غير اين صورت reset مي شود.
AC (رقم نقلي کمکي)[FONT=&quot][9]http://www.iran-eng.com/#_ftn9 : اگر دستورالعملي باعث ايجاد رقم نقلي از بيت 3 به 4 شود, اين بيت [/FONT]set در غير اين صورت reset خواهدشد.
Z (صفر)[FONT=&quot][10]http://www.iran-eng.com/#_ftn10 : اگر نتيجه يک دستورالعمل مقدار صفر باشد اين پرچم [/FONT]set در غير اين صورت reset مي شود.
S (علامت)[FONT=&quot][11]http://www.iran-eng.com/#_ftn11 : اگر با ارزش ترين بيت حاصل يک عمل 1 باشد, اين پرچم [/FONT]set در غير صورت reset مي شود.
وضعيت در مورد 8051 و شريف نيز مشابه است که در جاي خود توضيح داده خواهد شد.

1-3 واحد محاسبه و منطق(ALU)[FONT=&quot][12][/FONT]

واحد ALU كه به آن واحد محاسبه و منطق‌گويند دو ورودي مي‌گيرد يکي آکومولاتور و ديگري رجيستر Temp ؛ پس از انجام عمل خواسته شده (كه از طريق پايه‌هاي كنترلي به اين واحد دستور داده مي‌شود) خروجي را تحويل مي‌دهد. اين واحد هم اعمال محاسباتي و هم اعمال منطقي را انجام مي‌دهد.مثلاً براي جمع دو عدد 11 و20 , يكي از اين اعداد در آكومولاتور ذخيره مي شود و عدد ديگر به رجيستر كمكي Temp انتقال مي‌يابد، پس از محاسبه در خروجي ALU عدد 31 قرار مي‌گيرد.

1-4 رجيستر دستورالعمل (IR)[FONT=&quot][13][/FONT]

هر دستوري كه fetch مي‏شود بصورت يک عدد باينري است, اين اعداد بايد تحليل شوند. در اين قسمت هر دستور ابتدا ديکد مي‌شود و سپس به واحد واحد کنترل و زمان‏بندی[FONT=&quot][14]http://www.iran-eng.com/#_ftn14 فرستاده مي‏شود تا پايه‌هاي كنترل واحدها بنا به دستوري كه وارد [/FONT]CPU مي شودفعال يا غير فعال شوند .

1-5 واحد کنترل و زمان‏بندی

اين واحد, كنترل سيستم را بر عهده دارد. ورودي‏هاي اين بخش, پالس ساعت وخروجي IR است. بر اساس اينکه چه دستوري بايد انجام شود سيگنال‏هاي مناسبي از قبيل Memory Read , Memory Write, و... بايد فعال شوند.

تمام قسمت‏هاي گفته شده تا اينجا, ارکان اصلي يک [FONT=&quot]CPU[/FONT] هستند. در ميکروپروسسور‏هاي مختلف ممکن است اين اجزاء با هم اندکي تفاوت داشته باشند, در فصل‏های آينده با جزئيات بيشتر, به طور خاص با 8085 , کامپيوتر شريف و 8051 آشنا مي‏شويم
[FONT=&quot][1][/FONT]·Register

[FONT=&quot][2][/FONT]·Accumulator

[FONT=&quot][3][/FONT]·Flag Register

[FONT=&quot][4][/FONT]·Program counter

[FONT=&quot][5][/FONT]·Stack Pointer

[FONT=&quot][6][/FONT]·Subroutine

[FONT=&quot][7][/FONT]·Carry

[FONT=&quot][8][/FONT]·Parity

[FONT=&quot][9][/FONT]·Auxiliary Carry

[FONT=&quot][10][/FONT]·Zero

[FONT=&quot][11][/FONT]·Sign

[FONT=&quot][12][/FONT]·Arithmetic Logic Unit

[FONT=&quot][13][/FONT]·Instruction Register

[FONT=&quot][14][/FONT]·Timing And Control
 

bardiajoon

عضو جدید
چه استقبال پر شوري !!

چه استقبال پر شوري !!

دوستان مهندس من

استقبال پرشور شما مايه مباهاتم شد

تا وقتي دستكم يك پاسخ در مورد محتوا و نحوه بيانم نبينم پست جديد نخواهم داشت!!

پست هاي بعدي در رابطه با :


ميکرو پروسسور 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

[FONT=&quot]28http://www.iran-eng.com/#_Toc141992337[/FONT]
 

bardiajoon

عضو جدید
گلايه

گلايه

مهندسين و صاحب نظران !!

من انتقاد پذير هستم اگر نحوه بيانم خوب نيست بدون رودربايستي بگيد لطفا

چرا هيچ نظري در مورد اين تاپيك نيست؟

شايد هم اين بحث ....اصلا بيخيال
 

SHRP

همکار مدیر تالار مهندسی کامپیوتر متخصص برنامه نوی
کاربر ممتاز
خيلي هم خوبه
ممنون از درج اين مطالب
شايد به اين دليل چيزي ننوشتيم تا ترتيب درسهاي شما با پستهاي بي دليل فاصله دار نشه
موفق باشيد1
 

bardiajoon

عضو جدید
کامپيوتر شريف

کامپيوتر شريف

در اين فصل در صدد آن هستيم که يک کامپيوتر فرضي به نام کامپيوتر شريف را معرفي کرده و اصول کار آن را به عنوان پايه‏اي براي آشنايي با ميکروپروسسورهاي واقعي تشريح نماييم.
يادآوري مي‏شود کامپيوتر شريف بر اساس يک کامپيوتر 8 بيتي طرح‏ريزي شده است. همانطور که قبلا گفته شد منظور از کامپيوتر 8 بيتي کامپيوتری است‏که آکومولاتور وديتا باس آن 8 بيتي باشد.

3-1 بلوک دياگرام کامپيوتر شريف

مدل كلي كامپيوتر شريف در شكل 3-1 نشان داده شده است. همانطور که مشاهده مي‏شود CPU از يک طرف با حافظه در ارتباط است و از طرفي با ورودي‏ها و خروجي‏هاي ديگر. اين ارتباط‏ها و مديريت تبادل داده و اجراي دستورات, توسط CPU از طريق سه باس کنترل, آدرس و داده انجام مي‏شود.
عنصر اصلي CPU است. اين واحد اصلي‌ترين قسمت در يك كامپيوتر است و همة‌ اعمال محاسباتي و منطقي و همة دستورات در اين واحد انجام مي‌شوند. ساختمان داخلي CPUشريف درشكل3-2 نشان داده شده است. در اين‏جا به اختصار به معرفي بخشهاي مختلف CPU مي‌پردازيم.

3-1-1 باس داده (DB)

[FONT=&quot]Data[/FONT] يعني داده و در حقيقت داده‌‌ها اطلاعاتي هستند که ورودي‌ها ([FONT=&quot]H.D.D[/FONT]، [FONT=&quot]Key board[/FONT] و...) به [FONT=&quot]CPU[/FONT] انتقال مي‌دهند و يا [FONT=&quot]CPU[/FONT] به خروجي‌ها ([FONT=&quot]Printer[/FONT]،[FONT=&quot]Monitor[/FONT], [FONT=&quot]H.D.D[/FONT] و...) منتقل مي‌کند . اين باس, داده را از باس خروجي به باس دادة ورودي و بر عکس منتقل مي‌كند.

3-1-2 واحد محاسبه ومنطق (ALU)

همانطور که قبلا گفتيم،همة‌ داده‌ها در اين CPU، 8 بيتي هستند. واحد ALU كه به آن واحد محاسبه و منطق مي‌گويند دو ورودي 8 بيتي مي‌گيرد (شكل3-2 ) و پس از انجام عمل خواسته شده (كه از طريق پايه‌هاي كنترلي به اين واحد دستور داده مي‌شود ) خروجي 8 بيتي را تحويل مي‌دهد. اين واحد هم اعمال محاسباتي و هم اعمال منطقي را انجام مي‌دهد.

3-1-3 رجيستر وضعيت

اين قسمت شامل چند بيت است که مقدار اين بيت‏ها متاثر از نتيجه عمل محاسباتي يا منطقي انجام شده مي‏تواند صفر يا يک باشد, از روي مقادير اين بيت‏ها -که در ادامه شرح داده مي‏شوند- در نوشتن نرم‏افزار براي پرشهاي شرطي‏ تصميم مي‏گيريم.

3-1-4 آکومولاتور (Acc)

Acc
يك رجيستر 8 بيتي است. يكي از ورودي‌هاي ALU از طريق اين رجيستر تأمين مي‌شود. مثلاً اگربخواهيم دو عدد 11 و20 را جمع كنيم يكي از اين اعداد را در آكومولاتور ذخيره مي‏کنيم وعدد ديگر به رجيسترB ( ورودي ديگر ALU) انتقال مي‌يابد.پس از محاسبه در خروجي ALU, عدد 31 قرار مي‌گيرد.



-1-5 واحد زمان‏بندی و کنترل

همانطور که در فصل گذشته گفتيم اين واحد, كنترل سيستم را بر عهده دارد. ورودي‏هاي اين بخش, پالس ساعت وخروجي IR است. بر اساس اينکه چه دستوري بايد انجام شود سيگنال‏هاي مناسبي از قبيل Memory Read, Memory Write, I/O Read وغيره... بايد فعال شوند. بنابراين خروجي اين واحد, کنترل باس (CB) را تشکيل ميدهد.
3-1-6 رجيستر دستورالعمل (IR)

دستوري كه CPU بايد انجام ‌دهد به فرم يک عدد باينري است. اين اعداد بايد تحليل شوند تا دستور
متناسب انجام گردد. به اين منظور, ابتدا در اين قسمت بايد هر دستور ديکد ‌شود و سپس به واحد زمانبندی وکنترلفرستاده شود تا پايه‌هاي كنترل واحدها بنا به دستوري كه برنامه به CPU مي‏دهدفعال يا غير فعال شوند .

3-1-7 شمارنده برنامه (PC)

اين واحد, شمارندة‌آدرس حافظه است. وقتي CPU برنامه اي را ازحافظه فراخواني مي‏کند تا برنامه خط به خط اجرا ‌شود, اين واحد که اشاره‌گرآدرس حافظه است پس از خواندن هر خط از برنامه توسط CPU,يكي به آن اضافه مي‌شود و به خط بعدي برنامه اشاره مي‌کند. اين رجيستر 16 بيتی است ولی دقت کنيم در کامپيوتر شريف فقط 11 خط آدرس داريم.

3 -1-8 باس آدرس (AB)

اين باس، باس آدرس است. اشاره‌گر PC به هر آدرس كه اشاره كند، آن آدرس روي باس آدرس قرر داده مي‌شود. اين باس به باس آدرس خروجي وصل مي‏شود. (يادآوری: 11 خط آدرس داريم)

3-2 دو عمل اصلی CPU

همان طور که در شکل3-3 مشاهده مي شود CPU هميشه در حال انجام يکي از اين دو عمل زير است:
·Fetch : به معني رفتن و آوردن (يا صدا زدن) است. مثلاً زماني است كه CPU داده اي را از حافظه مي‌آورد، و يا زماني است كه عملگرها و عملوندها به CPU انتقال داده مي‌شوند عمل Fetch در حال انجام است.
·Execute : به معني اجراکردن است, يعني اينكه CPU در حال اجراي دستوري است.
در حقيقت [FONT=&quot]CPU[/FONT] هميشه در حال انجام يكي از اين دو كار است ‌؛ [FONT=&quot]Fetch[/FONT] زماني است كه واحد [FONT=&quot]IR[/FONT] يك دستورالعمل را از حافظه مي‌آورد و واحد كنترل، پايه‌هاي كنترل را از طريقباس کنترل به قسمت‌هاي مختلف مي‌فرستد. سپس فاز اجرا شروع مي‌شود تا اطلاعات داخل [FONT=&quot]IR[/FONT] وارد واحد كنترل, [FONT=&quot]ACC[/FONT] , [FONT=&quot]ALU[/FONT] و[FONT=&quot][/FONT] شوند.



 

bardiajoon

عضو جدید
کامپيوتر شريف

کامپيوتر شريف

3-3 عملکرد کامپيوتر شريف و قالب بندي دستورالعملها


در کامپيوتر شريف از نظر تعداد بايت, دو دسته دستورالعمل داريم: دستورات Memory Reference که دو بايتی هستند و دستورات Non-Memory Reference که تک بايتی هستند. همچنين يک رجيستر 8 بيتی علاوه بر آکومولاتور(A) به نام B در کامپيوتر شريف داريم که هم بعنوان يک رجيستر کمکی در کنار A انجام وظيفه ميکند و هم در کاهش دستورات Memory Reference موثر واقع می‏شود؛ به اين صورت که در اکثر عمليات محاسباتی, عملوند دوم در رجيستر B قرار می‏گيرد. يعنی کافيست مقدار مورد نظر را با دستور LDB از حافظه در B قرار دهيم و سپس عمليات مورد نظر را بين A و B انجام می‏دهيم. به اين ترتيب از يک دستورالعمل Non-Memory Reference برای قرار دادن بايت بعدی در A يا B استفاده می‏شود. ملاحظه می‏شود اگرچه اين دستور, داده را از حافظه کد می‏آورد ولی نياز به داشتن آدرس نيست, زيرا کافی است بايت بعدی را به عنوان داده در نظر بگيريم. در واقع آدرس بايت بعدی, 1+PC) ) است.
به اين ترتيب مطابق شکل3-5 سه بيت [FONT=&quot]op-code[/FONT] و دو بيت [FONT=&quot]Address Modifie[/FONT][FONT=&quot]r[/FONT] داريم و سه بيت باقيمانده هم قسمت بالای آدرس ([FONT=&quot][/FONT][FONT=&quot][/FONT][FONT=&quot] [/FONT],[FONT=&quot] [/FONT][FONT=&quot][/FONT] و [FONT=&quot][/FONT][FONT=&quot][/FONT]) است. در حقيقت اين 8 بيت, رمز شدة يك دستورالعمل است كه در ادامه به تفسير آن خواهيم پرداخت. بايت بعدی نيز (در دستورات [FONT=&quot]Memory Ref[/FONT]) بعنوان قسمت پايين آدرس ([FONT=&quot][/FONT][FONT=&quot][/FONT]-[FONT=&quot][/FONT][FONT=&quot][/FONT]) ايفای نقش می‏کند.به اين ترتيب می توانيم [FONT=&quot]2Kbyte[/FONT] حافظه را آدرس‏دهی کني
بيت‏های 0 تا 2 بايت اول که قسمت بالای آدرس را مشخص می‏کند يک صفحه از حافظه را نشان مي‌دهد. بنابراين در کامپيوتر شريف حداکثر به يک حافظه 8 صفحه‏ ای 256 بايتی دسترسی داريم (شکل3-6).
دو بيت 3 و4 كه در شكل 3-6 با X و I نشان داده شده براي قابليت‌هاي بيشتر استفاده از آدرس است و صفر و يك بودن هر بيت مفهوم خاصي را در بر دارد که شرح آنها به قرار زير است:
[FONT=&quot]X[/FONT] : اين بيت اگر صفر باشد به عنوان يک بيت از دستورالعمل تلقي مي شود. ولي اگر اين بيت 1 شود، [FONT=&quot]CPU[/FONT] هشت بيت سمت راست را با [FONT=&quot]B[/FONT] (يك رجيستر كمكي مثل [FONT=&quot]ACC[/FONT] است كه مي‌توانيم داده را در آن هم بريزيم) جمع ........
-4 شاخص‏ها

كامپيوتر شريف داراي 2 شاخص(شامل 2 فليپ فلاپ) است كه نتايج جانبي عمليات ALU در آنها ذخيره مي‌شوند. اين شاخص‌ها شامل موارد زيراند :
يک بيت دو بر يک(Carry) ، بيت صفر((Zero و بيت علامت منفي ((Negative .
·[FONT=&quot] [/FONT]Carry : وقتي كه عملي بر روي دو عملوند اجرا شود اگر دو بر يک داشته باشد بيت Carry برابر 1 مي‌شود و در غير اين صورت صفر مي‌ماند. مثلاً اگر آکومولاتور محتوی FFH باشد آن را با 01H جمع كنيم 100Hحاصل مي‌شود. در اين حالت بيت Carry يك مي‌شود.
·[FONT=&quot] [/FONT]Zero : اگر نتيجة عملي كه در ALU انجام گرفته برابر صفر شود، اين بيت يك و در غير اين صورت، مقدارش صفر مي‌شود.
[FONT=&quot]Negative[/FONT] : اگر حاصل عملي بر روي دو عملوند منفي شود اين بيت، 1 مي‌شود واگر مثبت بشود صفر مي‌شود. به عبارت ديگر اگر حاصل عملياتي در [FONT=&quot]ALU[/FONT] منفي شود، اين نشانه يك و در غير اين صورت مقدارش صفر مي‌شود.
[FONT=&quot][/FONT]
 

bardiajoon

عضو جدید
ميکرو پروسسور 8085

ميکرو پروسسور 8085





در اين فصل ميکرو پروسسور 8085 را به طور کامل خواهيم شناخت. روال کار به اين صورت است که ابتدا پايه‏های 8085 همچنين شاخص‏ها را بررسی می‏کنيم, سپس انواع آدرس‏دهی‏ها را معرفی می‏نماييم و بعد از آن برنامه‏نويسی 8085 را به زبان اسمبلی‏خواهيم آموخت و در انتها چندين مثال کاربردی را, از قبيل برنامه کنترل موتور پله‏ای, برنامه اسکن کی‏برد, برنامه ارسال ديتا به چاپگروغيره را می‏بينيم. پرواضح است که قبل پرداختن به مثال های متعدد بايد IC های پشتيبانی را بشناسيم.
4-1 پايه‏های 8085
8085 از 40 پايه تشكيل شده است كه هر يك را در زير به اختصارشرح مي‌دهيم.
4-1-1 0AD-7AD
اين 8 پايه دو استفاده دارند، هم 8 بيت كم ارزش باس آدرس هستند و هم 8 بيت‌ داده مي‌باشند كه بوسيلة يك '138 مالتي پلكس مي‌شوند. ALE كه شرح آن ذكر خواهد شد به پايه‌ فعال‏کننده '138 وصل می‏شود. اگر ALE صفر باشد، اين 8 بيت ديتا هستند در غير اين صورت 8 بيت پايين آدرس است.
4-1-2 15A-8A

يك پاية خروجي است و سيگنال Low روي اين خط باعث مي‌شود كه اطلاعات روي باس داده در حافظه يا I/O نوشته شود.
4-1-4 READY
يك پاية ورودي است و در خلال سيكل خواندن يا نوشتن اگر High باشد يعني اينكه حافظه يا مدار جانبي آمادة انتقال داده است‏ اگر Low باشد، CPU صبر ميكند تا دوباره High شود قبل از آنكه خواندن يا نوشتن‏كامل شود.
4-1-5 HOLD
يك پاية ورودي است و اگر فعال باشد باعث مي‌شود كه خطوط آدرس و داده در اختيار يك مدار جانبي قرار گيرد. پس CPU باس را رها خواهد كرد و پس از خارج شدن از حالت HOLD دوباره باس را در اختيار خواهد گرفت.
4-1-6 HLDA
يك پاية ورودي است و پس از ورود به حالت Hold فعال خواهد شد و به معناي تأييد سيگنال HOLD مي‌باشد.
4-1-7 INTR
پاية‌ ورودي وقفه محسوب مي‌شود و اگر فعال شود اجراي برنامة‌ در دست اجرا متوقف شده و برنامة مربوط به وقفه اجرا مي‌ شود. بحث وقفه بعداً بيان خواهد شد.
4-1-8 INTA
پاية‌خروجي است و تأييد وقفه مي‌‌باشد.
4-1-9 (7.5, 6.5) RST5.5
اين پايه‌ها ورودي هستند و مثل INTR ورودي وقفة مي‌باشند و اولويت از 5.5 به 7.5 افزايش مي‌يابد.
4-1-10 TRAP
يک وقفه ورودي است که نمی‏توان آن را غير فعال است, به عبارت ديگر "غير فعال نشدنی" است. اين ورودي وقفه, بالاترين اولويت را دارد.
4-1-11 RESET IN
ورودي مي‌باشد و سيگنال Low روي اين آدرس باعث reset شدن سيستم مي‌گردد.
4-1-12 RESET OUT
خروجي است و نشان‌دهندة آن است كه CPU در حال reset شدن است.
4-1-13 X1,X2
ورودي‏اند و به يك كريستال 4MHZ وصل هستند كه کلاک سيستم را بوجود مي‌آورند.
4-1-14 CLK OUT
خروجي است. اين خروجي کلاک ميكروپروسسور, با فركانس نصف فركانس كريستال براي استفاده ديگر اجزاء سيستم ميكرو فراهم شده است.
4-1-15 SID
ورودي داده سريال (تك‌بيتي) توسط دستور RIM روي پين SID در داخل بيت هفتم (MSB) آكومولاتور قرار مي‌گيرد.
4-1-16 [FONT=&quot]SOD[/FONT]
خروجي دادة‌ سريال (تك‌بيتي) توسط دستور SIM، بيت هفتم آكومولاتور روي اين پين قرار مي‌گيرد.
[FONT=&quot]
[/FONT]

يك پاية خروجي است و سيگنال Low روي اين خط باعث مي‌شود كه محتوي حافظه يا I/O روي باس داده قرار گيرد.
4-2 شاخص‏ها
همان طور كه در شكل (4-1)مشاهده مي‌كنيم 8 بيت به عنوان بيت‌هاي شاخص وجود دارند كه 5 بيت آن تعريف شده و 3 بيت آن تعريف نشده است (X).


CY: اگر نتيجه حاصل از دستورالعملي، رقم نقلي داشته باشد (از جمع) يا قرضي از بالاترين بيت بوقوع بپيوندد (در تفريق يا مقايسه)، اين پرچم 1 مي‌شود و در غير اين صورت صفر خواهد شد.
P: بيت توازن نام دارد و اگر باقيمانده تقسيم جمع بيت‌هاي نتيجه عملي بر 2 صفر باشد‏ اين پرچم 1 مي‌شود و در غير اين صورت صفر خواهد شد.
AC: بيت نقلي كمكي نام دارد و اگر دستورالعملي موجب توليد رقم نقلي از بيت 3 به بيت 4 در مقدار نتيجه گردد، اين بيت يك خواهد شد و در غيراين صورت صفر خواهد شد، اصولاً اين بيت براي جمع و تفريق‌هاي اعداد BCD قبل از دستور DAA به كار مي‌رود.
Z: شاخص صفر است و اگر نتيجة عمل يك دستورالعمل مقدار صفر باشد اين شاخص يك مي‌شود و گر نه صفر باقي مي‌ماند.
S: شاخص علامت است و اگر با ارزشترين بيت نتيجه عملي، مقدار يك باشد اين بيت 1 خواهد شد و اگر صفر باشد،‌ صفر خواهد شد.
يادآوری می‏شود به مجموع 16 بيت آکومولاتور و شاخص‏ها, PSW گفته می‏شود.
4-3 انواع آدرس‏دهی در 8085
مجموعه دستورات يك ريزپردازنده انواع دستورات موجود را براي كار ريزپردازنده روي داده ارائه مي‌دهد. پنج روش آدرس دهي در 8085 وجود دارد كه در زير شرح داده خواهند شد.
4-3-1 روش آدرس‌دهي مستقيم
در اين روش همة‌ 16 بيت آدرس به عنوان بخشي از دستور تعريف مي‌گردد مثل : LDA 1000H
و اين دستور به آدرس 1000 Hرفته و داده‌ اين آدرس از حافظه را در آکومولاتور مي‌ريزد.
4-3-2 روش آدرس‌دهي ثبّاتي
گفتيم كه 6 ثبات علاوه بر آكومولاتور در 8085 وجود دارند. روش آدرس‌دهي مستقيم، روش سرراستي است براي دستيابي به حافظه ولي عيب آن نياز به سه برداشت از حافظه در ازاء هر دستورالعمل مي‌باشد. براي حل اين مشكل، طراحان ريزپردازنده‌ها معمولاً تعدادي ثبات همه منظوره كه با يك بايت آدرس دهي مي‌شوند را در پردازنده لحاظ كرده‌اند. مثلاً دستورالعمل B و AMOV دادة ذخيره شده در B را در A كپي مي‌‌كند.
4-3-3 روش آدرس‌‌دهي فوري
مسلمآً بايد زمينه‌هاي باركردن ثبات‌هاي همه منظوره فراهم گردد. روش آدرس‌دهي فوري براي نوشتن يك بايت در يكي از ثبات‌ها به كار مي‌رود. مثلاً A,00HMVI عدد 00H را در آكومولاتور ذخيره مي‌كند.
4-3-4 روش آدرس‌دهي غير مستقيم
در اين روش جفت ثبات HL قبلاً با آدرس‌ يك خانة‌حافظه بار مي‌شود و سپس هر يك از دستورات غير مستقيم ثباتي قابل استفاده است. مثلاً اگر HL با عدد 1000H بار شده باشد پس از اجراي دستور MOV A , M دادة‌ موجود در آدرس 1000H در داخل ACC ذخيره مي‌شود.
4-3-5 روش آدرس‌دهي مستتر
بعضي از دستورات 8085 احتياجي به آدرس‌دهي ندارند و لذا هيچ بيتي به آدرس اختصاص داده نشده و به اينها آدرس‌دهي مستتر مي‌گويند.در کد اين دستورات آدرس وجود ندارد, مثلا HLT, POP, PUSH, CMA ... .

در ادامه به شرح و آوردن چندين مثال از هر مجموعه مي پردازيم.
4-4-1 انتقال داده
اين دستورات انتقال داده بين ثبات‌ها و حافظه را انجام مي‌دهند
MVI:MVI r,data
اين دستور مستقيماً data كه شامل يك بايت در حافظه هست را در ثبات ذخيره مي‌كند.منظور از r هر يک از رجيسترهايA, B, C, D, E, H و L مي‌باشند. نيز اين دستور به صورت :
MVI M,data
بکار می رود و به مفهوم اين است که دادة مورد نظر, در آدرسی که در HL قرار دارد ذخيره شود.
MOV:MOV r1, r2
اين دستور محتواي r2 را در r1 كپي مي‌كند. نيز دستور LXI rp,data
داده 16 بيتي را در جفت رجيستر (rp) ذخيره مي‌كند. منظور از rp هر يک ازجفت ثباتهايBC, DE و HL مي‌باشند.
STA : STA address
اين دستور محتواي ACC را در خانه‌اي از حافظه كه آدرسش در دستورالمعل آمده است قرار مي‌دهد.
مثال 4-1 : مي‌خواهيم در مكان 20A0H حافظه مقدار F8H را بنويسيم.
LXI H,20A0Hحل :

MVI M,F8 H

مثال 4-2 : مي‌خواهيم محتواي حافظه در مكان 20B0H را به مكان 20C0H كپي كنيم :
حل : راه اول : LDA 20B0H
STA 20C0H

راه دوم :‌
LXI H,20B0H

MOV B, M

MOV M, B

·Write
·HOLD Acknowledge
·Interrupt
·Interrupt Acknowledge
·Nonmaskable Interrupt
·Serial Input Data Line
·Read Interrupt Mask
·Serial Output Data Line
·Set Interrupt Mask
·Read

 

bardiajoon

عضو جدید
ميکرو پروسسور 8085

ميکرو پروسسور 8085

مثال 4-2 : مي‌خواهيم محتواي حافظه در مكان 20B0H را به مكان 20C0H كپي كنيم :
حل : راه اول : LDA 20B0H
STA 20C0H
راه دوم :‌

LXI H,20B0H

MOV B, M

MOV M, B

مثال4-3 : مي‌خواهيم برنامه‌اي بنويسيم كه محتواي مكانهاي حافظه از مكان 20C0H تا 20CF را با اعداد زوج از صفر به بالا پركند.
حل: برنامه را مطابق جدول زير می‏نويسيم:
START :
MVI
B,02H
; even Counter
LXI
H, 20C0H
; Begin of memory
LOOp1:
MOV
M,B
; Copy B to memory
INR
B
; increase B
INR
B
; increase B
INX
H
; increase Address of memory
MVI
A, D0H
; Copy D0 to ACC
CMP
L
; Subtract L from ACC
JNZ
L00P1
; If Z =0 Jump to Loop
HLT
شکل 4-1 برنامه مربوط به مثال 4-3
ادامة‌دستورات انتقال داده : LDAX B
اين دستور محتواي خانه‌اي از حافظه كه آدرسش در BC قرار دارد را در ACC مي‌ريزد.
نيز دستور : LDAX D
اين دستور نيز طرز كاري مثل قبلي بر روی DEانجام می‏دهد.
همچنين دستور‏های : STAX D و STAX B
محتواي ACC را در خانه‌اي از حافظه كه آدرسش در BC يا DE قرار دارد ذخيره مي‌كند.
مثال 4-4 : برنامة مثال (2) را بازنويسي مي‌كنيم.س
LXI B,20B0Hحل :

LXI D,20C0H

LDAX B

STAX D
4-4-2 گروه دستورهاي محاسباتي

اين گروه از دستورات، اعمال محاسباتي مثل جمع، تفريق، كاهش و افزايش و غيرهرا شامل مي شود. اين دستورات بر روي شاخص‌ها تأثير مي‌گذارند و مي‌توانيم از اين خاصيت در پرش‌هاي شرطي استفاده كنيم.
ADI : ADI data
اين دستور دادة 8 بيتي را با محتواي ACC جمع مي‌‌كند و پاسخ را در ACC مي‌ريزد.
ADD : ADD r
اين دستور محتوای رجيستر r را با آکومولاتور جمع کرده و حاصل را در آکومولاتور قرار می‏دهد.
ADD ------ : ADD M
اين دستور محتواي مكاني از حافظه را كه آدرسش در HL قرار دارد را با محتواي ACC جمع مي‌كند و پاسخ را در ACC مي‌ريزد.
SUB : SUB r
SUI data
SUB M
اين سه دستور نيز شبيه دستوارت ADD است ولي به جاي عمل جمع، عمل تفريق انجام مي‌شود.
----- جمع با Carry : ADC r
ACI data
ADC M
اين سه دستور نيز عمل جمع را انجام مي‌‌دهد با اين تفاوت که بيت Carry را نيز با داده جمع مي‌كند.
عمل تفريق نيز شبيه عمل جمع انجام مي‌شود و بيت قرض[FONT=&quot][1]http://www.iran-eng.com/#_ftn1 را نيز اثر مي‌دهد. [/FONT]
دستورات کاهشی و افزايشی : INR r
اين دستور محتواي ثبات r را يكي زياد مي‌كند. و معادل کاهش‏دهنده اين دستور DCR r مي‌باشد.
INR M
اين دستور محتواي مكاني از حافظه كه آدرسش در HL قرار دارد را يكي افزايش مي‌دهد و معادل كاهش‌دهندة اين دستور MDCR مي‌باشد.
INX rp
اين دستور محتواي جفت ثبات rp را يكي زياد مي‌كند. معادل کاهش‏‌كنندة اين دستور rp DCR مي‌باشد.
نكتة مهم اين‏كه دو دستور اخير هيچ پرچمي را متأثر نمي‌كنند.
مثال 4-4 : برنامه‌اي بنويسيد كه 10 عدد را در RAM از آدرس 20B0H ذخيره كند به طوريكه هر عدد نسبت به عدد قبلي به اندازة 5 واحد بزرگتر باشد. (عدد اول 00H است)
LXI H, 20B0H ; began of memoryحل :

MVI B, 0AH ; Loop counter

Loop: ‏‏ MOV M, A

ADI 05H ; increase 5

INX H ; increase address of memory

DCR B

JNZ Loop

HLT

دستور DAA [FONT=&quot][2]http://www.iran-eng.com/#_ftn2:[/FONT]
در جمع و يا تفريق اعداد BCD نياز به دستور DAA خواهد. اعداد BCD در واقع، اعداد مبناي 10 هستند كه هر رقم، بصورت ‌باينري كد شده است. ميكروپروسسور در جمع دو عدد، آنها را باينري در نظر مي‌گيرد. لذا براي آنكه نتيجه درست داشته باشيم بايد تصحيح گردد. مثلاً در جمع دو عدد در مبناي BCD مثل 58 و 29 جواب صحيح BCD, 87 است ولي در ميكرو جواب را به صورت 81H خواهيم داشت و بايد 06H با آن جمع شود تا جواب درست به دست آيد. دستور DAAدستورالعملي است كه به منظو ر انجام اين كار اضافه شده است اين كار را انجام مي‌‌دهد و جواب صحيح BCD را مي‌دهد. پس هر وقت اعداد BCD را جمع كرديم پس از جمع از دستور DAA استفاده مي‌‌كنيم تا جواب صحيح بدست آيد.
مثال 4-5 : پنج عدد سيمال را در حافظه ذخيره كنيد و مجموع آنها را بصورت دسيمال در جفت ثبات BC ذخيره كنيد.(63, 32, 77, 51 و 42)
MAIN: CALL STOREحل : CALL ADD

MOV C,A

HLT

STORE: MVI A,42H

STA 20B0H

MVI A,51H

STA 20B2H

MVI A,32H

STA 20B3H

MVI A,63H

STA 20B4H

RET

ADD: LXI H,20B0H

MVI B,00H

MVI D,05H

MVI A,00H

Loop: ADD M

DAA

CC HNDR ;Call if carry set

DCR D

RZ ; Return if Z=1

INX H

JMP Loop

HNDR: INR B

RET
4
مثال 4-8 : برنامة‌ تأخير.
حل : بعضي وقتها لازم است در يك برنامه تأخير ايجاد كنيم مثلاً در روشن كردن LED‌ها بايد تأخير ايجاد شود تا چشم بتواند روشن و خاموش شدن‏ها را از هم تشخيص دهد. برنامة زير را در نظر بگيريد:
DELAY: PUSH D ;12TCYCLe
MVI D,N ;7 TCYCLe
LOOP: DCR D ;4*N TCYCLe
JNZ Loop ;10*(N-1) +7 TCYCLe
PoP D ;10 TCYCLe
RET ;10 TCYCLe
T= (12+7+4N+10(N-1)+7+10+10)T=(14N+36)T
حال اگر بخواهيم t=1ms باشد با فرض فركانس 2MHZ داريم :‌
T = file:///C:/DOCUME%7E1/Bardia/LOCALS%7E1/Temp/msohtml1/01/clip_image002.gif=0.5*10-6S
file:///C:/DOCUME%7E1/Bardia/LOCALS%7E1/Temp/msohtml1/01/clip_image004.gifN=140.3
پس اگر [FONT=&quot]N[/FONT] را برابر([FONT=&quot](140 Des= 8CH[/FONT] بگيريم برنامة تأخير بالا [FONT=&quot]1ms[/FONT] خواهد بود. حال اگر به يك تأخير بيشتر احتياج داشتيم يا [FONT=&quot]N[/FONT] را تغيير دهيم و يا اين برنامه را در يك حلقه ديگر قرار مي‌دهيم
 

mona11

عضو جدید
کمک در رابطه با مدارات الکترونیک......

کمک در رابطه با مدارات الکترونیک......

سلام. یه راهنمایی می خواستم.
اگه 2 تا رجیستر 74373 داشته باشیم -واحد کنترل چطوری می تونه در هر لحظه.داده 8 بیتی (که ورودی هر ثباته) یکی از ثبات ها رو انتخاب کنه و روی سون سگمنت اون رو نشون بده؟اگه ممکنه همه ی راههایی که میشه این کارو کردو بگید.
 

payam19

عضو جدید
ببخشید میتونید به من کمک کنید میخواستم در مورد پایه های این سه تراشه چیزی بدونم 74244_74245_74373
طراحی یک باس آدرس 8 بیتی توسط 74244
طراحی یک باس دیتا 8بیتی توسط 74245
طراحی یک نگح دارنده و عبور دهنده 8 بیتی توسط 74373
البته با برنامه پروتئوس میخواستم طراحی کنم ممنون میشم کمک کنید
 

Similar threads

بالا