היום נדבר על מפת קרנו, נצמצם פונקציות, על גורמים ראשוניים וגוררים ראשוניים וצירופי ברירה.
בנוסף, נדבר על שהייה וחישוב שלה.
מפת קרנו
ראינו שאפשר לממש פונקציות בשערים לוגיים, אבל שער הוא בעל שטח ולוקח אנרגייה והנדל"ן מוגבל.
נרצה לממש פונקציות בתצורה היעילה ביותר!
מפת קרנו מורכבת:
- 2n משבצות עבור n משתנים
- כל משבצת מתאימה למינטרם או מקסטרם
- סדר העמודות/שורות הוא לפי קוד גריי (קוד ציקלי)
- לכל משבצת יש n משבצות סמוכות
zw\xy00011110000132014576111213151410891110
הצמצום מתבצע לפי הכללים הבאים:
- לסכום מכפלות: Ax+Ax′=A
- למכפלות סכומים: (A+x)(A+x′)=A
לדוגמה:

ליטרל או מכפלת ליטרלים המכוסה ע"י הפונקציה.
g⊆fifg=1⟹f=1

גורר שכל השמטה של ליטרל ממנו יוצרת מכפלה שאינה מכוסה ע"י הפונקציה.
עבור הפונקציה f=yw מתקיים כי:
zw\xy00011110000111111110ywראשוני!zw\xy00011110000111111110yz′wלא ראשוני!
הגדרה 3 (גורר ראשוני הכרחי)
גורר ראשוני המכסה מינטרם שאינו מכוסה ע"י אף גורר ראשוני אחר.
נניח בטבלה הבאה:
zw\xy0001111000110111111110
הגוררים הראשונים ההכרחים הינם: yw,x′y′z′, שהם הריבוע והפס בשמאל למעלה.
מציאת הצגה מינימלית
השיטה הולכת כך:
- יצירת רשימה של כל הגוררים הראשוניים.
- מציאת כל הגוררים הראשונים ההכרחיים והכנסתם לביטוי.
- הוצאת כל הגוררים הראשונים ההכרחיים וכל הגוררים הראשונים שכוסו ע"י ההכרחיים מרשימת הגוררים.
- אם קבוצת הגוררים הראשונים ההכרחיים מכסה את f - סיימנו.
- אחרת, נבחר את הגוררים הראשונים המינימליים, כך שכל הפונקציה תכוסה.
נתונה הפונקציה: f(x,y,z)=∑(0,1,2,4,5). מצאו את סכום המכפלות ומכפלת הסכומים המינימלית:

נתחיל מהמינטרם ונרשום את כל הגורמים הראשוניים: x′z′,y′, נכניס את כל ההכרחיים לביטוי ואז נקבל כי כיסינו את f כך:
f(x,y,z)=x′z′+y′
באותו הדרך, במכפלת סכומים נקבל:
f(x,y,z)=(z′+y′)(y′+x′)
נצמצם כעת את הפונקציה הבאה: f(w,x,y,z)=∑(0,1,2,4,5,7,10,11,14,15) ונמצא את כל הכיסויים המינימליים כסכום מכפלות.
PI:EPI:wxz,xyz,w x z,xyz,wyw y
כעת נוכל לכסות את המפה ונקבל את הפונקציות הבאות:
[להשלים אחרי התרגול[שקף 16]]
נתונה הפונקציה: f(w,x,y,z)=x(w+y)+z+x(y+wz).
מצאו ביטוי מינימלי ל-f.
נפתח סוגריים:
f(w,x,y,z)=xw+xy+z+x y+xwz
כעת, נציב במפת קרנו ונבחר את האפסים כאחדים :)

הגדרה 4 (צירופי ברירה -
∅)
צירופים שבהם הפונקציה אינה מוגדרת וניתן להגדירם כ-0 או 1 כרצוננו.
אם נכסה צירוף ברירה תתקבל בסוף הליך צמצום הפונקציה שונה מאשר אם לא היינו מכסים אותו, אך שתי הפונקציות נכונות. כלומר, שתיהן מייצגות נכון את הצירופים שבהם הפונקציה מוגדרת.
מצאו ביטוי מינימלי לפונקציה:
f(w,x,y,z)=∑(1,4,5,12)+∅∑(0,3,8,15)

