1. מימוש גוזר סינכרוני וגוזר אסינכרוני ע"י FFים ושערים לוגיים (כאשר נתונה התנהגות הסיגנלים (מוצא, שעון וכניסה)
2. לממש רכיב שמקבל מספר (כתובת) בעל 8 ביטים ועוד מספר size שיכול להיות 1,2,4 בלבד (כמובן בעל 3 ביטים) ומוציא את הכתובת+ size .
ניתן לממש רק ע"י:
– MUXים
– רכיב שיודע להוסיף 1 למספר בעל 8 ביטים בכניסה (Half Adder) . מותר להשתמש בו פעם אחת בלבד.
– חומרה צירופית (OR,NOT,AND וכו')
אולי פשוט ניתן לממש מחבר עם שרשרת של Half Adder כאשר כל Half Adder ממודל ע"י : s=AxorB , c=AB , רק בשני המסכמים (השני והשלישי) ישנה בעיה שיש צורך במידול של full adder (בראשון אין בעיה כי אין עדיין carry , ומהרביעי אין בעיה כי אין כניסה של size ).
את זה אפשר לפתור ע"י : להכניס לכניסה השנייה של ה half adder (הממודל) , xor של ביט ה – size ו ה – carry הקודם (וזה עובד כי רק ביט אחד של ה size הוא 1 ).
זה עובד, אבל אז צריך לגרור את הCarry לכל 8 הביטים, כי בכל מקום שיש Carry מדרגה קודמת וביט נוכחי של הכתובת, עשוי להיווצר Carry חדש. והרי מותר להשתמש ברכיב פעם אחת בלבד..
ואם כבר מממשים F.A. אפשר לעשות את זה כבר עד הסוף רק בעזרת שערים לוגיים, בלי הרכיב המדובר ובלי MUXים. אבל כנראה שגם זו לא הכוונה.
אפשר אולי ע"י מוקס 8X3, של 8 ביט. להשתמש בSIZE בתור SEL.
SEL=0, מעבירים כמות שהוא.
SEL=1, מעבירים '0'&[7:1]
SEL=4, מעבירים "00"&[7:2]
זה בעצם לעשות SHIFT ידני…
לחבר את זה לHA שיבצע INC. ולאחר מכן את התוצאה להעביר שוב בMUX כזה, שיצרף את הביטים "שהזזנו" חזרה לתוצאה.