שאלה במעגלים לוגים

n0b0dy

New member
שאלה במעגלים לוגים

ראיתי שיש מישהו ששם כבר את השאלה הזאת לפני כמה ימים, אבל ענו לו רק על השאלה השנייה שהוא שם, ואני מנסה לפתור את השאלה הזאת כבר כמה ימים ולא מצליח. בנה מעגל המקבל כקלט 8 סיביות, ומוציא כפלט את מספר ההתחלפויות בין 0 ל-1ברצף הארוך ביותר של -01-ים. במילים אחרות: בקטע באורך מקסימלי שבו מופיעים 0 ו-1 שמתחלפים זה בזה (ללא מופע של שני 0 או 1 צמודים), מתקבל מספר ההתחלפויות. דוגמאות: הקלט - 11111110 הפלט - 1 הקלט - 01000000 הפלט - 2 הקלט - 11010100 הפלט –5 הקלט - 10100010 הפלט –3 העניין שאין רכיב COUNTER (יש רק ADDER ו FULL ADDER) ואסור להשתמש באוגרים. אז חשבתי קודם כל בין כל 2 סיביות לשים XOR כדי לראות מתי יש התחלפות, וככה אני מקבל את סך ההתחלפויות שהיו. אבל הבעייה מתחילה כשיש "רווח" בין ההחלפות, וצריך להפסיק את הספירה ולהתחיל שוב מחדש, ואז לראות מה יותר גדול. אפשר לשים לב גם, שאם יש 3 (או יותר) התחלפויות רצופות ואחרי זה שיוויון, אז סך ההתחלפויות הגדול ביותר יהיה 3 (או כל מ"ס התחלפויות גדול מ 3 שהיה). קראתי בספר כמובן, ואני מכיר את הרכיבים שיש לי להשוואה, חיבור וכו' אבל אני לא מצליח לשחק עם זה כמו שצריך, כי כל מה שיצא לי היה שגוי. אודה מאוד מאוד לכל מי שיוכל לעזור /לתת הכוונה /עצה / כל דבר. :)
 

ron369

New member
חכה שניה, אני לא מבין את זה כנראה

אתה צריך לספור את אורך הרצף הארוך ביותר של 01, נכון? זה שונה מלספור את הרצף הארוך ביותר של התחלפויות! (010 מכיל רצף אחד של 01, ושתי "התחלפויות")
 

n0b0dy

New member
הכוונה

את כל ההתחלפויות גם אם זה 01 וגם אם 10. (באמת לא היה הכי ברור מההסבר- אבל ביררתי). נראה לי שמצאתי דרך לפתור, נורא מסורבלת: שורה של 7 XORS שאליה מוחבר OR מרובה כניסות. שורה מתחת של 6 ANDS שאליה מחובר עוד 0R מרובה כניסות וכך הלאה עד שיש AND אחד. (שלכל שורה מחובר OR מרובה כניסות). בסוף, את כל הפלטים של ה OR-ים מחברים ב ADDER-ים לקבלת סך ההתחלפויות הנמוך ביותר (בבינארית כמובן). האמת שזה עובד, אבל נראה לי שקצת נסחפתי. אני בטוח שיש דרך קצרה יותר. ניסיתי לממש COUNTER עם FULL ADDER-ים שמתחברים בניהם, ולא יצא לי. אולי פיספסתי משהו. בכל מקרה תודה שאתה מנסה!
 

johnny d

New member
use a full-adder pyramid

כלומר יש לך 7 תוצאות : a1, a2, a3, .... בצע: b1= a1 + a2, b2 = a3+ a4, ... b4 = a7 ואז: c1 = b1 + b2 .. והfull-adder האחרון יחזיר את התשובה c1 + c2
 
למעלה