ميكروپرسسور

۸۰۸۰
فهرست:
مقدمه: معرفي ميكروپرسسورهاي ۸۰۸۰
۲-۱) سخت افزار ۸۰۸۰
۲-۲-۱) ساختمان داخلي ۸۰۸۰

۲-۲-۲)PIN CONFIGURATION المان۸۰۸۰
۲-۲-۳)ICهاي جانبي ۸۰۸۰
۲-۲) ثباتهاي ميكروپرسسور ۸۰۸۰
۲-۳) دستورالعملهاي ۸۰۸۰
۲-۳-۱) گروه انتقال داده
۲-۳-۲) گروه عمليات رياضي

۲-۳-۳) گروه عمليات چرخش
۲-۳-۴) گروه عمليات منطقي
۲-۳-۵) گروه عمليات انشعابي

۶-۳-۲) گروه كنترلI/O و پشته
۲-۴) مثالهايي از برنامه ريزي ميكروپرسسور

۲-۵) زمانبندي timing
2-5-1) زمانبندي خواندن حافظه
۲-۵-۲) زمانبندي نوشتن حافظه
۲-۵-۳) زمانبندي وقفه ها

مقدمه: پس از آشنايي با كامپيوتر شريف با نمونه هايي از يك كامپيوتر عملي مانند Z80 , 8080 آشنا خواهيد شد ميكروپرسسور ۸۰۸۰ اينتل (intel) در دسامبر ۱۹۷۱ به بازار آمد هر چند اين تراشه جديد نيست ولي با پرسسورهايي كه بعد از آن به بازار آمدند مانند Z80 , 8085 از لحاظ نرم افزاري سازگار است. از اينرو آشنايي با عملكرد ۸۰۸۰، فراگيري عملكرد دو پروسسور ديگر را ساده مي كند .
۴۰ , ۸۰۸۰-CPU پايه دارد لزوم داشتن سه منبع تغذيه(۱۲V,+5V,-5V) سيگنال ساعت دو فازه ناهمپوشان و آي سي هاي كمكي ۸۲۲۴ , ۸۲۲۸ بعلت محدوديت در تكنولوژي ساخت IC درآن زمان باعث شده تا بعدها CPU مهمتري با يك منبع تغذيه ۵V و با قابليت بيشتري وارد با زار شود واكنون از ۸۰۸۰ كمتر براي ساخت مدارات استفا

ده مي شود.در اين فصل پس ازآشنايي با ساختار ظاهري و ساختمان داخلي ۸۰۸۰ با دستورالعملها و برنامه نويسي آن آشنا خواهيد شد سپس براي درك سخت افزاري عملكرد كامپيوتر با زمانبندي (timing) آشنا مي شويد.
۲-۱) مدولهاي ۸۰۸۰ – CPU:
ميكروپروسسور ۸۰۸۰ با دو آي سي جانب

ي در شكل (۱-۲) نشان داده شده است. ابتدا به صورت مختصر با عملكرد هر يك از پايه هاي ۸۰۸۰ آشنا مي شويد.
A0-A15 (output): باس آدرس: باس آدرس، آدرس حافظه را فراهم مي كند. كه مي توان ۲۱۶ مكان حافظه معادل ۶۴kكلمه ۸ بيتي را ب

ه عنوان آدرس روي آن قرار داد. همچنين با قرار دادن شماره دريچه I/O مي توان تا ۲۵۶ دريچه را به عنوان وسيله دريچه خروجي يا دريچه ورودي مورد استفاده قرار داد.

شكل (۲-۱): ۸۰۸۰-CPU با آي سي هاي جانبي
:(input/output) D0-D7 باس داده: براي انتقال داده از CPU به حافظه و انتقال داده به I/O بصورت دوجهته مورد استفاده قرار مي گيرد. همچنين در اولين سيكل ساعت (T-cycle) هر سيكل ماشين (machin-cycle) يك كلمه حالت را كه سيكل ماشين در حال اجراي آن است , توصيف مي كند.
: (output) SYNC سيگنال همزماني: SYNC يك سيگنال است كه CPU براي نشان دادن ابتداي سيكل ماشين جهت استفاده در ۸۲۲۴ توليد ميكند.
(output) DBIN باس داده درحالت ورودي: اين سيگنال نشان مي دهد كه باس داده در حالت ورودي است وبراي راه دادن داده از حافظه يا I/O از اين سيگنال استفاده مي‌شود.
: (input) READY اين سيگنال به ۸۰۸۰ پيام

