מצא מעגל עם 4 כניסות שהוא מימוש מינימלי תחת הדרישות הבאות:
- המעגל יוציא 1 עבור הקלטים 0,3,5,11,12,15
- המעגל יוציא 0 עבור שאר המספרים אשר מחלקים את 234
- המעגל יוצא ∅ עבור שאר המספרים.
נבנה את הפונקציה שלנו:
f(x,y,z,w)=∑(0,3,5,11,12,15)+∅∑(4,7,8,10,14)
כעת, נבנה מפת קרנו על מנת לצמצם את הפונקציה:
zw╲xy00011110001101∅1∅1111∅10∅1∅
כעתף נוכל לצמצם ע"י בחירת 0 ו-1ים ב-∅.

f(x,y,z,w)=zw+zw+xyw=z⊕w+xyw
וזה יהיה המעגל שלנו.

נתון המעגל הצירופי הבא:

מצאו את המימוש המתאים עבור הפונקציה לאחר פישוטה

נסמן את התשובות מימן למעלה א, שמאל למעלה ב, ימין למטה ג ושמאל למטה ד.
תחילה נמצא את המימוש של הפונקציה הנתונה:
f(a,b,c)=((ab)⊕(a+b))⊕((a+b)+(b+c))
כעת נתחיל לפשט אותה:
f(a,b,c)=((ab)⊕(a+b))⊕((a+b)+(b+c))=((ab)⊕(ab))⊕(ab+bc)=((ab)⊕(ab))⊕(bac)
a0101b0011a1010b1100⊕1001
לכן מתקיים: (ab)⊕(ab)=a⊕b.
f(a,b,c)=a⊕b⊕b(a+c)=(ab+ab)⊕b(a+c)=(ab+ab)b(a+c)+(ab+ab)b(a+c)
=(abab+abcb+abab+abcb)+(ab+ab)b(a+c)=(0+0+ab(1+c))+(ab+ab)b(a+c)
f(a,b,c)=ab+(ab+ab)(b+ac)=ab+acb+ab=a(b+b)+abc=a+abc=a+bc
וזוהי הפונקציה הסופית שלנו.
התשובה הנכונה הינה א שכן: f(a,b,c)=a+bc=a+b+c לפי דה מורגן.
נתון המעגל הצירופי הבא:

וכן טבלת התזמונים הבאה:
NAND8NOT6OR12AND10tpd
חשבו את tpd מכל כניסה ליציאה.
נתחיל מהכניסה x. עבורה יש שני מצבים tpdLH ו-tpdHL. מכיוון שלא נתונים לנו הזמנים האלו פשוט נניח שקיבלנו את המקסימום ונשתמש בו.
tpd מחושב על ידי המסלול הארוך ביותר. ל-x יש שלושה מסלולים בהם הוא הולך. נחשב אם כן את כולם:
tpd(x→out)1=tpd(NAND)+tpd(AND)+tpd(OR)=8+10+12=30
tpd(x→out)2=tpd(NAND)+tpd(AND)+tpd(OR)=30
tpd(x→out)3=tpd(NAND)+tpd(NAND)+tpd(OR)=8+8+12=28
לכן, tpd(x→out)=30.
עבור y יש שני מסלולים גם כן.
tpd(y→out)1=tpd(NAND)+tpd(AND)+tpd(OR)=30
tpd(y→out)2=tpd(NOT)+tpd(NAND)+tpd(OR)=6+8+12=26
לכן, tpd(y→out)=30.
עבור z גם כן יש שני מסלולים:
tpd(z→out)1=tpd(NOT)+tpd(NAND)+tpd(AND)+tpd(OR)=6+8+10+12=36
tpd(z→out)2=tpd(NOT)+tpd(NAND)+tpd(NAND)+tpd(OR)=6+8+8+12=34
לכן, tpd(z→out)=36.
נתון המעגל הצירופי הבא

