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

 برای اینکه توضیح بدم جدول روند رو چطور میشه طراحی کرد یه مثال میزنم:

فرض کنید که شما میخاهید یه فلیپ فلاپ D طراحی کنید که با لبه بالا رونده پالس ساعت تریگر بشه، شرایطی که مدار شما داره به این صورته:

  • زمانی که در سطح پالس ساعت (که اسم اون رو C میزاریم)  هستیم ( یعنی ورودی پالس ساعت ثابته) خروجی مدار ( که اسمش رو Q میزاریم) تغییر نمیکنه یعنی اگه 1 باشه ثابت میمونه و اگه 0 هم باشه باز هم ثابت میمونه.
  • زمانی که در لبه بالا رونده پالس هستیم ( یعنی زمانی که ورودی پالس ساعت داره از 0 به 1 میره) ورودی مدار (که اسمش رو D میزاریم)  هرچی باشه به خروجی Q منتقل میشه به عبارت دیگه در لبه بالا رونده پالس ساعت Q برابر D میشه
  • زمانی که در لبه پایین رونده پالس ساعت هستیم مانند زمانیه که در سطح پالس هستیم

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

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

شمای کلی از فلیپ فلاپ D

 فرض کنید که در حال حاضر ورودی ها هر دو 0 و خروجی مدار هم 0 است، این فرض اولیه میتونه متفاوت باشه اما فراموش نکنید که در طراحی نهایی تاثیری نداره و تنها ممکنه باعث بشه که سطر های جدول روند جابجا بشن.

جدول روند: جدول روند یک مدار منطقی ترتیبی آسنکرون، جدولی است که سطرهای آن مشخص کننده حالات مدار و ستون های آن وضعیت های مختلف ورودی های مدار رو مشخص میکنه، چونکه مدار ما دوتا ورودی داره بنابراین جدول روند ما باید (2 به توان 2 یعنی) 4  تا ستون داشته باشه، بالای هر ستون وضعیت ورودی ها رو می نویسیم و ترتیب وضعیت ها رو مانند کد گذاری گِرِی انجام میدیم، به این ترتیب ستون های کنار هم تنها در یک بیت اختلاف دارن.ابتدای هر سطر از جدول یک حرف انگلیسی (اگه دوست دارید فارسی رو پاس بدارید میتونید از حروف فارسی استفاده کنید) مینویسیم که که نام اون حالت رو مشخص میکنه و در مراحل بعدی طراحی مدار میشه اون رو به رقم های دودویی تبدیل کرد که اون خودش یه بحث دیگه اس.

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

10 11 01 00 DC:
      a/0 a

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

برای پر کردن ستون ها خالی جدول به چند نکته توجه کنید:

نکته1:به منظور جلوگیری از بروز خطا در هر سطر فقط یکی از ستون ها رو پایدار در نظر میگیریم و اگر در ستون های دیگه هم حالت پایدار داشته باشیم ( مثل همین مورد) یه حالت جدید (یعنی یه سطر جدید برای جدول ) تعریف میکنیم.

نکته2: برای ستون 11 مقداری اختصاص نمیدیم به دو دلیل: دلیل اول اینکه عملا نمیشه هر دو ورودی مدار رو با هم تغییر داد حتی اگه دو ورودی رو به هم وصل کنیم باز هم به دلیل اینکه طول سیم ها متفاوته یکی ازورودی ها زود تر از دیگری تغییر میکنه، و دلیل دوم اینکه اگر فاصله بین تغییر دو ورودی از یه حدی کمتر باشه پیش بینی وضعیت آینده مدار خیلی سخت میشه چون در حین اینکه مدار داره به وضعیت قبلی واکنش میده داریم ورودی رو تغییر میدیم و بسته به اینکه سیگنال تغییر در چه بخشی از مداره واکنش متفاوته، پس به طور کلی در هر سطر از جدول به ستونی که با حالت پایدار در بیش از یک بیت اختلاف داره حالت بعدی اختصاص نمیدیم (علامت "-" در جدول میگذاریم).

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

بر طبق نکاتی که گفتم ستون 11 رو علامت "-" میزاریم و برای دو ترکیب دیگه از ورودی ها دو تا حالت جدید به نام های b و c اختصاص میدیم و جدول این شکلی میشه:

