יום רביעי, 27 בנובמבר 2013

נתח לוגי

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


-          שלום, אני יגאל, וגם אני הייתי סטודנט להנדסת חשמל
-          כולם ביחד: אנחנו אוהבים אותך יגאל
-          ובאותם הימים עבדתי במשרת סטודנט באחת מחברות ההזנק הישראליות שלימים נמכרה לחברת ענק בינלאומית
-          כולם ביחד: אנחנו גאים בך, יגאל
-          התפקיד שלי היה לבנות סביבת אימות לקוד לוגי שנכתב ע"י המפתחים, להריץ אותו ע"ג שרתי הסימולציה ולנתח את התוצאות שלו
-          כמה מהאנשים בקהל מהנהנים בראשם בהבנה
-          הו, כמה שעות נפלאות העברתי בניתוח צורות גלים (waveforms) וניסיונות להבין מדוע נכשלה הסימולציה
-          מהנדס בחולצת פסים בגוונים של כחול בשורה שלישית: תגיד להם איש, תגיד להם!
-          למעשה, גם היום קשה לדמיין דרך יותר נוחה לנתח התנהגות מערכות לוגיות ומכונות מצבים מאשר צורת גל לוגית או נתח לוגי (Logic Analyzer). אלא ששום דבר לא נמשך לנצח, וברגע שעברתי מתחום הפיתוח הלוגי לתחום האלגוריתמיקה והנדסת מערכת נשארתי ללא כלי waveform שכל כך אהבתי, שכן במשפחת MATLAB & Simulink לא היו את הכלים האלה...
-          מהנדסת בג'קט אפור, היושבת בשורה הראשונה, מזילה דמעה שקטה של הזדהות ומנגבת אותה בנייר טישו
-          וכך, למרות כל הקושי, נשארתי waveform clean במשך כמה שנים טובות
-          קול מאחת השורות האחוריות: תהיה חזק, אתה לא לבד במלחמה היום יומית הזאת!
-          אז ככה, יש לי משהו חשוב לספר לכם! לא רבים יודעים, אבל החל מגרסת R2013a של כלי MathWorks הצטרף ל DSP System Toolbox כלי חדש, ה Logic Analyzer!
-          מחיאות כפיים, שריקות של עידוד, קולות YEAH מוקלטים ברקע... FADE TO BLACK... כתוביות... מנגינה... 

כפי שהבנתם, נושא הפוסט הוא כלי מדידה יחסית חדש - ה dsp.LogicAnalyzer, שנכלל ב DSP System Toolbox. הכלי מאפשר לבצע ניתוח שינוי ערך האות (signal transition) בתחום הזמן כאשר מספר הערוצים לניתוח מוגבל רק ע"י יכולת המחשב שלכם. מתוקף היותו של Logic Analyzer ממומש כ System Object, יש לו הן את היכולת לנתח את כל האותות המוכנסים אליו כחתיכה (frame) אחת לכל ערוץ, והן את היכולת לתח את האותות בצורת דגימות זורמות (streaming signal processing). וכפי שהתרגלתם בעבודתכם בסביבת MATLAB, גם ה Logic Analyzer תומך במגוון שורשי יסוד (Radixes), פורמטים וצורות תצוגה. מגניב? בטח מגניב! אז בוא נראה דוגמא...
הנה תרשים בלוקים (הניתן להגדלה ע"י לחיצה) ובו Digital Up-Converter:

בקודMATLAB , התהליך נראה כך:


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


נקרא כעת לאובייקט ה
Logic Analyzer :

שימו לב לכך שהגדרות שמות הערוצים, ה
Radix לכל ערוץ, קצב הדגימה של התצוגה והמפריד (Divider) - הם רק חלק מהאפשרויות העומדות לרשות המשתמש באובייקט לטובת שיפור צורת התצוגה והפיכת לברורה יותר. תוצאת הפעלת האובייקט הזה היא:

מה שקבלנו כאן הוא למעשה "תחליף זמין" לכלי
Waveform Display הנכללים בדרך כלל בכלי סימולצית קוד חומרה כמו Mentor Graphics ModelSim ומתחריו. הכלי מאפשר לנו לנתח התנהגות דינמית של אותות המערכת ברמת מעבר בודד, מה שהופך את הכלי למושלם לעבודות דיבוג של בעיות בעלות אופי דינאמי. הכלי יקל עלינו לוודא שאותות
סימון (
Signaling) או בקרה (Control) מופעלים בתזמון נכון, ובעיות כמו אובדן חלק מהמידע כתוצאה מאותות בקרה שמופעלים בתזמון לא נכון - לא יתרחשו.
מפני שהכלי ממומש כ System Object, השימוש בו אפשרי לא רק בסביבת MATLAB אלא גם בסביבת Simulink, רק חשוב לציין ששימוש בסביבה האחרונה ידרוש מהמשתמש גם פעולה של  Logging לאותם אותות שהוא יהיה מעוניין לנתח.

לקריאה נוספת:
- תיעוד מתוך אתר MathWorks (לחצו כאן)
- פוסט באנגלית בנושא (לחצו כאן)