בואו נקבל סקירה ברמה גבוהה על מה שיש לאוסילוסקופ:
ראשית יש לנו את הקצה הקדמי האנלוגי. כאן יש לנו רשת תואמת עכבה עבור הבדיקות (אבל הבדיקות יצטרכו גם להיות בעל חלק תואם קיבול), קטע הנחתה (חשוב מאוד, כדי שלא להעמיס על ה- ADC או להכניס מתח גבוה), הפעלה וחיבור ל ממיר מאנלוגי לדיגיטלי. אני לא אדבר יותר מדי על זה, מכיוון שאני לא טוב מדי עם דברים אנלוגיים, אבל השורה התחתונה היא: אין שום דבר שאנחנו יכולים לעשות עם Pi בסעיף זה.
בשלב הבא יש לנו את האנלוגי. לחלק ממיר דיגיטלי. תזדקק לפחות ל- ADC אחד לכל ערוץ. ניתן להשתמש ביותר לשיעור דגימה גבוה יותר. בהיקף המסורתי, ה- ADC מחובר למכשיר ASIC או למכשיר FPGA. הם משמשים מכיוון שמחשבים מסורתיים אינם מספיקים בזמן אמת (ואינם מבלבלים בזמן אמת עם מהיר!) כדי לעבד את הנתונים שמספק ה- ADC. נתונים אלה נשמרים בזיכרון RAM כלשהו. חלק מהמכשירים ישתמשו בזכרון RAM סטטי, ואילו אחרים ישתמשו בזיכרון דינמי. באופן כללי, גישת ה- SRAM מסורתית יותר ונראית אצל יצרני שמות גדולים, בעוד שנראה כי השימוש ב- DRAM הוא הגישה החדשה יותר שניתן לראות ביחידות הזולות יותר בעיצוב סיני.
כמות ה- RAM ומהירותו יקבעו כמה דגימות ניתן לאחסן. כמעט תמיד ה- ADC יהיה ADC של 8 סיביות, כך למשל לדוגמא מגה אחת נצטרך פי 8 ב '100000 = 8 Mb או 1 MB RAM. עבור MSa / s אחד, נצטרך זיכרון RAM שיכול לעבוד במהירות זו. כיום, זה אמור להיות קל יחסית להשיג. ה- FPGA בדרך כלל מניע ישירות את ה- RAM ואחראי על אחסון הנתונים בו. זה עובד על ידי מילוי זיכרון הדוגמה כשיש עדיין מקום ריק ואז מחליף אותו כשהוא מלא. כשיש מספר ADCs לערוץ, ה- FPGA יגדיר אותם כך שמתחילים לדגום תחילה, ואז בשעון הבא שנייה וכן הלאה. כאשר הם מסיימים את הדגימה, המדגם של ה- ADC הראשון ייכתב בזיכרון, ואז המדגם השני של ADC. זה יראה כאילו ה- ADCs מדגמים מהר יותר מאשר הם באמת.
הנקודה הבאה בסעיף זה היא שהדגימות צריכות להיות שוות בזמן. זו הבעיה העיקרית בשימוש במחשבים אישיים באוסילוסקופים והסיבה לכך ש- FPGA ו- ASIC הם השולטים. אם כמה דוגמאות מאוחרות או מוקדמות, התמונה המיוצגת על המסך תהיה שגויה.
בחלק זה אנו רואים את השימוש האפשרי הראשון ב- Pi. אם קצב הדגימה נמוך מספיק, אולי נוכל להניע את ה- ADC ישירות מה- Pi ולאחסן את תוצאותיהם בזיכרון ה- RAM של Pi. כמה מהר אנחנו יכולים ללכת תלוי באופן שבו ה- ADC מחובר ל- Pi וכיצד ה- Pi עושה את ה- I / O שלו. ממה שקראתי, המהירות הגבוהה ביותר של יציאות ה- I ^ 2C של Pi היא 150 מגה-הרץ (כמה קל יהיה להשיג ב- GNU / Linux זו שאלה אחרת) ואילו המהירות הסטנדרטית הגבוהה ביותר היא 5 מגה-הרץ ול SPI המהירות הגבוהה ביותר ב ה- Pi הוא 250 מגה-הרץ. אני לא בטוח מה המהירות הסטנדרטית הגבוהה ביותר של SPI, אבל אני מצפה שהיא תהיה איפשהו בטווח של 100 מגה הרץ במקסימום.
אז בתיאוריה יש לנו יותר ויותר מהירות ב- Pi כדי להפעיל ADC בטווח MSa / s נמוך. יש לי תחושה שמהירות ה- RAM לא תהיה בעיה כאן, אבל אין לי נתונים שתגבה את זה. אם זה המקרה, יהיה לנו יתרון גדול בהשוואה להיקפים הרגילים: יהיה זמין זיכרון לכידה גדול מאוד. לדוגמה, אם אנו מקדישים 32 מיב של זיכרון RAM לתוכנית לזיכרון לדוגמא ויש לנו שני ערוצים, זה ישאיר לנו 16 מיב לכל ערוץ או קצת יותר מ- 134 מגה או 134 מגה-דוגמאות לערוץ. זה משהו שגם כיום לאוסילוסקופים רבים אין.
החיסרון הוא שנצטרך שינויים כבדים במערכת ההפעלה על מנת שנוכל לקבל דגימה מדויקת כאן. אין לי שום ניסיון עם לינוקס בזמן אמת, אז אני לא יודע כמה זה יהיה קל.
בכל מקרה, בואו ונלך לשלב הבא. אז יש לנו מערכת דגימה שממלאת את ה- RAM. החלק הבא הוא הטריגר. טריגר קשור קשר הדוק לקצב רענון המסך. מה שהוא בעצם עושה זה למצוא מדגם מעניין ולהחזיק אותו בזיכרון. כאשר ההיקף מופעל, הוא ממשיך לדגום אחרי ההדק עד שהוא ממלא את הזיכרון ואז הוא שולח אותו לעיבוד ולהצגה על המסך. בזמן עיבוד הנתונים, מערכת הדגימה אם היא מוקפאת לעיתים קרובות ומחכה להצגת הנתונים. זו הסיבה שהיקפי רמה נמוכה יותר הם בעלי שיעורי רענון נמוכים יותר, ואילו בהיקפים מתקדמים יהיו תצוגות קצב רענון גבוהות במיוחד וישקיעו הרבה פחות זמן בהמתנה להצגת הנתונים.
בחלק זה לעיתים קרובות יהיו ASIC אחר או FPGA שיעשה עיבוד אותות על הדגימות, כל פענוח פרוטוקולים אם היקף תומך בכך ומניע למעשה את התצוגה עצמה.
זה החלק שממה שאני יכול לראות את הפי באמת יכול לזרוח. זה יכול לנהוג בתצוגה יפה של 1920x1080 (בעוד שהיקפים נמצאים לעתים קרובות בתת 800x600) ויכולים לבצע פענוח פרוטוקולים יפה מאוד. הבעיה היחידה שאני יכול לראות תהיה מהירות וכיצד העיבוד ישפיע על זמן ההמתנה. אם נלך על קצב רענון נמוך, נוכל להשיג איתו מנתח לוגיקה ממש טוב.
לבסוף מילה על אוסצילוסקופי USB ומדוע בכלל USB רע בכלל עבור סוג זה של פרויקטים: אוסצילוסקופ USB מסורתי. עושה קלט ודגימה ושולח את נתוני הדגימה למחשב לעיבוד שעבורו קיימת יישום מארח. בעיקרון משהו דומה מאוד ייעשה גם עם פי. בדרך כלל יישומי המחשב מעוצבים בצורה גרועה ומלאים באגים. החלק הרע הבא הוא USB עצמו. הוא מתפרסם כאוטובוס מהיר שיכול לבצע 480 Mb / s במצב "Hi-Speed". האמת היא שזה נדיר ביותר למצוא בקר USB שיכול לתמוך במהירויות כה גבוהות (נראה שהממוצע הוא בסביבות 250 Mb / s ממה שראיתי) ושהוא כפרוטוקול לא מתאים במיוחד לאמיתי יישום בזמן. ראשית הוא משותף בין כל המכשירים במרכז (ולפי יש רק יציאת USB אחת אליה מחובר רכזת Ethernet + USB), יש תקורה גבוהה יחסית (בהשוואה ל- SPI למשל) ויש לו זמן אחזור גבוה (זכרו שב -1 MSa / s כל דגימה נמשכת רק 1 µs, לכן עלינו להחזיק זיכרון על הלוח שלנו מכיוון שאיננו יכולים לשלוח דגימות בזמן אמת באמצעות USB). לבסוף השימוש ב- USB יהפוך את רכישת הנתונים לחלק מההיקף להיות סתם אוסצילוסקופ USB וכאן אנו מאבדים כל יתרון בשימוש ב- Pi: מחשבים שולחניים מסורתיים הם הרבה יותר נפוצים, מהירים יותר, מושגים בקלות ובעלת יכולות USB טובות בהרבה.
עריכה קראתי פוסט יחסית מאת גרט ואן לו ולדבריו, שיעורים מציאותיים עבור ה- I ^ 2C של פי הם 400 קילו-הרץ ו עבור SPI הם 20 מגהרץ.