מבוא ל-IIR Filter

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

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

הבנה של IIR Stability

The Pole-Zero View

כל מסנן דיגיטלי של זמן ליניארי ניתן לתאר על ידי הפונקציה העברתו ב Z-domain.עבור מסנן IIR, הפונקציה העברה זו מכילה גם קטבים ואפסים.מצב היסוד הוא כי כל הקטבים חייבים לשכב בתוך מעגל היחידה על Z-plane. A הקוטב בדיוק על מעגל יחידה (התנהגות משנית), בעוד כל קוטב מחוץ למעגל הערבויות - את הפילטרים של חוסר יציבות - חייב להיות מתואם זה חייב להיות מוגדר לחלוטין.

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

תפיסות שגויות נפוצות

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

גורמים נפוצים לבעיות אפשריות במסננים IIR

שגיאות יעילות ו- Quantization

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

  • (FLT:0) עיצוב כלי עגול: 1FLT כאשר משתמשים בתוכנה עיצובית כמו MATLAB, Python'sFLT:0, או כלי מסחרי, התקני קוץ המקובעים עשויים להיות תוצר עם מקומות מפוכחים סופיים.
  • (FLT:0) שגיאות חישוביות: FLT:1 גם כאשר משתמשים בנוסחאות כגון שינוי דו-לינארי או תואמים Z-transform, טעות חד-פעמית יחיד ב coefficient יכול לדחוף את הקוטב מחוץ ליציבות.
  • (FLT:0) מגבלות קידוד נקודות: FIRLT:1 למערכות משובצות או שבבים DSP בעלות נמוכה, קואופרטיבים מאוחסנים כמספרים קבועים עם אורך מילים מוגבל (למשל, 16 ביטים) שגיאות קוונטיזציה מצטברות ויכולים להפיג מסננים יציבים שהיו יציבים בתכנון כפול.

המונחים: recursive Computations

מסננים IIR הם recursive: הפלט הנוכחי תלוי בפלטים קודמים וקלטים. לולאה משוב זה רגיש שגיאות עגולות מספריות. בנקודת צף חד-חשיבות (32-bit), שגיאות מכל ריבוי ותוספת מצטבר לאורך זמן, במיוחד במסננים גבוהים. שגיאות אלה יכולות להתבטא כתנודות גדלות או סטיות פתאומיות, במיוחד כאשר הפילטרים המאוחרים של ה- Q-זמנית עשויים לשמור על יציבות כפולה (לדוגמה, לדוגמה) לרצף השני, לכדי רצף השני, ייתכן שעדיין לא פחות ממרחק).

עיצוב פילטר Flaws

לא כל שיטות העיצוב לייצר מסננים יציבים מטבעם.חלק מהמלכודות הנפוצות כוללות:

  • (FLT:0) מיפוי של אבטיפוס אנלוגיים: אנדרל 1 (Improperמיפוי) The bi ליניארית משנה את היציבות אם מסנן אנלוגי יציב, אך הנחות לא נכונות או פיזור שגוי יכול להוביל לערכים יעילים השואפים קטבים דיגיטליים לא יציבים.
  • (FLT:0) שגיאות ביטול אפס אפס: FLT:1 כאשר עיצוב מסננים או קוב, ביטולים של קט-אפס מיועדים עשויים לא להיות מדויקים בשל הקוונטים, מה שהופך את הקוטב השברירי שאינו יציב.
  • (FLT:0) עיצובים שלב לא-מינימיום: בעוד שלב לא-מינימיום אפסים לא משפיעים על יציבות, שיטת העיצוב עצמה עשויה להיות במקום מבודד מחוץ למעגל היחידה אם לא מוחל כראוי.

