מאז ומתמיד, אוסילוסקופ זמן אמת היווה כלי רב עוצמה עבור מתכנני זיכרונות מהירים בעת ביצוע בדיקות תאימות חשמליות או פרמטריות ל-DDR, איתור באגים ואפיון. מספר הערוצים המוגבל שקיימים באוסילוסקופ זמן אמת יכולים להקשות על ביצוע trigger-ים בפרוטוקול DDR ועל פענוח מחזורים נפרדים של קריאה ושל כתיבה על גבי אפיק הנתונים הדו-כיווני. אוסילוסקופ האותות המעורבים (MSO), אשר כולל 16 ערוצים דיגיטליים בתדר גבוה נוספים, מאפשר למתכנן לבחון, לפענח ולבצע trigger על אפיק הפקודות של ה-DDR, לצורך זיהוי מדויק של מחזורי קריאה וכתיבה. מאמר זה מתאר כיצד ה-MSO יכול לשמש להפרדה של נתוני קריאה וכתיבה עבור הליך מלא של בדיקה, איתור באגים ואפיון של תכנוני DDR. מדוע להשתמש ב-MSO? התנהגות מחזורי קריאה/כתיבה של DDR הבה נתחיל בבחינת ההתנהגות של אותות הקריאה והכתיבה של ה-DDR, על גבי מספר מוגבל של ערוצים אנלוגיים. קיימות דרכים המאפשרות לזהות נתוני קריאה וכתיבה באפיק הדו-כיווני על-ידי בדיקת ה-data strobe () וקווי-הנתונים (DQ). באיור 1 מוצגים נתוני קריאה וכתיבה של DDR3. ניתן לראות, כי דפוסי ה-pre-amble (מבוא) של הקריאה והכתיבה שונים באופן מהותי. במצב קריאה יש מעבר ממצב hi-z למצב נמוך לפני הקצה העולה הראשון של ה-DQS, לצורך איתות על סיבית נתוני הקריאה הראשונה. ואילו במצב כתיבה יש מעבר ממצב hi-z למצב גבוה ולאחר מכן למצב נמוך לפני הקצה העולה הראשון של DQS, כדי לאותת על סיבית נתוני הכתיבה הראשונה. לבסוף, אות ה-DQ של ה-3DDR נמצא בדרך כלל במצב hi-Z לפני המעבר לנתונים תקפים. איור 2 מדגים את התנהגות ה-strobe והנתונים של זיכרון מסוג DDR4. דפוסי ה-preamble של הקריאה והכתיבה של ה-DDR4 דומים מאוד זה לזה. בניגוד ל-DDR4, DDR3 משתמש ב-pseudo open drain drivers ולא ב-push-pull לצורך הפחתת ה-current draw. אות ה-DQ שמופיע כאן מראה את ה-high state ולא את ה-hi-z של ה-DDR3 בין זרמי הנתונים. רמה זו ניתנת לכוונון, או שניתן לכבותה, ואות ה-DQ יכול להיראות אחרת מאשר הרמה הנומינלית שמוצגת כאן. שיטות הפרדה בין קריאה/כתיבה של DDR אחד האתגרים המשמעותיים ביותר שבהם עשוי המתכנן להיתקל בעת בדיקה ואימות של תכנוני DDR נוגע להפרדה בין מצבי הקריאה והכתיבה בערוץ הדו-כיווני. איור 3 הוא אות DDR2, אשר בדומה ל-DDR4, מתאפיין ב-pre-amble דומה עבור קריאה וכתיבה. חפיפה של נתוני הקריאה והכתיבה מתבצע באמצעות edge trigger פשוט על DQS. כדי לבצע מדידות תקינות של רמות חשמליות ותזמוני אותות, יש להפריד בין נתוני הקריאה והכתיבה. יש מספר דרכים לביצוע הפרדה של מחזורי קריאה וכתיבה. הדרך הקלה ביותר לעשות זאת היא על-ידי שימוש ב-trigger זיהוי תוכנה. על-ידי שרטוט אזור על גבי דפוס burst ייחודי של קריאה או כתיבה, נוכל להפריד בין נתוני הקריאה והכתיבה. באיור 3 מוצגת הפרדה של נתוני כתיבה. אנו יודעים זאת, כיוון שבדרך כלל נתוני הכתיבה ממורכזים, בעוד שנתוני הקריאה מיושרים מעט לכיוון הקצה. שיטה נוספת של ביצוע מדידות קריאה או כתיבה היא תוכנה אוטומטית לבדיקת תאימות. התוכנה, המבוססת על קשרי גומלין בין DQS ו-DQ, תוכל לבצע ניתוח מושכל ואוטומטי של מדידות הכניסה והיציאה. השיטה הנפוצה או האלגוריתם המשמש לצורך כך מבוססים על התאמת פאזות של DQS ו-DQ. התוכנה יכולה אף להשתמש בדפוס ה-pre-amble לצורך אישור נתוני קריאה וכתיבה. במקרה של זיכרון מסוג DDR3, דפוסי pre-amble של הקריאה והכתיבה שונים אלה מאלה, כך שיש טעם הגיוני בשימוש בדפוס ה-pre-amble לצורך הפרדה של נתוני קריאה וכתיבה. אולם במקרה של DDR2 ו-DDR4 שבהם דפוסי pre-amble זהים, ולעתים גם כאשר מדובר בהתנהגות שונה של מערכת DDR3, התוכנה עלולה לזהות את מחזור הקריאה או הכתיבה בצורה שגויה, וזאת כאשר הבדלי הפאזה אינם ברורים. באיור 4 מוצגת דוגמה של מחזור קריאה שבו נתונים מסוימים אינם מיושרים לקצה ועלולים להיות מזוהים בשוגג כמחזור כתיבה. פרוטוקול קריאה/כתיבה של DDR אף על פי ששתי שיטות אלה, של הפרדת קריאה וכתיבה באמצעות אותות ה-DQS ו-DQ בלבד, הינן תקפות ויעילות, הן נוטות לגרום לטעויות בעת הפרדת כיוון הערוץ, ובסופו של דבר למדידות שגויות. הדרך הברורה ביותר להפרדה של נתוני קריאה וכתיבה היא פענוח פקודות באמצעות טבלאות-אמת של מצבי זיכרון ה-DDR, המוגדרות במפרטי JEDEC. לפני פיתוחו של ה-MSO, ניתן היה להשתמש בשיטה זה אך ורק באמצעות נתח לוגי או נתח פרוטוקולים. שיטה זו מצריכה גישה ל-5 קווי בקרה לפחות, אשר כוללים את CLK, CS, RAS, CAS ו-WE. במקרה של ה-MSO, ניתן להשתמש ב-16 ערוצים דיגיטליים זמינים בנוסף ל-4 הערוצים האנלוגיים הסטנדרטיים. ה-MSO יכול לפענח את פקודות הקריאה/כתיבה ולבצע הפעלה לפי פקודה, כך שניתן לראות את ההתנהגות האנלוגית של אותות ה-DQS וה-DQ התואמים דרך הערוצים האנלוגיים. גם עבור טכנולוגיות LPDDR קיימות טבלאות-אמת דומות, היכולות לשמש לפענוח פקודות. אולם במקום RAS ,CAS ו-WE, יהיה לנתר את קווי ה-CA0, CA1 ו-CA2. במקרה של טכנולוגיות ה-LPDDR, הכתובת ואות הפקודה חולקים pin משותף. משתמש ב-MSO לצורך הפעלה וביצוע מדידות? Trigger על פרוטוקול ה-DDR וחיפוש בין המחזורים כדי להגדיר את ה-MSO כראוי לפענוח DDR, עליך לבצע 3 פעולות בסיסיות. תחילה, הקצה את הערוצים לאפיק הנכון. שנית, הגדר את ערכי הסף של המתח, בדרך-כלל ה-VREF של האות. לסיום, הגדר אותות אופציונאליים עבור פענוח נוסף. לעתים, אותות ה-DDR מתאפיינים ברמות VREF שונות בין אפיקי הפקודות. ככל שהמהירות גדלה, התנהגות זו הופכת נפוצה יותר. לכן ייתכן שתצטרך למדוד את האות בערוץ אנלוגי כדי לראות מהי משרעת (עוצמת) המתח בפועל, כדי לזהות את נקודת הייחוס האופטימלית של המתח. בנוסף, הרמה עשויה להיות שונה בתלות באורך הקווים או הבחונים שבהם השתמשת ובכפוף לגורמים נוספים של תקינות אותות. ה-MSO הקיים כיום בשוק מצויד ב-trigger ובפענוח סטנדרטיים עבור טכנולוגיות (DDR2/3/4, LPDDR2 ו- LPDDR3). תפריט הפענוח של הפרוטוקולים מאפשר לך להקצות ערוצים לכל האפיקים אשר מהווים את פענוח המצבים של ה-DDR. קיימים מספר ערוצים שמוקצים לצורך פענוח פקודות, לדוגמה, RAS, CAS, WE ו-CS. אם יש לך גישה לאותות נוספים, תקבל אפשרויות פקודה נוספות. לדוגמה, גישה ל-CKE תאפשר לך לפענח פקודות של Power down entry ו-power down exit. שים לב, כי היכולת נמצאת בחומרת ה-MSO ואין כל צורך בהגדרה של קובצי symbol לצורך קישור הערוצים לפרוטוקול הפקודה. כמו כן קיימת אפשרות לפענוח אפיקים נוספים כגון כתובת. לסיום, הדבר הבא שברצונך לעשות עם ה-MSO הוא ביצוע trigger על הפקודה. באפשרותך לבצע trigger על פקודה בלבד, או לבצע DQS trigger המשויך לפקודת קריאה/כתיבה. תכונת ה-trigger היא זו שהופכת את ה-MSO לפתרון עוצמתי כל כך עבור איתור באגים ב-DDR. השלב הבא כולל ביצוע trigger על ה-DQS המשויך לפקודת קריאה או כתיבה. לדוגמה, אם אנו מעוניינים לבצע trigger על ה-burst התקף הבא של הקריאה, אפשר להשתמש בפונקציית trigger זו בנוסף לנתונים אודות זמן ההשהיה של הקריאה (Latency). ה-Latency הוא מספר מחזורי השעון שבין הפקודה התקפה הראשונה לבין ה-burst התקף הראשון לאחר ה-pre-amble. לאחר מכן, נוכל להתאים את הסיבית הראשונה של ה-DQS כדי שתהיה נטולת ריצוד לצורך ביצוע מדידות תזמון או דיאגרמות עין. מדידות של דיאגרמות עין על DQS/DQ כעת, כשברור לנו שאנו מבצעים triggering על מחזורי כתיבה, הבה נמשיך בניתוח ונבצע מדידות עין בזמן אמת. על-ידי שימוש בפונקציה המתמטית של Horizontal Gating, נוכל להגדיר חלק ספציפי של ה-burst שאותו אנו מעוניינים למדוד. כעת נוכל להגדיר מדידות עין על-ידי שימוש באשף דיאגרמות העין כפונקציה הראשונה מורכבת מהשעון ו-gated channelשל DQS, והפונקציה השנייה מורכבת מ-gated function של קו נתונים (DQ) .כעת ניתן לבצע מדידות של גובה העין, רוחב העין והמסכה. איור 11 מציג מדידה של מסכת עין ו-unfolding של העין במקרה של כשל בניתוח האות. לשם כך, הגדר עצירה של דיאגרמת העין במקרה של כשל. לאחר העצירה, בחר unfold eye. אנו יכולים לראות בבירור את נקודת הכשל ולנתח ולהתמקד במספר מדידות ספציפיות של חשמל ותזמון בצורת הגל לצורך זיהוי סיבת השורש. סיכום ככל שקצבי הנתונים עולים, כך גדלה החשיבות של ניתוח ומדידה מדויקים של תזמון נתוני הקריאה והכתיבה. ה-MSO הוא כלי רב עוצמה, שיכול לסייע ב-triggering ובזיהוי של אותות המיועדים למדידה ולניתוח. מדידות אלה יכולות להתבצע ביעילות ובמדויק.