איתור באגים באפיק טורי מוטבע באמצעות אוסילוסקופים

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

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

לכידה ופענוח

לפני שהמפענחים הטוריים הושמו  באוסילוסקופים, המהנדסים נדרשו לפענח ידנית את המידע בערוצי התקשורת הטוריים. הדבר הצריך הבנה מעמיקה של מפרט האפיק הטורי וגם מזל בעת הניסיון ללכוד פריים ספציפי. באיור 1 ניתן לראות  פריים I2C אחד באמצעות אוסילוסקופ עם SCL – Serial Clock Line בערוץ 1 ועם SDA – Serial Data Line בערוץ 2. כדי לפענח את הנתונים באופן ידני, יש  להשתמש בהליך הבא:

  1. ללכוד פריים אחד על האוסילוסקופ.
  2. לבצע צילום מסך.
  3. לפתוח אותו במחשב ולהוסיף שורות עבור כל קצה עולה של השעון.
  4. להמיר את אות ה-SDA בכל קצה SCL עולה ל-1 או 0, בהתאם לרמת האות.
  5. על סמך מפרט ה- I2C,להמיר את הערכים הבינאריים לערכים הקסדצימאליים. על-ידי ספירת קצוות השעון ומתוך ידיעה כי מפרט ה- I2C משתמש בפולס התחלה, 7 סיביות כתובות, סיבית קריאה או כתיבה, סיבית acknowledge, 8 סיביות נתונים, acknowledge נוסף ולסיום סיבית עצירה, באפשרותי לחשב את הערכים ההקסדצימאליים. במקרה זה, מדובר בפריים כתיבה עם כתובת 0x29 ונתוני 0x04.
איור 1: פענוח I2C ידני

איור 1: פענוח I2C ידני

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

איור 2: טריגר ופענוח אוטומטיים של I2C

איור 2: טריגר ופענוח אוטומטיים של I2C

שימוש בזיכרון מקוטע לצורך לכידת אירועים טוריים לא תכופים

נניח שהתכנון כולל מספר IC’s (מעגלים מודפסים), אשר מתקשרים עם מיקרו-בקר (microcontroller) דרך I2C, וכי אנו רוצים לראות את כל הנתונים אשר נכתבים על גבי IC ספציפי. ניתן לעשות זאת בקלות על-ידי הגדרת עירור (טריגר) בכתובת הכתיבה של ה-IC. פעולה זו תגדיר לסקופ לבצע טריגר בכל פעם שהוא רואה את הכתובת, אבל עדיין קשה להשיג תצוגה כוללת של הנתונים המועברים דרך התצוגה היחידה של צורת הגל שהיא ברירת המחדל של האוסילוסקופים. במצב זה, הזיכרון המקוטע (segmented memory) הוא פתרון יעיל ביותר. הזיכרון המקוטע מורה לאוסילוסקופ להמתין עד שיתממש תנאי הטריגר, לשמור את צורת הגל בזיכרון, לבצע בה תיוג זמן ולאחר מכן לחמש מחדש את הטריגר ולהמתין למופע הבא שלו. באיור 3  האוסילוסקופ הוגדר לביצוע טריגר בכל עת שנתונים נכתבים על גבי ה-IC שכתובתו hex 64, וכן הופעל  הזיכרון המקוטע לצורך לכידה של 1000 מופעים. באמצעות כלי זה, המהנדס יכול לראות אילו נתונים נכתבים על ה-IC, באיזו תכיפות הם נכתבים וכן להציג את האות הפיזי עבור כל פריים. אם פריים אחד או יותר מכילים נתונים לא צפויים, המהנדס יכול לבחור בפריים הספציפי דרך ה-lister ולבדוק את תקינות האות הפיזי. ייתכן שהשגיאה נגרמה על-ידי רעש או נחשול (טרנזיינט).

איור 3: פענוח טורי באמצעות זיכרון מקוטע

איור 3: פענוח טורי באמצעות זיכרון מקוטע

 