مي دهد كه داده معتبري برروي باس داده قرار گرفته است بعضا حافظه از CPU كندتر است و مدت زماني طول مي كشد تا داده اصلي روي باس داده قرار گيرد. تا وقتي سيگنال READY پايين باشد CPU در حالت انتظار است.
: (output) WAIT اين سيگنال اعلام مي كند كه

CPU در حالت انتظار است.
: (output) WR اين سيگنال براي نوشتن درحافظه يا كنترل I/O استفاده مي شود. تا وقتي كه WR پايين است داده روي باس داده پايدار مي ماند.
: (input) HOLD اين سيگنال از CPU مي خواهد كه وارد حالت HOLD شود در اين حالت يك وسيله جانبي مي تواند از باس آدرس و باس داده به عنوان باسهاي كمكي خودش استفاده كند. وقتي كه اين سيگنال وارد CPU شود CPU پس از اجراي سيكل ماشين جاري در حالت HOLD قرار مي گيرد.
: Hold Acknowledge (output) HLDA سيگنال فوق در پاسخ به سيگنال ورودي HOLD از CPU خارج مي شود و نشان مي دهد كه پايه هاي CPU‌ وارد حالت امپدانس بالا شده اند.
: Interrupt Enable (output) INTE محتويات فيليپ فلاپ وقفه را نشان مي دهد. اگر اين فيليپ فلاپ در حالت reset قرار گيرد در اين صورت CPU، وقفه را نمي پذيرد اين فيليپ فلاپ در سيكل اول احضار دستور هنگامي كه وقفه پذيرفته شده است يا هنگامي كه سيگنال Reset، CPU فعال شده باشد reset مي شود.
: Interrupt request (input) INT CPU با اين سيگنال در انتهاي دستورالعمل جاري يا هنگام HALT بودن تقاضاي وقفه را تشخيص مي دهد.
: RESET با آمدن سيگنال reset محتويات شمارنده برنامه (PC) پاك مي شود برنامه از محل صفر حافظه شروع مي شود و فيليپ فلاپهاي HALT , INET نيز reset مي شود. ولي محتويات انباره پرچمها شمارنده پشته و رجيسترها عوض نمي شود.
:VSSزمين
:VDDتغذيه +۱۲V

:VCCتغذيه +۵V
:VBBتغذيه-۵v
فازهاي ساعت خارجي كه بصورت ناهمپوشان هستند.
با نحوه زمانبندي و عملكرد در بخشهاي بعدي آشنا مي شويد
. D0 (INTA). : سيگنال تاييد وقفه است.
D1 (نماد WO): نشان مي دهد كه سيكل ماشين جاري درحال اجراي دستور خروجي يا نوشتن درحافظه است كه در اين صورت WO=0 است يا اينكه درحال خواندن حافظه است كه دراين صورت WO = 1 مي باشد.
D2 (STACK): نشان مي دهد باس آدرس، آدرس پشته را در بر دارد.
D3 (HLTA): سيگنال تاييد HALT است.
D4 (OUT): نشان مي دهد كه باس داده آدرس يك وسيله خروجي را در بر دارد.
D5 (M): نشان مي دهد كه CPU در حال احضار اولين بايت يك دستور است.
D6 (INP): نشان مي دهد كه باس آدرس، آدرس

يك وسيله ورودي را در بر دارد.
D7 (MEMR): نشان مي دهد كه باس داده براي خواندن داده از حافظه است.
جدول (۲-۱): ۱۰ كلمه حالت ۸۰۸۰

