جلسه یازدهم
مقدمه
در این جلسه با مفهوم طراحی یک سیستم کامل ریزپردازندهای بر پایه پردازندههای کلاسیک 8086 و 8088 آشنا میشویم.
هدف این جلسه آن است که دانشجو فرایند ساخت یک «کامپیوتر کوچک» را با ترکیب CPU، حافظهها و ادوات جانبی در سطح سختافزار بشناسد.
این جلسه بیشتر بر معماری، اجزا، نحوه اتصال باسها و نقش تراشههای جانبی تمرکز دارد و اصول یک طراحی واقعی را توضیح میدهد.
۱) مفهوم یک سیستم ریزپردازندهای
یک سیستم ریزپردازندهای شامل سه بخش کلیدی است:
- CPU (8086 یا 8088)
- حافظهها (RAM و ROM)
- ادوات جانبی (I/O Devices)
این سه بخش از طریق گذرگاه آدرس، داده و کنترل با یکدیگر ارتباط برقرار میکنند.
۲) انتخاب CPU: مقایسه 8086 و 8088
پردازنده 8086 و 8088 بسیار شبیه هم هستند، با این تفاوت:
- 8086 → باس داده 16 بیتی
- 8088 → باس داده 8 بیتی (ارزانتر، با سختافزار سادهتر)
به همین دلیل بسیاری از طراحیهای آموزشی و سیستمهای قدیمی مانند IBM PC اولیه مبتنی بر 8088 ساخته شده بودند.
۳) اجزای اصلی سیستم
۳.۱ پردازنده (CPU)
قلب سیستم که دستورات برنامه را اجرا میکند.
۳.۲ حافظهها
- ROM/EPROM
- ذخیره برنامه بوت یا برنامه اصلی
- معمولاً از نوع 2764، 27128 یا مشابه
- RAM
- برای ذخیره دادهها و پشته
- معمولاً از نوع 6264 یا 62256
۳.۳ تراشههای جانبی مهم
سیستمهای مبتنی بر 8086/8088 معمولاً از تراشههای استاندارد سری 82xx استفاده میکنند:
8255 – Programmable Peripheral Interface
برای ورودی/خروجی موازی (کلید، LED، رله و…)
8253 یا 8254 – Programmable Timer
تایمر سهکاناله برای تولید پالس و اندازهگیری زمان
8259 – Programmable Interrupt Controller
برای مدیریت وقفههای متعدد
8237 – DMA Controller
برای انتقال مستقیم داده بین حافظه و I/O
8284 – Clock Generator
تولید سیگنال کلاک و مدار Reset
8288 – Bus Controller
در برخی طراحیها برای کنترل باس (بسته به حالت ماژولار)
این تراشهها هسته یک «کامپیوتر کامل» را تشکیل میدهند.
۴) گذرگاهها (BUS) و نحوه اتصال آنها
۴.۱ باس آدرس (Address Bus)
- وظیفه: مشخص کردن محل داده یا دستور
- در 8086: 20 خط آدرس → پشتیبانی از 1 مگابایت حافظه
- خطوط آدرس در 8086 Multiplexed هستند (با AD0–AD15 مشترک با داده)
۴.۲ باس داده (Data Bus)
- انتقال داده بین CPU، حافظه و I/O
- در 8086: 16 بیت
- در 8088: 8 بیت
۴.۳ باس کنترل (Control Bus)
شامل سیگنالهایی مانند:
- RD (خواندن)
- WR (نوشتن)
- M/IO (انتخاب حافظه یا I/O)
- INTA (پاسخ به وقفه)
- ALE (Latch کردن آدرس)
این سیگنالها برای هماهنگی عملیات سیستم ضروریاند.
۵) طراحی حافظه و نقشهبرداری (Memory Mapping)
دو روش کلی برای آدرسدهی حافظه و I/O وجود دارد:
- Memory Mapped I/O
- Isolated I/O (اختصاصی 8086 با دستورات IN/OUT)
در اکثر سیستمهای 8086 از روش Isolated استفاده میشود.
برای حافظه باید:
- بخشی از فضای آدرس برای RAM
- بخشی برای ROM
- بخشی برای تراشههای I/O
رزرو شود.
مثال نمونه:
- آدرس 00000h تا 07FFFh → RAM
- آدرس F0000h تا FFFFFh → ROM (BIOS)
۶) نقش Latch و Buffer در طراحی
به دلیل Multiplexed بودن خطوط AD0–AD15 در 8086:
- ابتدا آدرس از روی این خطوط ارسال میشود
- سپس داده جایگزین آنها میشود
- بنابراین باید از Latch (مثلاً 8282 یا 74LS373) برای نگهداشتن آدرس استفاده کرد
همچنین برای جلوگیری از تداخل بین سیگنالها باید از Buffer (مثل 74LS245) استفاده شود.
اینها بخش مهمی از طراحی سختافزاری هستند.
۷) طراحی کلی سیستم (نمای اجمالی)
یک سیستم آموزشی 8086 معمولاً شامل:
- CPU (8086/8088)
- Clock Generator (8284)
- Latch برای آدرس
- Buffer برای داده
- ROM حاوی برنامه
- RAM برای داده
- 8255 برای I/O
- 8253 برای تایمر
- 8259 برای مدیریت وقفهها
- مدار Reset
این اجزا از طریق گذرگاههای استاندارد به هم متصل میشوند و یک سیستم کامل تشکیل میدهند.
۸) اجرای برنامه روی سیستم
پس از مونتاژ مدار:
- CPU پس از ریست، از آدرس FFFF0h اجرای برنامه را آغاز میکند (محل شروع BIOS)
- برنامه ذخیرهشده در ROM اجرا میشود
- CPU با تراشههای جانبی تعامل کرده و کار سیستم انجام میشود
در محیط آزمایشگاهی معمولاً چندین تست اجرا میشود:
- روشن/خاموش کردن LED با 8255
- تولید پالس PWM ساده با 8253
- تست وقفهها با 8259
- نمایش پیام روی سونسگمنت
۹) اهداف آموزشی این جلسه
دانشجو پس از تکمیل جلسه باید بتواند:
- اجزای اصلی یک سیستم 8086 را بشناسد
- مفهوم BUS و نحوه اتصال حافظه و I/O را درک کند
- کاربرد تراشههای 82xx را بداند
- نقشه حافظه و I/O را تحلیل کند
- ساختار کلی یک کامپیوتر 16 بیتی را تصور کند
این جلسه نقطه اتصال بین نرمافزار سطح پایین و سختافزار واقعی است.