טעויות בקוד

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

  • (FLT:0) Incurtrated: 1FLT (באמצעות צו הלולאה הלא נכון בעדכון החוזר (למשל, עדכון פלט לפני קריאת התפוקה הקודמת) מוביל לשגיאות תזמון המחקות חוסר יציבות.
  • (FLT:0) העדכונים של רישום או מעודכנים: ההרחבה 1 (בביצועים חומרה), עיכובים צינורות או עדכונים משתנים לא נכונים של המדינה יכולים לשנות את תפקוד ההעברה היעיל.
  • (FLT:0) תנאי זרימה: 1 (FLT:1) ביישום קבוע, ללא ריצוף או קנה מידה נאותה, תוצאות ביניים עלולות לעלות על גדות, אשר מציג התנהגות לא ליניארית שיכולה לדחוף את המסנן לתוך חוסר יציבות.

פתרון אסטרטגיות ליציבות

שלב 1: לבדוק את המיקום הפולני

השיטה האמינה ביותר לזהות בעיות יציבות היא למקם את הקטבים של האפקטיביות בפועל בשימוש. in MATLAB, להשתמש ב-FLT:1 על המכנה פולינומאלי.ב Python, להשתמש ב-(FLT:2 או FLT 3: 3 (עבור כל קוטב עם גודל ⁇ 1, המסנן הוא לא יציב או יציב.

שלב 2: Cross-Check Coefficients Against Design

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

  • (ב) אם העיצוב נעשה שימוש בסיבוב, אך יישום הצטבר, הערכים שונים.
  • (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
  • (FLT:0) שגיאות קופי-פאסטה:FLT:1 בהזנת יעיל ידני, הקלדה בספרה אחת יכולה לערער את המסנן.

שלב 3: העלאת רמת דיוקנומרי

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

שלב 4: סימולציה צעד ותגובה אימפולסיבית

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

שלב 5: ראה את קוד ההטמעה

בזהירות לבחון את הקוד המיישם את משוואה ההבדל.עבור מסנן I או II, להבטיח את סדר העדכון החוזר תיקון. משוואה הפרש סעיף שנייה טיפוסית היא:

(ב) 4

בדוק כי הסימנים השליליים נוכחים וכי התקני Denominator הם שולל נכון.בנוסף, ודא כי משתנים המדינה מעודכנים בזמן הנכון (לאחר מחשוב התפוקה, לא לפני כן) בתיאורי חומרה (VHDL / Verilog), להבטיח כי רישומים הם כראוי שעונים וכי לולאות משולבות נמנעים.

שלב 6: שימוש בכלי סימבול ומבחן יחידה

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

טכניקות מתקדמות לפתרון בעיות יציבות

סעיפים של ההרחבה Second-orders (Biquads)

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

Zero-Pole Placement for Marginal Stability

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

רעש שפינג וסקאליזציה

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

Lattice and Ladder Structures

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

טיפים מעשיים לשמירה על יציבות

שיטות עיצוב מבוססות

בכל פעם שניתן, השתמש בשיטות עיצוב נבדקות היטב כי באופן פנימי לייצר מסננים יציבים.ה-FLT:0 [blinear TransformFLT:1] היא הגישה הנפוצה ביותר ל המרת מסננים אנ-טיפוס אנלוגיים (אבלטרוורת', צ'בישאר, אלפילטי) לתוך חישובים דיגיטליים IIR:2תואמים Z-transformFLT3 יכול לשמש עבור עיצובים פשוטים יותר, אך דורש טיפול ב-FLT-Auto-uptite דורש מיפוי.

באופן קבוע לתקן את התקני ה-Coefficients עם אוטומציה

משלבים בדיקות אוטומטיות לתוך צינור הפיתוח שלך.כל פעם חסכוניים מעודכנים, להפעיל תסריט שמציב את הקטבים וקובע את כל הגדלים הם מתחת סף (למשל, 0.999) זה יכול להשתלב במערכות אינטגרציה רציף (CI) עבור פרויקטים גדולים יותר. בדומה, אימות כי coefficients להישאר בטווח המייצג של פורמט ה-point שלך.

תגובות בנושא פילטר בזמן אמת

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

השתמש בסימולציה כדי לחקור סובלנות ל Quantization

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

ללמוד מהפרקטיקה הטובה ביותר בתעשייה

מקורות מעולים זמינים באינטרנט.המאמר של ה-FLT:0Wikipedia על IIR מסננים את ®IIR מסנן 1 (IIR filtersFLT:1) מספק רקע תיאורטי מוצק.עבור הדרכה מעשית ליישום, מתייחס ל-FLT:2MathWorks' IIR מסנן תיעוד תיעוד של ההרחבה של IIR 3 (המרכז לחקר סימול: קונסולות: 7) ו-ProLT (Prosky) על ידי מחקר מתקדם של ספקטרום של ספקטרום של ספקטרום 6DGILT).

מסקנה

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