تماس با ما

هرگونه پیشنهاد و انتقاد خود را با ما در میان بگذارید

هدف این مثال طراحی یک فلیپ فلاپ T است که به هر دو لبه بالا رونده و پایین رونده پالس ساعت حساسه، فلیپ فلاپ های حساس به هر دو لبه پالس ساعت امروزه بسیار پر کاربرد اند و اساس طراحی RAM های DDR همین موضوعه، با این تفاوت که در این RAM ها به جای فلیپ فلاپ از خازن استفاده میشه (بیشتر دوست دارید بدونید اینجا کلیک کنید).

 در این مثال مرحله به مرحله طراحی فلیپ فلاپ رو دنبال میکنیم خلاصه کار اینه:

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

 

1- ایجاد جدول روند اصلی ( اگر بلد نیستید که جدول روند اصلی بسازید اینجا کلیک کنید تا یاد بگیرید):

فرض میکنیم که مدار در حالت a است ورودی ها 00 و خروجی مدار 0 است (یادتون نره که بلاخره باید مدار در یک حالت اولیه باشه پس اگه دوست دارید یه حالت اولیه دیگه درنظر بگیرید اشکال نداره چون در نهایت جدول جریان اولیه شما همین شکلی میشه فقط ممکنه سطرهاش جابجا شده باشه).

با توجه به اینکه همزمان نمیشه T و C را تغییر داد (نپرسید چرا؟ نمیشه دیگه! نکته 1 رو ببینید! این یه فرض ضمنی در کلیه مراحل طراحی مدارهای ترتیبی آسنکرونه) پس ورودی ها یا به TC=01 و یا به TC=10 تغیر میکنند، با توجه به تعریفی که از فلیپ فلاپ T حساس به هر دو لبه پالس داریم ( در فلیپ فلاپ T حساس به هردو لبه پالس هرگاه پالس ساعت بالا یا پایین بِرِه اگر ورودی T برابر 1 باشد فلیپ فلاپ تریگر میشه،) در هر دو تغییر ورودی TC=01 و  TC=10 تغییری در خروجی حاصل نمیشه چون در حالت TC=01 سیگنال تغییر نداریم و در حالت TC=10 پالس ساعت نداریم.

در طراحی جدول روند اصلی برای جلوگیری از بروز خطا در هر حالت (هر سطر از جدول)  تنها مدار رو برای یکی از 4 وضعیت ورودی (منظور وضعیت های  TC= 00،01،10،11 هست)  پایدار در نظر میگیریم و برای سایر وضعیت ها حتی در صورتی که مدار به حالت پایدار برسه، این حالت رو یک حالت جدید در نظر میگیریم، پس از تکمیل جدول جریان اولیه به کمک جدول ایجاب حالت های معادل رو میشه پیدا کرد و جدول رو خلاصه کرد. برای تکمیل جدول جریان اولیه موارد زیر رو رعایت کنید:

  1. ورودی های T و C را به طور همزمان تغییر نمیدیم ( عملا نمیشه همزمان تغییرشون داد حتی اگر اونها رو به هم وصل کنیم باز هم اختلاف طول سیم باعث میشه یکی زودتر تغییر کنه و بطور کلی اگر اختلاف زمان تغییر دو ورودی از یه حدی کمتر بشه پیش بینی حالت بعدی مدار مشکل میشه چون در حین اینکه مدار داره به تغییر قبلی واکنش میده و این واکنش تموم نشده ما داریم فرض میکنیم که یه تغییر دیگه به مدار اعمال میکنیم که این تغییر میتونه مشکل ساز بشه)، بنابراین در جدول برای تغییرات دو ورودی به طور همزمان علامت "-" قرار میدیم که به معنی بی تفاوت یا don’t care هست ( همون “x” در جدول کارنو).
  2.  تنها زمانی حالت جدید به جدول اضافه کنید که در آن ستون برای این ورودی و خروجی ها حالت پایداری وجود نداره مثلا در جدول بالا وقتی در حالت پایدار b که ورودی ها TC=01 است اگر ورودی به TC=11 تغییر کنه چون در این حالت خروجی همچنان باید صفر بمونه (هنوز به لبه پالس نرسیدیم) و برای این ورودی ها ( TC=11) و خروجی صفر حالت پایداری در جدول نیست حالت جدید d رو اضافه میکنیم ، در حالی که اگر در همون حالت b ورودی ها رو به TC=00 تغییر بدیم در این حالت هم خروجی باید صفر بمونه اما برای این ستون از جدول جریان اولیه و برای خروجی صفر حالت پایدار a وجود داره و نیازی به اضافه کردن حالت جدید نیست.
  3. با توجه به تعریفی که از فلیپ فلاپ T داریم به ازای هر ورودی TC باید حتما یک حالت پایدار برای خروجی صفر و یک حالت پایدار برای خروجی یک وجود داشته باشه چون این مدار به ازای همه ورودی ها همواره پایداره، به طور مثال در این مساله که داریم حل میکنیم 2 تا ورودی داریم و یک خروجی که در نتیجه جدول جریان اولیه باید 8 تا سطر (حالت) داشته باشه.

خب اینم جدول روند اصلی:

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

جدول روند اصلی رو که ساختید در مرحله بعد میرید سراغ خلاصه سازی جدول و پیدا کردن حالت های معادل.

برای این کار جدول ایجاب (اگه نمیدونید که جدول ایجاب چیه اینجا کلیک کنید) رو رسم می کنیم و حالت های معادل رو پیدا میکنیم(اگه یادتون رفته حالت های معادل چیه اینجا کلیک کنید) :