וכן טבלת התזמונים הבאה:
NAND58NOT64OR1212AND109tpdLHtpdHL
חשבו את tpdHL עבור כל כניסה.
נתחיל מ-x ונבדוק איפה המסלול הארוך ביותר.
⇐ המסלול הראשון כדי שהיציאה עבור מ-H ל-L נדרש ששער ה-OR לא יקבל שום קלט H. לכן, נדרש שהמעגל התחתון יהיה L. לכך, נדרש לקבל y=0 ו-z=1. ישנה רק אופציה אחת עבור הקלטים האחרים ולכן זה מאוד נחמד.
עבור המסלול העליון, נדרש ששער ה-AND יהפוך מ-1 ל-0 ולכן, נדרש שה-NAND יהפוך מ-1 ל-0. כלומר, ששתי הכניסות אליו יהיו 1.
נשים לב כי היציאה תמיד תהיה 1 ולכן, אין משמעות לחישוב.
בשאלה הבאה הניחו ש-tpd של כל השערים זהה וגם ש-tpd של כל רכיב שווה ל-tcd.
נתון המעגל:

בחר את הטענה הנכונה עבור המעגל הנתון. יש לבחור תשובה אחת בלבד:
- במעבר xyz:000→001 קורה HAZARD
- במעבר xyz:111→110 קורה HAZARD
- במעבר xyz:010→011 קורה HAZARD
- במעבר xyz:101→001 קורה HAZARD
- אף תשובה אינה נכונה
נבנה פונקציה על מנת לשים אותה במפת קרנו:
f(x,y,z)=(yx+y)(y⊕z)=(x+y)(y⊕z)
נחשב את טבלת האמת שלה:
x01001101y00101011z00010111f11000001
לכן נקבל:
f(x,y,z)=xyz+xyz+xyz=∑(0,4,7)
נצייר מפת קרנו:

נשים לב כי לא יכול להיות מצב שבו יהיה HAZARD. לכן, התשובה הנכונה היא ה.
להלן נתון מימוש של רכיב מסויים המקבל כקלט 2 כניסות בינאריות.

נתונה טבלת זמני השהיה של השערים המופיעם במימוש:
OR128NOT45AND76tpdLHtpdHL
עבור הרכיב כולו, מהו משך הזמן המקסימלי מרגע ביצוע שינוי באחת הכניסות ועד להתייצבות המוצא?
לא הצלחתי להבין וג'מיני לא הסביר את זה טוב מספיק כדי שאני אבין.
נתונה המערכת הבאה:

עבור הקלט a=a3a2a1a0,b=b3b2b1b0 כאשר a3,b3 הם ה-MSB כך ש-a>b. מה יהיה הפלט s?
א. S=b−a
ב. S=a−b−a
ג. S=a−b
ד. S=a−b+1
ה. S=a+b−1
נשים לב כי המעגל עושה:
S=a+b
לפי שיטת המשלים ל-2 נקבל −b=b+1 ולכן:
S=a−b−1
וזוהי בדיוק התשובה.
נתונה המערכת הבאה

עבור הקלט a=a2a1a0,b=b2b1b0 כך ש-a>b.
מה יהיה הפלט s?
רמז: חלוקת מספר בינארי ב-2 שקולה להזזת המספר ימינה תוך התעלמות מהביט הקטן ביותר וריפוד משמאל באפסים. למשל: 2101=010.
מודולו 2 הוא הביט הקטן ביותר במספר. למשל 001(mod2)=1. באופן דומה 001(div2)=00.
א. S=b(div2)+[a−a(mod2)]⋅2+3
ב. S=b−b(mod2)+a−(a(div2)(mod2)⋅2)+4
ג. S=b(div2)+a−(a(div2)(mod2))+3
ד. S=b−b(mod2)+(a−a(mod2))⋅2+3
ה. תשובות א'-ד' לא נכונות.
נסתכל על פעולת כל F.A. כרגע:
S0=a0+1+1=a0+1
S1=b1+1+Cout0
S2=b2+a2+Cout1
S=4S2+2S1+S0=4b2+4a2+2b1+2+a0+1=4b2+2b1+4a2+a0+3
נשים לב כי יש לנו פה את b ללא הביט b0 מה שיוצר לנו b−b(mod2).
בנוסף נשים לב כי a פה הוא בלי הביט האמצעי ולכן הוא לא a−a(mod2).
לכן, האופציה היחידה האפשרית עם התנאים הללו היא ב.
מצאו מימוש באמצעות בורר 8→1 למערכת שתקבל מספר בינארי בן 4 ספרות d=d3d2d1d0 ותחזיר ערך 1 אם המספר מחלק את 210 ללא שארית וערך 0 אחרת.
ניתן להניח שהמערכת אינה מקבלת בקלט את המספר 0 (כלומר הקלט 0000 אינו אפשרי) וכי מותר להשתמש בקבועים.
נבנה טבלת אמת של האם המספר מחלק את 210 או לא.
d(10)123456789101112131415d0101010101010101d1011001100110011d2000111100001111d3000000011111111210÷d✓✓✓X✓✓✓XX✓XXX✓✓
נדרש להשתמש באחת מכניסות ה-d לא כניסת sel שכן יש לנו רק 3 כניסות sel.
נבחר את d0 כמה שנכניס תחת הכניסות data ונראה מה יש לנו שם.
d101010101d200110011d300001111d0=0∅✓X✓X✓X✓d0=1✓✓✓✓XXX✓
ישן שתי אי התאמות ובהן נשים את d0. נבחר גם את d0=0 של 000 כ-✓ כדי לעשות לנו חיים קלים ואז:

דרך אחרת לממש את זה תהיה לקחת di אחר ולנסות לראות אם יש מצב בו אנו לא צריכים שער NOT.
נתון קוד Yarg בעל 3 ביטים y2,y1,y0 לייצוג המספרים 0−7.
Number01234567y211110000y101101010y011001001
מצאו את המימוש עבור הרכיב B2Y בעל שלוש כניסות x0,x1,x2 ושלוש יציאות y0,y1,y2.
הרכיב מקבל כקלט מספר מהתחום 0−7 המיוצג בקוד בינארי רגיל ומוציא כפלט את ייצוגו של המספר בקוד Yarg.
יש לבחור תשובה אחת:

נסתכל על טבלה בה אנו משווים בין הספרות הבינאריות לקוד:
x200001111x100110011x001010101Num01234567y211110000y101101010y011001001
נשים לב כי בכל שורה מתקיים y2=x2 ולכן זה יהיה המעבר הנכון. (תשובה B,A נפסלת)
כעת נדרש להחליט בין הבוררים השונים. נשים לב כי בתשובה C הבורר ל-y1 תמיד נותן x0 - נבדוק האם זה נכון: זה לא נכון עבור 0,1 וכדומה.
לכן, התשובה הנכונה היא D.
עומדת לרשותך כמות גדולה של מפענחים 2→4 (ללא כניסת Enable) "מקולקלים".
בשרטוט הבא מתואר המצב בו המפענחים המקולקלים מוציאים תמיד 0 ביציאות O1,O2 שלהם.
למעט התקלה הזו, המפענחים עובדים כרגיל.

עליך לממש מפענח 2→4 תקין (ללא כניסת Enable) באמצעות המפענחים המקולקלים ללא שימוש בשערים נוספים.
מהו המספר המינימלי של מפענחים מקולקלים הנדרש למימוש המפענח התקין?
מפענח מיצא את הדברים הבאים:
Y0=S0⋅S1Y1=S1⋅S0Y2=S1⋅S0Y3=S1⋅S0
לכל מפענח הערך של S0 לא באמת עוזר לנו והוא צריך להיות זהה ל-S1 כדי שנקבל איזשהו פלט משמעותי.
נקח שלושה מפענחים מקולקלים כאלו ונחבר את S0,S1 של השניים הראשונים לכניסות. זה יתן לנו את Y0,Y3.
כעת נדרש למצוא איך אנו יוצרים את Y1,Y2. אם פשוט נכניס את S0,S1 לבורר שני אנו נקבל בדיוק את Y0,Y3 - מה שאנו לא רוצים.
אם נחבר את S1 ו-S0 נקבל:
O0=S1⋅S0=S1⋅S0=Y1
O3=S1⋅S0=Y2
זה נותן לנו בדיוק את מה שאנחנו צריכים. אבל רגע, אין לנו את S0 ולכן אנו צריכים ליצור אותו באמצעות המפענח האחרון שלנו:
O0=S0⋅S0=S0
ולכן נדרש למינימום שלושה מפענחים.
נתון המעגל הבא בעל DFF המתעדכן בעליית שעון

הכניסה X מתעדכנת 3ns לפני ירידת השעון. מחזור השעון נראה כלהלן:

