מהחיישן אל המידע: למה כמעט כל מוצר צריך DSP
מד דופק שמסנן רעש תנועה, חיישן רעידות שמזהה תקלה במנוע, מיקרופון שמחלץ פקודה קולית — בכולם יושב אותו רובד תוכנה: עיבוד אותות DSP במערכת משובצת. החיישן מספק זרם דגימות רועש, והקושחה צריכה להפוך אותו למידע אמין — בזמן אמת, על מעבד קטן, בתקציב הספק מוגבל. החדשות הטובות: לא צריך תואר שני בעיבוד אותות כדי לעשות את זה נכון. צריך להבין ארבע החלטות תכן — קצב דגימה, סוג פילטר, ייצוג מספרי וארכיטקטורת זמן אמת — ובהן נעסוק כאן.
דגימה ואליאסינג: הטעות שאי אפשר לתקן בתוכנה
כלל היסוד (משפט נייקוויסט): כדי ללכוד אות עד תדר מסוים, חייבים לדגום לפחות בכפול ממנו. אבל הסכנה האמיתית הפוכה — תדרים גבוהים מחצי קצב הדגימה לא נעלמים, אלא "מתחפשים" לתדרים נמוכים בתוך התחום שלכם. התופעה נקראת אליאסינג, והיא הרסנית כי אחרי שהיא קרתה, שום פילטר דיגיטלי לא יפריד בין האות האמיתי למתחזה. לכן לפני ממיר האנלוגי-דיגיטלי חייב לשבת פילטר אנטי-אליאסינג אנלוגי — לרוב מספיק RC פשוט — שחותך את מה שמעל חצי קצב הדגימה. זו החלטה משותפת לצוות האלקטרוניקה והקושחה, ועוד סיבה לחשוב על שרשרת המדידה כמכלול כבר בשלב בחירת החיישנים למוצר. טיפ מעשי: דגמו מעט מהר מהמינימום התאורטי — פי ארבעה עד עשרה מתדר העניין — וזה ירכך את דרישות הפילטר האנלוגי ויקל על כל השרשרת.
FIR או IIR: שני סוגי הפילטרים ומתי כל אחד
את רוב עבודת הסינון הדיגיטלי עושים שני סוגי פילטרים:
- FIR (תגובה סופית). ממוצע משוקלל של הדגימות האחרונות. יציב תמיד, שומר על צורת האות (פאזה ליניארית) — חשוב כשמנתחים צורת גל כמו אות א.ק.ג — אבל דורש עשרות עד מאות מקדמים, כלומר יותר חישוב ויותר זיכרון.
- IIR (תגובה אינסופית). משתמש גם בתוצאות קודמות שלו — משוב. חד ויעיל בצורה דרמטית: פילטר Biquad עם חמישה מקדמים משיג מה ש-FIR צריך בשבילו עשרות. המחיר: עיוות פאזה, ורגישות לדיוק מספרי שעלולה לערער יציבות אם לא מקפידים.
כלל אצבע: התחילו מ-IIR לסינון כללי של רעש, ועברו ל-FIR כשצורת האות קדושה או כשצריך תבנית סינון מיוחדת. ולפני הכול — בדקו אם בכלל צריך פילטר מתוחכם: ממוצע נע פשוט פותר אחוז מפתיע מהבעיות בשטח.
נקודה קבועה או נקודה צפה — והמעבד שמכריע
חישובי DSP הם לולאות כפל-וחיבור אינטנסיביות, ולכן הייצוג המספרי קובע את הביצועים. על מיקרו-בקר עם יחידת נקודה צפה בחומרה (FPU) — כמו רוב ליבות Cortex-M4F ומעלה — עובדים ב-float ונהנים מחיים פשוטים. בלי FPU, חישוב צף מדומה בתוכנה ואיטי פי עשרות, ואז עוברים לאריתמטיקת נקודה קבועה בפורמט Q15 או Q31: מהירה מאוד, אבל דורשת ניהול קפדני של תחום הערכים כדי לא לגלוש. בפועל, ספריות מוכנות כמו CMSIS-DSP למשפחת Cortex-M מספקות פילטרים, FFT וסטטיסטיקה ממומשים ומאופטמים לשתי הצורות — אל תכתבו FFT בעצמכם. הצורך ב-DSP הוא שיקול מרכזי בבחירת המיקרו-בקר למוצר, ומשפיע ישירות גם על כמות הזיכרון שתצטרכו — מקדמי פילטרים וחוצצי דגימות נאכלים מה-RAM מהר.
ארכיטקטורת זמן אמת: לעבד בלוקים, לא דגימות
העיקרון החשוב ביותר במימוש: אסור שהעיבוד יעכב את הדגימה. הדפוס המקובל — ה-ADC דוגם בקצב קבוע מטריגר חומרתי, ה-DMA מזרים את הדגימות לחוצץ בלי מעורבות המעבד, ובטכניקת פינג-פונג המעבד מעבד חוצץ אחד בזמן שהשני מתמלא. כך העיבוד רץ על בלוקים שלמים בהקשר הראשי, בעוד הפסיקות נשארות קצרות — בדיוק לפי העקרונות שבמאמר על פסיקות בקושחה. חשבו מראש את תקציב הזמן: אם בלוק של 128 דגימות מגיע כל 8 מילישניות, כל שרשרת העיבוד חייבת להסתיים לפני הבלוק הבא — עם מרווח ביטחון. במערכות עם משימות מקבילות רבות, זו אחת השאלות שמכריעות בין RTOS ל-Bare Metal.
מתחילים פשוט, מודדים תמיד
הדרך הבטוחה ל-DSP מוצלח: להקליט אותות אמיתיים מהמוצר, לפתח ולכוון את הפילטרים על מחשב מול ההקלטות, ורק אז להעביר לקושחה ולוודא שהתוצאות זהות. כך מפרידים בין באגי אלגוריתם לבאגי מימוש — וחוסכים שבועות של דיבוג עיוור. אנחנו בפרוג'קטס האוס מלווים מוצרים שבהם שרשרת אות נקייה היא ההבדל בין דמו נחמד למוצר אמין. עוד בנושאי קושחה ותוכנה — באשכול פיתוח תוכנה embedded.
רוצים להפוך רעיון למוצר? צרו קשר עם צוות פרוג'קטס האוס בע"מ – טלפון: 054-8936922 | דוא"ל: info@projects-house.com – ונשמח ללוות אתכם משלב הרעיון ועד המדף.