דוגמא לאנליזה של מכונת מצבים ננסה להבין את פעולתה של מ כונת המצבים הבא
Transcription
דוגמא לאנליזה של מכונת מצבים ננסה להבין את פעולתה של מ כונת המצבים הבא
נספח לפרק 10 דוגמא לאנליזה של מכונת מצבים ננסה להבין את פעולתה של מכונת המצבים הבאה : Z output q1 D Q q0 Input X Q FF-1 ’Q D FF-0 ’Q clk 424 מצב המכונה מוגדר על ידי יציאות רכיבי הזיכרון .נסמן את המצב הנוכחי על ידי q0 , q1ואת המצב הבא על ידי Q0 , Q1 .המכונה מבוססת על הפליפ-פלופ הפשוט ( ETDFF ( Edge-Triggered D-FFשעבורו המצב הבא ) כלומר יציאתו לאחר עליית השעון הבאה ( זהה לערך כניסתו Dבזמן עליית השעון .כך נוכל לתאר את פעולת המכונה על ידי המשוואות : ’D0 = x • q1 ⇐ D1 = q0 ⇐ ’q1 Q1 = q0 q1 425 • Q0 = x • z = q0 חוקי מעבר אלו ניתנים לתיאור על ידי טבלת מעברי מצב ) ( state transition table וגם על ידי דיאגרמת מעברי מצב ( state transition diagram ) : 0/0 A01 1/0 A11 426 1/0 0/0 0,1/1 A00 0,1/0 A10 Ouput Next state Input z Q1 Q0 x q1 q0 0 1 0 1 0 1 0 1 00 00 01 01 10 10 11 11 0 0 0 0 0 0 1 1 00 01 10 11 00 00 10 10 Current state בכך הישגנו את מטרתנו וסיימנו לאפיין את המכונה הנתונה .הבנה מלאה של תפקיד המכונה הוא לעיתים קשה מאוד ,ובדרך כלל יש להעזר לשם כך בסדרות 427 בוחן עבורן נבחן את התנהגות היציאות . מימוש אלטרנטיבי באמצעות ROM כפי שראינו מכונת המצבים מורכבת ממעגל צירופי ) מימוש פונקציות המעבר והיציאה ( ומרכיבי זיכרון .ניתן לממש את החלק הצירופי על ידי זיכרון ROMישירות מטבלת מעברי המצב ,כמו זאת שבדוגמא למעלה .אגף שמאל בטבלה ) משמאל לקו המודגש ,כלומר הכניסות לפונקציות הצירופיות ( משמש כתובת ,ואגף ימין בטבלה ) ערכי הפונקציות הצירופיות ( מהווה את תוכן ה ROM -ומתקבל ביציאותיו : Input X Z output Q0 ROM 2 x SEL )(2→1 Q1 D 428 q0 q1 Q clk select q0 q1 בוחר בין כניסת Initial stateאו יציאות הזיכרון Initial state תכנון מערכת עקיבה סינכרונית )דוגמא( נתונה סדרת קלט ) x(nכאשר nהוא מונה זמן בדיד ) : …x(0), x(1),x(2 יש לחשב סדרת פלט מתאימה ) z(nכך ש . z(n)=x(n)x(n-1) -נגדיר “ תנאי שפה” . z(0)=0 דוגמא : 8 0 0 6 7 1 1 1 1 5 1 0 4 0 0 3 1 0 2 0 0 1 0 0 0 1 0 נצייר את דיאגרמת המצבים .צריך לזכור רק את הערך האחרון של : X 429 n x z 0/0 1/1 1/0 A B 0/0 משמעות המצבים היא: -Aהקלט הקודם היה ) 0מצב התחלתי ,כדי לקיים את תנאי השפה(. -Bהקלט הקודם היה . 1 מעברי המצבים בדוגמא לעייל הם : 430 8 7 6 5 4 3 2 1 0 n 0 1 1 1 0 1 0 0 1 x A B B B A B A A A B 0 1 1 0 0 0 0 0 z 0 המצב ההתחלתי ) (Aמצוין בצד שמאל .החיצים מדגימים מי תלוי במי וניתן להמשיכם כלפי ימין לכל אורך הציור .טבלת המצבים המתאימה היא : x=1 x=0 PS B,0 A,0 A B,1 A,0 B בטבלה יש שורה לכל מצב בו יכולה המערכת להימצא ,ועמודה לכל צירוף אפשרי של הקלט .זוג הערכים בטבלה מסמן את המצב הבא אליו תעבור המכונה ואת המוצא הנוכחי אותו תייצר המכונה .אם נשתמש במשתנה מצב בשם yונקצה y=1 ⇐ Aו y=1 ⇐ B -נקבל : 431 x=1 Y,z x=0 Y,z PS=y 1,0 1,1 0,0 0,0 0 1 נפצל את טבלת המעברים לשתי טבלות:טבלת מעברי מצב וטבלת היציאות בכדי שיהיה קל לחשב כל פונקציה בנפרד )כאשר יש יותר ממשתנה מצב אחד ,כדאי לפרק את טבלת המעברים לכל משתנה מצב בנפרד(: 432 x x 1 0 y 1 0 y 0 0 0 1 0 0 1 0 1 1 0 1 טבלת z כלומר 433 z= x •y טבלת Y , Y=x והמימוש ) באמצעות : ( ETDFF x z y D Q FF-0 Y ’Q קיבלנו מימוש של מכונת Mealyללא סינכרון כניסה .כיצד היא פועלת? הבה נבחן מה קורה בכל רגע ,על פי הדוגמא : 434 z 1 0 x 0 y 1 D Q FF-0 Y ’Q מצב המערכת מייד לפני עליית שעון 0 z 0 0 1 y x 0 D Q FF-0 Y ’Q 435 מצב המערכת מייד לפני עליית שעון 1 z 0 0 x 0 y 0 D Q FF-0 Y ’Q מצב המערכת מייד לפני עליית שעון 2 z 1 0 0 y x 1 D Q FF-0 Y ’Q 436 מצב המערכת מייד לפני עליית שעון 3 8 7 6 5 4 3 2 1 0 ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ 1 1 0 1 0 0 0 0 n clk x 0 1 X(0)=1 y מצב התחלתי 0 z 0 437 1 1 0 0 0 0 נניח לצורך הדיון שכל ההשהיות במעגל זניחות .הקטעים המקווקים מסמנים פרקי זמן בהם איננו יודעים מהי הכניסה x ,ובשל כך גם לא ניתן לקבוע במשך אותם פרקי זמן מה תהיה היציאה z .את היציאה יש לבדוק מיד כאשר הכניסה מתייצבת על ערכה החדש ,ולפני עליית השעון הבאה -לאחר עליית השעון עשוי משתנה המצב yלהשתנות ,ובעקבותיו תשתנה מיידית גם היציאה .ניתן להוסיף FF בכניסה על מנת לסנכרנה : x z Q y Q ’Q 438 D ’Q Y D px x 1 z Q 1 0 y D Q D px ’Q Y ’Q מצב המערכת לאחר עליית שעון 0 z x 0 0 Q 1 y 0 Q D Y ’Q 439 מצב המערכת לאחר עליית שעון 1 ’Q D px כעת המכונה תתנהג לפי הסכמה הבאה : 8 7 6 5 4 3 2 1 0 ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ 1 1 1 0 1 0 0 X(0)=1 n clk px 0 x מעוכב מחזור שעון אחד אחרי מערכת בלי סינכרון כניסה . y z )Z(7 )Z(6 )Z(5 )Z(4 )Z(3 )Z(2 )Z(1 )Z(0 440 1 1 0 0 0 0 0 0 כעת כמובן קל יותר לעקוב אחר היציאה ,כי היא יציבה במשך מחזור שלם ולא רק בפרק זמן קצר . נשים לב להשהייה של מחזור שעון אחד . 441 דוגמא נוספת :מונה בינארי מודולו 8 יציאת המונה z=1עם קבלת ה ’1’-השמיני ,השישה עשר , העשרים ורביעי … ,בקלט x 0/0 דיאגרמת המצבים פשוטה למדי : 0/0 1/0 0/0 S0 S1 1/0 0/0 1/1 S7 1/0 S2 0/0 S5 1/0 1/0 S3 S6 0/0 S4 1/0 442 0/0 0/0 1/0 נממש את המכונה ,לשם שינוי ,באמצעות רכיבי Trigger T-FFוכן SR-FF למימוש מכונה בת שמונה מצבים נזדקק לשלושה רכיבי זיכרון .טבלת המצבים היא : NS , z 443 x=1 x=0 PS S1, 0 S o, 0 S0 S2, 0 S3, 0 S4, 0 S5, 0 S6, 0 S7, 0 S0, 1 S1; 0,, S2, 0 S3, 0 S4, 0 S5, 0 S6, 0 S7, 0 S1 S2 S3 S4 S5 S6 S7 נקצה משתני מצב לפי הקוד הבינארי ונפריד את טבלות המעברים והיציאה : Y3Y2Y1 Z 444 x=1 x=0 x=1 x=0 y3y2y1 0 0 001 000 000 0 0 010 001 001 0 0 011 010 010 0 0 100 011 011 0 0 110 100 100 0 0 101 101 101 0 0 111 110 110 1 0 000 111 111 נממש באמצעות T-FF .פליפ-פלופ זה מוגדר על ידי טבלת המעברים הבאה: ) כאשר הכניסה T=1מחליף ה FF -את ערכו ,ולכן הוא קרוי : ( Trigger FF T=0 0 0 T=1 1 0 T=1 0 1 T=0 1 1 ניתן לממש T-FFעל ידי : D-FF S ET Q ’Q 445 D CLR T נפעיל את הגדרת T-FFעל טבלת המעברים לעיל ונקבל את טבלת העירור המציינת אילו כניסות צריך לייצר לשלושת ה FF -על מנת ליצור את המעברים הדרושים : TTT 1 2 3 0000 446 x=1 x=0 y3y2y1 001 000 000 011 000 001 001 000 010 111 000 011 001 000 100 011 000 101 001 000 110 111 000 111 פונקצית העירור: T1 = x T2 = xy1 T3 = xy1y2 פונקצית היציאה : z = xy1y2y3 מימוש: x z Q 447 y3 Q T3 y2 Q T2 y1 T1 המימוש מספק לא רק את היציאה zאלא גם את ערכי המונה בכל רגע ורגע, שהם משתני המצב ) כפי שבחרנו בעת הקצאת המצבים ( . מימוש באמצעותSR-FF : כעת הגדרת ה FF -שונה במקצת : 448 R S φ 0 0 0 0 1 1 0 1 0 0 1 0 φ 1 1 : טבלת העירור y3y2y1 x=0 x=1 S3R3 S2R2 S1R1 000 001 010 011 100 101 110 111 0φ 0φ 0φ 0φ φ0 φ0 φ0 φ0 0φ 0φ φ0 φ0 0φ 0φ φ0 φ0 0φ φ0 0φ φ0 0φ φ0 0φ φ0 S3R3 0φ 0φ 0φ 10 φ0 φ0 φ0 01 S2R2 S1R1 0φ 10 φ0 01 0φ 10 φ0 01 10 01 10 01 10 01 10 01 449 פונקציות העירור S1 = xy1’ R1 = xy1 S2 = xy1y2’ R2 = xy1y2 S3 = xy1y2y3’ R3 = xy1y2y3 :המימוש Y1’ x y1 Y2’ Y3’ S1 Q’ S2 Q’ S3 Q’ R1 Q R2 Q R3 Q y2 y3 z 450 xy3 y2y1 00 01 11 10 xy3 00 01 11 10 1 1 φ φ φ φ 1 1 y2y1 00 01 11 10 00 1 1 01 11 φ φ 10 φ φ φ φ S1 = xy1’ S2 = xy1y2’ xy3 y2y1 00 00 01 11 10 01 φ φ φ φ 11 10 φ φ 1 φ S3 = xy1y2y3’ 451 xy3 xy3 y2y1 00 01 11 10 00 φ φ 01 1 1 11 1 1 10 φ φ y2y1 00 01 11 10 00 φ φ φ φ 01 φ φ 11 1 1 10 R1 = xy1 R2 = xy1y2 xy3 y2y1 00 01 11 00 φ 01 φ 1 11 φ 10 φ 10 φ φ φ R3 = xy1y2y3 452