دو آي سي پشتيبان ۸۰۸۰ توسط اينتل ساخته شده است. ۸۲۲۸ كنترل كننده سيستم است و ۸۲۲۴ كه مولد ساعت است. اين آي سي سيگنال دو فازه ساعت را توليد مي كند آي سي ابتدا فركانس كريستال را بر ۹ تقسيم مي كند و از روي آن شكل موج را مي سازد معمولاً كريستال ۱۸MHz است بنابراين سيگنال ساعت ۲ MHz خواهد بود.
به عنوان تمرين مي توانيد مداري طرح كنيد با داشتن سيگنال كريستال دو شكل موج ناهمپوشان را ايجاد كند. براي فهم بهتر ساختمان پرسسور شكل (۲-۲) ساختار استاندارد ۸۰۸۰ با
آي سي هاي پشتيبان را نشان داده است.

شكل (۲-۲): ساختار بلوكي ۸۰۸۰ با آي سي هاي پشتيبان
۲-۲) ثباتهاي ميكروپرسسور ۸۰۸۰:

ساختمان داخلي ۸۰۸۰ در شكل (۲-۳) نشان داده شده است ۸۰۸۰ شامل شش ثبات ۱۶ بيتي است سه تا از آنها بصورت عمومي استفاده مي شوند(H,L) , (D,E) , (B,C) است اين ثبات ها مي‌توانند به صورت ۸ بيتي يعني H , E , D , C , B جداگانه استفاده شوند ثبات (program counter) PC آدرس محلي از حافظه كه دستورالعمل جاري از آنجا اجرا مي شود را در بر دارد. اين ثبات ۱۶ بيتي است.
ثبات انباره يك ثبات ۸ بيتي است بيشتر دستورالعملهاي برنامه دستورالعملهاي حس

ابي و منطقي دادن و گرفتن داده از وسيله هاي I/O و انتقال از مكاني از حافظه به مكان ديگر با كمك اين ثبات انجام مي شود

شكل (۲-۳): بلوك دياگرام ۸۰۸۰
ثبات پرچم شامل پنج پرچم و ضعيت است كه هنگام اجراي دستورات اين پرچمها تغيير مي‌كند.
عملكرد هر پرچم به عبارت زير است.
: Zero–۱ اگر حاصل يك دستورالعمل صفرشود. بيت فوق ۱ مي شود در غير اين صورت صفر است.
: Sign –۲ بيت علامت كه پرارزشترين بيت داده است ۱ بودن آن به معني منفي بودن عدد است.
Parity–۳ (بيت توازن): اگر تعداد بيتهاي يك حاصل از دستورالعمل زوج باشد اين پرچم ۱ مي‌شود مگرنه مقدارش صفر است.
Carry–۴ (بيت نقلي): اگر در موقع جمع يا تفريق دو عدد يك بيت نقلي يا بيت قرض (Borrow) ايجاد شود اين پرچم ۱ مي شود مگرنه در حالت صفر مي ماند.
: Auxiliary Carry –۵ اگر در يك جمع يك رقم نقلي از بيت ۳ به بيت ۹ برود پرچم فوق ۱ مي‌شود مگرنه مقدارش صفر است.

به ثبات هاي انباره و پرچم با هم ثبات كلمه حالت پرسسور (PSW) مي گويند كه يك ثبات ۱۶ بيتي است. در شكل (۴-۲): مكان هر پرچم روي ثبات پرچم (Flag) مشخص شده است
CY 1 P 0 AC 0 Z S

شكل (۴-۲): محل پرچمهاي روي ثبات F
Stack Pointer (اشاره گر پشته): هنگام صدا زدن يك زير برنامه (subroutin) در طول اجراي برنامه اصلي و يا براي نوشتن برنامه هاي خاصي از اين ثبات استفاده مي شود. كه در بخشهاي بعدي توضيح داده خواهد شد.
۲-۳) دستور العملهاي ۸۰۸۰:
در ۸۰۸۰ هفت نوع دستورالعمل وجود دارد كه در هر قسمت جداگانه به آنها مي پردازيم.
۲-۳-۱) گروه انتقال داده:
اين گروه از دستورالعملها داده را از ثبات به ثبات يا از حافظه به ثبات يا از ثبات به حافظه انتقال مي دهد. بيشتر دستورات اين گروه با دستور MOV است.
نكته: اين دستورات تاثيري در وضعيت پرچمها ندارد.
در اين قسمت چند دستورالعمل اصلي را به عنوان مثال مطرح مي كنيم با درك دقيق اين مثالها قادر خواهيد بود عملكرد هر يك از دستورات كه بعدها بصورت فشرده در جدول دراختيار شما قرار مي گيرد را متوجه شويد.
MOV R1 , R2: انتقال از ثبات به ثبات ديگر.
: op code 01 DDD SSS زمان اجرا ۵ سيكل ساعت.
نكته: تمام دستورات داده ساختار مقابل را دارند مبداء , مقصد : انتقال
: MVI R,DATA انتقال فوري داده مشخص به داخل ثبات.
Opcode 00DDD110 : (مكان N حافظه)

