מכונת מצבים

לנדסמן

New member
מכונת מצבים

אני מנסה ומנסה ולא מצליח, לתכנן מכונת מצבים שמקבלת בכל פעם ביט אחד והוא ה- msb , והפלט הוא 1 בכל פעם שמתקבל מספר המתחלק ב-5, יש לציין שהקלט הוא אינסופי (בכל דפק של שעון מתקבל עוד ביט, 0 או 1). אני אודה לכל מי שיוכל לצרף פתרון מלא או אפילו עד לדיאגרמת מצבים עם הסבר.
 

get low

New member
אני אתן הסבר מילולי ומקווה שתבין

הרעיון הוא שכל מצב במכונה מייצג שארית אחרת. תשתמש בעובדה הבאה: - הוספה של 0 מימין היא בעצם הכפלה ב-2, ולכן גם השארית תוכל ב-2 (אם זה עובר את ה-5 אז תחסיר 5). - הוספה של 1 מימין זה הכפלה ב-2 והוספה של אחד, ושוב אפשר לחשב את השארית. מקווה שעזרתי
 

לנדסמן

New member
אתה נתת פתרון אחר

לכך שההוספה של הביט היא של ה- LSB ( וגם לזה הייתי מעוניין בפתרון יותר מפורט). אבל אני התכוונתי להוספה של ביט שמתווסך ל- MSB.
 

PooKiPsiT

New member
פתרון מפורט עבור המקרה של ה-lsb

בצירוף ההסבר של get low למעלה אני מקוה שתסתדר
 

PooKiPsiT

New member
ה-msb? בטוח?

כלומר, אם הגיע 0 ואח"כ 1 ואח"כ 1, אז המספר שאנחנו מסתכלים עליו הוא 110? בהנחה שהתכוונת ל-lsb והתבלבלת (זו הגרסה הנפוצה יותר), אז תדע שהשאלה הזו נשאלת לא מעט בראיונות עבודה
 

PooKiPsiT

New member
msb זה קצת יותר מסובך

יש לי איזשהו רעיון, אבל לא כתבתי את זה בצורה של מכונת מצבים. אני אכתוב מה חשבתי ותראה אם זה עוזר לך. הרעיון בגדול דומה למצב שבו הביטים מתווספים מכיוון ה-lsb, כלומר המצבים מתבססים על השארית של חלוקת המספר ב-5. (מצב אחד הוא שהמספר מתחלק ב-5, מצב שני הוא שהמספר מתחלק עם שארית 1, מצב שלישי הוא שהמספר מתחלק עם שארית 2 וכו'). כשמוסיפים ביטים מהכיוון של ה-msb אז בעצם כל פעם כשמגיע 1 בעצם מוסיפים למספר 2 בחזקת (המיקום של המספר פחות 1) כלומר 1 במקום הראשון 1, 1 במקום השני זה 2, אחד במקום השלישי זה 4 וכו'.. אם נסתכל על הסדרה 1,2,4,8,16,32,64,128... ונבדוק מה השארית שמתקבלת עבור הוספה של כל אחד מהם, נקבל את הסדרה המחזורית הבאה: 1,2,4,3,1,2,4,3... כלומר בעצם עבור כל 1 שמגיע אתה יכול לדעת כמה הוא מוסיף לשארית וככה לדעת לאיזה מצב לדלג. הבעיה בפתרון הזה היא שעבור כל 1 שמגיע, צריך לדעת האם הוא הגיע במקום שבו הוא מוסיף שארית 1,2,3 או 4, ובשביל זה צריך ליצור המון מצבים וזה בלאגן. אני מקוה שיש פתרון יותר פשוט, אבל זה מה שעולה לי בראש בינתיים. אני גם לא יודעת כמה הבנת מההסבר הזה
הרבה יותר פשוט להסתכל על המצב שבו הביטים מתווספים ל-lsb ולהבין את הפתרון במצב הזה, ואז לעבור לכיוון של ה-msb.
 
למעלה