בידוד טרנזיינטים מצומדים

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

 

לאחר זיהוי נוכחות של טרנזיינט, נדרשת הפעלת טריגר עליו. כפי שצוין לעיל, לכידה באמצעות שיטות מסורתיות עלולה להיות מסובכת מאוד. הופעתם בזירה של אוסילוסקופים עם מסך מגע העמידה לרשותנו שיטת טריגרינג חדשה. לכידת הטרנזיינטים הפכה למשימה טריוויאלית וקלה למימוש בזכות תכונה שנקראת “Zone Trigger”. איור 4 מציג אות USB – Universal Serial Bus עם טרנזיינט לא תכוף.

איור 4: אות USB עם טרנזיינט מצומד

איור 4: אות USB עם טרנזיינט מצומד

כדי לבצע טריגר על טרנזיינט זה, כל שהיה לעשות הוא לשרטט תיבה על מסך המגע ולבחור ב-Zone 1.

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

איור 5: בידוד טרנזיינט באמצעות Zone Trigger

איור 5: בידוד טרנזיינט באמצעות Zone Trigger

 

מציאת מקורות רעש

ומה אם האפיק הטורי שלך אינו מתאפיין בטרנזיינטים רנדומליים, אלא ברעש מצומד קבוע במקום זאת? כדי להבין את מקור הרעש, יש לנקוט בגישה שונה, שכן לא ניתן לבצע טריגר על רעש. כאן ניתן לעשות שימוש מעולה בפונקציית ה-FFT – Fast Fourier Transform המתמטית של האוסילוסקופ. ה-FFT ממירה את אות ה-time domain לייצוג של frequency domain. הדבר מאפשר לזהות את רכיבי התדר של הרעש המצומד. איור 6 מציג אות USB עם רעש מצומד.

איור 6: USB עם רעש בתדירות נמוכה

איור 6: USB עם רעש בתדירות נמוכה

 

צילום מסך זה, של מנת הנתונים בתחילת הפריים של ה-USB, מבהיר לי כי הרעש מתאפיין במתח peak-to-peak של 150mV בקירוב. על מנת להבין מהו מקור הרעש, אני משתמש בפונקציית ה-FFT ומפעיל את סמני השיא. בעת ההפעלה הראשונית של ה-FFT לא הבחנתי ברכיב תדר שבלט כרעש. הדבר מהווה עדות לכך, כי הרעש מתאפיין בתדר נמוך בהרבה מאשר אות ה-USB.

איור 7: FFT על אות USB עם רעש מצומד בתדירות נמוכה

איור 7: FFT על אות USB עם רעש מצומד בתדירות נמוכה

כדי לאתר את הרכיב בעל התדר הראשי, נדרשתי לבצע זום מרחיק עד ל-10ms לחטיבה. בבסיס זמן זה, ה-FFT יכול לזהות תדרים נמוכים. באיור 7 ניתן לראות כי תדר הרעש הנו 61Hz בקירוב. מדובר בעצם ברעש שצומד לאות ה-USB מתוך קו מתח AC בארצות הברית.

מקור רעש נפוץ אחר באפיקים טוריים יכול להיות אותות שעון שפועלים בתדרי ה-Megahertz. איור 8 מציג FFT שפועל על אות USB אשר מכיל רעש מצומד שמקורו בשעון של 16 MHz. התקנים עם LAN אלחוטי מובנה עשויים אף הם לחוות רעשים שמקורם ברדיו. איור 9 מציג אות USB ששיא התדר שלו הנו 2.4GHz, תדר מקובל של LAN אלחוטי.

איור 8: אות USB עם רעש שעון 16MHz

איור 8: אות USB עם רעש שעון 16MHz

איור 9: אות USB עם רעש LAN אלחוטי 2.4GHz

איור 9: אות USB עם רעש LAN אלחוטי 2.4GHz

 

סיכום

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

KEY

 

Alex Klimaj, Keysight Technologies

תגובות סגורות