נבחר ששני צירופי הברירה העליונים יהיו 1 בעוד ששני התחתונים יהיו 0 כדי שנוכל לצמצם הכי טוב שאפשר:

f(w,x,y,z)=y z+w y=∑(0,1,4,5,8,12)
נתון הרכיב הצירופי הבא:

ל-f1 4 כניסות ויציאה אחת. נתון שהמוצא של הרכיב f1 יהיה 1 אם ורק אם בכניסות שלו יהיו לפחות 3 אחדים.
מהו הייצוג המינימלי של f1 כסכום מכפלות עבור הרכיב הספציפי הזה?
נבנה מפת קרנו של האירוע הזה:

נשים לב כי החוט של w זהה לחוט של x ולכן הם תמיד יהיו שווים. לכן, לא איכפת לנו מה יקרה אם הם שונים כי זה בחיים לא יקרה ולכן שמנו שם צירוף ברירה.
PI:xz,wz,wy,xy
אין גורם הכרחי שכן כל 1 מכוסה לפחות על ידי שני ריבועים. לכן, נבנה 4 פונקציות:
f1=xz+wyf2=xz+xyf3=wz+wyf4=wz+xy
אלו כלון ייצוג של f1 לאור צירופי הברירה, שכן אנו יכולים לבחור שהם 0 ו-1 מתי שאנו רוצים.
זמני שהייה של שערים לוגיים
שערים לוגיים הם רכיב פיזי ויש להם דיליי אופייני שאפשר לחשב.
הגדרה 5 (
tCD)
הזמן מתחילת ביצוע שינוי בכניסה במהלכו מובטח כי היציאה אינה משנה את ערכה הלוגי.
ההגדרה הזו היא קצת הזיה, אז בואו נסתכל על מה הולך.
מרגע שהגענו ל-VIH ישנו שינוי שמתרחש בשער וזאת עד שנגיע ל-VIL.
tCD מדבר על הזמן בין הרגע שהקלט מתחיל להשתנות לרגע שהפלט מתחיל להשתנות
הזמן מרגע סיום ביצוע השינוי בכניסה שלאחריו מובטח כי היציאה התייצבה על ערכה הלוגי הסופי.
tPD מדבר על הזמן מרגע שהפלט מתחיל להשתנות ועד שהוא מתייצב בערכו הסופי.

נניח יש לנו שער NAND עם tcd=5ns,tpd=10ns.

סוגים של זמני שהייה
אנחנו מבדילים בין tpdLH,tpdHL שכן הזמן השהייה בין 0 ל-1 שונה מזמן השהייה בין 1 ל-0.
בנוסף יש glitch-ים מדי פעם והם מסומנים tpdHH,tpdLL.
tpd,H=max{tpdLH,tpdHH}tpd,L=max{tpdHL,tpdLL}tpd=max{tpdL,tpdH}
אנו מעוניינים לחשב tpdHL עבור המסלול הבא:

כלומר, אנו מעוניינים לחשב את tpd כאשר היציאה עוברת מגבוה לנמוך.
שער 3 הוא שער NAND שכניסותיו זהות. לכן, כשאנו עוברים מ-H ל-L בפלט אנו נדרש שקלט יעבור מ-L ל-H.
באותו האופן, השער השני הוא OR ולכן, שתי כניסותיו יעברו מ-L ל-H שכן הן זהות.
השער הראשון הוא NOT ולכן כניסותיו יעברו מ-H ל-L.
נתונה הטבלה הבאה לפיה נחשב:
NOTORNANDtpdLH343tpdHL524
tpdHL(0→3)=tpdHL(NAND)+tpdLH(OR)+tpdLH(NOT)=4+4+3=11ns
כעת, אנו מעוניינים לחשב את tpd. לשם כך נדרש לחשב את tpdLH.
tpdLH(0→3)=tpdLH(NAND)+tpdHL(OR)+tpdHL(NOT)=3+2+5=10ns
tpd=max{11ns,10ns}=11ns
מצאו ביטוי ל-tpd(Z→Q) בהנחה שרק כניסה Z משתנה.
קבעו מהו ערכן של שאר הכניסות Y,X שגורמות לשינוי במוצא Q.