נתונים הזמנים הבאים:
Tsetup=5ns,Thold=10ns,Tcd(C→Q)=7ns,Tpd(C→Q)=12ns,Tcd(OR)=4ns,Tpd(OR)=7ns
מהו הזמן העובר במערכת מהתעדכנות X ועד להתעדכנות היציאה Z?
אנו מכניסים את X 3 ננו שניות לפני ירידת שעון. עד שה-X מגיע ל-D לוקח tpd(OR)=7ns. לכן, אנחנו 4 ננו-שניות לאחר ירידת השעון.
כדי ש-Q יתעדכן אנו נדרשים לחכות לעליית השעון הבאה ואז את הזמן tpd(C→Q).
אך נדרש לשים לב כי יש מספיק זמן ל-setup. האות מגיע משער ה-OR כ-12−4=8 ננו-שניות לפני עליית השעון. זמן ה-setup הנתון הוא 5ns ולכן, התנאי מתקיים ואנו יכולים להמשיך בעבודה.
לכן, הזמן שיקח ל-X להגיע ל-Z הינה 7+8+12=27ns בדיוק.
נתון המעגל הבא:

ה-D−FF מתעדכן בעליית שעון. הכניסה X מתעדכנת 10ns לאחר ירידת השעון.
מחזור השעון הינו 50ns כאשר חצי ממחזור השעון הוא נמצא בערך 0 וחצי בערך 1.
כמו כן נתונים הזמנים הבאים:
Tpd(OR)=7nsTpd(XOR)=6nsTpd(Clk→Q)=20nsTsetup=4nsTcd(OR)=4nsTcd(Clk→Q)=5nsThold=10ns
מצא מהו Tcd(XOR).
ה-FF דורש זמן hold בו הערכים בכניסה D לא ישתנו על מנת שנקבלם בזכרון.
ה-OR אשר מגיע ל-D תלוי ב-XOR מהסוף. לכן, אנו נרצה שערך של XOR לא ישתנה או יתעדכן מספיק זמן כדי שה-FF יתעדכן.
ברגע ש-Q מתחיל להשתנות אזי גם XOR יתחיל להשתנות ואז ה-OR. לכן, נדרש ש:
tcd(XOR)+5+4=tcd(Clk→Q)+tcd(XOR)+tcd(OR)≥thold=10ns
tcd(XOR)=1ns
בעיה - זו לא התשובה הרשמית.
נשים לב כי על מנת שהמעגל יעבוד אנו נדרשים ל-4ns של setup, כלומר 4ns שבו המידע יציב.
האות של x משתנה כ-10ns לאחר ירידת השעון. כלומר, נותרו עוד 15 שניות עד לעליית השעון.
tpd(XOR)+tpd(OR)=6+7=13ns
כלומר, לוקח 13ns לאות להתעדכן בכניסה D.
אזי, עד לעליית השעון נותרו 2 שניות אבל זה פחות מהזמן setup ולכן המעגל לא יהיה יציב ולכן לא ניתן לדעת מה יקרה כלל וכלל וזו התשובה האמיתית.
ניסית לבנות מחלק תדר כפי שראינו בתרגול שאמור לקבל בכניסתו שעון בעל מחזור באורך 100ns.
השתמשת בפליפ-פלופ בעל אילוצי הזמן הבאים:
tsetup=25nsthold=22nstcd=18nstpd=40ns
כשאחד המתרגלים בקורס ראה את המעגל חשכו עיניו. המתרגל הציע לתקן את המעגל מיד בטרם יראה אותו המרצה וציונך בקורס ייפגע.
התיקון שהציע המתרגל היה להוסיף מהפכים בעלי השהייה של 10ns והשהיית זיהום של 5ns במשוב המערכת:

אבל, כדרך המתרגלים, סירב אותו מתרגל לומר לך כמה מהפכים יש להוסיף.
כמה מהפכים יש להוסיף?
נדרש שזמן ה-hold שנדרש אליו יהיה קטן יותר מסך הזמנים של ה-not-ים ולכן:
k⋅5+18=k⋅tcd(NOT)+tcd≥thold=22ns
k≥⌈54⌉=⌈0.8⌉=1
לכן נדרש ללפחות שער NOT אחד.
נבדוק אם שאר התנאים מתקיימים על מנת שהמעגל יפעל(כי ספרתיות הזויים ולפעמים עושים שאלות מכשילות)
נדרש פה כי המסלול הארוך ביותר יהיה קצר יותר מזמן מזור השעון פחות ה-setup כדי שהמערכת תספיק להשתנות ולכן:
40+10k=tpd+k⋅tpd(NOT)≤tclock−tsetup=100−25=75
10k≤35⟹k≤1035=3.5
לכן, יש לכל היותר 3 מהפכים.
נשים לב שאם מספר ה-NOT ים יהיה אי זוגי, אנו נקבל בכל פעם את אותו התדר(כי יש גם NOT ב-FF) ולכן נרצה מספר זוגי של NOT-ים כדי שהמעגל יתפקד.
לכן, מספר השערים שנדרש אליו הוא k=2.
נתון המעגל הבא:

נתונים זמני הרכיבים הבאים:
tsetup=7nstpd(AND)=6nstcd(AND)=2nsthold=2nstpd(OR)=5tcd(OR)=2nstpd(C→Q)=15ns
ידוע כי הזמן בין עליית השעון לירידת השעון חייב להיות לפחות 13ns.
עדכון הכניסה x נעשה בירידת השעון וה-FF-ים פעילים בעליית השעון.
מהו זמן המחזור המינימלי של השעון שמבטיח פעולה תקינה של המעגל?
הניחו שפרק הזמן בין עליית השעון לירידת השעון מתוכנן היטב. כלומר, נקבע על מנת לאפשר פעולה תקינה של המעגל בזמן מחזור מינימלי.
שימו לב כי מחזור השעון אינו סימטרי בהכרח. כלומר, שני חלקי מחזור השעון אינם חייבים להיות זהים באורכם.
נסמן את הזמן מעליית השעון לירידתו ב-thigh. נתון כי thigh≥13.
נסתכל על המסלול מ-X ל-D1 שהיא הכניסה לפליפ פלופ הראשון במעגל.
ה-x משתנה בירידת השעון ונדגם בעליית השעון הבאה. לכן, נדרש שזמן ההגעה שלו, שבמקרה הזה יהיה tpd(AND) יהיה קטן מזמן שבו השעון למטה פחות זמן ה-setup.
tlow−tsetup≥tpd(AND)⟹tlow≥6+7=13
לכן מתקיים tlow≥13 גם כן.
כעת נסתכל על המסלול מ-Q1 ל-D1 שהיא הכניסה לפליפ פלופ הראשון במעגל.
ה-Q1 משתנה בעליית השעון וה-D נדגם בעליית השעון הבאה. סה"כ אנו עוברים מחזור שלם.
הזמן של המחזור פחות זמן סטאפס צריך להיות גדול מהזמן של AND + הזמן שלוקח ל-FF להשתנות.
tcycle−tsetup≥tpd(AND)+tpd(C→Q)⟹tcycle≥6+15+7=28
נשים לב כי 13+13=26 ולכן, בהכרח זמן המחזור המינימלי הינו tcycle=28ns.
נתון המעגל הבא המורכב משני פליפ-פלופים ושער NAND:

נתוני התזמון של הרכיבים הם:
tpd(NAND)tcd(NAND)8ns2nstpd(C→Q)tcd(C→Q)tsetupthold7ns5ns5ns4ns
מזינים שעון יחיד בו זמנית לשני הפליפ-לופים אך בגלל מגבלות פיזיקליות, השעון מגיע אליהם בהפרש זמן.
נגדיר tskew כהפרש בין הזמן בו מגיע האות CLK2 ל-FF השני לבין הזמן שבו מגיע האות CLK1 ל-FF הראשון.
נתון כי זמן המחזור של השעון הינו tcycle=25ns.
במעגל לעיל מהו התחום המותר עבור tskew?
כדי שהמעגל לא ישבר אנו נדרש שהזמן שלוקח ל-Q1 להגיע ל-D2 יהיה קטן ממחזור שעון שלם כדי שנוכל לקבל קלט.
לכן:
tcycle+tskew≥tsetup+tpd(NAND)⟹tskew≥5+8−25=−12
לכן בהכרח tskew≥−12.
כעת נחסום את tskew מלמעלה. לשם כך נראה כי הזמן hold צריך להיות קטן מהזמן שבו הכל נשאר יציב ובכך:
4+tskew=thold+tskew≤tcd(NAND)+tcd(C→Q)=5+2
tskew≤3
ולכן, מתקיים:
−12≤tskew≤3
(בדפים רשום שהתשובה היא −5ns≤tskew≤3ns וזו גם שאלה אמריקאית אז ככה ידעתי שזו באמת התשובה הנכונה)