noteyab

خلاصه درس ریزپردازنده و زبان اسمبلی

خلاصه درس ریزپردازنده و زبان اسمبلی

مقدمه

اولین ریز پردازنده در سال 1971 میلادی بنام intel 4004  توسط شرکت intel  طراحی شد  این ریز پردازنده  دارای گذرگاه  داده 4 بیت بودو از 2300 ترانزیستور تشکیل شده بود.

امروزه ریز پردازنده هایی وجود دارند که دارای کاربرد ویژه ای هستند که در زیر به انها اشاره میکنیم:

1-ریزپردازنده تک تراشه

2-میکروکنترلرها

3-ریزپردازنده های برش بیتی

4-ریزپردازنده با تعداد دستورالعمل کاهش یافته

1-ریزپردازنده تک تراشه

در اینگونه ریز پردازنده ها کلیه اجزا  ریزپردازنده مانند واحد حساب و منطق واحد کنترل ثبات ها،پرچم ها و… در داخل یک تراشه قرار میگیرند

2-میکروکنترلرها

این ریزپردازنده ها بطور عام دارای کاربردهای کنترلی هستند. در این گونه علاوه بر واحدپردازش مرکزی اجزای دیگری را که معمولا در خارج ریز پردازنده قرار دارند،در داخل تراشه میگنجانند .از جمله این اجزا میتوان انواع حافظه های داده و برنانه ،شمارنده و زمان سنج ها  مدارهای تبدیل آنالوگ به رقمی و بالعکس و …را نام برد از این رو این گونه تراشه ها بسیار فشرده هستند

3-ریزپردازنده های برش بیتی

این ریزپردارنده ها بر خلاف ریز پردازنده های تک تراشه ،از چند تراشه بهره میگیرند.

4-ریزپردازنده با تعداد دستورالعمل کاهش یافته

تا اوایل ۱۹۸۰ ، تمام ریز پردازنده هاچه بصورت تک تراشه و یا تمام بورد ،برمبنای طرح پردازنده های با مجموعه دستورالعمل های پیچیده  cisc   طراحی میشدند ، در اوایل ۱۹۸۰ میلادی، نوع جدیدی از ریزپردازنده ها بنام ریزپردازنده های کاهش یافته طراحی شدند (RISC).

ریزپردازنده های ویژه پردازش سیگنال رقمی

این پردازنده ها برای پردازش سیگنالهای رقمس طراحی شده‌اند و دارای قدرت و سرعت پردازش بالایی میباشند.در این ریزپردازنده ها یک سری الگوریتم های محاسباتی مخصوص پردازش سیگنالها و داده های رقمی همانند تبدیل فوریه سریع ،فیلترهای رقمی و دستورالعمل های ویژه پردازش سیگنال ،بصورت سخت افزاری تعبیه شده اند این ریزپردارنده ها برای پردازش تصویر ،صوت و … کاربردهای کنترلی دارند.

 

انواع روشهای  بسته بندی تراشه ریز پردازنده ها

اولین بار  بسته های با ۴۰ پایه و از نوع دو ردیفه dip طراحی شدند ،در این نوع بسته بندی تراشه بصورت یک مستعطیل است که پایه های ان بطور موازی از دو طرف خارج شده اند.

بسته بندی های PLCC , PGA

بسته بندی PLCCبدینگونه است که در ان بجای پایه هایی در دو طرف تراشه ،پایه ها میتوانند در تمام جهات  اطراف تراشه قرار داشته باشند.

در بسته بندی نوع دوم سطح زیر تراشه بصورت یک بستر است که پایه ها در ان قرار میگیرند .

–––

خانواده ریزپردازنده  80X86

پردازنده ۸۰۸۶ تنها یک تراشه مدار مجتمع در بین خانواده ریزپردازنده  ریز پردازنده های ۱۶ بیتی ساخت شرکت intel است. این خانواده شامل ۵ریز پردازنده و پنج پردازنده کمکی است.از جمله پردازنده کمکی ،پردازنده  داده های عددی یا NDP  پردازنده ورودی  خروجی IOP و پردارنده سیستم های عامل OSP هستند . ۸۰۸۷ یک نمونه NDP  است این‌تراشه زمان پردازش عملیات ریاضی پیچیده را تا ۱۰۰ برابر کاهش میدهد.۸۰۸۹ یک نمونه iop. هست و توانایی دسترسی مستقیم به حافظه DMA را با سرعت بالا فراهم میاورد.

۸۰۸۶ یک ریزپردازنده ۱۶ بیتی و ۸۰۸۸ تا حد زیادی مشابه ان هست تنها تفاوت انها اینست که که ۸۰۸۸ دارای گذرگاه داده خارجی ۸ بیتی است،۸۰۱۸۶ یک ریز پردازنده با سزح تجمع زیاد است.

۸۰۱۸۸ هم هم کاملا مشابه با ۸۰۱۸۶ است ولی گذرگاه داده ۸ بیتی دارد.۸۰۲۸۶  در واقع یک ریزپردازنده ۸۰۸۶ با قابلیت های بیشتر و دارای ۱۶ مگ فضای ادرس است.

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

واکشی و اجرای دستور:

سه بخش اساسی در حافظه وجود دارد که عبارت اند از(شکل ان را هم در زیر میبینید):

واحد پردازشگر مرکزی:

این پخش مغز سیستم است و تمام فعالیت هارا رهبری میکند.

واحدحافظه:

داده ها و دستورات بطور موقت در ان ذخیره میشوند.

ورودی / خروجی :

برای سیستم امکان دریافت داده ها از وزودی و خارج کردن نتایج پردازش را فراهم میاورد.

واحد پردازشگر مرکزی،حافظه و  i/o

در یک سیستم‌میکروکامپیوتری این قسمت ها همگی بخشهای الکترونیکی مستقل هستند که از طریق سه گذرگاه اصلی سیستم به هم متصل شده اند.این بخش هارا با نام سخت افزار رایانه میشناسیم.برنامه ای که در واحد حافظه ذخیره شده است و عملکرد رایانه را کنترل میکند نرم افزار نامیده میشود.

بخش حافظه شامل حافظه خواندنی و / نوشتنی RAM، و حافظه فقط خواندنی ROM میباشد.

چون محتوای رام با خاموش شدن سیستم از بین نمیروند ،برای نگهداری داده هایی که بلافاصله بعد ازروشن شدن رایانه مورد نیاز هستند،حافظه مناسبی است بدین طریق بمحض اینکه رایانه شروع بکار کند  برنامه ای در حافظه سیستم است  و اماده اجرا شدن می باشد.

اکثر سیستم های کامپیوتری واقعا دو نوع حافظه دارند اولی حافظه اصلی سیستم است که واحد پردازشگر مرکزی دستورات را از آن واکشی و اجرا می کند دومی حافظه جانبی یا ثانویه است به عنوان مثال فلاپی دیسک یک نمونه از چنین حافظه هایی است است این نوع حافظه برای ذخیره داده هاو برنامه هایی که به طور معمول در رام ذخیره شده اند و با خاموش شدن رایانه از بین میروند به کار می رود.

دستورالعمل‌های رایانه و چرخ‌های گذرگاه

 بسته به نوع دستورالعمل جاری هر کدام از سیگنالهای گذرگاه کنترل ممکن است فعال باشند و به همین دلیل چهار نوع اصلی از چرخه های گذرگاه وجود دارد.در ابن بخش میبینیم که چگونه بخش های مختلف یک دستورالعمل نوع چرخه گذرگاهی را که اتفاق می‌افتد تعیین می کند.

کدهای عملیاتی و عملوند:

دستورالعمل های رایانه ای از دوبخش ساخته می شوند،بخش اول کدهای عملیاتی نامیده می شود و عملیات را که واحد پردازشگر مرکزی باید انجام دهد تعیین می کند بخش دوم دستور منبع و یا مقصد داده هایی را که واحد پردازشگر مرکزی بر روی آنها عملیات انجام می دهد تعیین می کند این بخش عملوند نامیده میشود.

چرخه گذرگاه خواندن و نوشتن در حافظه:

بعد از اینکه یک دستور از حافظه واکشی و رمزگشایی شد، اجرا می گردد. برای بعضی از دستوارت مثل INC، AXاین عملیات میتواند داخل واحد پردازشگر مرکزی انجام شود و به دو یا سه پالس ساعت نیاز دارد. با این وجود، دستورالعملهای پیچیده تر به چندین پالس ساعت اضافی نیاز دارند، به ویژه اگر دستورالعمل نیاز به مراجعه های اضافی به حافظه یا وسایل o/I داشته باشد. گامهای مورد نیاز برای واکشی و اجرای دستورالعمل MOV [B040H],AX به شرح زیر است:

انجام دو چرخه گذرگاه خواندن از حافظه برای واکشی کد عملیاتی و عملوندهای دستور MOV[B040H],AXلازم است سه بایت داده از حافظه خوانده شود. رمزگشایی دستورالعمل تعیین می کند که محتوای ثبات AX باید در مکان حافظه B040 نوشته شود.

دستورالعمل بدین گونه اجرا میشود که عدد B040 بر روی گذرگاه آدرس قرار میگیرد، سیگنال کنترلی Memory Write فعال میشود و محتوای ثبات AX بر روی گذرگاه داده قرار می گیرد. این عملیات چرخه گذرگاه نوشتن در حافظه نامیده میشود.

جدول ۲-۱ به طور خلاصه چرخه گذرگاه های لازم در ریز پردازنده های ۸۶•۸۰ و ۸ ۸۰۸ را نشان میدهد. چون ۸۰۸۶ میتواند ۱۶ بیت داده را به طور همزمان بخواند تنها به سه چرخه گذرگاه نیاز دارد این در حالی است که ۸۰۸۸ به پنج چرخه گذرگاه نیاز دارد. نکته قابل توجه، این است که  قرار داد.HIGH , LOW که در این جرول دیده میشود بترتیب به پرارزشترین و کم ارزشترین هشت بیت آدرس یا انباشگر اشاره میکند.

 

 

چرخه گذرگاه خواندن و نوشتن در I/O

گاهی اجرای یک دستور نیازمند خواندن یا نوشتن داده در یکی از وسایل I/O یا درگاه های سیستم است. یک نمونه از چنین دستوراتی  IN AL ,6DHاست که تفسير أن بدین صورت است: “یک داده ۸ بیتی را از درگاه 6DH بخوان و در ثبات AL قرار بده.” وقتی که ۸۰۸۶ چنين دستوری را اجرا می کند گامهای زیر اجرا میشوند: یک چرخه گذرگاه خواندن از حافظه انجام میشود و کد عملیاتی و عملوند دستور از حافظه واکشی میشود. رمزگشای دستورالعمل تعیین می کند که یک چرخه خواندن از I/O لازم است. لذا آدرس درگاه مربوطه را بر خطوط گذرگاه آدرس قرار میدهد و سیگنال کنترلی I/O Read را فعال میکند. درگاه I/O با قرار دادن داده ۸ بیتی بر روی گذرگاه داده، به این دستور پاسخ میدهد و واحد پردازشگر مرکزی این داده را در AL کپی می کند.

برنامه نویسی رایانه

برنامه ریزی رایانه نیازمند یاد گرفتن یک زبان جدید است. ولی کدام یک از زبانها؟ زبانهای موجود در حال حاضر عبارتند از: زبان ماشین، زبان اسمبلی و تعدادی از زبانهای سطح بالا. در این بخش، این زبانها و مزایا و معایب هر کدام را بررسی می کنیم.

زبان ماشین و زبان اسمبلی

بدون توجه به زبان استفاده شده برای برنامه نویسی، واحد پردازشگر مرکزی فقط میتواند دستوراتی را اجرا کند که در قالب کدهای دودویی قرار گرفته اند. زیرا آنچه در حافظه اصلی سیستم کامپیوتری قرار می گیرد تا اجرا شود، کدهای تشکیل شده از 0و1 هستند.

 

 مثلا برنامه  زیر را که برای یک ریز پردازنده ۸۰۸۶ نوشته شده است، در نظر بگیرید:

11100101

00100111

10001011

11011000

11100101

00100111

این برنامه دو عد د دودویی را از صفحه کلید دریافت و با هم جمع می کند. این برنامه برای برنامه نویس اصلا واضح نیست؛ درحالی که برای ریز پردازنده ۸۰۸۶ کاملا واضح است. این نوع برنامه را کد شیء گویند و تنها کدی است که رایانه میتواند اجرا کند؛ با این وجود، کار کردن با آن برای برنامه نویس آسان نیست.

برنامه نویسی سطح بالا:

زبان بیسیک یک زبان کامپیوتری اس،که در اکثر کامپیوتر ها موجود است برنامه جمع کردن دو عدد در این زبان این گونه است.

10 INPUT N1,N2

20 PRINT “SUM=”;N1+N2

30 END

مقایسه این برنامه با برنامه دودویی بیانگر تفاوت زبان سطح بالا با زبان ماشین است. برنامه نویسی در زبان BASIC همچون دیگر زبانهای سطح بالا، نیاز به مفسر یا کامپایلر  مخصوص آن زبان دارد. مفسر برنامه ای است که در حافظه سیستم قرار می گیرد و دستورات نوشته شده به زبان سطح بالا را در هنگام اجرا، به کد ماشین تبدیل می کند تا واحد پردازشگر مرکزی بتواند