כדי לנעול את ה-OR ואת ה-NAND כדי שרק Z ישפיע עליהם נקבע X=0,Y=1.
כעת נתחיל מ-LH שבשבילו הכניסה של OR תבצע שינוי LH ב-NAND יתבצע שינוי LH וב-NOT יתבצע HL ואז:
tpdLH(Z→Q)−tpdLH(OR)+tpdLH(NAND)+tpdHL(NOT)
באותו האופן נחשב את tpdHL ואז נמצא באמצעות מקסימום.
מצאו ביטוי ל-tpdHL(X→Q) וביטוי ל-tpdLH(X→Q)

נשים לב כי בסוף הפלט הוא x שכן x=x.
כאשר אנו משנים את X מ-0 ל-1 הפלט יתעדכן ישר כש-X יפגע בו שכן זה שער OR. לכן:
tpdLH=tpdLH(OR)
בצד השני זה לא כזה פשוט, שכן השערים צריכים להתהפך כדי שב-OR לא יהיה 1 מהצד של ה-NOT.
tpdHL=tpdLH(NOT)+tpdHL(NOT)+tpdHL(OR)
זמן שהייה של פונקציה צירופית
זמן השהיה של כניסה x0 הוא הזמן שנדרש מרגע שכניסה זו משתנה ועד שמוצא המערכת משתנה.
זאת כאשר שאר הכניסות קבועות.
- זמן ההשהיה תלוי במימוש הפונקציה
- יתכן זמן השהיה שונה מכניסה מסויימת למוצא בהתאם לערך ביתר הכניסות
- יתכן שעבור ערכים בכניסות האחרות, כניסה x0 לא תשנה את המוצא.
זמני ההשהיה מכניסה מסויימת נקבעים לפי המקרה הגרוע ביותר.
אנו נשתמש במפת קרנו כדי לראות אילו ערכים צריכים להיות ביתר הכניסות כדי ששינוי יתרחש.

נתונות הפונקציות הלוגיות הבאות:
S=x⊕y⊕Ci
C0=xy+xCi+yCi
השתמשו בשערים הבאים למימוש המעגל:
2 input AND2 input OR2 input XORtpdLH152230tpdHL202223

נתחיל בלחפש Ci→Cout.
מה אנחנו רואים כשאנו מסתכים על המעגל הזה?
- השער OR לא איכפת לנו איזה שינוי הוא עושה.
- ישנה סימטריה בין x ל-y.
ננחש ש-tpd(Ci→C0)=tpdHL(AND)+2tpd(OR)=64ns.
איך אנו יודעים שזה מסלול חוקי? נבחר x=0 ואז כיבינו את u2. נשים y=1 ואז נקבל בדיוק את המסלול שרצינו.
זה המקרה הגרוע שניחשנו והוא קיים ולכן אין צורך לבדוק עוד אפשרויות.
נותר לנו לעשות Ci→S.
- אין לנו הרבה חופש בחירה
- זה חייב לעבור דרך שער XOR.
- ה-XOR המסומן u6 לא משנה כלל כאשר Ci משתנה שכן אין הוא תלוי בו.
ננחש את ה-XORLH ואז: tpd(Ci→S)=tpdLH(XOR)=30ns
המסלול הזה מתקיים כאשר x=y=0 ואז u6 מחזיר 0.
אזי בהתחלה היו לנו 0 בשתי הכניסות של u7 ואז שינינו את Ci ל-1 ולכן גם u7 ישתנה.
כעת נדרש לבדוק גם כן עבור x,y. - נבדוק רק עבור x שכן x,y סימטריים לחלוטין.
tpd(x→S)=2tpdLH(XOR)=60ns
tpd(x→C0)=tpd(Ci→C0)=64ns
ממשו את הפונקציה הלוגית בעזרת שערי NAND עם 2 כניסות בלבד.
C0=xy+xCi+yCi
=xy⋅xCi+yCi=xy⋅xCi⋅yCi
D=NAND(NAND(x,y),NAND(x,Ci))
NOT(D)=NAND(D,D)
C0=NAND(NOT(D),NAND(y,Ci))
ממשו את הפונקציה הלוגית בעזרת שערי NAND עם 2 כניסות בלבד.
S=x⊕y⊕Ci=XOR(XOR(X,Y),Ci)
XOR(a,b)=ab+ba=aa+ab+ab+bb=a(a+b)+b(a+b)=a(a+b)+b(a+b)
=a(a+b)⋅b⋅(a+b)=a⋅a⋅b⋅b⋅a⋅b
S=NAND(NAND(a,NAND(a,b)),NAND(b,NAND(a,b)))