زمان اجرا : ۷ سيكل ساعت.
: MOV R,M انتقال از حافظه به ثبات، آدرسي كه ثبات هاي HL به آن اشاره مي كنند و داده M را در بر دارد را بهR انتقا ل مي دهد.
Opcode : 01 DDD 110 زمان اجرا: ۷ سيكل ساعت.

نكته: در هر دستورالعمل كه M مشاهده كرديد منظور داده آدرسي از حافظه است كه HL به آن اشاره مي كند.
: MVI M,(DE) اين دستور محتواي آدرسي را كه DE به آن اشاره ميكند در M يعني آدرسي كه HL به آن اشاره ميكند قرار مي دهد.
Opcode : 00110110=36 H
Data : 11011110=DEH
: LXI RP,DATA داده ۱۶ بيتي در ثبات كمكي (مثلاً ثبات BC) قرار مي دهد.
Opcode : 00RP0001
Data(LSB):XXXXXXXX
Data(HSB):YYYYYYYY
زمان اجرا : ۱۰ سيكل ساعت.
نكته : در موقع اجراي دستورات دقت كنيد كه براي دادن آدرس مشخص از حافظه به يك ثبات ابتدا هشت بيت سمت راست آن و سپس هشت بيت سمت چپ آن را به عنوان دستورالعمل وارد كنيد.
: LDA ADDR محتواي مكاني از حافظه كه در دستورالعمل آمده و در انباره قرار مي دهد.
Opcode: 00RP0001
Data (LSB):XXXXXXXX
Data(HSB): YYYYYYYY
زمان اجرا: ۱۰ سيكل ساعت.
نكته: در موقع اجراي دستورات دقت كنيد كه براي دادن آدرس مشخص از حافظه به يك ثبات ابتدا هشت بيت سمت راست آن و سپس هشت بيت سمت آن را آن به عنوان دستورالعمل وارد كنيد.
LDA ADDR : محتواي مكاني از حافظه كه در دستورالعمل آمده در انباره قرار مي دهد.
Opcode : 00111010
Data (LSB): XXXXXXX

Data(MSB):YYYYYYYY
زمان اجرا: ۱۳ سيكل ساعت
:STA ADDR محتواي انباره را در مكاني از حافظه كه در دستورالعمل آمده قرار مي دهد.
Opcode : 00110010
Data (LSB): XXXXXXXX

Data(MSB): YYYYYYYY
: XCHG پس از اجراي اين دستور محتواي آدرسهايي از حافظه كه DE , HL به آن اشاره مي‌كردند با هم عوض مي شود.
Opcode : 11101011
2-3-2) گروه دستورالعملهاي رياضي:
اين گروه تمام دستورالعملهاي مانند جمع وتفريق و افزايش و كاهش را شامل مي شود اين دستورالعملها مي تواند بصورت ۸ بيتي يا ۱۶ بيتي باشد البته تذكر اين نكته لازم است كه بقيه اعمال رياضي مثل ضرب و تقسيم يا جمع ۳۲ بيتي و غيره را مي توان با كمك نرم افزار و استفاده از اين دستورالعملها ايجاد كرد همچنين اين دستورالعملها تاثير برروي وضعيت پرچمها دارند كه اين تاثير در برنامه نويسي بايد در نظر گرفته شود.
در اين قسمت هم مانند قسمت قبل چند دستورالعمل اصلي معرفي مي شود تا كار با جدول دستورات ساده شود.
ADD R: محتواي ثبات R را با انباره جمع مي كند و حاصل را در انباره قرار مي دهد پرچمهاي
Z , S , P , CY , AC پس از اجراي اين عمل ممكن است تغيير كنند.
Opcode : 10000 SSS
زمان اجرا: ۴ سيكل ساعت است.
: ADC R محتواي R را با بيت نقلي (carry) جمع مي كند حاصل را در انباره قرار مي دهد.
Opcode: 11001110
زمان اجرا: ۷ سيكل ساعت.
: SUB R محتواي ثبات R را از انباره كم مي كند و حاصل در انباره قرار مي دهد.
Opcode : 10010 SSS
زمان اجراي: ۴ سيكل ساعت.
: SBB R جمع ثباتهاي دوتايي: مقدار ۱۶ بيت RP را با ۱۶ بيت HL جمع كرده و حاصل را در HL قرار مي دهد.
Opcode: 00 RP 1001
زمان اجرا: ۱۰ سيكل ساعت.
(۲-۳-۳) دستورالعملهاي چرخش:
با كمك اين دستور العملها مي توان شيفت به سمت راست يا چپ در ارقام يك عدد ايجاد كرد شيفت دادن و يا كم كردن زياد كردن يك عدد به اندازه يك واحد كاربرد زيادي در برنامه نويسي دارد.
نكته: پرچم وضعيت نقلي (carry) در اين دستور العملها تحت

تاثير قرار مي گيرد.
: RLC محتواي انباره را ۱ بيت به سمت چپ شيفت مي دهد. پس از اجراي دستور با ارزشترين بيت در داخل carry قرار مي گيرد.
Opcode : 00000111

زمان اجرا: ۴ سيكل ساعت.
: RAL محتواي انباره و carry را مانند يك عدد ۹ بيتي يك بيت به چپ شيفت مي دهد بطوري كه carry به بيت LSB انباره منتقل مي شود.
Opcode : 00010111
زمان اجرا: ۴ سيكل ساعت.
دستور RRC مشابه RLC ولي شيفت به راست و RAR مشابه RAL و براي شيفت به راست مورد استفاده قرا مي گيرند.
: INR R به محتواي ثبات R يك واحد اضافه مي كند.
Opcode : 00DDD100
زمان اجرا: ۵ سيكل ساعت.
: INX RP به محتواي ثبات ۱۶ بيتي RP يك واحد اضافه مي كند.
Opcode : 00RP0011
زمان اجرا: ۵ سيكل ساعت.
: INR M به محتواي مكاني از حافظه كه آدرس آن در HL است يك واحد اضافه مي كند.
Opcode : 00110100
زمان اجرا: ۱۰ سيكل ساعت.
دستورات DCX RP , DCR M , DCR R مشابه دستور فوق است و براي كم كردن به اندازه يك واحد استفاده مي شود.

نكته: اين دستورات موقع اجرا تاثيري بر بيت نقلي Carry ندارند.
دستورات CMC , CMA براي مكمل كردن انباره و بيت نقلي استفاده مي شود.
: DAA انطبات دهدهي انباره: ۸ بيت انباره به ۲، عدد ۴ , BCD بيتي تبديل مي كند.
۲-۳-۴) گروه دستورالعملهاي منطقي
اين گروه شامل عملگرهاي منطقي است و براي مقايسه دو عدد يا تشخيص ۱ بودن بعضي از بيتها بكار مي رود.

: ANA R محتويات R را انباره را با هم AND كرده و حاصل را در انباره قرار مي دهد.
Opcode : 10100 SSS
زمان اجرا: ۴ سيكل ساعت.
دستورات ORA M, DRA R, XR1 Data, XAR M, XAR R, ANI Data, ANA M
ORI Dataهر كدام عملكرد منطقي دارند كه بسادگي عملكرد هر يك قابل حدس زدن است.
: CMP R محتواي A , R را مقايسه مي كند. اگر A>R سپس پرچم نقلي (Carry) Set مي شود اگر R>A پرچم نقلي reset مي شود اگر A=R باشد پرچم Zero روشن مي شود.
Opcode : 10111 SSS