<style> body { font-family: "Vazirmatn", sans-serif; direction: rtl; text-align: right; line-height: 1.8; } ul, ol { direction: rtl; text-align: right; list-style-position: inside; padding-right: 1.5em; } li { margin-bottom: 0.5em; } code { background-color: #f5f5f5; color: #c7254e; font-family: "Courier New", monospace; font-size: 90%; padding: 0.2em 0.4em; border-radius: 4px; direction: ltr; unicode-bidi: embed; } pre { background-color: #2d2d2d; color: #f8f8f2; font-family: "Courier New", monospace; font-size: 14px; padding: 1em; border-radius: 8px; overflow-x: auto; direction: ltr; text-align: left; line-height: 1.6; } pre code { background: none; color: inherit; font-size: inherit; padding: 0; } p, h1, h2, h3, h4, h5, h6, li { direction: rtl; unicode-bidi: embed; } </style> ### **سوالاتی بر اساس آنچه در دو جلسه توضیح میان ترم بیان شد** --- #### **تفاوت میکروکنترلر (Microcontroller) و ریزپردازنده (Microprocessor) چیست؟** * **ریزپردازنده (MP - Microprocessor)**: یک واحد پردازش مرکزی (CPU) تک تراشه است که شامل واحد حساب و منطق (ALU)، ثبات‌ها (Registers) و واحد کنترل (Control Unit) می‌باشد. برای کاربردی شدن، به قطعات جانبی خارجی مانند حافظه (RAM/ROM)، پورت‌های ورودی/خروجی و تایمر نیاز دارد. مثال بارز آن پردازنده **8085** است. **چالش:** چالش استفاده از ریزپردازنده‌ها، پیچیدگی ارتباط با قطعات جانبی است؛ این فرآیند نیازمند ارسال آدرس، انتظار برای پاسخ از قطعه جانبی و سپس هماهنگی برای دریافت داده است که اغلب از طریق پین‌های مالتی‌پلکس (MUX) انجام می‌شود. * **میکروکنترلر (MC - Microcontroller)**: یک سیستم کامپیوتری کامل روی یک تراشه است. علاوه بر CPU، شامل حافظه (Flash و RAM)، پورت‌های ورودی/خروجی و واحدهای جانبی دیگر مانند مبدل آنالوگ به دیجیتال (ADC)، تایمرها و رابط‌های ارتباطی (مثل USART و SPI) نیز می‌باشد. این طراحی مجتمع، نیاز به قطعات جانبی را کاهش می‌دهد. مثال بارز آن **ATmega32** است. ### مقایسه طبق تصاویر کلاس: | مشخصه | ریزپردازنده (µP 8085) | میکروکنترلر (µC ATmega32) | | :--- | :--- | :--- | | **سیستم** | فقط CPU | CPU + Memory + I/O | | **عملکرد** | محاسبات | سیستم‌های نهفته (Embedded) | | **حافظه** | خارجی (External) | داخلی (Built-in) | | **پورت I/O** | نیاز به پورت جانبی دارد | پورت‌ها داخلی هستند | | **هزینه/اندازه** | گران‌تر و بزرگ‌تر | به‌صرفه و فشرده (Compact) | | **مصرف توان** | بیشتر | کم‌مصرف‌تر | | **کاربرد** | کامپیوترهای شخصی (PC) | سیستم‌های نهفته (Embedded) و اینترنت اشیاء (IoT) | --- #### **معماری RISC و CISC چه تفاوت‌هایی دارند؟** **CISC (Complex Instruction Set Computer)**: - **دستورالعمل‌ها**: دارای مجموعه دستورالعمل‌های پیچیده و زیاد است که هر کدام می‌توانند چندین عمل سطح پایین را انجام دهند. - **سرعت**: اجرای هر دستورالعمل ممکن است چندین سیکل ساعت طول بکشد. - **سخت‌افزار**: طراحی سخت‌افزار پیچیده‌تر است. - **مصرف**: معمولاً مصرف انرژی و هزینه بیشتری دارد. - **مثال**: پردازنده‌های خانواده x86 اینتل. **RISC (Reduced Instruction Set Computer)**: * **دستورالعمل‌ها**: دارای مجموعه دستورالعمل‌های ساده، محدود و بهینه شده است. * **سرعت**: هر دستورالعمل معمولاً در یک سیکل ساعت اجرا می‌شود. * **سخت‌افزار**: طراحی سخت‌افزار ساده‌تر است. * **مصرف**: مصرف انرژی و هزینه کمتری دارد. * **مثال**: میکروکنترلرهای خانواده AVR مانند ATmega32. --- #### **واحد حساب و منطق (ALU) چیست و چه کاری انجام می‌دهد؟** **ALU (Arithmetic Logic Unit)** یکی از اجزای اصلی ریزپردازنده است. وظیفه آن انجام کلیه عملیات **حسابی** (مانند جمع، تفریق، ضرب و تقسیم) و عملیات **منطقی** (مانند AND, OR, NOT, XOR) بر روی داده‌ها است. --- #### **شرح سیستم کامپیوتری (بر اساس اسلاید)** ![Untitled01](https://hackmd.io/_uploads/SyRkLND7lg.jpg) یک سیستم کامپیوتری پایه از سه بخش اصلی تشکیل شده است: **میکروپروسسور (µP)**، **حافظه (Memory)** و **ورودی/خروجی (I/O)**. این بخش‌ها از طریق گذرگاه‌ها (Buses) برای تبادل اطلاعات به یکدیگر متصل می‌شوند. **گذرگاه آدرس (Address Bus)** * از این گذرگاه برای ارسال آدرس از طرف میکروپروسسور به حافظه یا بخش I/O استفاده می‌شود. * آدرس، یک عدد باینری است که یک مکان مشخص در حافظه یا یک دستگاه ورودی/خروجی را معین می‌کند. * حافظه را می‌توان به صورت مجموعه‌ای از خانه‌های شماره‌گذاری شده تصور کرد که در یک سیستم ۸ بیتی، هر خانه یک عدد ۸ بیتی را در خود جای می‌دهد. **گذرگاه داده (Data Bus)** * از این گذرگاه برای حمل و انتقال داده بین میکروپروسسور و سایر بخش‌ها (حافظه و I/O) استفاده می‌شود. * در یک کامپیوتر ۸ بیتی، عرض این گذرگاه ۸ بیت است. * گذرگاه داده معمولاً **دوطرفه** است، به این معنی که می‌تواند اطلاعات را در هر دو جهت (از پردازنده به حافظه/I/O و بالعکس) ارسال نماید. ```mermaid flowchart TD subgraph کامپیوتر IO[ورودی/خروجی I/O] MP(میکروپروسسور µP) MEM[حافظه Memory] MP -- "گذرگاه سیستم (Bus)" --> IO IO -- "گذرگاه سیستم (Bus)" --> MP MP -- "گذرگاه سیستم (Bus)" --> MEM MEM -- "گذرگاه سیستم (Bus)" --> MP end ``` --- #### **پین‌های مهم و سیگنال‌های کنترلی** * **Chip Select (CS)**: سیگنالی برای فعال‌سازی یک تراشه خاص (مانند حافظه یا I/O) از میان چندین تراشه متصل به باس مشترک است. * **RD (Read)**: یک سیگنال کنترلی خروجی از پردازنده است. وقتی این سیگنال فعال (معمولاً در سطح ولتاژ پایین) می‌شود، به حافظه یا دستگاه ورودی/خروجی اطلاع می‌دهد که پردازنده آماده خواندن داده از روی باس داده است. * **WR (Write)**: یک سیگنال کنترلی خروجی از پردازنده است. فعال شدن این سیگنال نشان می‌دهد که پردازنده داده‌ی معتبری را روی باس داده قرار داده و دستگاه حافظه یا خروجی باید آن را دریافت و ذخیره کند. * **XTAL1, XTAL2**: این پین‌ها محل اتصال یک کریستال کوارتز خارجی به ریزپردازنده یا میکروکنترلر هستند. این کریستال، فرکانس نوسان پایداری را برای تولید سیگنال ساعت (Clock) سیستم فراهم می‌کند که برای هماهنگ‌سازی تمام عملیات داخلی ضروری است. * **VCC و AVCC**: هر دو پین‌های تغذیه مثبت هستند. **VCC** ولتاژ تغذیه اصلی برای بخش‌های دیجیتال تراشه است. **AVCC** ولتاژ تغذیه مخصوص بخش‌های آنالوگ مانند مبدل آنالوگ به دیجیتال (ADC) است. جداسازی این دو به کاهش نویز دیجیتال بر روی بخش‌های آنالوگ حساس کمک می‌کند. * **RXD, TXD**: این پین‌ها برای ارتباط سریال ناهمزمان (Asynchronous Serial Communication) استفاده می‌شوند. **RXD (Receive Data)** پین ورودی برای دریافت داده و **TXD (Transmit Data)** پین خروجی برای ارسال داده است. --- #### **ریزپردازنده 8085 و اجزای کلیدی** **معرفی**: 8085 یک ریزپردازنده 8 بیتی (8-bit microprocessor) پرکاربرد از اینتل (Intel) با معماری پیشرفته برای زمان خود است. **ساختار اصلی**: - **گذرگاه‌ها (Buses)**: - داده (Data Bus): 8 بیتی - آدرس (Address Bus): 16 بیتی (پشتیبانی از 64KB حافظه) - **واحدهای پردازشی**: - ALU (واحد محاسبات منطقی - Arithmetic Logic Unit) - بلوک کنترل و زمان‌بندی (Control and Timing Unit) - سیستم مدیریت وقفه (Interrupt System) **ثبات‌های مهم (Registers)**: 1. ثبات‌های 8 بیتی: - A (اکیومولاتور - Accumulator) - B, C, D, E, H, L (ثبات‌های عمومی - General Purpose Registers) 2. ثبات‌های 16 بیتی: - PC (شمارنده برنامه - Program Counter) - SP (اشاره‌گر پشته - Stack Pointer) **سیستم وقفه (Interrupt System)**: - 5 ورودی وقفه سخت‌افزاری (Hardware Interrupts): - TRAP (غیرقابل مسدودسازی - Non-maskable) - RST 7.5/6.5/5.5 (قابل مسدودسازی - Maskable) - INTR (وقفه عمومی - General Purpose Interrupt) **ملاحظات طراحی**: - نیاز به تراشه‌های جانبی (Peripheral ICs) برای ارتباط با دستگاه‌های خارجی - معماری بهینه‌شده برای سیستم‌های نهفته (Embedded Systems) و کنترل صنعتی --- #### **آی‌سی‌های جانبی 8085** **8255A (Programmable Peripheral Interface - PPI)**: یک رابط ورودی/خروجی قابل برنامه‌ریزی است. این آی‌سی ۲۴ پین I/O را در قالب سه پورت ۸ بیتی (Port A, Port B, Port C) فراهم می‌کند که می‌توانند در حالت‌های مختلفی برای ارتباط با دستگاه‌های جانبی پیکربندی شوند. **8259A (Programmable Interrupt Controller - PIC)**: یک کنترلر وقفه قابل برنامه‌ریزی است. وظیفه آن مدیریت درخواست‌های وقفه از چندین دستگاه جانبی است. این آی‌سی می‌تواند تا ۸ درخواست وقفه را اولویت‌بندی کرده و یک درخواست واحد را به پردازنده ارسال کند. **8237 (DMA Controller)**: کنترلر دسترسی مستقیم به حافظه (Direct Memory Access) است. این آی‌سی به دستگاه‌های جانبی اجازه می‌دهد تا داده‌ها را مستقیماً به حافظه یا از حافظه منتقل کنند، بدون اینکه پردازنده را درگیر نمایند. این کار سرعت انتقال داده را به شدت افزایش می‌دهد. حالت‌های مختلفی برای انتقال دارد (Mode های DMA). **8251 (Programmable Communication Interface - USART)**: یک رابط ارتباطی سریال قابل برنامه‌ریزی است. این آی‌سی ارتباط سریال همزمان (Synchronous) و ناهمزمان (Asynchronous) را برای پردازنده فراهم می‌کند و به آن اجازه می‌دهد با دستگاه‌هایی مانند مودم یا ترمینال ارتباط برقرار کند. **8253 / 8254 (Programmable Interval Timer - PIT)**: یک تایمر/شمارنده قابل برنامه‌ریزی است. دارای سه شمارنده ۱۶ بیتی مستقل است که می‌توانند برای تولید موج مربع، شمارش رویدادهای خارجی یا ایجاد تأخیرهای زمانی دقیق برنامه‌ریزی شوند. مدل 8254 نسخه بهبودیافته 8253 با قابلیت‌های خواندن و نوشتن بهتر است. **8279 (Programmable Keyboard/Display Interface)**: یک کنترلر اختصاصی برای مدیریت کیبورد ماتریسی (تا ۶۴ کلید) و نمایشگرهای مالتی‌پلکسی (مانند 7-Segment) است. این آی‌سی وظایف اسکن کیبورد و تازه‌سازی (Refresh) نمایشگر را بر عهده گرفته و بار پردازشی را از روی CPU اصلی برمی‌دارد. **8755 (EPROM with I/O)**: یک آی‌سی ترکیبی است که شامل ۲ کیلوبایت حافظه EPROM (Erasable Programmable Read-Only Memory) و دو پورت ورودی/خروجی ۸ بیتی موازی است. این تراشه به منظور کاهش تعداد قطعات در سیستم‌های مبتنی بر 8085 طراحی شده بود. --- #### **میکروکنترلر ATmega32** **ATmega32** یک میکروکنترلر ۸ بیتی کم‌مصرف مبتنی بر معماری پیشرفته **RISC** است. طبق تاکید استاد، تنها بخش **ویژگی‌ها (Features)** از دیتاشیت برای امتحان اهمیت دارد. * **ویژگی‌های کلیدی**: * **عملکرد بالا**: اجرای اکثر دستورات در یک سیکل ساعت. * **حافظه**: 32 کیلوبایت حافظه Flash قابل برنامه‌ریزی، 2 کیلوبایت حافظه SRAM داخلی و 1 کیلوبایت حافظه EEPROM. * **واحدهای جانبی**: * دو تایمر/شمارنده ۸ بیتی و یک تایمر/شمارنده ۱۶ بیتی. * چهار کانال PWM (Pulse Width Modulation). * مبدل آنالوگ به دیجیتال (ADC) ۱۰ بیتی با ۸ کانال ورودی. * رابط‌های ارتباطی شامل: * یک رابط سریال **USART**. * یک رابط سریال **SPI**. * یک رابط سریال دوسیمه (TWI/I2C). * **ورودی/خروجی**: ۳۲ خط ورودی/خروجی قابل برنامه‌ریزی. * **نوسان‌ساز (Oscillator)**: دارای نوسان‌ساز داخلی کالیبره شده و قابلیت اتصال کریستال خارجی. * **ولتاژ کاری**: عملکرد در محدوده ولتاژ ۲.۷ تا ۵.۵ ولت. --- ### مقایسه انواع حافظه‌های EPROM، EEPROM و Flash (طبق تصاویر کلاس) | مشخصه | EPROM | EEPROM | Flash Memory | | :--- | :--- | :--- | :--- | | **روش برنامه‌ریزی** | با اشعه فرابنفش (U.V.) | الکتریکی (Electrical) | الکتریکی (Electrical) | | **سرعت نوشتن** | کند (Slow) | کند (Slow) | سریع (Fast) | | **نوع حافظه** | غیرفرار (Non-Volatile) | غیرفرار (Non-Volatile) | غیرفرار (Non-Volatile) | | **کاربرد امروزی** | ندارد | بایوس (Bios)، سیستم‌های نهفته (Embedded) | حافظه SSD، فلش USB | --- ### مود‌های اصلی عملکرد DMA (8237) **Single Transfer Mode (حالت انتقال تکی):** در این حالت، پس از هر بار انتقال داده (یک بایت)، کنترلر DMA باس را به پردازنده پس می‌دهد. این حالت برای دستگاه‌هایی که به سرعت بالایی نیاز ندارند، مناسب است. **Block Transfer Mode (حالت انتقال بلوکی):** در این حالت، کنترلر DMA پس از دریافت درخواست، کنترل باس را در دست می‌گیرد و یک بلوک کامل از داده‌ها را بدون وقفه منتقل می‌کند. پس از اتمام انتقال کل بلوک، کنترل باس به پردازنده بازگردانده می‌شود. **Demand Transfer Mode (حالت انتقال بر اساس تقاضا):** این حالت شبیه به انتقال بلوکی است، اما انتقال تا زمانی ادامه می‌یابد که دستگاه جانبی سیگنال درخواست (DREQ) را فعال نگه دارد. اگر دستگاه جانبی آماده نباشد و سیگنال را غیرفعال کند، انتقال متوقف شده و پس از فعال‌سازی مجدد، ادامه می‌یابد. این کار تا انتقال کامل بایت‌ها ادامه پیدا می‌کند. **Cascade Mode (حالت آبشاری):** در این حالت، چندین کنترلر DMA به صورت آبشاری به یکدیگر متصل می‌شوند تا تعداد کانال‌های DMA افزایش یابد. در این ساختار، یک کنترلر به عنوان "Master" و بقیه به عنوان "Slave" عمل می‌کنند. --- ### **Flag Register در 8085** #### **ساختار Flag Register** | **بیت 7** | **بیت 6** | **بیت 5** | **بیت 4** | **بیت 3** | **بیت 2** | **بیت 1** | **بیت 0** | | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | | S | Z | - | AC | - | P | - | CY | #### **توضیح هر Flag:** * **S - پرچم علامت (Sign Flag)**: وضعیت بیت هفتم (MSB) نتیجه را نشان می‌دهد. * **0**: نتیجه مثبت است. * **1**: نتیجه منفی است. * **Z - پرچم صفر (Zero Flag)**: اگر نتیجه یک عملیات ریاضی یا منطقی صفر شود، این پرچم یک می‌شود. * **AC - پرچم کری کمکی (Auxiliary Carry Flag)**: این پرچم در عملیات BCD کاربرد دارد و در صورت وقوع کری (رقم نقلی) از بیت 3 به بیت 4، یک می‌شود. * **P - پرچم پاریتی (Parity Flag)**: این پرچم، زوج یا فرد بودن تعداد "1" ها در نتیجه را بررسی می‌کند. * **CY - پرچم کری (Carry Flag)**: در صورت وقوع کری (رقم نقلی) در محاسبات حسابی و منطقی، این پرچم یک می‌شود.