אמולטור תוך-מעגלי

אמולטור תוך-מעגלי או ICE - In Circuit Emulator הוא מכשיר אלקטרוני המאפשר ניפוי שגיאות במערכות משובצות מחשב.

בפיתוח מערכת משובצת מחשב כגון וידאו, מערכת סטריאו או iPod ניצבים המפתחים בפני בעיה. לאחר שלב כתיבת הקוד, צורבים אותו על גבי המעבד (מיקרו קונטרולר) או על זיכרון הנגיש לו, ומפעילים את המעגל האלקטרוני. בשלב זה או שהמערכת עובדת או שלא וקשה מאוד לנפות שגיאות בקוד. ניתן אמנם להשתמש בחיוויים על גבי מסך LCD או הדלקת נוריות לד, אך הדבר לא שווה ערך לניפוי שגיאות בצורה טובה כמו בתכנות למחשב. על מנת לאפשר ניפוי שגיאות משתמשים באמולטור תוך מעגלי. בצד אחד, הוא מתחבר למעגל האלקטרוני במקומו של המעבד, ובצד השני למחשב. במקום לצרוב את הקוד על המעבד, הקוד עובר לאמולטור, והאמולטור מאפשר ניפוי שגיאות טוב על ידי כך שהוא מאפשר מעבר שורה שורה בקוד, בדיקה ושינוי ערכי משתנים ואוגרים, הצבת נקודות עצירה (breakpoint) ועוד.

ההבדל בין אמולטור וסימולטור הוא שסימולטור יוצר הדמיה בלבד, בזמן שאמולטור שולח את כל האותות הנדרשים למעגל האלקטרוני. למעבדים יש פורטים של קלט פלט (I/O Ports) שבעזרתם ניתן לשלוט על המעגל האלקטרוני, סימולטור לא באמת ישנה את המצב הפיזי של אותם פורטים, אך האמולטור כן. כמו כן, האמולטור יקבל חיווי אמיתי מכל אותם פורטים ויוכל להתנהג בהתאם.

ישנן דרכים רבות לבניית אמולטור, ורובן ככולן מערבות טריקים באלקטרוניקה, כלומר דברים שבדרך כלל אינם נפוצים בבניית מעגל אלקטרוני אחר. בזמן שהמשתמש מבקש לעצור את ריצת התוכנית (halt), שיטה אחת היא לנתב את קווי הכתובת אשר ניגשים לקוד למקום אחר אשר מכיל קוד מיוחד לטיפול בבקשה. כדי לבצע את הפעולה הנ"ל יש לבנות באלקטרוניקה מעגל אשר יחכה לחיווי מתאים מהמעבד אשר אומר שהוא בדיוק לפני קריאת הפקודה הבאה מהזיכרון (ALE), במידה ולא מחכים, אפשר לגרום לתוצאה לא צפויה, כי ניתן לגרום למעבד לקרוא חצי פקודה מהמקום הקודם וחצי מהמקום החדש (ועל ידי כך יצירת פקודה חדשה לא ידועה). כמובן שגם צריך באותו רגע לזכור את הכתובת המקורית בה עצרנו, כדי שנוכל לדווח על כך למשתמש ואף לחזור לשם מאוחר יותר.

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

אלקטרוניקה