بتواند آنها را اجرا کند. در مقایسه با زبان اسمبلی، استفاده از مفسر به اجرای خیلی کند برنامه ها منجر میشود. مثلا اگر برنامه کامپیوتری نوشته شده، دارای یک حلقه با دفعات تکرار زیاد باشد، مفسر دستورالعملأن حلقه را به ازای هربار تکرار، مجد دأ تفسیر میکند بنابراین، برنامه قبلی نوشته شده به زبان BASIC برای هر بار اجرا به چند میلی ثانیه زمان نیاز دارد؛ این در حالی است که کد ماشیننوشته شده برای همان عملیات در مدت زمان ۷/۴میکروثانیه )در یک ریز پردازنده ۸۰۸۶ بافرکانس ساعت ۵ مگاهرتز( اجرا میشود. تفاوت فاحش بین این دو زمان، به خصوص وقتی که عملیات به دفعات زیاد تکرار میشود، قابل توجه است. کامپایلر، برای تبدیل برنامه نوشته شده به زبان سطح بالا به فرم کد شیء به کار میرود.

استفاده از کامپایلر مشابه با به کارگیری اسمبلر است؛ زیرا برنامه نوشته شده به زبان سطح بالا را دریافت میکند و آن را به کد ماشین تبدیل می کند. این کد تبدیل شده را برای اجرای برنامه به کار می گیریم. استفاده از کامپایلر چندین امتیاز نسبت به مفسر دارد. اول اینکه در مواردی که با حلقه سر و کار داریم فقط یک بار کد ماشین تبدیل میشود و مشکل کاهش سرعت به وجود نمی آید. دوم اینکه کد ماشین ایجاد شده به تنهایی قابل اجراست و نیازی به قرارگرفتن برنامه کامپایلر در حافظه نیست.

ساختار واحد پردازشگر مرکزی ودستورالعملهای 8086

ساختار واحد پردازشگر مرکزی

این واحد دستورات برنامه را که از حافظه واکشی میشود،شناسایی،کدگشایی و اجرا کند. اجرای دستورات به

یک واحد محاسباتی برای انجام عملیات ریاضی و منطقی نیاز دارد این واحد را ALU  مینامند.

در شکل زیر نماایی از ساختار درونی پردازنده 8086 مشاهد میفرمایید.

 

واکشی واجرای دستورالعمل:

اگرچه 8086/88  به صورت یک رایانه از نوع “برنامه ذخیره شده” عمل می کند، سازمان دهی واحد پردازشگر مرکزی به دو

واحد مجزای BIU و EU، امکان ایجاد هم پوشانی چرخه های واکشی و اجرا را به وجود می آورد. برای مشاهده این مسئله،

اتفاقاتی که بعد از شروع به کار واحد پردازشگر مرکزی صورت می گیرد را به ترتیب بررسی می کنیم. واحد BIU محتوای ثبات

IP را بر خطوط گذرگاه آدرس قرار میدهد و با این کار محتوای مکانی از حافظه که آدرس آن در IP قرار دارد را میخواند. این

داده همان دستورالعملی است که باید اجرا شود. ثبّات IP یک واحد افزایش می یابد تا برای واکشی دستورالعمل بعدی آماده

شود درون واحد BIU، دستورالعمل خوانده شده از حافظه، در صف دستورالعمل قرار می گیرد. این صف یک واحد سخت افزاری

FIFO است که به یک خط لوله شباهت دارد. با فرض اینکه صف از ابتدا خالی باشد، واحد EU بلافاصله این دستور را از صف

برمیدارد و اجرا می کند.

 

 

 

ثبات های پنتیوم

نخستین پردازنده از خانواده x86 پردازنده ۱۶ بیتی ۸۰۸۶ است که قابلیت آدرسدهی یک مگابایت حافظه را دارد. بیست خط آدرس امکان دستیابی پردازنده به یک مگابایت حافظه را فراهم مینمود. ظهور پردازده های پیشرفته پس از ۸۰۸۶ با پردازنده ۸۰۲۸۶ آغاز شد که همه پردازنده ها از آن زمان به بعد خطوط آدرس بیشتری داشتند. پردازنده های ۸۰۳۸۶، ۸۰۴۸۶ و پنتیوم همگی ۳۲ خط آدرس دهی دارند که توانای ی دسترسی به ۴ گیگابایت حافظه را به پردازنده میدهد. این فضای نسبتا بزرگ آدرس دهی، پردازنده های را قادر ساخت تا بسیاری از تکنیکهای سیستم عاملها مثلا “چند وظیفه ای بودن” را که پیاده سازی آن در کامپیوترهای ۸۰۸۶ مشکل و یا حتى غیرم مکن بود را اجرا نمایند. پس از آشنایی با ثباتهای 808۸/۸۰۸۶ ، شاید جالب توجه باشد که مختصر نگاهی به ثباتهای ریز پردازنده پنتیوم داشته باشیم و شباهتها و تفاوتهای آنها را با ثباتهای  808۸/۸۰۸۶ ، ملاحظه نمائیم. ریز پردازنده پنتیوم دارای ۴ ثبات داده ۳۲بیتی با نامهای EA   ECX، ،EBXو EDX می باشد. شانزده بیت پایین رتبه هریک از این ثباتها CX،،BX ،AX  نام دارد که هرکدام از آنها میتوانند به دو بخش هشت بیتی شکسته شوند.  ثباتهای پردازنده پنتیوم را نمایش میدهد؛ همانطور که دیده میشود علاوه بر ثباتهای داده ثباتهای دیگری نظیر EBP،،ESP ،EDI ،ESI  نیز به چشم میخورد، هیچ کدام از این پنج ثبات ۳۲ بیتی قادر به شکسته شدن به بخشهای کوچکتر نمیباشد. هفت ثبّات ،ESI EDI، ،EDX ،ECX ،EBX ،EAXو E BP مشهور به ثباتهای همه منظوره هستند. حرف E در ابتدای نام ثباتهای پنتیوم به معنای Extended یا گسترش یافته است، این در حقیقت نشان دهنده این موضوع است که ثباتهای مذکور نسخه گسترش یافته ثباتهای ۱۶بیتی BX ،AX و. . . میباشند.

ثباتهای سگمنت

درون فضای حافظه ۱ مگابایتی 8086/88، چهار بلوک ۶۴ کیلوبایتی به اسامی سگمنتهای کد، داده، پشته و اضافی تعریف شدهاند. واحد پردازشگر مرکزی هرکدام از این بلوکها را به گونهای متفاوت به کار میبرد. سگمنت کد دستورات برنامه را در خود نگه میدارد. سگمنت داده، داده های برنامه را در خود نگه میدارد. سگمنت اضافی در واقع یک سگمنت داده اضافی است که اغلب برای داده های اشتراکی به کار میرود. سگمنت پشته برای ذخیره کردن آدرسهای بازگشت از وقفه ها و زیر روالها به کار میرود. چهار ثبات سگمنت به نامهای ES ،DS ،CS و SSبرای اشاره کردن به مکان صفر هرکدام از این بلوکها به کار میروند. چون این ثباتها 16بیتی هستند ولی آدرسهای حافظه ۲۰ بیتی، واحد BIU چهار بیت 0 به بیتهای کم ارزش این ثبات ضمیمه می کند که این کار مقدار عد دی این ثبات را در ۱۶ ضرب می کند.  ثبات CS حاوی B3FFH است ولی معادل آدرس B3FF0H در نظر گرفته میشود. نکته مهم این است که آدرس شروع هر سگمنت اختیاری نیست و باید عد دی بخش پذیر بر ۱۶ باشد؛ یعنی آنکه چهار بیت کم ارزش آدرس باید 0 باشند. لازم نیست که تمام چهار سگمنت به صورت جدا از هم تعریف شوند.

 

حالتهای آدرس دهی :

همان گونه که در فصل قبل عنوان شد، دستورالعملهای رایانهای از یک کد عملیاتی به همراه یک یا دو عملوند تشکیل شدهاند. کد عملیاتی، عملیاتی که باید اجرا شود را تعی ین میکند و عملوندها، مبداء و مقصد داده های ی هستند که این عملیات بر روی آنها اجرا میشود. عملوندها میتوان ند یکی از ثباتهای واحد پردازشگر مرکزی، یکی از مکانهای حافظه در یکی از سگمنتها یا یک درگاه I/O باشند. روشهای متفاوتی که یک ریز پردازنده آدرس این عملوندها را تعیین می کند، حالتهای یا روشهای آدرس دهی نامیده میشوند. نه روش متفاوت آدرس دهی که برای ۸۰۸۶/۸8 موجود است را نشان میدهد. لازم به ذکر است که در این جدول فرض شده است که MEMBDS به مکان 0 0 10 درون سگمنت داده اشاره می کند. قرار دادن علامت ] برای آن اختیاری است. برای تمیز دادن بایت از کلمه BYTE PTR و WORD PTR استفاده شده است. مقدار جابه جایی که در بعضی دستورات استفاده شده است به عنوان یک عد د دودوی ی مکمل دو، به ثبات پایه یا اشاره گر اضافه میشود.

 

حالت آدرس دهی بلافصل

دستوراتی که حالت ادرس دهی بلافصل را بکار میگیرند داده مورد استفاده خودرا به عنوان بخشی از خود دستورالعمل دریافت می کنند. این جزء خود دستورالعمل است( به جای ذخیره شدن در سگمنت داده، در سگمنت کد قرار می گیرد.این نکته نیز مهم است که در کدشیء این دستور، ابتدا هشت بیت کم ارزش و سپس هشت بیت پرارزش داده قرار گرفتهاند. این مسئله در مواردی که از اسمبلر استفاده نمیشود و عملیات اسمبلی دستی به کار گرفته میشود، بسیار حائز اهمیت است. حالت آدرس دهی بلافصل بیشتر برای مقداردهی اولیه به ثباتها و خانه های حافظه به کار میرود. دستورات بعدی بر روی این داده ها کار می کنند. یک محدودیت موجود آن است که ثباتهای سگمنت را نمی توان بدین طریق مقداردهی کرد. در بخش بعد چگونگی برخورد با این مشکل را بر رسی می کنیم.

حالت آدرس دهی ثباتی

برخی از دستورات مستقیما بر روی مقادیر داده های موجود در ثباتهای واحد پردازشگر مرکزی عمل نموده و یا داده ها را بین ثباتها جابه جا می کنند. دستور MOV”، DX, “CXیک کپی  از محتوای ثبات CX را به DX منتقل می کند. INC BH ، یک واحد به محتوای ثبات BH میافزاید. در این دستورات، نیازی به رجوع به حافظه نیست. حالت آدرس دهی ثبات میتواند با حالت بلافصل ترکیب شود و یک مقدار عد دی را در ثبات سگمنت بارگذاری کند. مثلا

MOV AX,8010H

MOV DS, AX

حالت آدرس دهی مستقیم

تمام حالتهای دیگر آدرس دهی که در جدول ۳-۵ لیست شده اند، برای حداقل یکی از عملوندهای دستور، نیاز به دسترسی به حافظه دارند. در حالت ادرس دهی مستقیم ادرس مکان حافظه، مستقیما به عنوان بخشی از دستورالعمل قرار می گیرد. به هرحال، همان طور که در بخشهای قبل بیان شد، در اغلب موارد برچسبهای ی به این آدرسها داده میشود تا برنامه نویس مستقیما با مقادیر عددی درگیر نباشد. دستور MOV AH, MEMBDS چنین تفسیری دارد: “محتوای مکان حافظه MEMBDS را در ثبات AH ذخیره کن”.

حالت آدرس دهی غیرمستقیم

حالت آدرس دهی مستقیم برای دسترسی های غیرمتداول به حافظه مناسب است؛ با این وجود،و زمانی که یک مکان حافظه بارها نوشته یا خوانده میشود، استفاده از این روش راندمان برنامه راکاهش میدهد زیرا یک آدرس دو بایتی باید مرتبا واکشی شود. حالت آدرسدهی غیر مستقیم این مشکل را حل می کند. در این روش آدرس حافظه در یک ثبات اشاره گر یا نمایه  قرار می گیرد. به علاوه می توان یک جابه جایی مکمل دو را به اشاره گر یا نمایه اضافه کرد تا مکان مورد اشاره را جابه جا کرد. به طور کلی می توان جابه جایی را به یک ثبات پایه اضافه کرد و نتیجه را به یک ثبات شاخص اضافه نمود. این یک حالت تجمعی است که حالت “آدرس پایه و شاخص دار به همراه جابه جایی نامیده میشود. در این میان حالتهای کاراتری وجود دارند که تنها یکی از ثباتهای شاخص یا پایه را با یا بدون جابه جای ی به کار می گیرند. آدرس به دست آمده را معمولا آدرس مؤثر مینامند.

 

دستورات انتقال داده:

اگر تمامی کدهای عملیاتی با حالتهای مختلف ادرس دهی ترکیب شوند بیش از 3000 هزار دستورالعمل متفاوت بوجود میاید.پس در این صورت بخش یک بررسی کلی روی انواع دستورات انجام خواهد گرفت.دستورالعمل های انتقال داده که در این بخش بررسی میشوند،امکان برقراری ارتباط با دنیای خارج را برای واحد پردازشگرمرکزی فراهم میاورد.

 

دستور MOV

دستورات انتقال داده خاص

دستورات رشته ای

دستورات منطقی

دستورات جابجایی و چرخش

دستورات جمع و تفریق

دستورات ضرب و تقسیم

دستورات تنظیمات حسابی

دستورات پرش غیر شرطی

دستورات پرش شرطی

دستورات حلقه

دستورات PUSH , PUP

دستورات CALL, RETURN

دستورات کنترل پردازنده

 

 

در زیر چند تا از این دستورات را بررسی میکنیم.

دستور MOV

جدول ۳-۷ لیستی از انواع دستورات ممکن انتقال داده را با استفاده از دستور MOV نشان میدهد. عملوندهای این دستور همواره در قالب “مبداء، مقصد MOV” قرار دارند. اگرچه ثباتهای ایندکس، اشاره گر و سگمنت فقط به صورت کلمهای قابل دستیابی هستند، داده انتقالی میتواند یک بایت یا یک کلمه باشد. در این دستور نمیتوان مبداء و مقصد را هر دو از مکانهای حافظه انتخاب کرد. این گروه از دستورالعملها، پرچمهای وضعیت را تغی یر نمیدهند. برای دستور MOV ترکیبهای بیشتری از آنچه در اینجا ارائه شده است، ممکن میباشد. مثلا

MOV AX, [BX]

MOV AX, [BX+]4

MOV AX, [SI]

MOV AX, [SI-]6

MOV AX, [BP+SI]

MOV AX, [BР+SI+3EH]3

تمام دستورات فوق، دستورات انتقال از حافظه به ثبات هستند که در قالبهای متنوعی از حالتهای آدرس دهی غیر مستقیم ارائه شده اند.

مثال ۳-۶- فرض کنید مکانی از حافظه به نام COUNT به طول یک بایت، تعداد دفعاتی که عملیات خاصی انجام میشود را در خود نگه میدارد. برنامهای بنویسید که CH را با مقدار 00H CL را با محتوای COUNT پر کند.

حل

 

 

MOV CH, 00

مقدار 0 را به ثبات CH منتقل کن

MOV CL, COUNT

محتوای COUNT را به ثبات CL منتقل کن.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

دستورات جابجایی و چرخش

چندین دستور جابجایی و چرخش وجود دارد که عملیات انجام شونده در اجرای انواع دستورات جابجایی و چرخش را نشان می دهد داده ای که چرخش می یابد می تواند یکی از مکان های حافظه یا یک ثبات ۸  یا 16 بیتی واحد پردازشگر مرکزی باشد. تفاوت اصلی دستور جابجایی و چرخش در این است که بیت های جابجایی داده شده از انتهای ثبات بیرون میفتند در حالی که بیت های چرخش یافته از دیگر ثبات مجددا وارد ثبات میشود دستورات جابجایی در دو گروه ریاضی و منطقی قرار می گیرند.

دستورات جابجایی و چرخش را میتوان تا 255 بار تکرار کرد. این کار با مقداردهی ثباتCL به اندازه تعداد دفعات مطلوب انجام میشود مثلا برای انجام 5 بار عملیات جابجایی بسمت چپ در ثبات DX از میان پرچم نقلی دستورات زیر بکار میرود:

MOV CL ,5

RCL DX, CL

طراحی واحد پردازشگر مرکزی

مروری بر ساختار سیستم های 3 گذرگاهی:

ریزپردازنده دستگاه ساده ای است که دنباله زیر را اجرا میکند:

1-دستورالعمل بعدی را بترتیب از حافظه واکشی میکند.

2-دستورالعمل را اجرا میکند.

3-به گام 1 برمیگردد.

چرخه واکشی در واقع یک عمل خواندن از حافظه است که طی ان یک بایت یا یک کلمه از حافظه به ثبات دستورالعمل درون واحد پردازشگرمرکزی منتقل میشود.ممکن است اجرای این دستور همانند دستور MOV BX,[MEMWDS] نیازمند خواندن مجد د بایت یا کلمه از حافظه باشد. موارد دیگری که در طول فاز اجرای دستور محتمل هستند، عبارتند از: نوشتن در حافظه   MOV [MEMWDS],BX  خواندن از (IN AL,DPORT)I/O نوشتن در OUT( DPORT, AL) I/Oو یا یک فعالیت داخلی واحد پردازشگر مرکزی INC AX بنابراین، پنج عملیات منحصر به فرد برای چرخه های گذرگاه امکان پذیر هستند.

۱- خواندن از حافظه

۲- نوشتن در حافظه

– خواندن از I/O

۴- نوشتن در O/I

۵- گذرگاه بیکار )عملیات داخل واحد پردازشگر مرکزی انجام میشود که نیازی به دسترسی