اگه به جدول ایجاب نگاه کنید متوجه میشید که :

  • بعضی از خونه ها با X پر شده، اینا حالت هایی هستن که نمیتونن معادل باشن چونکه وقتی که مدار به این حالت ها میره خروجی مدار متفاوته.
  • بعضی دیگه از خونه ها شرط معادل بودن رو نوشته مثلا شرط معادل بودن حالت های a و e (که در شکل مشخص شده) معادل بودن حالت های b و g هست که البته در خونه مربوط به b و g علامت X درج شده پس a و e معادل نیستن.
  • در سایر خونه ها علامت ok درج شده که به این معنیه که این حالت ها رو میشه معادل در نظر گرفت چون طبق جدول روند اصلی به ازای ورودی های مختلف یا به حالت های یکسانی میروند و یا به حالت بی تفاوت میروند که میشه اونها رو یکسان کرد ( چون بی تفاوته)
  • در صورتی که دو حالت رو معادل در نظر گرفتید باید خانه های جدول روند اصلی که با علامت "-" مشخص شده رو اصلاح کنید به طوریکه در هر دو حالت جدول روند اصلی یکسان باشند چون اگر این کار رو نکنید ممکنه مجددا این حالت رو با یک حالت دیگه معادل بگیرید و به این ترتیب به یک خانه بی تفاوت دو مقدار نسبت بدید.
  • همانطور که از جدول مشخصه تمامی حالت هایی که معادل بودنشون وابسته به معادل بودن دو حالت دیگه اس خط خورده پس فقط حالت هایی که ok دارن معادل هستن.

 در گراف زیر حالت های معادل رو به هم  وصل کردم تا بهتر مشخص بشه:

 

بر طبق گراف ما  معادل های زیر رو در نظر میگیریم:

a با b c با e d با f g با h
X Y Z W

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

 مرحله بعد تخصیص حالته که برای این کار ابتدا باید حالت های مجاور رو شناسایی کنیم و به اونها عددهای دودویی مجاور اختصاص بدیم، (در اینجا منظور از عدد های دودویی مجاور دو تا عدد دودوییه که فقط در یک بیت تفاوت دارن مثل کد گذاری گری)، دو حالت وقتی مجاور هستن که با یک تغییر در ورودی از یکی بشه به دیگری رفت، مثلا طبق جدول بالا از حالت X میشه با یک تغییر در ورودی به حالت های Y و Z رفت. در گراف زیر حالت هایی که مجاور هستن رو به هم وصل کردم:

خب حالا ممکنه بپرسید که اینکار برای چیه و چرا ما رو گیج میکنید؟ جواب اینه که ما میخایم خدای نکرده مدار در وضعیت رقابت بحرانی قرار نگیره، اگه نمیدونید که رقابت بحرانی چیه اینجا کلیک کنید تا متوجه بشید که چیه. البته یه رقابت غیر بحرانی هم داریم که اون اشکالی نداره.

برای اینکه تخصیص حالت های X و Y و Z و W به گونه ای انجام بشه که طبق شکل بالا کد های تخصیص یافته هر حالت مجاور هم باشند طبق جدول زیر تخصیص حالت انجام میدهیم، البته توجه کنید که اگر در شکل بالا Y و Z مجاور هم بودند انگاه برای تخصیص حالت با دو بیت به گونه ای که حالت های مجاور کد های مجاور داشته باشند با مشکل مواجه میشدیم، در چنین شرایطی مجبور بودیم یک حالت میانی را که مجاور هر دو حالت Y و Z است رو در نظر بگیریم ( مثلا به اسم M)  به طوری که در صورتی که نیاز به تغییر حالت از Y به Z بود ابتدا از Y به M رفته و سپس از M به حالت Z برویم و برعکس، البته در اینجا این مشکل وجود نداره و میشه به راحتی تخصیص حالت رو مثل جدول زیر انجام داد:

Y=10 X=00
W=11 Z=01

با این تخصیص حالت ها مطمئن هستیم که مدار ما دیگه رقابت بحرانی نداره.

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

بخشهایی از جدول که به رنگ خاکستری مشخص شده حالت های پایدار و بخش های بدون رنگ حالت های ناپایداره برای همین هم خروجی براش مشخص نشده، اما خروجی در این بخش ها رو نمیشه بی تفاوت در نظر گرفت بلکه باید دید که این حالت ناپایدار بین کدام حالت های پایدار قرار داره و در اون حالت های پایدار خروجی چی بوده ، در صورتی که خروجی هر دو حالت پایدار یکی باشه ، خروجی حالت ناپایدار میانی هم باید با اون دو حالت یکی باشه اما اگر خروجی دو حالت پایدار یکی نباشه میشه خروجی رو به صورت بی تفاوت در نظر گرفت، مثلا در جدول بالا اگر در حالت X باشیم و ورودی از 01 به 11 تغییر کنه خروجی ثابت و 0 است بنابراین در حالت میانی که ناپایداره هم خروجی رو 0 در نظر میگیریم به این ترتیب جدول این شکل میشه:

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

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

  1. جدول کارنوی مربوط به خروجی Y1 عبارت است از در شکل مشخصه که برای جلوگیری از هزارد دوتا جمله اضافه شده که با رنگ نارنجی مشخص شده
  2. جدول کارنوی مربوط به متغیر Y2 عبارت است از:
  3. جدول کارنوی مربوط به خروجی عبارت است از:

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

اینم شکل مدار نهایی:


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

http://maktabkhooneh.org/video/tabande517-20