אס ינ כרונ י ות מערכות עקי ב ה 13

‫פרק ‪ - 13‬מערכות עקיבה אסינכרוניות‬
‫במערכת עקיבה סינכרונית ‪:‬‬
‫יש שעון המחלק את פעילות המערכת לפאזות‪.‬‬
‫בתחילת פאזה הכניסות למערכת מיוצבות בערכים מסוימים‪ ,‬והכניסות מיוצבות‬
‫מספיק זמן כך שהחלק הצירופי יחשב את ערכי היציאות בצורה נכונה ‪:‬‬
‫הפלט של המערכת‪ ,‬והמצב הבא‪.‬‬
‫‪364‬‬
‫לכן ‪ ,‬מערכת אסינכרונית מאופיינת על ידי‪:‬‬
‫‪ .1‬אין שעון ‪.‬‬
‫‪ .2‬הכניסות יכולות להשתנות בכל זמן שהוא‪.‬‬
‫‪ .3‬הערכים בכניסות מיוצגים על ידי "רמות" ) ‪ ( levels‬כלומר‪ ,‬על הימצאות‬
‫כניסה ברמה מסוימת ) '‪ '0‬או '‪ , ( '1‬בשונה לדגימה ) ‪ ( pulse‬שמתקיימת‬
‫במערכת סינכרונית כאשר ערך הכניסה נקבע להיות זה שנדגם בזמן עליית‬
‫השעון ‪.‬‬
‫המבנה הכללי של מערכת אסינרונית דומה לזה של מערכת סנכרונית אך אין שעון‬
‫ורכיבי ההשהייה משמשים כרכיבי זיכרון כפי שיתואר בהמשך ‪.‬‬
‫‪365‬‬
‫מבנה מערכות עקיבה אסינכרוניות‬
‫‪Z1‬‬
‫‪zM‬‬
‫‪Combinational Logic‬‬
‫‪Y1‬‬
‫‪D‬‬
‫‪y1‬‬
‫‪- x1,x2,…,xL‬משתני כניסה‬
‫‪- z1,z2,…,zM‬משתני יציאה‬
‫‪Y2‬‬
‫‪D‬‬
‫‪y2‬‬
‫‪- y1,y2,…,yK‬משתני מצב‬
‫‪Yk‬‬
‫‪D‬‬
‫‪yk‬‬
‫רכיבי השהייה ) ‪( Delay‬‬
‫‪366‬‬
‫‪X1‬‬
‫‪XL‬‬
‫הצירוף של רמות הכניסות ‪ x1,x2,…,xL‬ורמות היציאות של רכיבי ההשהייה‬
‫נקראים "מצב המערכת" ‪.‬‬
‫צירוף הרמות של הכניסות נקרא "מצב הכניסה" ‪. input state‬‬
‫צירוף הרמות של יציאות ההשהייה נקרא "המצב הפנימי" ‪. internal state‬‬
‫המערכת תימצא "במצב יציב" ) ‪ ( stable state‬כאשר ‪ yi = Yi‬לכל‬
‫‪.1≤i≤k‬‬
‫כתגובה לשינוי באחד או יותר מקווי ה ‪ input‬למערכת‪ ,‬המערכת הצירופית‬
‫מחשבת ערכים חדשים למשתנים ‪ ) Y1,….YK‬או לחלק מהם ( ‪ ,‬והמערכת‬
‫נכנסת למצב "לא יציב" ‪ .‬כאשר המשתנים ‪ y1,y2,…,yk‬מקבלים את ערכם‬
‫החדש‪ ,‬המערכת נכנסת למצב היציב הבא‪.‬‬
‫מכאן‪ ,‬שמעבר ממצב יציב אחד לשני מתרחש רק לאחר שינוי בכניסות‬
‫למערכת‪.‬‬
‫מצב פעולה בסיסי ) ‪: ( Fundamental mode‬‬
‫לאחר שינוי בקו כניסה בודד‪ ,‬אף שינוי נוסף לא יתרחש עד שהמערכת‬
‫‪367‬נכנסת למצב יציב‪.‬‬
‫במערכת סינכרונית מסוג ‪ ) positive edge-triggered‬רכיבי הזכרון מעבירים‬
‫כניסות ליציאות עם עליית השעון ( אנו מניחים שהכניסה היא '‪ '1‬אם היא '‪'1‬‬
‫כאשר השעון עולה‪ .‬הכניסה יכולה להיות יציבה ב‪ ’1’-‬במשך‬
‫‪ n‬מחזורים‪ ,‬ללא כל שינוי‪ ,‬ואנחנו עדיין נניח שבכניסה היו ‪ n‬פעמים ‘‪ ’1‬בזה‬
‫אחר זה‪ ,‬כלומר שני ‘‪-’1‬ים רצופים לא צריכים להיות מופרדים על ידי ‘‪.’0‬‬
‫במערכת אסינרונית המבוססת על “פולסים” אנו מניחים ששני מעברים רצופים ‪-‬‬
‫עליה מ‪ ’0’-‬ל‪ ’1’-‬ואחר כך ירידה בחזרה ל‪ ’0’-‬מייצגים כניסה יחידה של ‘‪, ’1‬‬
‫כלומר שני ‘‪ ’1‬רצופים צריכים להיות מופרדים על ידי ‘‪. ’0‬‬
‫הפרש הזמנים בין שני המאורעות הללו יכול להיות ארוך באופן שרירותי‪ .‬במערכת‬
‫זו אין משמעות לכניסה ‘‪. ’0‬‬
‫‪368‬‬
‫בנייה של מערכת עקיבה א‪-‬סינכרונית הפועלת ב ‪: Fundamental mode‬‬
‫‪ .1‬בנייה של טבלאות זרימה ‪Flow Table‬‬
‫‪ .2‬צמצום טבלאות ‪.‬‬
‫‪ .3‬מימוש המערכת‪.‬‬
‫‪369‬‬
‫נדון לדוגמא במערכת אסינכרונית המייצרת ‘‪ ’1‬ביציאה על כל שני מעברים ל‪’1’-‬‬
‫בכניסה‪ .‬להלן שתי דיאגרמות מצבים של מכונות ‪ , Mealy‬סינכרונית ואסינכרונית ‪:‬‬
‫‪0 /0‬‬
‫‪1 /0‬‬
‫‪S1‬‬
‫‪1 /0‬‬
‫‪S0‬‬
‫‪1 /1‬‬
‫‪Asynchronous‬‬
‫‪FSM‬‬
‫‪0 /0‬‬
‫‪S1‬‬
‫‪S0‬‬
‫‪1 /1‬‬
‫‪Synchronous FSM‬‬
‫מאחר שעלינו להמתין עד שהכניסה תרד ל‪ ’0’-‬לפני שנוכל לבדוק אם היא עלתה‬
‫שוב ל‪ , ’1’-‬הדיאגרמה האסינכרונית הנ”ל בעצם איננה מתארת את פעולת‬
‫המכונה במלואה‪ .‬הדיאגרמה איננה מראה ירידה של הכניסה ל '‪. '0‬‬
‫‪370‬‬
‫לכל ‘‪ ’1‬אנו זקוקים בעצם לשני מצבים עוקבים ‪:‬‬
‫‪S1‬‬
‫‪x +/ 0‬‬
‫‪S0‬‬
‫‪x- / 0‬‬
‫‪x- / 0‬‬
‫‪S2‬‬
‫‪x+/1‬‬
‫‪S3‬‬
‫במקום ‘‪ ’1‬בכניסה סימנו מעברים ‪ ,‬כלומר הכניסה עלתה )‪ (x+‬או ירדה )‪. (x-‬‬
‫מאחר שיש במקרה זה רק כניסה אחת‪ ,‬יש רק אפשרות אחת למעבר מכל מצב‪.‬‬
‫נעבור למכונת מצבים מסוג ‪: Moore‬‬
‫‪371‬‬
S0
0
x+
S1
0
x-
xS3
1
x+
S2
0
372
‫נממש את המכונה האסינכרונית באופן ישיר‪ .‬נקצה מצבים לפי קוד ‪Gray‬‬
‫ונקבל את טבלת הזרימה הבאה ‪:‬‬
‫)‪NS (Y1Y0‬‬
‫‪z‬‬
‫‪X=1‬‬
‫‪X=0‬‬
‫)‪PS(y1y0‬‬
‫‪0‬‬
‫‪01‬‬
‫‪00‬‬
‫‪S0=00‬‬
‫‪0‬‬
‫‪01‬‬
‫‪11‬‬
‫‪S1=01‬‬
‫‪0‬‬
‫‪10‬‬
‫‪11‬‬
‫‪S2=11‬‬
‫‪00‬‬
‫‪S3=10‬‬
‫‪1‬‬
‫‪373‬‬
‫‪10‬‬
‫הכניסות בטבלה מייצגות מצבים‪ ,‬מעברים בין מצבים ואת ערך היציאה ‪.‬‬
‫מצב יציב הוא מצב שבו אין שינוי במערכת עד לשינוי של הכניסה‪ .‬מצב כזה‬
‫מסומן בעיגול‪ .‬כל שורה מייצגת מצב יציב ‪.‬‬
‫כניסה שאינה מסומנת בעיגול מסמנת את המצב אליו המערכת עוברת‪ .‬נשים לב גם‬
‫שבהגדרת מצב יציב ‪ . y0y1=Y0Y1‬לכן‪ ,‬יצוג המצב היציב בכל שורה מתאים‬
‫בקידוד למצב ה ‪. PS -‬‬
‫המעברים בעת השינויים סומנו בחיצים‪ ,‬וכאשר הטבלה כוללת סימונים אלו היא‬
‫קרויה גם “טבלת זרימה " ) ‪ . ( Flow Table‬נבחר במימוש ללא סיכונים‬
‫) ‪ ( Hazard Free Static‬כלהלן ) ללא שינויים רגעיים בערך היציאה( ‪:‬‬
‫‪374‬‬
‫‪x‬‬
‫‪1‬‬
‫‪1‬‬
‫‪0‬‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫‪x‬‬
‫‪y0y1‬‬
‫‪00‬‬
‫‪01‬‬
‫‪11‬‬
‫‪10‬‬
‫‪Y0‬‬
‫ןמכאן‪:‬‬
‫‪1‬‬
‫‪0‬‬
‫‪00‬‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫‪01‬‬
‫‪11‬‬
‫‪10‬‬
‫‪Y1‬‬
‫‪Y1 = x’y0 + y1y0 + xy1‬‬
‫’‪Y0 = x’y0 + y1’y0 + xy1‬‬
‫’‪z = y1y0‬‬
‫ננסה לממש את המעגל ישירות ללא רכיבי השהייה ) זוהי איננה הדרך המומלצת‪ ,‬ואנו‬
‫מבצעים את התרגיל רק כדי להבין מדוע מימוש כזה מסוכן ! ( ‪:‬‬
‫‪375‬‬
‫אין כאן רכיבי השהייה‬
x
x’y0
Y1
y1y0
xy1
x’y0
Y0
y1’y0
xy1’
z=y1y0’
x
y1 y0
376
‫ה”מצב” מאוחסן במעגלים הסגורים‪ ,‬המחליפים את רכיבי ההשהייה ) זכרון במערכות‬
‫עקיבה סינכרוניות (‪ .‬נניח שהמערכת יציבה במצב ‪ S1=01‬והכניסה ‪) : x=1‬המערכת‬
‫‪y1y0‬‬
‫‪x‬‬
‫צריכה להישאר במצב ‪. ( 01‬‬
‫‪Y1=0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪A‬‬
‫‪0‬‬
‫שער איטי‬
‫‪0‬‬
‫‪Y0=1‬‬
‫‪z=0‬‬
‫‪377‬‬
‫‪X=1‬‬
‫‪slow‬‬
‫‪B 1‬‬
‫‪C 1‬‬
‫‪y1=0‬‬
‫‪y0=1‬‬
‫‪X=1‬‬
‫‪y1=0‬‬
‫‪0‬‬
‫‪X=1 y1 y0‬‬
‫כאשר ‪ x‬ירד ל‪ ) ’0’-‬אירוע מס’ ‪ ( 1‬המערכת אמורה לעבור למצב ‪. S2=11‬‬
‫השערים ‪ B‬ו ‪ C -‬ייצרו ‘‪ ’0‬והשער המסומן ’‪ ‘slow‬צריך לייצר ‘‪. ’1‬‬
‫נניח ששער זה הוא במקרה איטי במיוחד וחולף זמן רב עד שיציאתו תעלה‬
‫ל‪ . ’1’-‬בינתיים קורים האירועים הבאים‪:‬‬
‫‪ .2‬השער המסומן ‪ A‬עולה ל‪’ 1’-‬‬
‫‪ Y1 .3‬עולה ל‪’ 1’-‬‬
‫‪ .4‬השערים המסומנים ‪ B‬ו ‪ C-‬יורדים ל‪’ 0’-‬‬
‫‪ Y0 .5‬יורד ל‪’ 0’-‬‬
‫‪ .6‬שער ‪ A‬יורד ל‪’ 0’-‬‬
‫‪ Y1 .7‬יורד ל‪’ 0’-‬‬
‫כעת שער ‪ SLOW‬כבר לא יצליח יותר לעלות ל‪ ’1’-‬והמערכת תקועה במצב ‘‪. ‘S0‬‬
‫האירועים הללו מצוינים בטבלת הזרימה לפי סדרם ‪:‬‬
‫‪378‬‬
NS (Y1Y0)
PS(y1y0)
X=0
7
S0=00
00
S1=01
11
S2=11
1111 5
S3=10
10
1
3
X=1
z
01
0
01
10
00
0
0
1
379
‫ברגע שקרה אירוע מספר ‪ , 5‬טבלת הזרימה מראה שהמעגל יעבור ) באירוע ‪( 7‬‬
‫למצב היציב ‪ 00‬ולא תגיע יותר למצב ‪ . 11‬אמנם‪ ,‬זהו מקרה קיצוני‪ ,‬אבל‬
‫המסקנה חשובה‪:‬‬
‫•במכונת מצבים סינכרונית‪ ,‬אם אחד השערים איטי במיוחד‪ ,‬מספיק שנאריך את‬
‫מחזור השעון והמכונה תעבוד נכון )אם כי יותר לאט( ‪.‬‬
‫•במכונת מצבים אסינכרונית‪ ,‬אם אחד השערים איטי במיוחד‪ ,‬עלולה המכונה‬
‫לפעול באופן שגוי ‪.‬‬
‫תופעה זו‪ ,‬שבה אות אחד מגיע מהר יותר מאות שני‪ ,‬קרויה “מרוץ" ) ‪ , ( race‬ואם‬
‫כתוצאה מהמרוץ המכונה עלולה לשגות אזי זהו “מרוץ קריטי” ‪ .‬בכדי להימנע מן‬
‫הבעיה‪ ,‬הציע הפמן ) ‪ ( Huffman‬כבר בשנת ‪ 1954‬שיש להאט את מסלול‬
‫המשוב כך שיהיה איטי יותר ממסלול ההתפשטות קדימה בלוגיקה הצירופית ‪:‬‬
‫‪380‬‬
DELAY
x
DELAY
Y1
Y0
z
X=1 y1 y0
381
‫יש להבטיח קיום שני תנאים עיקריים ‪:‬‬
‫)‪ (1‬ההשהיה ביחידות ‪ DELAY‬ארוכה יותר מן ההשהייה במסלול הלוגיקה‬
‫הצירופית‪.‬‬
‫)‪ (2‬לאחר שנגרם שינוי בכניסה‪ ,‬אסור שיהיה שינוי נוסף כל עוד המעגל לא‬
‫התייצב לחלוטין במצבו היציב החדש ‪.‬‬
‫כאשר המערכת כוללת מכונת מצבים אסינכרונית בעלת השהייה הפועלת לפי‬
‫כלל )‪ (1‬וכן כניסה המצייתת לכלל )‪ , (2‬אנו אומרים כי היא פועלת לפי‬
‫“ דרך פעולה בסיסית " ) ‪ . ( Fundamental Mode‬דרך פעולה זו כוללת‬
‫תנאי נוסף ‪:‬‬
‫)‪ (3‬אם יש יותר מכניסה אחת‪ ,‬בכל פעם מותר רק לאחת הכניסות לשנות את‬
‫ערכה ‪.‬‬
‫‪382‬‬
‫תנאי )‪ (3‬הינו בעצם מסקנה מתנאי )‪ : (2‬לא ניתן במערכת פיזיקלית להבטיח‬
‫ששתי כניסות תשנינה את ערכן תמיד בו זמנית בדיוק‪ .‬לכן‪ .‬יש להמתין‬
‫להתייצבות המעגל לאחר כל שינוי בכניסה לפני שמותר לשנות כניסה נוספת ‪.‬‬
‫‪383‬‬
‫ניתן לבנות מערכות ‪ Fundamental Mode‬המקבלות כניסות בינאריות‪ ,‬כלומר‬
‫מאפשרות גם ערכי ‘‪ ’0‬וגם ערכי ‘‪ ’1‬בכניסה ‪ ,‬כלומר אינן מתבוננות על שינויי‬
‫ערך אלא על הערכים עצמם ‪.‬‬
‫כמו כן‪ ,‬אם נחליף את רכיבי ההשהיה במשוב פליפ‪-‬פלופים ) חסרי שעון ( ‪ ,‬נקבל‬
‫לעיתים מערכות פשוטות יותר‪ .‬נממש‪ ,‬למשל‪ ,‬את המערכת לעיל באמצעות‬
‫פליפ‪-‬פלופים מסוג ‪ . SR‬כזכור‪ ,‬פונקצית העירור של פליפ‪-‬פלופ ‪ SR‬היא ‪:‬‬
‫‪384‬‬
‫‪R‬‬
‫‪S‬‬
‫‪Q‬‬
‫‪φ‬‬
‫‪0‬‬
‫‪0→0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0→1‬‬
‫‪1‬‬
‫‪0‬‬
‫‪1→0‬‬
‫‪0‬‬
‫‪φ‬‬
‫‪1→1‬‬
: SR ‫נתרגם את טבלת המעברים לטבלת עירור עבור‬
NS (Y1Y0)
X=0
PS (y1y0)
S1R1 S0R0
X=1
S1R1
S0R0
Z
S0=00
0φ
0φ
0φ
10
0
S1=01
10
φ0
0φ
φ0
0
S2=11
φ0
φ0
φ0
01
0
S3=10
01
0φ
φ0
0φ
1
385
‫ומן הטבלה קל לראות ש ‪:‬‬
‫‪R0 = xy1‬‬
‫’‪S0 = xy1‬‬
‫’‪R1 = x’y0‬‬
‫‪S1 = x’y0‬‬
‫המכונה נראיית כעת כך ‪:‬‬
‫‪x‬‬
‫‪y0‬‬
‫‪R0‬‬
‫‪S0‬‬
‫‪y1‬‬
‫‪S1‬‬
‫‪R1‬‬
‫כל עוד מתקיימים כללי ‪ Fundamental Mode‬אין במכונה זו מרוצים נראים‬
‫לעין ) ייתכן שישנם מרוצים חבויים בתוך הפליפ‪-‬פלופים או אפילו בתוך‬
‫השערים‪ ,‬אבל כזכור אנחנו מניחים שכל הרכיבים תוכננו באופן זהיר כך שאין‬
‫בהם כל חשש לתקלות ( ‪ .‬נשים לב שאם ‪ x = 0‬או ‪ , x =1‬אחד משני‬
‫הפליפ‪-‬פלופים אינו צריך לשנות את ערך היציאה ולכן יש שינוי ערכים רק‬
‫‪ 386‬בפליפ‪-‬פלופ אחד !‬
‫מכונת ‪ONE-HOT‬‬
‫קיימת שיטה אחרת‪ ,‬פשוטה יותר‪ ,‬לתכנן מכונות מצבים‪ ,‬המשמשת במיוחד‬
‫למכונות אסינכרוניות‪ .‬בשיטה זו משתמשים ב ‪ n-‬פליפ‪-‬פלופים למימוש‬
‫מכונה בת ‪ n‬מצבים‪ ,‬במקום ב ‪ . log n -‬באחד‪ ,‬ורק באחד מן‬
‫הפליפ‪-‬פלופים יש ‘‪ , ’1‬ובכל השאר יש ‘‪ . ’0‬המכונה הנ”ל תמומש כך ‪:‬‬
‫‪X‬‬
‫’‪X‬‬
‫‪clear‬‬
‫‪S3‬‬
‫‪S3‬‬
‫‪R3‬‬
‫‪387‬‬
‫’‪X‬‬
‫‪clear‬‬
‫‪S2‬‬
‫‪X‬‬
‫‪clear‬‬
‫‪S0‬‬
‫‪R2‬‬
‫‪S1‬‬
‫‪set‬‬
‫‪S1‬‬
‫‪R1‬‬
‫‪S0‬‬
‫‪S0‬‬
‫‪R0‬‬
‫אותו אות ש”מדליק” מצב חדש גם “מכבה” את המצב הקודם‪ .‬המגבלה העיקרית‬
‫של התכנון היא שבזמני המעבר יתכן ששני מצבים “דולקים” ‪ -‬החדש נדלק‬
‫ואילו הקודם עדיין לא הספיק לכבות ‪.‬‬
‫אולם‪ ,‬מקרה כזה איננו אמור לפגוע בנכונות המכונה‪ .‬המצב ההתחלתי נקבע על ידי‬
‫החיצים הקטנים מעל הפליפ‪-‬פלופים ‪ -‬חיצים אלו גורמים להדלקת ‪ S0‬ולכיבוי‬
‫כל השאר ‪.‬‬
‫‪388‬‬
:‫מצב התחלתי‬
0
X
0
0
set
S0
R0
1
X’
0
S0
1
clear
S1
0 R1
S1
0
X
0 S0
0 R2
clear
S2
1
X’
0
0
clear
S3
0
S3
R3
389
: x=1 ‫עליית הכניסה‬
1
X
1→0
set
S0
R0
1→0
0
X’
S0
0→1
clear
S1
R1
1
X
0 S0
S1
1
0 R2
clear
S2
0
X’
0
0
clear
S3
0
S3
R3
0
390
: x=0 ‫ירידת הכניסה‬
0
X
0
0
set
S0
R0
S0
1
X’
0
1→0
clear
S1
R1
1→0
0
X
S1
1→0
0
clear
S0
R2
1
X’
S2
clear
S3
1
0
0
S3
R3
0
391
: x=1 ‫עליית הכניסה‬
1
X
0
0
0
set
S0
R0
0
X’
S0
clear
S1
0
R1
0
S1
1
X
0
1→0
clear
S0
R2
1→0
0
X’
S2
1→0
clear
S3
S3
0
1
R3
0
392
: x=0 ‫ירידת הכניסה‬
0
X
set
0
S0
R0
0
1
X’
0
S0
1
clear
S1
R1
0
0
X
0 S0
S1
0
R2
0
1
X’
0
clear
S2
0
clear
1→0
S3
S3
R3
1→0
1→0
393
‫תזמון עצמי‬
‫לעיתים אנו זקוקים לשני הערכים בכניסה‪ ,‬כלומר ל‪ ’0’-‬ול‪ , ’1’-‬אך אין שום‬
‫ידיעה מתי הכניסה תקפה‪ .‬במקרים כאלה אפשר להשתמש באות בעל‬
‫“ תזמון עצמי " ) ‪ , ( self-timed‬כלומר הכניסה מודיעה מתי היא תקפה‪ .‬אחת‬
‫השיטות בנויה על קוד טרנרי במקום קוד בינארי ) כלומר קוד בעל שלושה‬
‫מצבים ( ‪ :‬האות הוא ‘‪ , ’1‬או ‘‪ , ’0‬או שאינו מוגדר )’‪ . (‘U‬נסכים שהאות‬
‫יכול להשתנות אך ורק לפי דיאגרמת המצבים הבאה ‪:‬‬
‫‪1‬‬
‫‪394‬‬
‫‪U‬‬
‫‪0‬‬
: ‫ נסכים שכל מערכת שנבנה מתנהגת לפי ה”פרוטוקול” כלהלן‬,‫כמו כן‬
Imput Undefined
Output Undefined
Input Defined
Output Defined
395
‫ואז נוכל לבנות את דיאגרמת המצבים הבאה ששוב מציגה מכונה שצריכה להוציא‬
‫’‪ ‘1‬עבור כל שני ‘‪ ’1‬בכניסה‪:‬‬
‫‪S1‬‬
‫‪0‬‬
‫‪1‬‬
‫‪U‬‬
‫‪S7‬‬
‫‪0‬‬
‫‪396‬‬
‫‪0‬‬
‫‪U‬‬
‫‪S3‬‬
‫‪U‬‬
‫‪S0‬‬
‫‪U‬‬
‫‪U‬‬
‫‪1‬‬
‫‪S2‬‬
‫‪1‬‬
‫‪0‬‬
‫‪U‬‬
‫‪S4‬‬
‫‪0‬‬
‫נהוג לממש קוד טרנרי באמצעות זוג סיביות ) ‪: ( Dual-Rail Code‬‬
‫קוד טרנרי‬
‫'‪'0‬‬
‫'‪'1‬‬
‫'‪'U‬‬
‫קוד בלתי‬
‫מוגדר‬
‫‪397‬‬
‫מימוש על ידי זוג סיביות‬
‫‪01‬‬
‫‪10‬‬
‫‪00‬‬
‫‪10‬‬
‫ואז נראית המכונה כך ‪:‬‬
‫‪10‬‬
‫‪S1‬‬
‫‪S0‬‬
‫‪01‬‬
‫‪00‬‬
‫‪00‬‬
‫‪S7‬‬
‫‪01‬‬
‫‪01‬‬
‫‪00‬‬
‫‪01‬‬
‫‪00‬‬
‫‪S4‬‬
‫‪01‬‬
‫‪00‬‬
‫‪S3‬‬
‫‪00‬‬
‫‪10‬‬
‫‪S2‬‬
‫‪10‬‬
‫מכונה )אסינכרונית( כזו אנחנו כבר יודעים לתכנן…‪ .‬שים לב בכל מעבר משתנה‬
‫אך ורק סיבית יחידה בקלט‪ ,‬סיבית יחידה במשתני המצב‪ ,‬וסיבית יחידה בפלט‪.‬‬
‫זהו אינו המצב בדרך כלל ‪.‬‬
‫‪398‬‬
‫בנוסף ליתרונות שכבר מנינו‪ ,‬נשים לב שמכונה אסינרונית חסכנית באנרגיה‪ :‬אין‬
‫בה שעון ש”רץ” כל הזמן‪ ,‬בלי התחשבות בקצב המידע בקלט‪ .‬כאשר אין שינוי‬
‫בקלט‪ ,‬המכונה אינה עושה כלום ) ואינה מבזבזת אנרגיה ( ‪.‬‬
‫ניתן לבנות גם שערים צירופיים במקביל שמייצרים אותות ‪: Dual Rail‬‬
‫‪A1‬‬
‫‪A0‬‬
‫‪Z1‬‬
‫‪Z0‬‬
‫‪B1‬‬
‫‪B0‬‬
‫‪Z= A and B‬‬
‫לדוגמא‪:‬‬
‫‪A0‬‬
‫‪AND (01,10) = 01‬‬
‫‪399‬‬
A1
A0
Z1
Z0
B1
B0
Z= A or B
:‫לדוגמא‬
OR(01,01) = 01
A1
A0
Z1
Z0
Z= not A
:‫לדוגמא‬
NOT(01) = 10
400
‫שקף ריק‬
‫‪401‬‬
‫שקף ריק‬
‫‪402‬‬
‫שקף ריק‬
‫‪403‬‬
‫שקף ריק‬
‫‪404‬‬
‫שקף ריק‬
‫‪405‬‬