10 11 01 00 DC:
c - b a/0 a
     b/0   b
 c/0       c

خروجی در حالت b برابر 0 است چون زمانی که از a به b میریم پالس بالا رونده ساعت ورودی D که برابر 0 است رو به خروجی منتقل میکنه و خروجی حالت c هم صفر است چون D برابر 1 شده اما هنوز به پالس بالا رونده ساعت نرسیدیم، به این ترتیب سطر اول جدول روند تکمیل میشه.

حالا میریم سراغ سطر دوم و حالت b: طبق انچه که در نکته 2 در مورد تغییر همزمان ورودی ها گفتیم ستون 10 رو با علامت "-" پر میکنیم، ستون 00 به معنی اینه که پالس ساعت دوباره از 1 یه 0 برگشته در حالی که D همون 0 باقی مونده، پس مشخصه که دوباره باید به حالت a برگردیم، ستون 11 به این معنیه که در حالتی که پالس ساعت برابر 1 است ورودی D هم 1 میشه پس یک حالت جدید به نام d اضافه میکنیم که مدار به اون حالت میره:

10 11 01 00 DC:
c - b a/0 a
-  d  b/0  a b
 c/0       c
   d/0     d

در سطر c برای ستون 01 علامت "-" در نظر میگیریم ستون 11 به معنی پالس بالا رونده ساعت است پس مجددا D رو به خروجی منتقل میکنیم و اینبار خروجی 1 میشه پس دوباره یک حالت جدید به نام e اضافه میکنیم و برای حالت 00 مثل اینه که چند لحظه ورودی D رو 1 کردیم و قبل از اینکه برای ورودی ساعت اتفاقی بیفته دوباره ورودی رو 0 کرده ایم پس دوباره به حالت a با خروجی 0 برمیگردیم، به این ترتیب سطر سوم (حالت c) تکمیل میشه.

10 11 01 00 DC:
c - b a/0 a
- d b/0 a b
c/0  e - a c
  d/0     d
  e/1     e

 در سطر d برای ورودی 00 مقدار "-" قرار میدیم و چون در هر دو حالت 10 و 01 پالس بالا رونده ساعت نداریم پس خروجی همان 0 باقی میماند و برای این ورودی ها و خروجی 0 حالت های پایدار c و b رو داریم که اضافه میکنیم

10 11 01 00 DC:
c - b a/0 a
- d b/0 a b
c/0 e - a c
c d/0 b  - d
  e/1    - e

 با توجه به اینکه ادامه توضیحات خسته کننده است فقط جدول رو گام به گام تکمیل میکنم

در سطر e برای ورودی های 01 و 10 به ترتیب حالت های جدید f و g رو اضافه میکنیم و برای ورودی 00 علامت "-" رو در نظر میگیریم

10 11 01 00 DC:
c - b a/0 a
- d b/0 a b
c/0 e - a c
c d/0 b - d
g e/1  f - e
    f/1   f
g/1       g

 در سطر f برای ورودی 00 حالت جدید h رو در نظر میگیریم و در ورودی 11 مدار به حالت e بر میگردد برای ورودی 10 هم علامت "-" رو میزاریم

10 11 01 00 DC:
c - b a/0 a
- d b/0 a b
c/0 e - a c
c d/0 b - d
g e/1 f - e
- e f/1 h f
g/1       g
      h/1 h

 در سطر g برای ورودی های 00 و 11 به ترتیب به حالت های h و e می رویم و برای ورودی 01 علامت "-" رو در جدول میگذاریم

10 11 01 00 DC:
c - b a/0 a
- d b/0 a b
c/0 e - a c
c d/0 b - d
g e/1 f - e
- e f/1 h f
g/1 e - h g
      h/1 h

 و در نهایت در سطر h برای ورودی های 01 و 10 به ترتیب به حالت های b و g میریم و برای ورودی 11 علامت "-" رو میگذاریم، دقت کنید که در ورودی 01 پالس بالا رونده ساعت رو داریم که باعث میشه خروجی به 0 تغییر کنه

10 11 01 00 DC:
c - b a/0 a
- d b/0 a b
c/0 e - a c
c d/0 b - d
g e/1 f - e
- e f/1 h f
g/1 e - h g
g  -  b h/1 h

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