סיכום קורס מערכות לוגיות ספרתיות
February 20, 2017 | Author: galone1235 | Category: N/A
Short Description
Download סיכום קורס מערכות ...
Description
1
סיכום קורס מערכות לוגיות ספרתיות: .1הצגת מספרים במע' ספרתיות: קיימים ארבעה סוגים של מערכות ספרתיות: עשרונית )בסיס .(10 בינארית )בסיס .(2 אוקטאלית )בסיס .(8 הקסאדצימאלית )בסיס .(16 בכל מערכת כזו ניתן לתאר מספר כקובץ של ספרות .הספרה הכי גדולה בבסיס rהיא .r-1כלומר ,הספרה הכי גדולה במע' בינארית היא .1במע' הקסאדצימאלית 16ספרות ,ולכן 10 ,הראשונות יהיו ,9..0ולאחר מכן נעבור ל .A..F -המערכת העשרונית היא זו המוכרת לנו מחיי היומיום. ניתן להציג כל מספר הנתון בבסיס כלשהו בצורה של בסיס אחר .קיימים שלושה סוגי מעברים: מעבר בין מספר בבסיס כשלהו למספר בבסיס עשרוני. מעבר בין מספר בבסיס עשרוני למספר בבסיס כלשהו. מעבר בין בסיסים שהינם חזקות אחד של השני. מעבר בין מספר בבסיס כלשהו לבסיס עשרוני: מספר בבסיס rהמיוצג כאוסף הספרות הבא ) (rn −1 , rn − 2 , , r0 שקול למספר העשרוני המחושב כך... i
i = n −1
∑r ⋅r i
= .N
i =0
כך למשל... (524)8 = 4 ⋅ 80 + 2 ⋅ 81 + 5 ⋅ 82 = 4 + 16 + 320 = (340)10 מעבר בין מספר בבסיס עשרוני למספר בבסיס כלשהו: במעבר מבסיס עשרוני לבסיס ,rעליחנו לבצע את האלגוריתם הבא: – Nהמספר בבסיס עשרוני. .1מחלקים את Nב ,r -חילוק עם שארית .לשארית הראשונה נקרא r0לשנייה r1וכן הלאה... .2למספר החדש שהתקבל מהחלוקה נקרא .N .3נבצע את שלבים 1,2עד אשר .N=0 .4המספר בבסיס rיהיה. (rn −1 , rn − 2 , , r0 ) : כך למשל... (15443)10 ⇒ (?)16 15443 965 60 3 → )= 965 + (3 → )= 60 + (5 )= 3 + (C ) → = 0 + (3 16 16 16 16 (15443)10 = (3C 53)16 מעבר בין בסיסים שהינם חזקות אחד של השני: במעבר מבסיס rלבסיס , r nנאגד קב' של nביטים החל מה ,LSB-ונתרגם כל קב' לספרה בבסיס החדש.
2 במעבר ההפוך מבסיס r nלבסיס ,rנתרגם כל ספרה לקב' של nביטים בבסיס החדש. כך למשל... (0110101001) 2 ⇔ (000 110 101 001) 2 = (0651)8 ולהיפך... (321)8 = (011 010 001) 2 = (011010001) 2
כאשר אנחנו מנסים לייצג מספר עשרוני )דהיינו ,שבר( בבסיסים שונים ,שיטת העבודה משתנה במעט .עבור מעבר בין מספר בבסיס כלשהו למספר בבסיס עשרוני ,שיטת החישוב תהיה זהה ,והחזקות יהיו שליליות .גם כאשר אנחנו עוברים בין בסיסים שאחד מהם הוא חזקה של השני ,השיטה תהיה דומה .ההבדל היחיד הוא בשיטת המעבר מבסיס עשרוני לבסיס כלשהו. מעבר של מספר עשרוני מבסיס כלשהו לבסיס עשרוני: במעבר מבסיס עשרוני לבסיס ,rעליחנו לבצע את האלגוריתם הבא: -Nהחלק העשרוני של המספר המקורי. .1מכפילים את Nב.r - .2מסירים מ N -את הספרה שמשמאל ל) radix point -החלק השלם( .לחלק השלם הראשון נקרא r−1לשני r− 2וכן הלאה... .3נבצע את שלבים 1,2עד אשר ) .N=0או עד אשר נבחר להפסיק(. .4המספר בבסיס rיהיה. (r−1 , r−2 , r−3 ) : כך למשל... (0.68359375)10 ⇒ (?)16 0.68359375 ×16 = 10.9375 = ( A) + 0.9375 ) 0.9375 ×16 = 15.0 = ( F (0.68359375)10 = (0. AF )16
קיימות דרכים נוספות להציג מספרים: קוד .BCD קוד ממושקל. קוד .Excess-3 קוד .gray קוד :BCD קוד זה מציג כל מספר בעזרת אפסים ואחדים בדומה לקוד בינארי ,אולם כאן ,כל ארבעה ביטים מייצגים ספרה בבסיס עשרוני .דהיינו ,כל ארבעה ביטים הם מילה בבסיס בינארי המייצגת ספרה אחת. כך למשל... (100010110010) BCD = (1001 0011 0010) BCD = (932)10 (100010110010) 2 = 2 + 16 + 32 + 128 + 2048 = ( 2226)10 קוד ממושקל: בקוד מסוג זה ,לכל ספרה משקל בהתאם למיקומה. כך למשל... (1011) 5,6, 2,8 = 1 ⋅ 5 + 0 ⋅ 6 + 1 ⋅ 2 + 1 ⋅ 8 = 5 + 2 + 8 = (15)10
3
קוד :Excess-3 בקוד זה ,ניתן לייצג מספר הנתון בבסיס עשרוני באופן הבא: .1מוסיפים לכל ספרה .3 .2מעבירים את המספר ל .BCD קוד אקסס 3הוא קוד משלים כיוון שע"י החלפת כל האחדים באפסים ולהיפך אנחנו מקבלים את המספר המשלים למספר המקורי. כך למשל... (345)10 = (0110 0111 1000) Ex 3 (1001 1000 0111) Ex 3 = (654)10 = (345)10 קוד גריי: קוד זה הוא קוד ציקלי ,דהיינו ,כל מספר נבדל מאלו שלפניו ואחריו בביט אחד בדיוק .קוד זה נוצר בעזרת שיקוף .להלן 8המספרים הראשונים. (000) gray = 0 (110) gray = 4 (001) gray = 1 (111) gray = 5 (011) gray = 2 (101) gray = 6 (010) gray = 3 (100) gray = 7 בכדי ליצור 8נוספים ,נעתיק את הקיימים בסדר הפוך ,נוסיף למספרים המקוריים ,MSB 0ולחדשים .MSB 1 ניתן לעבור מקוד גריי לקוד בינארי רגיל ולהיפך באופן הבא... מעבר מקוד גריי לקוד בינארי: * . MSB2 = MSBgray * יתר הסיביות ,משמאל לימין... מספר ה 1 -משמאל ל g i -זוגי. bi = g i : מספר ה 1 -משמאל ל g i -אי-זוגי. bi = g i ' : כך למשל... (1101) gray = (?)2 b3 = g 3 = 1 b2 = g 2 ' = 0 b1 = g1 = 0 b0 = g 0 = 1 (1101) gray = (1001) 2 מעבר מקוד בינארי לקוד גריי: * . MSB2 = MSBgray * יתר הסיביות ,משמאל לימין... g i = bi ⊕ bi +1
4
כך למשל...
(1001) 2 = (?) gray g 3 = b3 = 1 g 2 = b3 ⊕ b2 = 1 ⊕ 0 = 1 g1 = b2 ⊕ b1 = 0 ⊕ 0 = 0 g 0 = b1 ⊕ b0 = 0 ⊕ 1 = 1 (1001) 2 = (1101) gray
כאשר אנו רוצים להציג בקוד כלשהו מספר שלילי ,אנחנו יכולים לעשות זאת באחת משלוש שיטות: .Sign-magnitude ].r-1] compliment ].r] compliment בכל השיטות הנ"ל ,סיבית ה MSB -נקראת סיבית הסימן ,והיא משקפת את סימן המספר ללא התייחסות לגודלו .כמו כן ,בכל השיטות הנ"ל ,ההתייחסות לספרות לפני ואחרי הנקודה זהה. הצגת מספר שלילי בשיטת :sign-magnitude בשיטה זו ,כל מספר שלילי כתוב בערכו המוחלט עם סיבית סימן הפוכה .דהיינו... ) (0, rn , , r0 ) = (r − 1, rn , , r0 s .m .
כך למשל... = (1110) 2,sm
. (0110) 2, sm
הצגת מספר שלילי בשיטת ]:r-1] compliment בשיטה זו כל מספר שלילי מורכב מאוסף הערכים המשלימים לערכו המוחלט .דהיינו... ) (0, rn , , r0 ) = (r − 1, r − 1 − rn , , r − 1 − r0 כך למשל... (01110) 2,1C = (10001) 2,1C הצגת מספר שלילי בשיטת ]:r] compliment המספר השלילי מורכב מתוך המספר החיובי באופן הבא: .1מימין לשמאל משאירים את כל האפסים עד שמגיעים לביט שונה מאפס ,ומשלימים אותו ל .r .2את יתר הספרות משלימים ל .r-1 כך למשל... (01110) 2, 2C = (10010) 2, 2C
5
.2ביצוע פעולות אריתמטיות במע' ספרתיות: נדון בארבע בפעולות האריתמטיות הפשוטות: חיבור וחיסור. כפל. חילוק. חיבור וחיסור: חיסור הוא למעשה חיבור של מספר שלילי ,ובאופן זה נתייחס אליו. נתייחס לשני מקרים נפרדים... חיבור מספרים בr-1)C) - חיבור מספרים בr)C) - לא נבצע חיבור\חיסור בשיטת .sign-magnitude חיבור מספרים ב:r-1)C) - מחברים את המספרים כרגיל ,ומוסיפים את ה end carry -ל LSB -בתוצאה. כך למשל... 001110 + 110011 − 14 ⇔ 12 (1)000001 001110 + 110011 = 000010 = (2)10 חיבור מספרים ב:r)C) - מחברים את המספרים כרגיל ,ומתעלמים מה .end carry -יש לוודא ,כאשר מחברים שני מספרים בעלי אותו סימן שלא קרתה גלישה במהלך פעולת החיבור .גלישה זו תקרה כאשר התוצאה גדולה מדי )בערך מוחלט( בכדי להיות מיוצגת במספר הביטים הדרוש. כך למשל... 001110 + 110100 − 14 ⇔ 12 (1)000010 001110 + 110011 = 000010 = (2)10 כפל: בכל שיטות ההצגה של מספרים שליליים ,נקח את המספרים בערך מוחלט ונבצע כפל כרגיל .אם התוצאה המתקבלת צריכה להיות שלילית נבצע השלמה של התוצאה. כך למשל…
6 11001 ×01101 11001 00000 ⇔ 25 × 13 11001 11001 00000 101000101 (01101) × (11001) = (101000101) = 325
חילוק: גם כאן ,נתייחס לכל המספרים בערך מוחלט .החילוק מתבצע בשיטה של חילוק ארוך.
7
.3אלגברת מיתוג: ענף זה של המתימטיקה מתייחס לאפסים ואחדים בלבד ולפעולות האריתמטיות ביניהם: כפל )(and חיבור )(or ניגוד )(not להלן מספר אקסיומות הנוגעות לאלגברת מיתוג:
a+0= a a ⋅1 = a ) a + b ⋅ c = ( a + b) ⋅ ( a + c a ⋅ (b + c ) = a ⋅ b + a ⋅ c a + a' = 1 a ⋅ a' = 0
בסיסים שלמים: כל פונ' מיתוג ניתן להציג כאוסף של הפעולות }' , {⋅,+,אולם חלק מהפעולות הנ"ל ניתן להציג באמצעות פעולות אחרות כגון NORו .NAND -למשל... x' = x ↓ x ) xy = x' ↓ y ' = ( x ↓ x) ↓ ( y ↓ y ) x + y = ( x' y ' )' = ( x ↓ y )' = ( x ↓ y ) ↓ ( x ↓ y צורות קנוניות: קיימות שתי צורות קנוניות: מינתרמים. מקסתרמים. מינתרמים הינם כל המכפלות שניתן לבצע על מספר מסויים של משתנים ,כך שבכל מכפלה חייבים להופיע כל המשתנים ,כפי שהם או בשלילה. כך למשל ,המינתרמים של המשתנים :x,y,z . x' y ' z ' , x' y ' z , x' yz ' , x' yz, xy' z ' , xy ' z, xyz' , xyz מקסתרמים הינם כל פונ' הסכימה שניתן לבצע על מספר מסויים של משתנים ,כך שבכל סכום חייבים להופיע כל המשתנים ,כפי שהם או בשלילה. כך למשל ,המקסתרמים של המשתנים :x,y,z ' . x + y + z, x + y + z ' , x + y '+ z , x + y '+ z ' , x'+ y + z, x'+ y + z ' , x'+ y '+ z , x'+ y '+ z ניתן להציג כל פונ' מיתוג כסכום של מינתרמים ) (sum of products – SOPאו כמכפלה של מקסתרמים ) .(product of sums – POSכל מינתרם ומקסתרם מגדירים מצב ספציפי של המשתנים )עבור מצב משתנים נתון ,רק מינתרם אחד מקבל את הערך ' ,'1ורק מקסתרם אחד מקבל את הערך '.('0 נבחר אם כן את כל מצבי המשתנים שבהם נרצה תוצאה ' ,'1ונחבר את כל המניתרמים המתאימים .לחלופין, ניתן להכפיל את כל המקסתרמים המתאימים למצבים שבהם נרצה תוצאה '.'0 כך למשל ,ניתן להגדיר את הפונ' :f=x+yz f = m3 + m4 + m5 + m6 + m7 = x' yz + xy ' z '+ xy ' z + xyz '+ xyz x =1
8 או בעזרת מקסתרמים... ) f = M 0 + M 1 + M 2 = ( x + y + z )( x + y + z ' )( x + y '+ z ניתן לסמן POSו SOP -גם כך... )∑ (3,4,5,6,7) = ∏ (0,1,2
9
.4מימוש פונ' מיתוג באמצעות שערים לוגיים: קיימים סוגים רבים של שערים ,אולם ניתן לממש כל פונ' מיתוג באמצעות אוסף של שערי AND,ORו- .NOTשער ORמבצע פעולת חיבור שער ANDמבצע פעולת כפל. כאשר אנו מציגים פונ' כלשהי באמצעות SOPאו ,POSעשויות להתקבל פונ' ארוכות ומסורבלות .עלינו להעביר את הפונ' שאנו מקבלים תהליך של מינימיזציה ,באחת משתי שיטות: מפות קרנו. קווין-מקלוסקי. צמצום פונ' בעזרת מפות קרנו: מפת קרנו היא טבלה המייצגת את כל מצבי הנתונים האפשריים ,ואת תוצאת הפונ' בכל אחד ממצבים אלו. מפת קרנו במקרה של ארבעה משתנים למשל תהיה טבלה ,4X4כאשר המצבים האפשריים רשומים בקוד גריי ,כלומר... → x1 , x2 ↓ x3 , x4 00 01 11 10 0
1
1
1
00
0
1
1
0
01
0
1
1
0
11
1
1
1
0
10
לאחר רישום המפה ,עלינו לחפש .clustersגושים אלו הינם אוסף של תאים הנמצאים בשכנות אחד לשני ומסודרים במלבן או בריבוע שאורך צלעותיו חזקה של 1,2,4,8) 2תאים( .נשים לב כי התאים בקצה השמאלי של המפה שכנים לתאים בקצה הימני ,התאים בקצה העליון לתאים בקצה התחתון ,וכל הפינות שכנות. גושים המכילים אחדים בלבד נקראים אימפליקנטים .אימפליקנטים המכילים אחדים שאינם מוכלים באף אימפליקנט אחר נקראים אימפליקנטים ראשוניים. נמצא קב' מינימאלית של גורמים ראשוניים המכסים את כל האחדים במפה .ניתן לכל אימפליקנט שסימנו ביטוי לוגי כלשהו ,ונציג את כל הביטויים כ .SOP -במקרה שלנו...
10
10
11
01
00
→ x1 , x2 ↓ x3 , x4
0
1
1
1
00
0
1
1
0
01
0
1
1
0
11
1
1
1
0
10
' f = x2 + x2 ' x4 במקרה של חמישה או שישה משתנים נבנה טבלת קרנו תלת מימדית בעלת שתיים או ארבע קומות – במצב זה נעדיף להשתמש בשיטות צמצום אחרות .עבור שבעה משתנים ומעלה לא ניתן להשתמש במפות קרנו. צמצום בשיטת קווין-מקלוסקי: נמיין את המינתרמים המרכיבים את הפונ' בטבלה לפי המשקל שלהם )מס' האחדים( ,באופן הבא... משקל 0 1 2 3
ווקטור 0000 0001 0010 1000 0011 0101 0110 1011
מס' מינתרם 0 1 2 8 3 5 6 11
כעת ננסה לאחד זוגות של ווקטורים השונים זה מזה בביט אחד בלבד .נרשום טבלה חדשה בה נמצאים כל הווקטורים המצומצמים ,ונסמן בטבלה המקורית את כל הווקט' שלא הצלחנו לצמצם. הערות: ניתן להשתמש בווקט' כמה פעמים שנרצה בכדי לצמצם ווקט' אחרים. .1 עלינו לרשום בטבלה את כל הדרכים הקיימות לצמצם כל ווקט'. .2 הווקט' הנוצר משני ווקט' מקוריים יהיה זהה להם בכל הביטים בהם הם זהים ויקבל ערך ''- .3 בביט בו הם שונים. וקט' יכולים לצמצם אחד את השני רק אם הם בעלי משקלים שונים באחד בדיוק) .ווקט' .4 בעל משקל 3לא יוכל לצמצם ווקטור בעל משקל .(1
11
להלן הטבלה המתקבלת במקרה שלנו... משקל 0
1 2
ווקטור 00000-0 -000 00-1 0-01 0010-10 -011
מס' מינתרם 0,1 0,2 0,8 1,3 1,5 2,3 2,6 3,11
ממשיכים לצמצם באופן דומה תוך סימון אימפליקנטים שאינם ניתנים לצמצום בשלב כלשהו נשים לב כי אנחנו מצמצמים רק ווקטורים השונים ביניהם בביט אחד בלבד ,בו לווקט' אחד יש ' '1ולשני ' ,'0ולא '.'- כאשר לא ניתן לצמצם יותר ,ניקח את הגורמים שנותרו וביחד עם הגורמים שסימנו בדרך נרשום לכ"א ביטוי לוגי ,ונחבר את כל הביטויים ,באופן הבא... 001− = x1 ' x2 ' x3 0 − 11 = x1 ' x3 x4
12
.5מעגלים אריתמטיים: נדון במעגלים האריתמטיים הבאים: Half Adder / Full Adder Comparator Multiplexer Decoder / DeMux Encoder / Priority Encoder :Half Adder / Full Adder רכיבים אלו מבצעים פעולה של סכימה על שני משתנים בוליאנים. ,Half Adderהינו בעל כניסות a,bויציאות carry outו .sum -להלן מימוש בצורת פונ' מיתוג: S = a⊕b Cout = ab ל Full Adder -פעולה זהה ,אולם יש לו כניסה נוספת ,carry inהמאפשרת להתחשב ב carry -מחישוב קודם .במקרה זה ,המימוש הוא... S = a ⊕ b ⊕ Cin Cout = ab + aCin + Cinb אם ברצוננו לחבר שני מספרים בבסיס בוליאני באורך ,xנשרשר -x FAים כך שה carry in -שנכנס לראשון הוא ' ,'0וה carry in -של כל ה-FA -ים האחרים הוא ה carry out -של ה FA-שלפניהם. קיימים -FAים הסוכמים מספרים בוליאניים באורך 4ביט. :Comparator רכיב זה משווה בין שתי מלים באורך 4ביט ,ואומר לנו האם המספר הראשון גדול יותר ,השני גדול יותר או שהם שווים. לרכיב זה יש שמונה כניסות )ארבע עבור כל מלה( ושלוש יציאות שרק אחת מהן מקבלת ' '1והשאר '.'0 היציאות הן ) Gמקבלת ' '1כאשר ) E ,( A > Bמקבלת ' '1כאשר ( A = Bו) L -מקבלת ' '1כאשר A < B ( שרשור רכיבים כאלו הוא פשוט במיוחד .אם ברצוננו לבחון מלים באורך 8ביט ,רכיב אחר יבדוק את ארבעת הביטים הראשונים ,ואחר את האחרונים .בתוצאת הרכיב השני נתעניין רק אם , E1 = 1כלומר ארבעת הביטים הראשונים שווים. :Multiplexer רכיב זה מקבל ככניסה כתובת של כניסה אחרת ומעתיק אותה למוצא. ל MUXישנן nכניסות בקרה )כתובת( ו 2 n -כניסות .המוצא היחיד של הרכיב ) ,(Fמשקף את הכניסה ,I שכתובתה נתונה ע"י המספר הבוליאני שנתון בכניסות הכתובת. ל MUXכניסה נוספת ,enableאשר עבור ערך מסויים שלה ,הרכיב מוציא אפס ללא תלות בכתובת ובכניסות .אנחנו נעבוד בד"כ עם -MUXים שעבורם ערך זה הינו .0 אם ברשותנו שני ,MUX 4X1וברצוננו לבנות ,MUX 8X1נכניס את כניסות הכתובת s0 , s1כרגיל ,את כניסת הכתובת s2ל enable -של הרכיב השני ואת אותה כניסה בשלילה ל enable -הראשון .כעת נכניס את הכניסות I 0 ..I 3לרכיב הראשון ,ואת I 4 ..I 7לשני .כל שנשאר לעשות הוא להכניס את שני המוצאים לשער .OR
13 ניתן לממש באמצעות MUXפונ' מיתוג ,אם אנחנו מכניסים את המשתנים לכתובת ,ושמים בכניסות שהינן המינתרמים המתאימים ' '1ובאחרות ' .'0ניתן להכניס לכניסות הרכיב גם כניסות שאינן הקבועים ' '1ו,'0' - אלא תלוייות במשתנים נוספים ,ובאופן זה לפשט מעגל מורכב הממש פונ' של משתנים רבים. :Decoder / DeMux מפענחים אלו מקבלים ככניסה כתובת של יציאה מסויימת ,ודרכה בלבד מוציאים '.'1 לחלק מהמפענחים כניסת ,enableשמנטרלת את פעולת המפענח כשערכה אפס .בעזרת כניסה זו ושער NOTאחד ,ניתן לבנות מפענח בגודל כפול משני מפענחים קטנים. DeMuxהוא למעשה מפענח שאנו מתייחסים אליו באופן שונה .נתייחס לרכיב זה כאילו כניסת ה enable היא ,inputוכניסות הכתובת מורות לרכיב דרך איזו יציאה להוציא את הערך הנכנס. :Encoder / Priority Encoder מקודד הוא רכיב הפוך למפענח .הוא מקבל מספר כניסות שרק אחת מהן ערכה ' ,'1ומחזיר את הכתובת של הכניסה .ברכיב זה נוצרת בעייה אם יותר מכניסה אחת מקבלת ערך ' ,'1ולמעשה המוצא עלול להראות כתובת של כניסה שערכה בכלל ' .'0לכן קיים רכיב שנקרא ,priority encoderוהוא מחזיר את הכתובת של הכניסה המופעלת המשמעותית ביותר ,כלומר אם הכניסות 1ו 6 -פועלות ,הוא יתעלם לחלוטין מכניסה .6
14
.6מערכי זכרון: קיימים שלושה סוגי מערכי זכרון: ROM PLA PAL :(Read-Only Memory (ROM מערך זה מורכב מכניסות כתובת העוברות דרך מפענח לשורה של רכיבי ORבעלי ,fusible linksכלומר לא כל יציאות המפענח נכנסות לכל רכיב .ORכל רכיב ORיתנהג באופן מוגדר עבור כתובת מסויימת. :(Programmable Logic Arrays (PLA כל משתני הכתובת עוברים דרך שערי ANDשיציאותיהם מהווים למעשה מינתרמים ,ומשם למספר שערי ORשכל אחד 'בוחר' באילו מינתרמים להשתמש .בצורה זו ,מתקבלת ,עבור כתובת קבועה ,מילה שאורכה נקבע ע"י מספר שערי ה.OR - :PAL מערך זכרון זה פועל באופן הפוך ל ,PLA -כל משתני הכתובת עוברים דרך שערי ORשיציאותיהם מהווים למעשה מקסתרמים ,ומשם למספר שערי ANDשכל אחד 'בוחר' באילו מקסתרמים להשתמש .בצורה זו, מתקבלת ,עבור כתובת קבועה ,מילה שאורכה נקבע ע"י מספר שערי ה.AND -
15
.7רכיבי זכרון: אנחנו מכירים 3רכיבי זכרון מסוג :Latch SR-Latch Gated SR-Latch (Transparent Latch (D-Latch שבהם ,הערך הנשמר בזכרון תלוי בערכי הכניסות ובערך השמור הקודם. ו 4-רכיבי זכרון מסוג :Flip-Flop SR-FF JK-FF T-FF D-FF שבהם ,בשונה מרכיבי ,Latchהערך השמור בזכרון משתנה רק בזמנים קבועים כלהם כפי שנקבעים ע"י כניסת שעון.
16
.8שימוש ברכיבי זכרון :מערכת סדרתית סינכרונית: מערכת סדרתית סנכרונית היא מכונה המווסתת ע"י שעון .למכונה זו כניסות בינאריות יציאות בינאריות וזכרון. תכנון מערכת סדרתית מתבצע בשלבים באים: סיפור המעשה. בניית דיאגרמת מצבים. בניית טבלת מצבים. צמצום טבלת המצבים. הקצאת מצבים ובחירת רכיבי זכרון. בניית טבלת מעברים ויציאה. מציאת פונ' ערור ויציאה. שרטוט המעגל המממש את המע'. סיפור המעשה: בשלב זה אנחנו מקבלים את דרישות הלקוח ו"עושים בהן סדר" כך שנקבל תיאור פשוט של פעולת המערכת. בניית דיאגרמת מצבים: נקרא לכל מצב זכרון אפשרי באות ,ונרשום את תגובת המע' בכל מצב לכניסה אפשרית ,דהיינו מה יהיה המצב הבא עבור כניסה זו ,ומה יהיה המוצא... נסמן בחיצים את המצב הבא ועל כל חץ נרשום את ה input/output -עבור מעבר זה. בניית טבלת מצבים: מעבירים את דיאגרמת המצבים לטבלה שבה רשום ,עבור כל כניסה אפשרית ,מהו המוצא הדרוש ומה המצב הבא .בצורה .state,output צמצום טבלת המצבים: ייתכן שבמכונה מסויימת ,לשני מצבים את אותה ההתנההגות בדיוק .עלינו להפעיל את אלגוריתם הצמצום של .moore הגדרה: שני מצבים Si , S jנקראים בני הפרדה אם קיימת סדרת כניסה אחת לפחות שמספקת מוצא .1 שונה עבור שני המצבים ההתחלתיים. שני מצבים Si , S jנקראים -Kבני הפרדה אם קיימת עבורם סדרת הפרדה באורך .K .2 שני מצבים Si , S jנקראים -Kשקולים אם לא קיימת עבורם סדרת הפרדה באורך Kאו .3 פחות. האלגוריתם של :Moore נפתח בקב' המצבים שהינם -0שקולים ) P0כולם(. .1 נבצע חלוקה של P0למצבים -1שקולים )עפ"י מוצא בלבד( .מתקבל . P1 .2 נמצא את המצבים העוקבים ל P1 -עבור כל כניסה אפשרית ונחלק אותם למצבים שהם -1 .3 שקולים .מתקבל - P2חלוקת המצבים לקב' מצבים -2שקולים.
17 עד אשר . Pk = Pk +1נמצא מתוך Pnאת Pn +1ע"י מציאת המצבים העוקבים וחלוקתם
.4 עפ"י -nשקילות.
אם לאחר עצירה נמצאו מצבים שאינם בני הפרדה ,ניתן לקרוא להם עפ"י אותה אות. הקצאת מצבים ובחירת רכיבי זכרון: נבחר את רכיבי הזכרון שבהם ברצוננו להשתמש ,ונקרא לכל מצב שהוגדר עפ"י אות בקוד בינארי כלשהו... למשל .A=001 ...נרשום את טבלת הערור של רכיב הזכרון שבחרנו להשתמש בו. בניית טבלת מעברים ויציאה: נחלק את טבלת המצבים לשתי טבלאות ,אחת המתארת את ה ,next state -ושנייה המתארת את המוצא. בטבלאות אלו לא נתאר את המצבים עפ"י אותיות אלא עפ"י הקוד הבינארי המתאר אותם. מציאת פונ' ערור ויציאה: מתוך y1 , y2המתארים את המצב הנוכחי כפי שהוא שמור בזכרון ,ובעזרת משתנה הכניסה נמצא את פונ' הערור עבור ) Y1 ,Y2המבוא לרכיב הזכרון כך שהוא יזכור את ה next state -הדרוש ,ואת הפונ' עבור המוצא. שרטוט המעגל המממש את המע': יש לזכור לסמן כניסת שעון ,ולרשום באיזה רכיב זכרון מדובר. ל FSM -מגבלה משמעותית אחת .היא חייבת להפיק פלט מחזורי תחת פלט מחזורי .לכן ,אם נידרש לבנות מכונה שמוציאה 1כאשר מצטבר מספר אחדים בכניסה שהוא ריבוע שלם ,נאמר שלא ניתן לבנות מכונה כזו, כיוון שעבו הכניסה המחזורית 1111111111נקבל פלט לא מחזורי .01001000010
18
.9שימוש ברכיבי זכרון :מערכת סדרתית א-סינכרונית: מערכת סדרתית א-סינכרונית פועלת ללא שעון ומה שגורם לשינוי בה הוא שינוי במצב הכניסה .נשתמש ברכיבים שנקרא להם "רכיבי השהייה" .סינתזה של מכונה א-סינכרונית מתבצעת בשלבים הבאים: הגדרת מצבים יציבים. רישום טבלת זרימה פרימיטיבית. צמצום טבלת הזרימה. הקצאת מצבים. קביעת היציאות במצבים הלא-יציבים. תכנון המע' הקומבינטורית. שרטוט המעגל. הגדרת המצבים היציבים: שקול לחלוטין למצבים שהגדרנו עבור מע' סדרתית סנכרונית. רישום טבלת זרימה פרימיטיבית: עמודות – מצבי כניסה אפשריים. שורות – מצב יציב אחרון. נמצא עבור כל מצב יציב את הכניסה המגדירה אותו ,ובתא בו הם מצטלבים נרשום את המצב היציב )נסמן מצבים יציבים ע"י הקפתם בעיגול( ואת המוצא הדרוש. עבור כל מצב יציב נתייחס לשינוי באחד ממשתני הכניסה )הם אינם משתנים יחד!( ,ונרשום את המצב )בינתיים לא יציב( שאליו אנחנו עוברים .בשלב זה לא נרשום מוצא עבור המצבים הלא יציבים .להלן טבלה לדוגמא... 00 01 11 10 )(1 (1),0 2 4 )(2 1 (2),0 3 )(3 2 (3),1 4 )(4 1 5 (4),0 )(5 2 (5),0 4 צמצום טבלת הזרימה: נבצע זאת באמצעות גרף מיזוג. הגדרה :שורות שאין בהן סתירה הן שורות שעמודותיהן זהות ,ללא התחשבות ביציבות המצבים או ב '.'- גרף המיזוג הוא גרף שצמתיו הן המצבים בטבלת הזרימה הפרימיטיבית ,וקיימת קשת בין שני מצבים שאינם סותרים. נחפש בגרף כיסוי מלא וזר ע"י תת-גרפים מלאים עפ"י ההגדרות: הגדרות:
19 .1 .2 .3
אם כל הצמתים נמצאים בתת-גרף אחד לפחות נאצר שזהו כיסוי מלא. אם כל צומת נמצא בתת-גרף אחד לכל היותר נאמר שהכיסוי זר. תת-גרף מלא הוא תת-גרף שבו כל הצמתים קשורים זה לזה.
הקצאת מצבים: שני מצבים הנמצאים לאחר חלוקה בתת-גרף כלשהו שקולים וניתן להגדירם ע"י מצב יחיד. קביעת היציאות במצבים הלא יציבים: בטבלת הזרימה המצומצמת ,נרשום את המוצא עבור כל מצב שאינו יציב בצורה כזו שנמנע glitchכלומר מוצא שעובר מ ' '0ל ' '0דרך ' '1או להיפך. תכנון המע' הקומבינטורית: מציאת פונ' ערור ומוצא בדומה למע' סנכרונית. שרטוט המעגל: אין הפתעות. מירוצים ומירוץ קריטי: כאשר יותר ממשתנה מצב אחד צריך להשתנות ע"מ להגיע למצב חדש נוצר מצב שבו אנחנו נימצא בשלב כלשהו במצב ביניים שאינו המצב ההתחלתי ואינו המצב הסופי .אם קיימת תלות בסדר השתנות המשתנים, זהו מירוץ .אם אנו עלולים להגיע למצב יציב שונה מכפי שתכננו בגלל סדר השתנות משתני הזכרון זהו מירוץ קריטי. מניעת מירוץ קריטי: ניתן לבצע זאת בשתי דרכים: חוג ).(cycle הקצאת מצבים שונה. מניעת מירוץ קריטי ע"י חוג ,היא העברת המע' דרך סדרה מוגדרת היטב של מצבי ביניים ,דהיינו שיני טבלת הזרימה. ניתן למנוע מירוץ קריטי ע"ע הקצאת מצבים שונה ,כך שלא יווצר מצב של שינוי בשני משתני המצב בו זמנית.
בהצלחה.
View more...
Comments