به گذرگاه ندارد(

سه مجموعه سیم که هرکدام یک گذرگاه نامیده میشود برای انتقال داده بین واحد پردازشگر مرکزی و واحدهای حافظه یا O/I اختصاص داده شدهاند. در این بخش، به بررسی چگونگی زمان بندی بین گذرگاه های آدرس، داده و کنترل برای هریک از انواع چرخه های گذرگاه می پردازیم.

زمان بندی چرخه گذرگاه

شکل ۴-۱ زمان بندی چرخه گذرگاه را برای چهار نوع چرخه گذرگاه نشان میدهد. هر چرخه با خارج کردن آدرس حافظه یا درگاه I/O شروع میشود. پالس ساعتی را که در طول آن چنين عملیاتی انجام میشود، چرخه حالت T1 می گوییم. برای ۸۰۸۶ این آدرس ممکن است ۲۰ بیت آدرس حافظه یا ۱۶ بیت آدرس غیرمستقیم درگاه با استفاده از ثبات DX  و یا ۸ بیت آدرس  مستقیم درگاه باشد.

در شکل ۴-۱ تمام ۲۰ خط آدرس ترسیم نشده اند؛ در عوض چنان نشان داده شده است محتوای آدرس در حین چرخه T1 به مقدار جدیدی تغیيیر می یابد. خطوط موازی نشان میدهندکه بعضی از خطوط آدرس م مکن است در سطح بالا و بعضی دیگر در سطح پای ین باشند؛ با این وجود، مقدار دقیق آدرس در بر رسی فعلی اهمیتی ندارد. با بررسی خطوط آدرس به تنهایی نمیتوان دریافت که آدرس جاری مربوط به حافظه یا i/O است و حتی امکان تعي ين جهت ارسال داده وجود ندارد. به همین دلیل، استفاده از سیگنالهای  کنترل اجتناب گردد.این گذرگاه شامل 4 سیگنال است که در سطح پایین فعال میشوند:

1-MEMR

MEMW-2

IOR-3

IOW-4

 

 

3-چرخه T3:

ریزپردازنده خطوط گذرگاه داده را برای وارد کردن داده اماده میکند ،با این وجود کار دیگری انجام نمیدهد.

4- چرخه T4

اکنون ریزپردازنده انتظار دارد داده مطلوب بر خطوط داده قرار داشته باشد.لذا محتوی خطوط داده را لچ میکند و سیگنال کنترلی خواندن از حافظه را رها میکند این کار بمعنای پایان چرخه است.

 

طراحی سخت افزار پایه برای ریزپردازنده ۸۰۸۶

در این بخش، چگونگی توصیف پایه های ۸۰۸۶ را بر رسی می کنیم. این اطلاعات امکان ترسیم دیاگرام زمان بندی را برای چهار چرخه گذرگاه فعال فراهم میآورند. دانش کاملی از زمان بندیهای ۸۰۸۶ برای اتصال آن به حافظه و دستگاه های جانبی ضروری است.

توصیف پایه های ۸۰۸۶

یکی از چالشهای اساسی که مهندسین طراحی ۸۰۸۶ با آن درگیر بودند، فراهم آوردن امکان استفاده از تمامی قابلیتهای پردازنده ۸۰۸۶ در قالب بسته بندی استاندارد ۴۰ پایهای بوده است. ریز پردازنده ۸۰۸۶ دارای ۲۰ خط آدرس، ۱۶ خط داده، سه پایه برای تغذیه، ۱۷ پایه مختص سیگنالهای کنترلی و دیگر عملکردها میباشد. مشخصا این تعداد پایه را نمیتوان در بسته بندی40 پایه پیاده سازی کرد. ایدهای که در شرکت Intel به کار گرفته شد، تسهیم زمانی بود. در این تکنیک طراحی، یک پایه از مدار بیش از یک کاربرد دارد. مثلا پایه های داده ۸۰۸۶ (ینام AD0-AD15) در حین پالس ساعت T1 خطوط آدرس هستند، اما در پالسهای T2 تا T4 خطوط داده هستند. مدار تسهیم زدای ی ویژه ای برای استخراج داده و آدرس به طورمجزا لازم است. با استفاده از تکنیک تسهیم زمانی، پایه های تراشه به دسته های زیر تقسیم بندی میشوند که در شکل ۴-۲ آورده شده است:

۱- ۱۶ پایه آدرس و داده

۲- ۴ پایه آدرس

۳- ۳ پایه برای وصل تغذیه

۴- ۱۷ پایه کنترل و زمان بندی

دیگر ویژگی جالب توجه ۸۰۸۶، توانای ی کارکرد در دو حالت کاری کمینه و بیشینه است. حالت کمینه برای یک سیستم ساده تک پردازندهای بر روی یک مدار چاپی در نظر گرفته شده است؛ این در حالی است که حالت بیشینه برای یک سیستم پیچیده تر که بردهای جداگانه ای برای واحد حافظه و I/O دارد مطلوب است. این حالت پردازنده های کمکی همچون ۸۰۸۷ (NDP) و ۸۰۸۹ (IOP)را پشتیبانی می کند. در ادامهی بحث، توصیف پایه ها را در حالت کمینه بر رسی می کنیم و عملکرد حالت بیشینه در بخشهای بعد از آن بررسی میشود.

– گذرگاه داده AD150-AD

این ۱۶ پایه، گذرگاه داده دو جهته واحد پردازشگر مرکزی را تشکیل میدهند. این خطوط تنها در بازه زمانی چرخه های حالت T2 تا T4 معتبر هستند. این خطوط در زمان چرخه حالت t1 1، ۱۶ بیت کم ارزش آدرس حافظه یا درگاه را نگه میدارند.

– گذرگاه آدرس A16/S3 -A19/S6 , AD0-AD15

این خطوط مربوط به ۲۰ بیت أدرس واحد پردازشگر مرکزی هستند و به پردازنده اجازه میدهند ۱۰۴۸۵۷۶مکان حافظه دسترسی داشته باشد. این خطوط خروجی تنها در زمان چرخه حالت T1معتبر بوده و در زمان چرخه های T2 تا T4 به خطوط داده و وضعیت سوئیچ می کند.

 

تولید سیگنال های بازنشانی، سیگنال ساعت و Ready برای ریزپردازنده 8086

ریز پردازنده ۸۰۸۶ به سیگنال ساعتی نیاز دارد که زمان صعود و سقوط کمی (کمتر از ۱۰ نانوثانیه( داشته باشد. همچنین، سطح منطقی 0 برای أن باید بین5/0 تا 6/0 ولت و سطح منطقی برای آن باید بین ۳/۹ تا ۵ ولت و چرخه کار آن نیز 3۳٪ باشد. سیگنال باز نشانی سیستم باید با سیگنال ساعت همگام بوده و حداقل برای مدت چهار پالس ساعت باقی بماند. به خاطر شرام برای این سیگنال ذکر گردید، شرکت Intel تراشه مولد ساعت ۸۲۸۴A را در دسترس قرار داده ايت که تمام شرایط عنوان شده برای سیگنال ساعت و سیگنال بازنشانی را برآورده می کند و همچنين میتواند برای همگام کردن درخواستهای انتظار از حافظه های کند نیز به کار رود. در این بخش چگونگی استفاده از ۸۲۸۴A برای تولید سیگنال ساعت سیستم در سیستم ریز پردازندهای مبتنی بر8086 و نیز چگونگی پیاده سازی عملیات بازنشانی را بررسی خواهیم کرد.

سیگنال ساعت ۸۰۸۶

تمام فعالیتهای ۸۰۸۶ به صورت ترتیبی و همگام با سیگنال ساعت ورودی سیستم هستند. در حین چرخه حالت T1، آدرس حافظه یاO/I خارج میشود و در حین چرخه حالت T2، سیگنالهای کنترلی فعال میشوند. سپس، در چرخه حالت T3 به حافظه یا I/O زمان داده میشود تا فرصت پاسخ گوی ی داشته باشند و سرانجام در چرخه حالت T4 داده وارد یا خارج میشود. بدون سیگنال ساعت برای همزمان کردن این اتفاقات، سیستم دچار هرج و مرج میشود. دستگاه های حافظه i/o به زمانهای setup و hold نیاز دارند که با استفاده از چرخه گذرگاه چهار پالسی مطرح شده، فراهم شوند. سیگنال ساعت برای هدف دیگری نیز به کار میرود. درون ریز پردازنده از گیتهای منطفی پویایی استفاده شده است که باید به صورت متناوب تازه سازی شوند و در غیر این صورت  داده خود را از دست خواهند داد. سیگنال ساعت این عمل را انجام خواهد داد. لذا سیگنال ساعت هرگز نباید متوقف شود و به همین دلیل، ۸۰۸۶ علاوه بر محدودیت حداکثر فرکانس کاری، کار مشخصه حداقل فرکانس کاری MHz2 است. شکل ۴-۶ بخشی از مشخصات داخلی ۸۲۸۴A را نشان میدهد که بر بخش مولد ساعت أن تأکید شده است. منبع سیگنال ساعت میتواند یک نوسان ساز داخلی کریستالی )0 = F/C( و یا یک فرکانس ورودی خارجی )1= F/C( باشد که به پایه EFI اعمال میشود. برای استفاده از نوسان ساز داخلی تراشه ۸۲۸۴A کافی است که یک عدد کریستال با فرکانس سه برابر فرکانس مورد نیاز برای ریز پردازنده بین پایه های X1,X2 تراشه 8284A متصول و هر یک از این دو پایه توسط یک مقاومت510 اهمی به زمین وصل شوند.

 

 

تسهیم زدایی گذرگاه آدرس و داده

از بین مدارهای مختلف حافظه و O/I موجود، تعداد بسیار کمی از آنها با خطوط آدرس و داده تسهیم شده ۸۰۸۶ سازگار هستند. اکثر آنها به خطوط مجزای ی برای آدرس و داده نیاز دارند فرآیند تشکیل دادن خطوط گذرگاه داده و آدرس به صورت مجزا از این گذرگاه داده ادرس تسهیم شکل ۴-۱ چگونگی تسهیم زدای ی AD0 را به دو خط مجزای آدرس A0 و داده D0 نشان شده را تسهیم زدایی گویند. زمانی که ALE در سطح بالا قرار می گیرد، خروجی Q از لچ قرار داده شده، AD0  را دنبال می کند. لبه پایین رونده ALE باعث میشود که لچ آخرین مقدار خود را نگه دارد و لذا A0 در حین پالسهای T2 تا T4 همچنان مقدار قبلی خود را نگه میدارد. در نظر داشته باشید که D0 در حقیقت تسهیم زدایی نمیشود و لذا در حین پالس T1 نیزمقدار آدرس را در خود نگه میدارد؛ با این وجود، حافظه و دستگاه های I/O تا رسیدن به پالسT 2، از گذرگاه داده استفاده نمی کنند و لذا محتوای D0 تا قبل از رسیدن به پالس ساعت دوم اهمیتی ندارد. از آنجا که تمام ۲۰ خط آدرس ۸۰۸۶ با اطلاعات دیگری تسهیم میشوند، بهتر است برای تسهیم زدایی آدرس، از تراشهای که تعداد زیادی لچ را در خود جای داده است، استفاده کنیم چنين تراشهای را شرکت اینتل تولید کرده است لچ هشت تایی ۸۲۸۲/۸۲۸۳ نامیده میشود. هشت لچ همراه با یک ورودی فعال ساز مشترک که با ALE سازگار است، در تراشه قرار داده شدهاند. برخلاف

۸۲۸۲، تراشه ۸۲۸۳ ورودی اش را معکوس می کند.علاوه بر عملیات تسهیم زدایی، این تراشه همچنین خطوط آدرس را بافر میکند و لذا توانایی جریان دهی خروجی را بالا میبرد. به عنوان مثال، سطح پایین خروجی با ولتاژ حداکثر ۴۵/0 ولت و جریان ورودی حداکثر ۳۲ میلی آمپر مشخص شده است. سطح بالا نیز با ولتاژ حداقل 4/2 ولت و حداکثر جریان خروجی ۵ میلی آمپر تعیین گردیده است. به کارگیری بافرهای تسهیم زدای ۸۲۸۲/۸۲۸۳، تأخیری در مدار به وجود میآورد که سبب میشود زمان موجود برای حافظه یا I/O جهت نوشتن یا خواندن داده کاهش یابد. میزان تاخیر به میزان خازنی بودن بار بستگی دارد. مثلا اگر ۲۰ گیت TTL را راه اندازی کنیم، میزان خازن بار تقریبا ۱۰۰ پیکوفاراد و تأخير انتشار درون latch، حداکثر برابر با ۳۲ نانوثانیه است. افزایش تعداد گیتها به اندازه ۱۲۵ گیت TTL، میزان بار خازنی را به بیش از ۰ ۶۰ پیکوفاراد افزایش میدهد و

تأخیر انتشار آن تقریبا به ۴۰ نانوثانیه خواهد رسید. لازم به ذکر است که تراشه ۸۲۸۳ نسبت به ۸۲۸۲یک مرحله معکوس کردن کمتر دارد و میتواند سریعتر سوئیچ کند. برای شرایط ذکر شده،و ۳۰ نانوثانیه خواهند بود.

 

 

طراحی سیستمهای مبتنی بر چند ریز پردازنده ۸۰۸۶

با طراحی یک سیستم مبتنی بر ریز پردازنده که دارای چندین ریز پردازنده است، توانایی های محاسباتی سیستم به شدت افزایش مییابد. این افزایش توانایی ها به دلیل ایجاد امکان پردازش با توزيع زمان  بين پردازنده هاست که به سیستم افزوده میشود. بدین ترتیب میتوان یک سیستم مبتنی بر ریزپردازنده را به چندین سیستم کوچکتر تقسیم بندی کرد که هرکدام توسط پردازنده خودش کنترل میشود. چنین سیستم مبتنی بر ریز پردازنده، مانند سیستمی است که در آن، یک واحد پردازشگر مرکزی فشرده شدن یا رهاشدن سوئیچهای صفحه کلید را بر رسی می کند؛ دیگری عملیات خواندن و نوشتن داده از دیسک سخت را برعهده دارد؛ یک پردازنده ویژه برای عملیات ریاضی در نظر گرفته شده است که عملیات زمانبر محاسبات مثلثاتی و محاسبات علمی را انجام میدهد و یک واحد پردازشگر مرکزی همه منظوره نیز برای هماهنگ کردن عملیات زیر سیستمهای مختلف در نظر گرفته شده است.

زمانی که “قابلیت اطمینان بالا” و “تحمل بروز خطا” ملاحظات بحرانی در یک سیستم هستند، ممکن است چندین واحد پردازشگر مرکزی برای انجام یک وظیفه در نظر گرفته شوند. در هر بخش، یک پردازنده خروجی سیستم حاوی یک ریز پردازنده را بر رسی می کند؛ اگر خروجی یک بخش خاص با بقیه برابر نباشد، آن بخش “معيوب” تشخیص داده میشود و اقدام لازم برای مقابله با مشکل پیش آمده صورت می گیرد. فناوری VLSI تمامی این موارد را امکان پذیر ساخته است. ساختن یک سیستم با پنج ریز پردازنده ارزان تر از ساختن یک سیستم تک ریز پردازندهای با همان توانایی است. دو مشکل اساسی در یک طراحی چند ریزپردازنده ای، حاکمیت و داوری بر چرخه ها و استفاده چند چرخه ای هستند. مشکل اول به این مربوط میشود که دو واحد پردازشگر مرکزی نمیتوانند به طور همزمان به یک مکان حافظه یا یک دستگاه I/O دسترسی داشته باشند؛ در واقع، به نوعی باید در مورد درخواستهای مختلف داوری صورت گیرد.

به محض اینکه یک واحد پردازشگر مرکزی کنترل یکی از منابع سیستم را در دست گرفت، ممکن است به چندین چرخه برای خواندن یا نوشتن داده هایش زمان نیاز داشته باشد. در حين انجام این کار، واحدهای پردازشگر مرکزی دیگر نباید این داده ها را تغییر داده یا حتی به آنها داشته باشند. همچنین، باید وسیلهای باشد که به دیگر پردازنده ها اعلام کند که این منبع از سیستم مشغول است داده های آن برای استفاده در دسترس نیست. ۸۰۸۶  چنان طراحی شده است که طراحی سیستم های مبتنی بر چند ریزپردازنده را اسان میکند.

3 روشی که برای این منظور بکار برد عبارت اند از:

حالت تک گذرگاه به اشتراک گذاشته شده

در حالت تک گذرگاه به اشتراک گذاشته شده، دو یا چند واحد پردازشگر مرکزی تمام منابع سیستم اعم از بافرهای گذرگاه، latchها و کنترل کن نده گذرگاه را بین خود به اشتراک می گذارند بهترین مثال، یک تراشه ۸۰۸۶ است که با یک پردازنده داده های عددی ۸۰۸۷ پشتیبانی میشود. در این حالت، مدار واسط دو پردازنده به طور موازی سیم بندی شده اند و هر دو باهم دستورالعملها را از حافظه واکشی میکنند.

NDP منتظر دستورات ویژه ای است که با پیشوند ESC شروع میشوند. وقتی که چنین دستوری اتفاق میافتد، ۸۰۸۶ آدرس مؤثر را محاسبه مي کند، اما داده انتخاب شده را ذخیره نمی کند؛ در عوض یک عملیات NOP انجام میدهد. ۸۰۸۷داده را برمیدارد و شروع به انجام محاسبات میکند. ۸۰۸۶ اکنون آزاد است که داده را از صف دستورالعمل واکشی کرده و به اجرای آنها بپردازد. بنابراین واحد پردازشگر مرکزی و NDP به نوبت به اجرای دستورات می پردازند.زمانی که لازم است نتایج دستورات در حافظه ذخیره شوند، ۸۰۸۷ از واحد پردازشگر مرکزی پالسی به خط RQ/GT اعمال میکند تا کنترل گذرگاه را در اختیار داشته باشد. پالس برگشت از طرف واحد پردازشگر مرکزی اعمال میشود تا اعلام کند که گذرگاه ها را رها کرده و در اختیار NDP  گذاشته است. اکنون یک یا چند عملیات نوشتن انجام میشود تا NDP داده های نتیجه را در حافظه ذخیره کند. پالس سومی از طرف NDP بر RO/GT به معنای آن است که NDP کنترل گذرگاه ها را برای استفاده واحد پردازشگر مرکزی رها خواهد کرد. بنابراین، خط Gl/RQ همانند یک پروتکل فیزیکی میماند که از بروز تعارض در به کارگیری گذرگاه، بین واحد پردازسر مرکزی و NDP جلوگیری میکند. زمانی که ۸۰۸۷ به اجرای دستورات میپردازد، خروجی BUSY آن یک میشود. این سیگنال که به ورودی TEST از ۸۰۸۶ متصل است، به واحد پرداز شگر مرکزی اطلاع میدهد که نتیجه و هنوز معتبر نیست. دستورالعملهایی که به نتیجه این محاسبه نیاز دارند، باید  با بیشوند WAIT نوشته شوند؛ این کار باعث میشود که واحد پردازشگر مرکزی در یک وضعیت انتظار باقی بماند تا زمانی که ورودی TEST در سطح پای ین قرار گیرد. با این وجود، به اشتراک گذاشتن منابع با معایبی نیز همراه است. زمانی که نتیجه NDP مورد نیاز است، ۸۰۸۶ باید فعالیتهایش را متوقف کند و منتظر نتیجه باشد. همچنین، واحد پردازشگر مرکزی در مواقعی که NDP در حال خواندن انوشتن داده از ادر حافظه است، باید فعالیتهایش را به تعویق بیاندازد. بنابراین، بعضی از مزایای پردازش با توزیع زمان بین پردازنده ها از دست خواهد رفت.

 حالت گذرگاه ورودی خروجی

در حالت گذرگاه ورودی/ خروجی، پردازشگر خاصی برای کنترل کردن عملیات I/O برای پردازشگر میزبان در نظر گرفته میشود. شکل ۴-۱۵ مثالی از به کارگیری ۸۰۸۹  را نشان میدهد. در این مثال، دو مجموعه گذرگاه به کار گرفته شده اند.

گذرگاه های I/O محلی تنها در دسترس ۸۰۸۹ هستند. ۸۰۸۶ میزبان، گذرگاه سیستم را به کار میبرد و دسترسی به RAM و ROM را فراهم میآورد. همچنین، این گذرگاه یک مسیر ارتباطی متداول را بین دو پردازنده فراهم میآورد.

در این مدار، IOP برای حالت کنترل از دور برنامه ریزی شده است و دستورالعملها را برای وظایف برنامه ریزی شده، از یک حافظه محلی واکشی می کند. وسایل I/O نیز بصورت نگاشت در حافظه به این فضا نگاشت شده اند. در عملکرد معمول سیستم، واحد پردازشگر مرکزی “پیامها” را در مورد وظایفی که باید انجام شود، در حافظه سیستم ذخیره می کند. IOP برای دریافت این پیامها به حافظه سیستم دسترسی مییابد اما سپس وظایف را به صورت مستقل از میزبان اجرا می کند. این کار، بازدهی ورودی/خروجی سیستم را حداکثر می کند، چرا که هر دو پردازنده میتوان ند بصورت موازی به کار مشغول باشند (به جز در مواقعی که پیامها از طریق حافظه سیستم بین دو پردازنده منتقل میشوند) توجه داشته باشید که هر پردازنده دارای یک کنترل کننده گذرگاه ۸ ۸۲۸ است. در طرف ۸۰۸۹ این کنترل کن نده گذرگاه در حالت گذرگاه I/O کار میکند. در این حالت، هر دستورالعمل I/O سیگنال PDEN را فعال میکند ( (Peripheral. Data Enableدر عوض، این سیگنال نیز برای فعال کردن فرستنده هاگیرنده های بین IOP و گذرگاه محلی به کار میرود.

وقتی که یک چرخه خواندن یا نوشتن در حافظه ۸۰۸۹ تشخیص داده شد به تراشه حاکم بر گذرگاه ها، یعنی تراشه ۸۲۸۹B، اطلاع داده میشود و این تراشه با قرار دادن سیگنال تقاضای گذرگاه مشترک CBRQ در سطح پایین، به آن پاسخ میدهد. سپس، تأخیری   اتفاق می افتد تا ورودی اولویت گذرگاه  BPRN از طریق8289A در سطح پایین قرار گیرد.

 

حالت گذرگاه اختصاصی

در این حالت  چندین واحد پردازشگر مرکزی همه منظوره را می توان همراه با یکدیگر به کار برد که هر کدام از انها گذرگاه اختصاصی ویژه خود را دارند. هشت پردازنده ۸۰۸۶ به یک گذرگاه سیستم چندپردازنده ای مشترک متصل هستند. هر پردازنده میتواند به گذرگاه اختصاصی یا گذرگاه اصلی سیستم دسترسی داشته باشد. با این روش منابع پرهزینه سیستم مثل دیسکهای مغناطیسی با هزینه بالا را میتوان بین پردازنده ها مشترک کرد.

توجه داشته باشید که هر پردازنده ۸۰۸۶ با دو تراشه ی ۸ ۸۲۸ پشتیبانی میشود. یکی از آنها گذرگاه خصوصی و دیگری گذرگاه اصلی سیستم را راه اندازی می کند. یک کدگشای آدرس برای تعریف کردن محدودهای از آدرس به عنوان آدرسهای گذرگاه اصلی سیستم، به کار گرفته شده است. با دسترسی به این گونه آدرس، خروجی کدگشا در سطح بالا قرارگرفته،گذرگاه خصوصی ۸ ۸۲۸ غیرفعال شده و گذرگاه اصلی ۸۲۸۸ سیستم فعال میشود (هر دو از طريق ورودیهای CEN). با این کار،تمام فرامین خروجی بر روی گذرگاه اختصاصی غیرفعال میشوند.

همچنین، رمزگشای آدرس ورودی SYSB/RESB از تراشه ۸۲۸۹ را فعال و درخواست استفاده از گذرگاه سیستم را مطرح می کند. این تراشه با قرار دادن BREQ در سطح پای ین به آن پاسح میدهد. این سیگنال به یک مدار تعی ین کن نده اولویت فرستاده میشود. تراشه کدگشای 74LS148 بالاترین اولویت را به صورت یک کد سه بیتی به کدگذار 74LS138 اعمال میکند. هر کدام از هشت خروجی این تراشه، یک ورودی BPRN از ۸ تراشه ۸۲۸۹ رافعال می کنند.

برنامه نویسی اسمبلی

اسمبلر NASM

اسمبلر بسیار قدرتمند و متن باز NASM را میتوان تحت لینوکس و یا تحت ویندوز اجرا کرد، این

اسمبلر جزو معدود اسمبلرهای ی است که قابلیت تولید انواع مختلفی از فایلهای خروجی تحت ویندوز و یا

تحت لینوکس را دارد. یکی از آخرین نسخه های این اسمبلر توسط تیم Netwide Assembler توسعه

داده شد و در ابتدای سال ۲۰۱۲ منتشر گردیده است.

نصب اسمبلر NASM

اسمبلر NASM را باید در سیستم عامل لینوکس نصب نمود. شیوه نصب این اسمبلر در توزیع های Redhat و Fedora یکسان است. توزیع Ubuntu لینوکس نیز که بسیار کاراتر از توزیع های دیگر است، در بین افرادی که تازه به استفاده از لینوکس تمایل یافته اند رایج می باشد. در اصل فلسفه توزیع Ubuntu ایجاد رقیبی متن باز برای سیستم عامل Windows است. علت اینکه سیستم عامل لینوکس را برای آموزش برنامه نویسی اسمبلی انتخاب کردهایم این است که بسته های نرم افزاری رایگان )بویژه ابزارهای برنامه سازی( برای این سیستم عامل به راحتی یافت میشود. در ضمن این سیستم عامل لینوکس یک سیستم عامل ۳۲ بیتی محض میباشد )منظور این است که مثل سیستم عامل Windows از مکانیزمهای ی مثل V86 استفاده نمی کند(. بنابراین در این محیط میتوان برنامه های اسمبلی که به طور مستقیم از فراخوانهای سیستم استفاده میکنند را به راحتی پیاده سازی کرد. این امر باعث شده است که برنامه سازی اسمبلی در این سیستم عامل بسیار ساده تر و مقرون به صرفه تر باشد. برای اینکه بدانیم که اسمبلر NASM بر روی سیستم نصب است یا خیر، میتوان از دستور whereis در محیط ترمینال سیستم استفاده کرد؛ کافی است دستور whereis nasm را در ترمینال تایپ کنیم، بدین ترتیب برنامه whereis با جستجو در بانک اطلاعاتی که حاوی اطلاعات بسته های نرم افزاری نصب شده بر روی سیستم است مسیرفایل اجرایی اسمبلر را بر روی صفحه بسته های نرم افزاری نصب شده بر روی سیستم است. مثلا در صورتی که اسمبلر بر روی سیستم نصب باشد، برنامه whereis پیغامی شبیه به پیغام زیر را چاپ می کند

: nasm: /usr/bin/nasm

و اگر برنامه اسمبلر بر روی سیستم نصب نباشد، پیغامی شبیه به پیغام زیر را خواهیم دید:

NASM:

در صورتی که بسته نرم افزاری nasmبر روی سیستم نصب نباشد به راحتی میتوان از بخش Software Center  و یا با دانلود فایل نصب و با استفاده از دستور زیر آن را نصب کرد:

میسر فایل نصبi  – rpm :

لازم به ذکر است که برای اجرای این دستور باید به عنوان کاربر root وارد سیستم شد  و یا اینکه اجازه کافی برای نصب یک برنامه را با استفاده از دستور پیشوندی sudo کسب کرد. به همین طریق میتوان بسته أموزشی NASM و ویرایشگر emacs را نیز نصب کرد.

ساختار کلی برنامه های NASM

همانند اکثر اسمبلرهای مرسوم، هر خط برنامه اسمبلی که به NASM نوشته شود دارای ترکیبی از بخشهای زیر است

label:

instruction operand (s)

comment

بخش اول label یا برچسب نام دارد. بخش دوم شامل کد حفظی دستورالعمل ریز پردازنده میزبان است که در مقابل آن برحسب نیاز یک یا چند عملوند قرار می گیرد. بخش آخر توضیحاتی در مورد این خط از کد ارائه میدهد که هیچ تأثیری در برنامه ندارد. بار دیگر مثل سایر اسمبلرها، حضور یا عدم حضور برخی از این بخشها اختیاری است. برای مثال حضور یا عدم حضور برچسب اختیاری است. حضور یا عدم حضور عملوندها وابسته به دستورالعمل مورد استفاده است و نهایتا بخش توضیحات صرفا برای افزایش خوانایی متن برنامه است و میتوان از نوشتن آن صرف نظر کرد. در صورتی که یک خط از متن برنامه خیلی طویل نباشد، میتوانیم از کاراکتر بک اسلش برای نشان دادن ادامه دار بودن خط اسمبلی در انتهای خط مورد نظر استفاده کنیم. در این صورت خط بعدی که بعد از این خط قرار گرفته است، از دید اسمبلر ادامه این خط تلقی میشود. اسمبلر NASM هیچ محدودیتی بر روی حضور یا عدم حضور علامت کلون بعد از نام و برنامه نویس میتواند برچسب هایی با و یا بدون علامت دونقطه تعریف برچسب اعمال نمی کند کند؛ در این صورت اگر کسی به اشتباه به جای دستورالعمل lodsb عبارت lodab را وارد کند، برنامه بدون مشکل اسمبل خواهد شد. برای جلوگیری از این اتفاقات می توانیم در حين اسمبل کردن از عبارت خط فرمان w + orphan-labels – استفاده کنیم، بدین ترتیب اسمبلر با مشاهده این چنین برچسبهایی اعلام خطا خواهد کرد. نام برچسبها میتواند متشکل از حروف، اعداد، زیرخط ، نماد دلار ، نماد ، نماد تیلدا ، نقطه و علامت ? باشد. البته به عنوان اولین کاراکتر، نام یک شناسه صرفا میتواند یکی از حروف، کاراکتر نقطه که البته در این صورت معنای شناسه تغییر خواهد کرد، کاراکتر زیرخط، و یا کاراکتر ? باشد. البته نام شناسه ها میتواند با علامت$ نیز شروع شود، این مورد را زمانی استفاده میکنند که نام برچسب یکی از کلمات کلیدی اسمبلر باشد.

شبه دستورالعمل ها:

شبه دستورالعمل ها دستورات مخصوصی هستند که مربوط به ریزپردازنده میزبان نبوده و مخصوص اسمبلر nasm هستند .از این حیث به این دستورات شبه دستورالعمل میگویند که میتوانند در برنامه اسمبلی ،در جای دستورالعمل های ریز پردازنده قرار گیرند.در زیر به چند نمونه از شبه دستورالعمل ها اشاره میکنیم:

 

شبه دستورالعمل های سری DB

شبه دستورالعمل های سری RESB

شبه دستورالعمل INCBIN

شبه دستورالعمل EQU

شبه دستورالعمل TIMES

 

دستورات پیش پردازنده

اسمبلر nasm. دارای یک بخش پیش پردازنده است که وظیفه پردازش ماکروها را برعهده دارد.برنامه نویسان یا تعریف ماکروها،گروهی از دستورالعمل هارا با یک شناسه نشان میدهند ،با این کار میتوان تا حدی از کار برنامه نویسی و احتمال خطا  و اشتباه در برنامه ها کاست،یک ماکرو میتواند  در nasm  یک خطی یا چند خطی باشددر صورتی که در تعریف ماکرو نیاز ب انتقال به خط جدید داشته باشیم ،براحتی میتوانیم از نماد بکسلش برای این کار استفاده کنیم.

در ادامه به چند بخش از این دستورات اشاره میکنیم:

ماکروهای تک خطی :

ماکروهای تک خطی با استفاده از دستور%define  خیلی شبیه به زبان سی تعریف میشوند.

دستور پیش پردازنده %undef :

ماکروهای تک خطی را میتوان با استفاده از این دستور حذف کرد.

ماکروهای چند خطی:

ماکروهای چند خطی با روشی مشابه به روش استفاده شده در اسمبلرهای nasm, tasm تعریف و استفاده میشوند.

دستور پیش پردازنده %unmacro   

دستور پیش پردازنده %ifdef

دستور پیش پردازنده%ifmacro

 

دستورات راهنمای اسمبلر:

دستور راهنمای BITS

دستور راهنمای SEGMENT& SECTION

دستور راهنمای ABSOLUTE

دستور راهنمای GLOBAL&EXTERN

 

فرمتهای خروجی

اسمبلر NASM یک اسمبلر قابل حمل میباشد، یعنی برای تولید فایلهای اجرای ی تحت همه سیستمهای ماول طراحی شده برای ریز پردازنده های x86 قابل استفاده است. میتوانید با استفاده از سوئیچ f- در خط فرمان حین اسمبل کردن فرمت فایل خروجی را تعيين کنید. در همه فرمتهایی که در این بخش توضیح خواهیم داد. میتوان بخشهای bs S، ،.dataو text  را تعريف کرد؛ بخش data. برای تعریف متغيرها با مقدار اولیه در نظرگرفته شده است.در بخش bss. میتوان بخشهایی از حافظه برنامه را بدون تعیین مقدار اولیه رزرو کرد.

(برای این منظور شبه دستورات سری resb طراحی شدهاند(؛ نهایتا بخش text. حاوی دستورات اسمبلی ماشین میزبان است.

قالب فایل bin

در صورتی که از این سوئیچ برای تعيین فرمت فایلهای خروجی استفاده کنیم؛ فایل object ساخته نمیشود، و اسمبلر هر کد اسمبلی که نوشته شده را اسمبل کرده و به صورت یک فایل باینری در خروجی قرار میدهد. در ادبیات مایکروسافت به فایلهای باینری که حاوی کدهای ماشین برای یک ریزپردازنده باشد، فايل COM می گویند. فایلهای باینری برای تولید برنامه های COM و بخشهای مختلف سیستمهای عامل مناسب هستند. در صورتی که از فرمت BIN برای خروجی برنامه خود استفاده کنیم، اسمبلر NASM به طور پیش فرض کدهای ماشین ۱۶ بیتی تولید میکند. در صورتی که بخواهیم کد ماشین ۳۲بیتی تولید کنیم، می توانیم از دستور

راهنمای اسمبلر  [BITS]یا از فرم سطح کاربر آن یعنی BITS استفاده کنیم. وقتی که فرمت فایل خروجی BIN در نظر گرفته شود، می توانیم از دستور راهنمای ی به نام ORG استفاده کنیم. که با استفاده از این دستور می توان آفست برچسب های برنامه را تغییر داد. برخلاف دستور اسمبلرهای سازگار با MASM، این دستور در NASM موجب قرار گرفتن کد مشخص شده بر روی کدهای ماشینی که قبلا اسمبل شده اند، نمی شود؛ در اسمبلر NASM این دستور صرفا آفستی را که اسمبلر برای یک برچسب فرض میکند.تغییر میدهد.

دستور راهنمای SECTION  هنگام استفاده از فرمت خروجی توانایی دریافتیک پارامتر اضافه ترهم دارد این پارامتر برای تراز کردن یک بخش بکار میرود عددی ک برای تراز کردن بکار میرود باید توانی از 2 باشد.

حافظه در سیستم های مبتنی بر ریزپردازنده

فیلیپ فلاپ

کوچکترین واحد حافظه ،توانایی ذخیره یک بیت داده را دارد عناصر الکتریکی که تواناایی ذخیره یک بیت داده را دارند،فیلیپ فلاپ نامیده میشوند.

این فیلیپ فلاپ یک درگاه ورودی داده(D)دارد که همزمان با پالس ساعت داده ورودی را به درگاه خروجی منتقل میکند،درگاه های خروجی q همواره در سطح منطقی مخالف هم قرار دارند.

رابطه ورودی- خروجی فلیپ فلاپ نوع D، به صورت Qn+1= Dn بیان میشود. این رابطه بیانگر آن است که خروجی فلیپ فلاپ بعد از پالس ساعت برابر ورودی آن قبل از پالس ساعت است.

با توجه به نوع حساسیت این نوع فلیپ فلاپ به لبه بالا رونده یا پای ین رونده پالس ساعت و یا سطح پالس ساعت، انواع مختلفی از این توع فلیپ فلاپ وجود دارند. شکل ۶-۲ دو پالس ساعت را نشان میدهد. الف) یک پالس ساعت مثبت را نشان میدهد. این پالس در حالت خاموش خود مقدار صفر را دارد؛ سپس، گذری به مقدار منطقی یک دارد، مدت کوتاهی در سطح منطقی یک باقی میماند و سپس دوباره به مقدار صفر باز می گرد د. لبه مقدم این پالس، انتقال از صفر به یک است و لبه پشتی انتقال از یک به صفر

شکل ب) نشان دهنده پالس ساعت منفی است که در سسیگنال درحالت خاموش مقدار یک باز می گردد. یک فلیپ فلاپ حساس به لبه نوع D، مقدار منطقی داده در درگاه ورودی D را در هنگام گذر پالس ساعت از یک سطح منطقی به سطح دیگر، ذخیره می کند. حساسیت فلیپ فلاپ به لبه پالس ساعت را با علامت در ورودی پالس ساعت آن نشان میدهند. فلیپ فلاپهای حساس به لبه بالا رونده ی پالس ساعت، در انتقال مثبت پالس ساعت، داده موجود در درگاه ورودی را بر میدارند و

داده در خروجی قفل میشود. در مورد فلیپ فلاپهای حساس به لبه پایین رونده، این موضوع برعکس است. حساسیت به لبه پای ین رونده را با یک دایره به همراه علامت < نشان میدهند. اگر پالس ساعت نشان داده شده در الف) به یک فلیپ فلاپ D حساس به لبه مثبت اعمال شود، البته مقدم پالس ساعت، به خروجی منتقل و قفل میشود. همچنین، اگر پالس ب)به همان فلیپ فلاپ اعمال شود، داده در لبه پشتی پالس، به خروجی منتقل و قفل میشود. نکته مهم این است که در یک فلیپ فلاپ D حساس به لبه، در یک پالس ساعت، داده ورودی پذیرفته میشود،

خروجی تغیر میکند و در عين حال قفل میشود. یک فیلیپ فلاپ حساس به سطح پالس که معمولا لچ نامیده میشود یک ورودی پالس ساعت دارد که یه سطح منطقی سیگنال حساس است .خروجی یک فیلیپ فلاپ نو‌ع  D حساس به سطح مثبت پالس ،وقتی که پالس ساعت در سطح منطقی یک قرار دارد برابر با سیگنال ورودی فیلیپ فلاپ خواهد بود.

خروجی سه حالته

خروجی فیلیپ فلاپ ها و دیگر عناصر رقمی معمولا سه حالته هستند دو حالت همان سطوح منطقی  ۰،۱ هستند که در تمامی‌گیت ها های منطقی با ان روبرو هستیم حالت سوم زمانی بکار میرود که میخواهیم یک فیلیپ فلاپ راغیرفعال کنیم.در این حالت خروجی فیلیپ فلاپ بصورت امپدانس بالا در میاید.

جابه جای ی داده به چپ یا راست (شیفت انتقال)

ثباتی با توانایی انتقال یا شيفت داده موجود در آن به چپ یا راست را ثبات جابه جای ی گویند. یک ثبات جابه جای ی n بیتی، شامل n فلیپفلاپ به همراه گیتهای کنترلی جانبی است که عملیات جابه جایی را کنترل میکن ند. شکل ۶-۵ ثباتی با امکان جابه جایی به راست را نشان میدهد. ورودی ثبات تک بیتی است و به فلیپ فلاپ واقع در منتهی اليه سمت چپ ثبات وارد میشود. ورودی کنترلی Shift-right عملیات جابه جایی را فعال می کند. این ثبات جابه جایی، n بیت خروجی موازی نیز دارد که از آن می توان به طور همزمان به تمامی بیتهای ثبات دسترسی داشت.درگاه Serial Output تک بیتی است و محتوای سمت راستیترین بیت ثبات را نشان میدهد.اما از طریق این درگاه، در هر لحظه فقط میتوان به یکی از بیتهای ثبّات دسترسی داشت. فرض کنید میخواهیم عدد دودویی1011 را به صورت سریال به ثبات وارد کنیم و به طور هم زمان محتوای قبلی ثبات را نیز استخراج کنیم جدول ۶-۱ این عملیات را نشان میدهد.

 

ورود داده ها به صورت بیت به بیت انجام میشود. قبل از آنکه پالس ساعت موجب جابه جایی محتوای مات شود، بیت کم ارزش عدد دودویی در ورودی سریال قرار میگیرد و هم زمان سمت راستی ترین بست محتوای قبلی که در درگاه خروجی سریال قرار دارد، استخراج میشود. با آمدن پالس ساعت، بیت ورودی به سمت فلیپ فلاپ واقع در منتهی الیه سمت چپ وارد میشود و بیتهای قبلی به راست حابه جا میشوند. حال بیت بعدی که 1 است را در ورودی سریال قرار میدهیم و نیز بیت خروجی را استخراج می کنیم. این کار را تا انتها ادامه میدهیم. با توجه به جدول ۶-۱، مجموع خروجی همه فلیپ فلاپها، خروجی موازی را تشکیل میدهد.

رایانه ها ممکن است در حالت موازی، سریال، یا ترکیبی از این دو حالت کار کنند. اگر فقط در حالت سریال کار کنند، خروجیهای موازی ثباتها کاربردی ندارند. در این حالت، اطلاعات از درگاه های سریال وارد و خارج میشوند و عملیات سریال کندتر از موازی است؛ این امر به دلیل آن است که زمان زیادی صرف وارد و خارج کردن داده از درگاه های سریال میشود. با این وجود، حالت سریال به سخت افزار کمتری نیاز دارد، چون یک مدار مشترک را برای تمام بیتهایی که از ثبات خارج میشود، به کار می گیرند. اکثر رایانه ها در حالت موازی کار میکنند تا به سرعت بیشتری دست یابند؛ با این وجود، حتی در این رایانه ها هم عملیات جابه جایی مورد نیاز است. مثلا عملیات ضرب با استفاده از چندین عملیات جابه جایی و جمع انجام میشود. در چنین مواردی،داده خروجی از درگاه خروجی موازی استخراج میشود.

ثباتهای جابه جایی ممکن است توانایی جابه جایی به چپ، راست یا هر دو را داشته باشند. بعضی از آنها داده را به صورت موازی هم دریافت می کنند. عمومی ترین ثبات جابه جای ی ویژگیهای زیر را دارند.

ورودی کنترلی Clear برای پاک کردن ثبات به مقدار ورودی پالس ساعت

ورودی کنترلی جابه جای ی به راست، برای فعال کردن عملیات جابه جایی به راست همراه با

ورودی خروجی سریال مختص این نوع جابه جایی.

طبقه بندی حافظه ها:

حافظه هارا بر اساس ویژگی که دارند به چند دسته تقسیم میکنند..

گروه اول:حافظه با دسترسی تصادفی RAM

گروه دوم :حافظه های ترتیبی SAM

در جدول زیر ترتیب بندی کامل حافظه هارا مشاهده میکنیم:

روش های پایه ورودی/خروجی

 I/O موازی :

سخت افزار لازم برای درگاه I/O موازی شبیه مدار واسط ROM و RAM است. زمانی که واحد پردازشگر مرکزی یک دستور خروجی را اجرا میکند (چرخه نوشتن I/O)، درگاه باید داده موجود بر گذرگاه را ذخیره کند. به طور مشابه، وقتی که دستور ورودی اجرا میشود(چرخه خواندن I/O).

درگاه باید داده را بیر خطوط گذرگاه داده قرار دهد. همان گونه که هر مکان حافظه، آدرس منحصر به فردی دارد، درگاه های I/O نیز آدرسهای ویژه خود را دارند.

زمان بندی چرخه گذرگاه O/I

۸۰۸۶ 8086 , فقط دو دستور برای ورود و خروج داده دارند که عبارتند از: دستورالعمل “IN AL (OR AX”برای خواندن از درگاه ودستورالعمل AL(OR AX)درگاه OUT” برای نوشتن در درگاه. همان طور که جدول ۷-۱ نشان میدهد، برای هر کدام از این دستورات. دو قالب مستقیم و غیرمستقیم وجود دارد. در قالب مستقیم، شماره درگاه در دستور ذکر میشود و لذا میتواند ۲۵۶ درگاه را آدرس دهی کند. در قالب غیر مستقیم، ثبات DX آدرس درگاه را نگه میدارد و بنابراین، میتواند ۵۳۶ ۶۵ درگاه را آدرس دهی کند. مزيت قالب غیر مستقیم نسبت به قالب مستقیم آن است که میتوان یک زیربرنامه برای ارتباط با درگاه نوشت و آن را در بخشهای مختلف فراخوانی کرد. با مقداردهی ثبات DX میتوان درگاه را تعیین کرد و از همان زیربرنامه برای درگاه های متفاوت بهره جست.

در جدول ۷-۱ ردپای بجا مانده از اجرای یک چرخه گذرگاه 1/0، همان ند یک چرخه حافظة است. در حالت مستقیم، خطوط A0-A7 و در حالت غیر مستقیم، خطوط A0-A15 گذرگاه آدرس را تشکیل میدهند. خطوط DO-D7 از گذرگاه داده، برای التقال داده از درگاه های با آدرس زوج و D-D15 برای انتقال داده از درگاه های با آدرس فرد کاربرد دارند. BHE و A0 برای تعيين نوع انتقال به کار میروند.

در حالت کمینه، شرط 0 =M/i0 برای بیان چرخه گذرگاه جاری به عنوان یک چرخة گذرگاه O/ به کار میرود.

WKو RD جهت جریان داده را تعیین می کنند. لذا مشخصات زمان بندی چرخه O/I در حالت کمینه، همانند چرخه حافظه در حالت کمینه است.

در حالت بیشینه، کنترل کننده گذرگاه 8288) ، دستورات خواندن و نوشتن I/O را به صورت مجزا فراهم می کند. با این وجود، جزئیات زمان بندی این دستورات همانند چرخه های خواندن و نوشتن در حافظه است. به عنوان مثال، چنانچه خواندن از O/ Iرا در نظر بگیریم، دنباله زیر اجرا میشود:

0 = M/I0 )فقط در حالت کمینه)0 = DT/R1 .

 ۸ یا ۱۶ بیت درگاه I/O آدرس، خروجی است.

 

 

ریز پردازنده به مدت TRLDV نانوثانیه بعد از لبه پای ین رونده RD یا IORC منتظر داده است.

براساس دنباله بیان شده، درگاه ورودی باید به گونهای طراحی گردد که چرخه گذرگاه خواندن را تشخيص دهد ) 0 = M/I0 و 0 = IORC یا 0 =RD(، آدرس درگاه را کدگشایی کند و داده ورودی را با استفاده از گیتهای سه حالته، بر خطوط گذرگاه مناسب قرار دهد.

 

 

کاربردهای پالس انتخاب کننده دستگاه

پالس انتخاب کننده دستگاه معمولا برای فعال کردن یک لچ یا مجموعه ای از گیتهای سه حالته بکار میرود.با این وجود در مواردی پالس بتنهایی مورد نیاز است.چگونگی استفاده از دو سیگنال out0 , in0 را برای کنترل یک رله مکانیکی نشان می دهد.

دستور IN AL 0 فیلیپ فلاپ صفر را باز نشانی میکند و ترانزیستور روشن میشود. جریان در رله برقرار میشود و اتصال معمولا باز برقرار میگردد. با این اتصال میتوان هر وسیله الکتریکی را کنترل کرد.

 

تراشه 74LS05 یک بافر کلکتور باز است .خروجی ان را میتوان با یک مقاومت به  +5V وصل کرده و بیس ترانزیستور را از طریق این مقاومت راه اندازی کرد.

تراشه UART

نوشتن برنامه ای که با تمام پروتکلهای ارتباطی ناهمگام متفاوت سازگار باشد، کار پر دردسری خواهد بود. علاوه بر این، تخصیص زمان زیادی از کار پردازنده به حلقه های انتظار در ارسال و دریافت داده، راندمان پردازنده را کاهش میدهد.به دلایل بالا شرکتهای ساخت تراشه، تراشه UART را تولید کردند که یک نمونه از آن در شکل ۷-۱۲ آورده شده است. این UART، دو بلوک مستقل برای ارسال و دریافت داده فراهم میآورد و پایه های کنترلی موجود در آن امکان انتخاب طول کلمه ارسالی از ۵ تا ۸، توازن زوج، فرد یا عدم توازن را فراهم میآورد. پایه های وضعیت مشخص می کن ند که نویسه جدیدی رسیده است Recoiver( data )readyیا اینکه داده ارسال شده است و فرستنده برای نویسه بعدی آماده است( Iransmiter(biuerempty در توازن و . . . میباشند.

بقیه شاخصهای وضعیت نیز نشانگر خطای فریم، خطا UART به یک سیگنال پالس ساعت دقیق نیاز دارد که بعدا نرخ بیت را تعی ین می کند اکثرUARTها سیگنالی با نرخ بیت ۱۶ برابر نرخ بیت مطلوب به کار میبرند و پس از آن زمان هر بیت را به ۱۶ تکه تقسیم می کنند و با این کار مرکز هر بیت را با دقت بیشتری پیدا می کنند برای به کار انداختن UART نشان داده شده در شکل ۷-۱۲ در نرخ بیت ۰ ۱۲۰، لازم است پالس ساعت فرستنده و گیرنده ۱۹/۲ کیلوهرتز (16*1200) انتخاب شود.

از نظر ریزپردازنده، UART شبیه یک درگاه موازی معمولی است. وقتی بافر فرستنده خالی است تمام بیتهای کلمه ای که باید ارسال شود، همزمان بر روی درگاه قرار می گیرند و زمانی که  نویسه ای دریافت شد تمام بیت های ان بصورت همزمان از درگاه خوانده میشوند.عملیات تبدیل داده از سریال به موازی و بالعکس در درون  UART انجام میشود.

 

پروتکل Bysinc

از آنجا که در تمام قالبهای سریال همگام، بیت شروع و پایانی وجود ندارد، یک عملیات نویسه همگام سازی ویژه لازم است. این نویسه به گیرنده می گوید که داده ها در شرف ارسال هستند. به همین ترتیب USART باید یک حالت “شکار” یا “جستجو” داشته باشد که در آن به دنبال این نویسه همگامسازی بگردد. از آنجا که بیت پایان موجود نیست، یک سیگنال پالس ساعت، داده همگام را همراهی می کند تا همگام سازی پابرجا باشد. زمانی که داده سریال بر روی خطوط شبکه تلفن ارسال میشود، امکان فراهم کردن کانال مستقلی برای پالس ساعت وجود ندارد؛ در این حالت، از مودمهای ویژهای استفاده میشود که داده و پالس ساعت را دریافت میکنند و آنها را به یک سیگنال تبدیل میکنند. مودم گیرنده این دو سیگنال را از هم جدا می کند. تفاوت دیگر ارتباط سریال همگام و ناهمگام آن است که در ارتباط همگام، نرخ پالس ساعت همان نرخ بیت است.

جدول ۷-۴، نویسه های ویژه مورد استفاده در پروتکل سریال همگام Bisync را نشان میدهد که انتقال داده را کنترل می کنند. شکل ۷-۱۳، یک فریم پیام همگام با پروتکل Bisync را نشان میدهد. همان ند روش ناهمگام داده، این فریم پیام بین نویسه های کنترلی خاص قرار گرفته است

همان طور که در شکل دیده میشود، دو نویسه SYNC فرستاده میشوند و سپس، نویسه STX ارسال می گرد د که شروع متن را اعلام می کند. داده مطلوب بلافاصله ارسال میشود که می تواند 10 نویسه یا بیشتر طول داشته باشد و یا دیگر کدهای کنترلی باشد.ETX ،پایان متن ارسالی را تعیین می کند. BC C، نویسه چک کردن بلوک است که برای تشخیص خطا به کارمیرود. PAD نویسه خروجی در زمانی است که داده دیگری ارسال نمیشود.

 

 

 

 

انواع وقفه:

8086 دارای 7نوع وقفه متفاوت میباشد که در جدول زیر اورده شده است:

NMI,INTR وقفه های خارجی هستند که از طرف سخت افزار اعمال میشوند int n , into و دستور int3 وقفه های نرم افزاری هستند که در صورت نیاز در یک برنامه قرار داده میشوند وقفه های تقسیم بر صفر و تک گامی را خود واحد پردازشگر مرکزی شروع میکند وقفه تقسیم بر صفر در صورتی که حاصل عمليات تقسیم بیش از ظرفيت ثبات مقصد باشد، به وجود میاید. همچنین وفقه تک گامی بعد از اجرای هر دستور، در صورتی که ۱ = TF باشد رخ میدهد. شکل ۱۹-۷ دنباله پردازش وقفه در ۸۰۸۶ را نشان میدهد. در تمام موارد، به دستورالعمل جاری اجازه داده میشود تا قبل از پاسخ گویی به وقفه خاتمه یاید. وقفه های داخلی به جز وقفه تک گامی چنانچه بطور همزمان درخواست شوند (یعنی در حين اجرای یک دستور العمل درخواست شوند نسبت به وققه های خلرجی الویت دارنده مثلا اگر یک درخواست وقفه بر INTR اتقاق افتد و اجرای دستور جاری موجب یک تقسیم بر صفرشود )که در نتیجه وقفه تقسیم بر صفر باید اجرا شود(، به وقفه تقسیم بر صفر زودتر پاسخ داده میشوده به همین ترتیب، اگر به صورت همزمان وقفه های ی بر پایه های NMI و INTR  اتفاق بيفتند، ابتدا به وقفه NMI پاسخ داده میشود.

 

دسترسی مستقیم به حافظه DMA

این روش،روش دسترسی مستقیم به حافظه  مرسوم بوده و توسط آن دستگاه جانبی به جای خود ریز پردازنده با حافظه ی سیستم همگام میشود. برای درک بهتر این روش، لازم است ذکر کنیم که تنگنای اصلی در انتقال داده، خود ریز پردازنده است.به عنوان مثال، برای انتقال داده از حافظه به دیسک سخت، لازم است فقط با حافظه و دیسک سخت سر و کار داشته باشیم؛ این در حالی است که با استفاده از روشهای قبل، لازم است ابتدا واحد پردازشگر مرکزی داده را بخواند و سپس آن را در دیسک سخت بنویسد. بنایراین، ریز پردازنده نقش یک واسطه غیر ضروری را دارد که موجب کند شدن نرخ انتقال داده میشود. یک نمونه از روش DMA، کنار گذاشتن ریز پردازنده و اجازه دادن به دیسک سخت برای دسترسی مستقیم به حافظه است. اگر حافظه بتواند هر داده را در مدت زمان ۰ ۲۰ نانوثانیه آماده کند، نرخ انتقال داده می تواند به بزرگی ۵ مگابایت بر ثانیه باشد. در این بخش، پروتکلهای ۸۰۸۶ را برای انتقال کنترل گذرگاه داده به دیگر دستگاه ها (که در اینجا کنترل کننده   (DMAC)( DMAاست) معرفی می کنیم. همین که DMAC کنترل گذرگاه را بر عهده گرفت، چند نوع عملیات DMA میتواند انجام دهد. انواع عمليات DMA در ادامه بررسی خواهد شد. در نهایت، DMA را با دیگر راهکارهای معرفی شده مقایسه خواهیم کرد.

 

پروتکل DMA

حالت کمینه

اصطلاح پروتکل بدین جهت به کار میرود تا بیانگر مکانیزم های دستدهی باشد که پردازنده به کار میبرد تا کنترل گذرگاه را به پردازنده دیگری واگذار کند. در حالت کمیته، دو سیگنال HOLD و HEDA موجود هس درشکل ۷-۲۸ چگونگی ارتباط DMAC را با این سیگنالها نشان میدهد چرخه کاری با درخواست سرویس از سوی دستگاه جانبی، از طريق DMARQD اغاز میشود در نتیجه DMAC نیز  ورودی HOLD از 8086 را در وضعیت HIGH  نگه میدارد و با این کار از واحد شمارشگر مرکزی میخواهد به وضعیت HOLD برود. پردازشگر مرکزی در پاسخ چرخه گذرگاه  جای خود را به اتمام میرسد و گذرگاه داده ،ادرس و اکثرسیگنالهی کنترلی خود را در وضعیت امپدانس بالا قرار میدهد.

میکروکنترلر

میکرو کنترلر چیست؟

معمولا رایانه ها دارای اجزای ی چون ریز پردازنده، سیستم حافظه، سیستم ورودی خروجی، مولد ساعت و نیز سیستم گذرگاه برای ارتباطات بین اجزاء میباشند. برای بسیاری از کاربردها خصوصا در کنترل تجهیزات و یا در کاربردهای صنعتی، تنها میزان محدودی از توان پردازشی رایانه مورد استفاده قرار می گیرد. لذا رایانه های شخصی گزینه مناسبی برای بسیاری از کاربردها نمیباشند، چرا که بخش اعظم توانای یهای پردازنده های بکار رفته در کامپوترهای شخصی بدون استفاده میمانند. گزینه مناسب برای چنین کاربردهای ی میکروکنترلر است. دو دلیل اصلی در پاسخ به این سوال که چرا با وجود رایانه های شخصی بسیار قوی امروزی، از میکروکنترلرها استفاده میشود

عبارتند از صرفه جویی در هزینه و در اندازه میکرو کنترلرها بر خلاف ریز پردازنده ها، گران نیستند در بسیاری از کاربردها، یک رایانه شخصی که قابلیت انجام وظایف بسیار متنوعی را دارد، مورد نیاز نیست. تنها یک پردازنده لازم است که بتواند یک کار معینی را انجام دهد. برای این کاربردها انتخاب میکروکنترلر با توجه به قیمت و هزینه آن، انتخاب مناسب تری است از طرفی فشردگی و مجتمع بودن میکرو کنترلرها، آنها را همان ند یک رایانه واقع شده در یک تراشه مطرح میکند. .

یک میکروکنترلر را میتوان یک رایانه دانست که همه اجزای آن تنها بر روی یک تراشه قرار گرفته اند. تمامی اجزا، اعم از سیستم حافظه، سیستم ورودی خروجی و اجزای دیگر تنها بر روی یک تراشه واقع شده اند. بسیاری از میکرو کنترلرها به مبدلهای رقمی به آنالوگ، تولید کننده ی سیگنالهای مدولاسیون پهنای پالس(PWM)، درگاه های ورودی خروجی سریال و سیستم زمان بندی انعطاف پذیر مجهزنده میکرو کنترلرها قابلیت اتصال به سنسورها، عملگرها و موتورهای الکتریکی، انواع نمایش دهنده ها اتصال به کامپیترهای شخصی و نیز شبکهای از میکرو کنترلرها را دارند. میکروکنترلرها در انواع مختلف بیتی، بیتی، ۱۶بیتی و ۳۲بیتی ساخته میشوند. برای هرنوع از میکروکنترلرهای برشمرده، زیر شاخه های دیگری نیز وجود دارد. مثلا میکرو کنترلرهای بیتی دارای انواع مختلفی هستند که در مشخصه های مختلفي مثل سرعت ساعت، سیستم حافظه و ساختار درونی با یک دیگر متفاوت هستند. این تنوع منطقی به طراح سخت افزار کمک میکند که برای کاربرد مورد نظر خود، بهترین تراشه را برگزیند. معماری میکرو کنترلرها معمولا از نوع ثبات- ثبات است. در این معماری دسترسی به حافظه برای ذخیره متغیرها تنها با استفاده از دستورات بار کردن و ذخیره کردن قابل انجام است. یعنی اینکه ابتدا ثباتها با مقدار متغيرها بار میشوند، سپس محاسبه انجام شده و نتیجه به یکی از ثباتها برگردانده میشود. در پایان نتیجه از این ثبات به متغير مقصد منتقل میشود. میکروکنترلرها در سیستمهای نهفته برای کنترل و اجرای توابع مختلفی بکار میروند. برای مثال خودروهای امروزی به میکروکنترلرهای گوناگونی در بخشهای مختلف خودرو مثل سیستم ترمز ضد قفل ABS، سیستم تزریق سوخت، سیستم تنظیم دما، سیستم جذب کننده لرزه های ناگهانی و نیز سیستم مذاکره با سامانهی GPS مجهزند. بعضی دیگر از کاربردهای میکرو کنترلرها استفاده از آنها در تجهیزات پزشکی، رباتها، وسایل مخابراتی، کنترل آسانسور، سیستمهای حفاظتی مراکز تلفن، کنتورهای الکترونیکی هوشمند، دوربینهای عکاسی، تلویزیون، ماشینهای لباسشویی وظرف شوی ی، اجاق مایکرو ویو، پرینتر، اسکنر و دستگاه کپی، لوازم موسیقی، اسباب بازیها لوازم سرگرمی، کولرهای گازی، چرخهای خیاطی و بسیاری مثالهای دیگر میباشده این امکان که بتوان یک رایانه را بر روی تنها یک تراشه قرار داد، مهندس طراح را قادر میسازد که در کاربردهای خاص خود از تسهیلات محاسباتی مطلوب و مورد نیاز در میکرو کنترلرهای مختلف بهره گیرد.

 

 

همانطور که در شکل ۸-۱ مشاهده میشود یک میکرو کنترلر از اجزا گوناگونی تشکیل شده ادامه به اختصار توضيحاتی در خصوص بعضی از این اجزاء که تفاوتهایی با ریزپردازنده ها دارند ارائه می کنیم:

CPU: قلب میکرو کنترلر همان واحد پردازشگر مرکزی آن است. CPU که متشکل از ثباتها واحد محاسبه و منطق، کدگشای دستورالعمل و مدار کنترل است، دستورالعملهای ذخیره شده حافظه را واکشی، کدگشای ی و اجراء مینماید.

حافظه ها: میکرو کنترلرها علاوه بر واحد پردازشگر مرکزی که مشابه واحد پردازشگر ریز پردازندمهاست دارای انواع حافظه ها برای ذخیره برنامه و داده هستند:

حافظه برنامه معمولا از نوع حافظه فلش است. حافظه فلش این مزیت را دارد که میتوان برنامه کار میکرو کنترلر را در آن نوشت و در صورت نیاز تغییر داد. حافظه داده از نوع حافظه RWM است که معمولا به نام حافظه RAM نامیده میشود. این حافظه ها معمولا از نوع استاتیک و اصطلاحأ SRAM هستند و برای ذخیره متغیرها و همچنین به عنوان پشته بکار میروند.

از حافظه های EEPROM که بصورت بایت به بایت قابل دسترسی بوده و از نوع غیرفرار میباشند نیز در میکروکنترلرها برای ذخیره بعضی از داده هایی که کمتر نیاز به تغییرآنهاست و با قطع تغذیه میکروکنترلر باید حفظ شوند استفاده میشود. همانطور که از نام این نوع حافظه برمیآید، اجازه میدهد که بتوانیم یک بایت از حافظه را در طول اجرای برنامه تغییر دهیم.

مولد ساعت: در سیستم زمان بندی پردازنده میکروکنترلر و برای تولید ساعت مورد نیاز أن معمولا از کریستالهای کوارتز و یا نوسان سازهای سرامیکی و حتی از مدارهای داخلی مقاومتی خازنی استفاده میشود. استفاده از کریستال کوارتز، دقت و پایداری بیشتری را فراهم می کند.

مدار بازنشانی و تشخیص افت ولتاژ تغذیه: با بازنشانی میکروکنترلر که به صورتهای مختلف ممکن است رخ دهد، تمام اجزاء و مدارهای کنترل و بسیاری از ثباتها مقادیر اولیه از پیش تعیین شده ای را پیدا می کنند. در پارهای از مواقع نیز ممكن است که ولتاژ تغذیه میگروکنترلر از حد مجاز آن کمتر شود، در اینصورت برای جلوگیری از تغی یر محتوای ثباتها و هرگونه عملکرد اشتباه، لازم است که میکروکنترلر باز نشانی شود. اینکار توسط مدار تشخیص اقت ولتار تغذية صورت می گیرد.

مبدل آنالوگ به رقمی: در کاربردهای ی که قصد بر آن است تا مؤلفه های فیژیکی محیط، همانند دما، فشار، شدت نور و مانند آن مورد سنجش قرار گیرنده از میکرو کنترلزها استفاده میشود این مؤلفه های فیزیکی، در طبیعت بصورت سیگنالهای آنالوگ حضور دارند، هر حالی که میکروکنترلرها رقمی هستند. بنابراین بیشتر میکرو کنترلرها مجهز به کانالهای تبدیل سیگال آنالوگ به رقمی(ADC) هستند. مبدلهای آنالوگ به رقمی، سیگنالهای آنالوگ ورودی را به سمبلهای دودويي تبدیل می کنند.

زمان سنج،شمارنده

زمان سنج نگهبان

ارتباط سریال

درگاهها

مدولاسیون پهنای پالس PWM

وقفه

ساعت زمان واقعی

نمایشگرهای LCD و هفت قطعه ای

 

معماری و مشخصات میکروکنترلر ATMEGA16

میکروکنترلر ATmega16 یک میکرو کنترلر ۸ بیتی CMOS با توان مصرفی کم است که بر مبنای معماری کامپیوترهای RISC تقویت شده کار می کند. با اجرای دستورالعملهای قوی در یک چرخه ساعت, ATmega16 بازدهی معادل ۱ میلیون دستورالعمل در ثانیه بازاء هر یک مگاهرتز دارد و موجب میشود که طراحان بتوان ند استفاده های بهینهای از توان در مقابل سرعت پردازش داشته باشند.

هسته ی AVR دارای مجموعه زیادی از دستورالعملها به همراه ۳۲ ثبات عمومی است. تمام ۳۲ ثبات عمومی به طور مستقیم به واحد محاسبه و منطق ALU متصل میباشند و امکان دسترسی دو ثبات مستقل از هم در هنگام اجرای یک دستورالعمل در یک چرخهی ساعت فراهم میباشد. معماری میکروکنترلر مذکور به گونهای است که کدنویسی برای آن بسیار کارا و کارای ی آن ده برابر بیشتر از میکرو کنترلرهای CISC است. معماری میکروکنترلر ATmega16 در شکل ۸-۳ نشان داده شده است.

با توجه به معماری فوق، مشخصات میکروکنترلر ATmega16 به شرح زیر است:

کارایی بالا، مصرف توان کم، مسیر عمومی داده هشت بیتی معماری پیشرفته ی RISC ۱۳۱دستورالعمل قدرتمند، که اکثرا در یک چرخه از سیگنال ساعت اجرا میشوند.

. ۳۲*۸ ثبات با کاربرد عمومی

توانایی اجرای ۱۶ ملیون دستورالعمل در ثانیه در فرکانس 16MHZ

ضرب کننده ی سوار بر تراشه با زمان اجرای دو چرخه ساعت

. حافظه غیر فرار برای برنامه و داده

16KB حافظه درون سیستمی که از نوع فلش بوده و قابل برنامه ریزی میباشد

. 512 بایت حافظه از نوع EEPROM

1K بایت حافظه RAM داخلی از نوع SRAM

قابلیت نگهداری اطلاعات ۲۰ سال در ۸۵ درجه سانتیگراد و ۰ ۱۰ سال در ۲۵ درجه ساختیکراد

. تعداد دفعات نوشتن پاک کردن برای فلش ۰ ۰ ۰ ۱۰ بار و برای EEPROM

حافظه غیر فرار برای برنامه و داده

بخش کد راه اندازی انتخابی با بیتهای قفل Lock bitsمستقل

 

 

 

هسته پردازنده مرکزی میکروکنترلر ATMEGA16

وظیفه اصلی هسته واحد مرکزی در این میکروکنترلر تضمین اجرای صحیح برنامه است.

بنابریان واحد پردازشگر مرکزی میبایست قادر باشد که به حافظه ها دسترسی داشته ،محاسبات را انجام دهد اجزا مختلف میکروکنترلر را در زیر مشاهده میفرمایید:

میکروکنترلرatmega 16 از معماری هاوارد با حافظه های جداگانه و گذرگاه های متفاوت برای برنامه و داده استفاده میکند .هنگامی که یک دستورالعمل اجرا میشود ،دستورالعمل بعدی از حافظه برنامه پیش واکشی میشود.این مفهوم موجب میشود که بتوان هر دستورالعمل را درون یک پالس ساعت اجرا نمود.

واحد محاسبه و منطق ALU

واحد محاسبه و منطق ALU با کارای ی بالا در ارتباط مستقیم با تمامی ۳۲ ثبات عمومی قرار دارد. در تنها یک چرخه ساعت، عملیات حسابی بین ثباتهای همه منظوره یا بین یک ثبات و یک مقدار بلافصل انجام میشود. عملیات ALU، به سه دسته اصلی عملیات حسابی، منطقی و بیتی قسیم میشوند. بعضی از میکروکنترلرهای دارای امکان انجام عمليات ضرب پرقدرت به صورت علامندار و بدون علامت و قالب کسری هستند.

حافظه ها در ATMEGA 16

این بخش انواع حافظه ها را توصیف میکند.معماری AVR دارای دو فضای حافظه است. یک فضا به عنوان حافظه برنامه و فضای دیگری به عنوان حافظه داده است. علاوه بر این 6ATmegal دارای یک حافظه E EPROM برای ذخیره داده نیز میباشد. تمامی این سه فضا خطی و منظم هستند.

حافظه برنامه فلش با قابلیت برنامه ریزی درون سیستمی

ATMEGA 16دارای حافظه برنامه فلش از نوع قابل برنامه ریزی بصورت برنامه ریزی سوار بر تراشه درون سیستمی است، یعنی بدون نیاز به خارج کردن تراشه میکروکنترلر از مدار میتوان برنامه را در حافظه فلش قرار دادحجم این حافظه در ATmega16 برابر ۱۶ کیلو بایت میباشد.

تعداد ۱۶ یا ۳۲ بیت عرض دارند، حافظه برنامه فلش چون اكثر دستورالعملهای ATmega16 به به صورت AK مکان حافظه ۱۶بیتی است. حافظه فلش برنامه به دو قسمت بخش برنامه راه انداز و بخش برنامه کاربردی تقسیم میشود.

حافظه داده SRAM

شکل ۸-۱۴ نشان دهنده فضای آدرس دهی حافظه SRAM میکروکنترلر ATmega16 می باشد. فایل ثبات، حافظه I/O و حافظه داده SRAM داخلی همگی در۱۱۲۰ مکان پایين حافظه داده قرار دارند. اولین ۹۶ محل در حافظه داده فایل ثبات و حافظه I/O را آدرس دهی میکنند ۱۰۲۴ مکان بعدی حافظه داده SRAM را آدرس دهی می کنند. ۵ حالت آدرس دهی متفاوت برای پوشش حافظه دارد شامل حالت مستقیم، حالت غیرمستقیم با جابجایی، غيرمستقيم باثبات غیر مستقیم با پیش افزایش و غیرمستقیم با پس افزایش موجود است. در فایل ثبات، ثباتهایR26 تا R31 به عنوان ثباتهای اشاره گر برای حالت آدرس دهی غیرمستقیم بکار میروند حتی آدرس دهی مستقیم تمامی فضای حافظه داده را پوشش میدهد. حالت آدردهی با جابجایی با استفاده از مقادیر ثباتهای Y یا Z به ۶۳ مکان آدرس دسترسی دارد. هنگامی که از حالت های ادرسدهی غیر مستقیم با ثبات با پیش کاهش و پس افزایش خودکار استفاده می کنیم محتوای ثباتهای آدرس Y X و Z را می توان افزایش یا کاهش داد. ۳۲ ثبات کاری همه منظوره ،64 ثبات I/Oو1024 بایت حافظه داده داخلی SRAM در ATmega16همگی از طریق تمامی این حالتهای ادرس دهی قابل دسترس هستند.

 

 

حافظه داده EEPROM

میکروکنترلر ATmega16  شامل 512 بایت حافظه داده از نوع EEPROM است که بصورت یک فضای داده جداگانه سازماندهی شده است. که در ان بایت های مجزا را میتوان نوشت یا خواند.این حافظه دارای نوشتن و پاک کردن 100000بار میباشد.

اجزا میکرو کنترلر ATmega16

سیستم های ساعت وتوزیع انها

شکل زیر سیستم های ساعت اصلی و توزیع انها را در میکروکنترلرهای AVR را نشان میدهد.در یک زمان مشخص نیازی به فعال بودن همه منابع ساعت نمیباشد.برای کاهش مصرف توان ،پالس های ساعتی که به ماژول غیرفعال میروند را میتوان بطور کامل متوقف یا یا در وضعیت خواب قرار داد.

 

ساعت ورودی /خروجی(clk): ساعت ورودی اخروجی، توسط اغلب ماژولهای ورودی خروجی مانند زمان سنج /شمارنده، SPL و USART استفاده میشود. ساعت ورودی خروجی همچنین برای ماژولهای وقفه خارجی استفاده میشود. البته باید توجه داشت که برخی از وقفه های خارجی توسط منطق ناهمگام  تشخیص داده میشوند که به این وقفه ها اجازه میدهد که حتی در جان خاموش بودن ساعت ورودی اخروجی، تشخیص داده شوند. همچنین باید توجه داشتی شناسای ی آدرس در ماژولهای TI هنگامی که clkiro متوقف باشد به صورت ناهمگام انجام میشود که این کار، دریافت آدرس TWI را در تمام حالتهای خواب میسر میسازد.

ساعت فلش (clkASH): ساعت فلش عملیات مربوط به واسط فلش را کنترل می کند. ساعت فلش معمولا به صورت همزمان با ساعت CPU فعال است.

ساعت زمان سنج ناهمگام (clkAsx) ساعت زمان سنج ناهمگام اجازه میدهد که زمان سنج شمارنده ناهمگام به صورت مستقیم از ساعت کریستال ۳۲ کیلوهرتز خارجی استفاده کند این منبع ساعت اختصاصی باعث میشود که بتوان از زمان سنج اشمارنده به عنوان یک شمارنده بلادرنگ حتی زمانی که دستگاه در حالت خواب به سر می برد، استفاده کرد.

ساعت clkapc ADCاین ساعت، یک ساعت اختصاصی برای مبدل آنالوگ به رقمی AD است. این موضوع امکان توقف ساعت CPU و ساعت ورودی اخروجی به منظور کاهش نویز توليد شده توسط مدارهای رقمی را فراهم مینماید. بدين شكل عمليات تبدیل ADC صحیح تر میشود.

منابع ساعت

میکرو کنترلر می تواند از منابع ساعت مختلفی استفاده کند. انتخاب منبع ساعت توسط بیت های فیوز فلش که در جدول ۹-۱ آمده انتخاب میشود. سیگنال ساعت از منبع انتخاب شده به مولد ساعت میکروکنترلر وارد شده و به ماژولهای مناسب مسیردهی میشود.

انواع حالت های خواب:

– وضعیت بیکار

– وضعیت خاموش

– وضعیت صرفه جوی ی توان

– وضعیت آماده باش

– وضعیت آماده باش توسعه یافته

حالت بیکار

این حالت خواب، پردازنده را متوقف می کند و در عین حال اجازه میدهد که واسط ، TWI ،USART  مقایسه کننده آنالوگ، مبدل آنالوگ به رقمی، زمان سنج نگهبان زمان سنج /شمارنده ها، و وقفه سیستم به کار خود ادامه دهند. این حالت خواب اساسا CKASH ،CLKP را متوقف میکند، در حالی که سایر ساعتها به کار خود ادامه مدهند. حالت بیکار

میکروکنترلر را قادر میسازد که وقفه های خارجی و نیز وقفه های داخلی شامل وقفه سریز زمان سنج و وقفه تکمیل ارسال USART موجب بیدار شدن میکرو کنترلر گردند. اگر بیدار شدن

در نتیجه وقفه مقایسه کن نده آنالوگ لازم نباشد، مقایسه کن نده آنالوگ می تواند با تنظیم بيت ACD  در ثبات کنترل و وضعیت ACSR خاموش شود. اینکار مصرف جریان را در حالت بیکار تقلیل میدهد. اگر مبدل ADC فعال شود، یک تبدیل از آنالوگ به رقمی بطور خود کار در هنگام ورود به حالت خواب آغاز میشود.

حالت کاهش نویز مبدل ADC

این حالت خواب پردازنده را متوقف میکند و در عین حال اجازه میدهد که بخش مراقب آدرس رابط TWI، مبدل آنالوگ به رقمی، زمان سنج نگهبان  زمان سنج شمارنده ۲ و وقفه های خارجی سیستم به کار خود ادامه دهنده این حالت خواب اساسا

CLKcpv ,CLKio و CLKFL۸SH را متوقف می کند. در حالی که سایر ساعتها به کار خود ادامه میدهند. این حالت خواب میکروکنترلر شرایط محیط را از نقطه نظر نویز برای مبدل ADC بهبود میبخشد و امکان اندازه گیری و تبدیلهای نمونه های آنالوگ به رقمی دقیق تری را توسط ADC  فراهم میسازد. اگر مبدل ADC فعال شود. یک تبدیل از آنالوگ به رقمی بطور خودکار در هنگام ورود به حالت خواب آغاز میشود. علاوه بر وقفه تکميل تبديل DC عوامل دیگری چون باز نشانی خارجی، باز نشانی زمان سنج نگهبان، باز نشانی باشی از افت ولتاژ تغذیه وقفه بخش مراقت آدرس رابط TWI، وقفه زمان سنج اشمارنده ۲. وقفه امادگی SPMEEPROM وقفه های حساس به سطح INT0 و INT1، یا یک وقفه خارجی روی پایه INT2، میتوانند میکروکنترلر را از حالت خواب کاهش نویز مبدل ADC خارج کنند.

حالت خاموش

در این حالت خواب، ساعت خارجی متوقف میشود، در حالی که وقفه های خارجی، بخش مراقب آدرس رابط TWI و زمان سنج نگهبان به کار خود ادامه میدهند تنها باز نشانی خارجی، باز نشانی زمان سنج نگهبان، باز نشانی ناشی از افت ولتاژ تغذیه، وقفه بخش مراقب آدرس رابط TWI و وقفه زمان سنج اشمارنده ۲ می توانند میکروکنترلر را از حالت خواب خارج کنند. این حالت خواب تمام منابع ساعت را غیرفعال میسازد و تنها ادامه کار بخشهای ناهمگام میکروکنترلر را اجازه میدهد. توجه داشته باشید که اگر یک وقفه حساس به سطح بیدار کردن میکرو کنترلر از این حالت خواب بکار رود، تغییر سطح باید برای مدت زمان کافی نگام داشته شود تا میکرو کنترلر از خواب بیدار شود. هنگام بیدار شدن از این حالت خواب، یک تاخیر بین زمانی که شرایط بیداری رخ میدهد و زمانی که بیداری عملا اتفاق میافتد وجود دارد. این موضوع به ساعت میکروکنترلر فرصت میدهد که از نو شروع بکار نموده و پایدار گردد. زمان بیداری توسط بیتهای فیوز CKSEL که زمان مهلت باز نشانی را تعریف می کنند تعیین میشود.

حالت صرفه جوی ی در توان

این حالت خواب، شبیه حالت خاموش است با این تفاوت که اگر زمان سنج /شمارنده ۲ بصورت ناهمگام ساعت دریافت نماید یعنی بیت AS2 در ثبات AS SR یک شود، زمان سنج /شمرنده ۲ در طی حالت خواب بکار خود ادامه میدهد. میکروکنترلر یا به دلیل سرریز زمان سنج یا به دليل رویداد مقایسه خروجی زمان سنج /شمارنده ۲ چنانچه وقفه زمان سنج /شمارنده ۲ در ثبت TIMSK و نیز وقفه سراسری در ثبات SREG یک شده باشند از خواب بیدار میشود چنانچه زمان سنج ناهمگام بصورت ناهمگام ساعت نخورد، حالت خاموش به جای حالت صرفه جویی در توان توصیه میشود، چراکه محتوای ثباتها در زمان سنج ناهمگام باید بعد از بیداری هرچه صرفه جوی ی در توان نامشخص تلقی شوند .

 

 

حالت آماده باش

این حالت خواب شبیه حالت خواب خاموش است با این تفاوت که نوسان ساز روشن میماند و میکروکنترلر با ۶ چرخه ساعت از خواب بیدار میشود.

حالت آماده باش توسعه یافته

این حالت خواب شبیه حالت خواب صرفه جویی در توان است با این تفاوت  که نوسان ساز روشن باقی میماند و میکرو کنترلر با ۶ چرخه ساعت از خواب بیدار میشود.

 

درگاههای ورودی خروجی

تمامی درگاه های AVR هنگامی که به عنوان درگاه های عمومی ورودی خروجی رقمی مورد استفاده قرار می گیرند، قابلیت خواندن، نوشتن، و تغییر را دارند؛ بدین معنی که جهت یک پایه از درگاه میتواند بدون تغییر ناخواسته جهت سایر پایه ها توسط دستور العملهای SBI و CBI تغییر کند. همان قاعده برای تغییر مقدار یک پایه (هنگامی که پایه در وضعیت خروجی تنظيم شده باشد) و یا فعال یا غیر فعال کردن مقاومتهای بالاکش (هنگامی که پایه به عنوان ورودی تنظیم شده باشد) صادق است. همه بافرهای خروجی قابلیت جریان دهی و جریان کشی بالایی دارند؛ جریان دهی پایه ها به اندازه کافی قوی است که بتوان ند بطور مستقیم یک LED را راماندازی کنند. تمامی پایه ها دارای مقاومتهای بالاکش قابل انتخاب به همراه یک منبع ولتاژ با مقاومت نامتغیر هستند. تمامی پایه های ورودی اخروجی دارای دیودهای محافظ متصل به Vc c و زمین هستند. برای دستیابی به لیست کامل پارامترها به برگه های داده مشخصات الکتریکی میکروکنترلر مراجعه کنید.

تمامی ثباتها و ارجاعات به بیتها در این فصل بصورت عمومی نوشته میشوند. X نماینده حرفی است که برای شماره گذاری درگاه ها استفاده میشود و n با( حرف کوچک) نشان دهنده شماره بیت است. با این حال وقتی از تعاریف  در یک برنامه برای نشان دادن اسم یک ثبات و یا شماره بیت استفاده می کنیمه باید از نام کامل و دقیق آنها استفاده شود؛ برای مثال از PORTB3 برای نشان دادن بیت سوم برگه B استفاده میگردد و در اینجا بصورت عمومی PORTxn نشان داده میشود.

زمان سنج / شمارنده ها

یک جزء مهم در اکثر میکروکنترلرها، زمان سنج شمارنده میباشد. زمان سنج شمارنده ها توسط میکرو کنترلر برای زمان بندی و شمارش رویدادها استفاده میشوند. زمان سنجی توسط شمارنده شمارش پالسهای ساعت صورت می گیرد. رسیدن تعداد پالسهای شمارش شده به یک مقدار معين یا به مقدار کف یا سقف آن میتواند موج بروز وقفه گردد که در روال وقفه اقدام موثر در پاسخ به رویداد رخ داده انجام میشود. پالسهای اعمالی به زمان سنج شمارنده توسط یک پیش تقسیم کننده تولید میشوند و یا این پالسها می توان ند نتیجه رویداد یک واقعه مثل عبور کالاها از مقابل یک حسگر نوری بر روی یک خط نقاله و مانند آن باشند. از زمان سنج شمارنده ها برای تولید موج استفاده میشود.  

 

زمان سنج/شمارنده صفر، به همراه مدولاسیون پهنای پالس

زمان سنج شمارنده صفر یک ماژول زمان سنج اشمارنده ۸ بیتی همه منظوره و تک کاناله

می باشد. امکانات و ویژگیهای اصلی آن عبارتند از:

. یک شمارنده همراه با واحد مقایسه

پاک کردن زمان سنج پس از مقایسه-برابری  ctc  

مدولاتور پهنای پالس با فاز صحیح و بدون جهش

 شمارنده رویداد خارجی

منابع وقفه سرریز زمان سنج

 

 

ثبات زمان سنج شمارنده یا TCNTO و ثبات 0CR0((، Output Compareثباتهای ۸ بیتی هستند. سیگنالهای تقاضای وقفه که در شکل با Int. .Req نشان داده شده است، همگی در ثبات پرچم وقفه زمان سنج )TIFR(، قابل مشاهده هستند. زمان سنج اشمارنده، میتواند بصورت داخلی، توسط پیش تقسیم کن نده و یا از طریق پایه TO بصورت خارجی پالس ساعت دریافت نماید. مدار منطقی انتخاب ساعت’، منبع پالس ساعت ولبه ای را که زمان سنج شمارنده برای افزایش )یا کاهش( مقدار خودش استفاده می کند را کنترل مینماید.

 

 

تعاریف:

 

منابع ساعت زمان سنج /شمارنده

زمان سنج اشمارنده می تواند از داخل میکروکنترلر یا از بیرون آن پالس ساعت دریافت نماید. منبع ساعت توسط واحد انتخاب ساعتکه توسط بیتهای انتخاب ساعت )CS02:0( در ثبات کنترلیزمان سنج اشمارنده )TC CR0( کنترل میشود، قابل انتخاب است.

 

Count: کاهش یا افزایش تک واحدی TCNT0 به میزان یک واحد

Direction:تعیین کننده جهت شمارش )صعودی یا نزولی(

Clear:پاک کردن TCNT0 )صفر کردن تمام بیتها(

Clkто: ساعت زمان سنج شمارنده شماره

BOTTOM : معلوم می کند که TCNT0 به مقدار کمینه خود )یعنی صفر( رسیده است.

 

 

۰ واحد Output Compare

مقایسه گر ۸ بیتی بطور مداوم مقدار ثبات Ouput Compure یعنی ثبات )OCRO( را با TCNTO مقایسه می کند؛ هر زمان که TCNT0 با OCR0 برابر شد، مقایسه گر یک تطبیق را گزارش می دهد؛ این تطبیق میتواند در چرخه ساعت زمان سنج بعدی، پرچم Output Comparc و در صورتی که اجازه داده شود )بیت 0CIE0 و بیت وقفه سراسریI در SREG یک باشند(، پرچم Output Compare یک وقفه Output Compare تولید می کند. پرچم OCF0 بطور خودکار، هنگامی که وقفه اجرا شود، صفر میشود؛ یا اینکه میتوان آنرا با نوشتن یک منطقی در محل بیت J/O مربوط به آن، صفر کرد. مولد شکل موج از سیگنال تطبيق برای تولید یک خروجی بر اساس حالت عملیاتی، که توسط بیتهای WGMO1:0 و بیتهای حالتM۸ و BOTTOM هم در برخی از حالتهای عملیاتی، توسط مولد سیگنال، برای مدیریت برخی  حالات خاص از مقادیر حدی، مورد استفاده قرار می گیرند .

اگر از هر یک از حالتهای PW M استفاده شود، ثبات OCR0 بصورت دوبل بافر خواهد شد؛ برای حالت عادی و حالت پاک کردن زمان سنج پس از مقایسه-برابری )CTC(، امکان بافر نمودن دوبل، غیر فعال میشود. بافر نمودن دوبل، بروزرسانی ثبات OCR0 را با حد بالا یا پای ین دنباله شمارش )یعنی مقادیر TOP وBOTTOM(، همگام می کند. همگام سازی، از وقوع پالسهای PWM نامتقارن جلوگیری می کند، در نتیجه خروجی بدون جهشهای ناخواسته خواهد شد. دسترسی به ثبات OCR0 م مکن است پیچیده به نظر برسد، اما اینطور نیست. در صورتی که وضعیت بافر نمودن بصورت دوبل فعال باشد، CPU به ثبات بافر OCR0 دسترسی دارد.

 

بازنشانی پیش تقسیم کننده

پیش تقسیم کن نده مستقل از واحد انتخاب ساعت زمان سنج شمارنده عمل میکند و بين به اشتراک گذاشته شده است. هنگامی که یک زمان سنج شمارندهای فعال باشد و توسط پیش تقسیم کن نده پالس ساعت دریافت کند (1 < CSn2:0 >6(، تعداد سیکلهای ساعت سیستم، از زمانی که زمان سنج فعال میشود تا زمان رخداد اولین شمارش میتواند از 1 تا 1+N سیکل ساعت سیستم به طول بیانجامد. N در اینجا مساوی تقسيمات پیش تقسیم کننده است و میتواند یکی از مقادیر ۸، ۶۴، ۲۵۶ و یا ۱۰۲۴ باشد. لذا می توان از بازنشانی پیش تقسیم کن نده، برای همگام کردن زمان سنج شمارنده با اجرای برنامه استفاده نمود. اما باید دقت نمود که زمان سنج شمارنده دیگر نیز از همین پیش تقسیم کن نده استفاده مینماید. یک بازنشانی پیش تقسیم کن نده، پریود پیش تقسیم کن نده را برای تمامی زمان سنج شمارنده هایی که  بدان متصل هستند مینماید.

منبع ساعت خارجی

یک منبع ساعت خارجی متصل به پایه TI/T0 میتواند به عنوان ساعت )Clkrj/ClkTo( أستفاده شود. پایه T1/T0، در هر سیکل ساعت یکبار توسط واحد همگام سازی پایه نمونه برداری میشود سیگنال همگام شده )نمونه برداری شده( سپس از اشکارساز لبه عبور میکند.

ثباتها در لبه مثبت ساعت سیستم )clkyo(، پالس ساعت دریافت می کنند. تشخیص دهنده لبه، یک پالس ClkT1/Clkro برای هر لبه مثبت )7=CSn2:0( یا منفی )6=CSn2:0( که آشکار میسازد تولید می کند.

 

 

زمان سنچ شمارنده ۱۶ بیتی شماره ۱

مان سنج شمارنده ۱۶ بیتی امکان زمان بندی دقیق برای اجرای برنامه )مدیریت

حداده(. توليد شکل موج و اندازه گیری زمانی سیگنال را فراهم میآورد. ویژگیهای اصلی این

مان سنج شمارنده عبارتند از

 دقت ۱۶ بیتی )که امکان PWM از نوع ۱۶ بیتی را فراهم میسازد(

دو واحد Output Compare مستقل

. ثباتهای Output Compare با امکان بافرشدن بصورت دوبل

. یک واحد Input Capture

. یک حذف کن نده نویز Input Capture

پاک کردن زمان سنج در برابری مقایسه’ CTC )با قابلیت بارگذاری مجدد)و بدون جهش

مدولاتور پهنای پالس با فاز صحیح Phase(، Correct )PWMبدون خطا

  • PWM با پریود متغیر مولد فرکانس
  • شمارنده رویداد خارجی

چهار منبع وقفه مستقل TOV1,(OCF1A, 0CF1B, )ICF1

 

ثبات Input Capture میتواند مقدار زمان سنج اشمارنده را در یک رخداد خروجی مشخص و یا پایه های مقایسه گر آنالوگ دریافت کند )رجوع شود به بخش مقایسه گر آنالوگ(. واحد Input Capture شامل یک واحد فیلتر رقم حذف کن نده نویز( برای کم کردن احتمال دریافت پالسهای سوزنی ناشی از نویز است)

حائز اهمیت است بدانیم که دسترسی به ثباتهای ۱۶ بیتی از نوع عملیات اتمی است. یعنی اینکه بین دسترسی به هر یک از ثباتهای ۸ بیتی یک ثبات ۱۶ بیتی نباید وقفهای بیفتد. اگر بين دو دستورالعمل که هر یک قصد دسترسی به یکی از ثباتهای ۸ بیتی یک ثبات ۱۶ بیتی را دارند وقفهای اتفاق بیافتد، و برنامه وقفه، ثبات موقت را با دسترسی به همان ثبات زمان سنج ۱۶

بیتی یا دیگر ثباتهای ۱۶ بیتی زمان سنج به روز کند، نتیجه این دسترسی در خارج از وقفه اشتباه خواهد بود. بنابراین، در حالتی که برنامه اصلی و برنامه وقفه هر دو ثبات موقت را به روز می کنند، برنامه اصلی باید در حین دسترسی ۱۶ بیتی، وقفه ها را غیر فعال کند.

نمونه برنامه زیر چگونگی خواندن اتمی از محتوای ثبات TCNT1 را نشان میدهد. خواندن از هریک از ثباتهای 0CR1A/B یا ICR1 میتواند با استفاده از اصول مشابه انجام شود. برنامه اسمبلی فوق مقدار TCNT1 را به جفت ثبات r17:r16 باز می گرداند.

 

حذف کننده نویز

حذف کننده نویز، ایمنی در برابر نویز را با یک فیلتر ساده افزایش میدهد. ورودی حذف کننده نویز طی چهار نمونه نظارت میشود. برای تغییر خروجی حدف کن نده نویز که آن نیز به نوبه خود برای استفاده تشخیص دهنده لبه بکار میرود، باید تمامی ۴ نمونه یکسان باشند.

حذف کننده نویز با یک کردن بیت حذف کن نده نویز ICNC1)( Input Captureدر ثبات کنترل زمان سنج/شمارنده TCCR1B)( Bفعال میشود. وقتی که حذف کن نده نویز فعال شود، از زمان اعمال یک تغییر روی ورودی تا زمان به روز رسانی ثبات ICR1، تاخير اضافی به اندازه چهار چرخه ساعت سیستم اعمال می کند.

 

حالت Compare Output و تولید شکل موج

مولد شکل موج بیتهای COM1x1:0 را در حالتهای عادی، CTC و PWM بطور متفاوت می کند. برای تمامی حالتها، تنظیم 0=COM1X1:0 به مولد شکل موج اعلام میدارد که هیچ عملی روی ثبات OC1 در مقایسه -برابری بعدی صورت نگیرد.

 

واحد خروجی برابری مقایسه

بیتهای حالت Compare Output یعنی بیتهای )COM21:0( دو کاربرد دارند. مولد شکل موج از بيتهای COM21:0 برای تعیين وضعیت OC2)( Output Compareدر مقایسه برابری می کند. همچنین بیتهای COM21:0 منبع خروجی پایه OC2 را کنترل می کنند.استفاده بعدی شکل ۱۰-۳۰ شمای ساده شدهای از مداری که از تنظيمات بیتهای COM21:0 تاثیر می پذیرد.

را نشان میدهد. صرفا بخشهای ی از ثباتهای کنترلی درگاه های ورودی اخروجی , DDR( ( که متاثر از بیتهای COM21:0 هستند.

عملکرد عمومی درگاه ورودی/خروجی اگر هر یک از بیتهای COM21:0 یک شوند، توسط مولد شکل موج ملغی میشود. اما جهت پایه OC2 )ورودی یا خروجی(،هنوز توسط ثبات جهت داده )DDR(، برای این پایه کنترل میشود. بیت ثبات جهت داده برای OC2 )DDR_OC2(، باید قبل از رویت شدن مقدار OC2 روی پایه، تنظیم شود. تابع ملغی کردن عملکرد عادی درگاه، مستقل از حالت تولید شکل موج است.

AS2: بیت ناهمگام زمان سنج / شمارنده ۲

زمانی که مقدار صفر در AS2 نوشته شود، پالس ساعت زمان سنج شمارنده ۲ از clk i\o تامین میشود. زمانی که مقدار یک در AS2 نوشته شود، پالس ساعت زمان سنج شمارنده از نوسان ساز کریستالی متصل به پایه اوسیلاتور زمانسنج ۱ )1 TOSC( تامین میشود. زمانی که مقدار AS2 عوض شود، محتويات OCR2 ،TCNT2 و TC CR2 ممکن است آسیب ببیند.

TCN2UB: بیت update busy زمان سنج /شمارنده ۲’

زمانی که زمان سنج اشمارنده ۲ به صورت ناهمگام در حال کار است و در TCNT2 نوشته شده است، این بيت یک میشود. زمانی که TCNT2 با مقدار موجود در ثبات ذخیره سازی موقت به روز رسانی میشود، این بیت به وسیله سخت افزار صفر میشود. یک صفر منطقی در این بیت به معنی آن است که TCNT2 برای به روز شدن با یک مقدار جدید آماده است.

 

بیت update busy زمان سنج اشمارنده ۲’

زمانی که زمان سنج اشمارنده ۲ به صورت ناهمگام در حال کار است و در TCNT2 نوشته شده است، این بيت یک میشود. زمانی که TCNT2 با مقدار موجود در ثبات ذخیره سازی موقت به روز رسانی میشود، این بیت به وسیله سخت افزار صفر میشود. یک صفر منطقی در این بیت به معنی آن است که TCNT2 برای به روز شدن با یک مقدار جدید آماده است.

پیش تقسیم کننده برای زمان سنج \ شمارنده 2

دیدگاه‌ خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *