סיכום קורס מערכות לוגיות ספרתיות

February 20, 2017 | Author: galone1235 | Category: N/A
Share Embed Donate


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‬‬

‫ווקטור‬ ‫‪000‬‬‫‪00-0‬‬ ‫‪-000‬‬ ‫‪00-1‬‬ ‫‪0-01‬‬ ‫‪001‬‬‫‪0-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

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF