מאת: Yan Vainter, Freescale
1. הקדמה
את הארכיטקטורה הקלאסית עבור מערכות אולטרה–סאונד, עד השלב שבו נוצרת התמונה, אפשר להציג בדרך הנראית באיור 1. בדרך כלל, בארכיטקטורות כאלו, משתמשים בחומרה ייעודית כדי לבצע משימות של עיבוד אותות כגון עיצוב אלומות (beam–forming). גישה זו מקטינה את גמישות המערכת, כשהיא הופכת את העדכונים ללא מעשיים (למשל, הצגת מתמרים חדשים בעלי מאפיינים גיאומטריים שונים, עלולה לרמז על שינויים, שיכול היה להיות יעיל יותר בהרבה אם היו מבצעים אותם בתוכנה).
על מנת להעניק למערכת גמישות נוספת, אנו מציעים גישה של תוכנה, שבה כל עיבוד האותות מתבצע בתוכנה והתקני FPGA משמשים כמחברים פשוטים. באמצעות שימוש ברכיבי חומרה מהמדף מתאימים “כדי להתחיל” – ניתן לצפות לזמן קצר יותר הכרוך ביציאה לשוק (איור 2).
את הפתרונות של היום ל– 32 ערוצים, המתבססים על התקני FPGA, אפשר לחלק לקטגוריות שונות כפי שנראה בטבלה 1. בשעה שבקושי ניתן לממש פונקצית מיקוד ופונקצית חלון (Apodization) דינמיות, עם התקני FPGA בקנה מידה קטן בינוני וגדול, בהתקני FPGA מתקדמים מהרמה הראשונה, כמעט כל תכונה הופכת להיות ניתנת להשגה, ואלו האחרונים מותירים מאחור מרחוק ובפער גדול את איכות התמונה המתקבלת עם התקני קצה ברמה נמוכה ובינונית. בשל העובדה שאפשר לחשב מראש את מקדמי ההשהיה ופונקצית החלון, ולאחסן אותם בזיכרון, הגישה של מעבד DSP (מעבד אותות ספרתיים) יכולה להוכיח עצמה כיעילה בעת מימוש עיצוב האלומות, כל עוד עוצמת העיבוד מספקת.
במושגים של עלויות, למעבדי DSP יש יתרון ברור לעומת התקני FPGA ברמה גבוהה, והם מתאימים לשימוש בהתקני קצה מסדר גודל נמוך ובינוני. בפרקים הבאים נפרט כיצד ניתן לממש מיקוד דינמי ופונקצית חלון דינמי, תכונות שבדרך כלל קיימות בהתקני FPGA יקרים ואפשר לממש אותם גם בהתקני DSP שעלותם נמוכה (איור 3).
מעבד האותות הספרתיים שנבחר לצורך השוואה זו הוא MSC8156, התקן בעל שש ליבות מבית היוצר של Freescale Semiconductor שרווח בשימוש ביישומי פס בסיס, ביישומי קול וביישומי וידיאו.
2. ארכיטקטורה של MSC8156
על מנת לעמוד בקצב הנתונים הגבוה ולענות על צורכי המחשוב הדורשניים של יישום דימות רפואי באולטרה-סאונד, יש צורך לנתח את הארכיטקטורות של מעבדי DSP בהתבסס על חמישה קריטריונים חשובים: יכולת עיבוד מקבילי, רוחב פס של זיכרון, רוחב פס לכניסות ויציאות, קבוצת פקודות ומאיצי חומרה. המעבד MSC8156 של Freescale משמש ביישומים אלו עם ארכיטקטורה בעיבוד מקבילי, בעלת שש ליבות שפועלות ב- 1 ג’יגה הרץ, לכל ליבה יש ארבע יחידות לוגיקה אריתמטיות לנתונים (ALU), ובה ניתן לבצע עד ארבע פעולות אריתמטיות ולוגיות במחזור אות שעון יחיד, ועוד יחידות ליצירת כתובות,שבהן מתבצעות בדרך כלל פעולות חישוב במספרים שלמים ופעולות ליצירת כתובות (איור 4).
במונחים של זיכרון, ההתקן MSC8156 מאופיין בזיכרון מסוג M3 בגודל של 1 מגה ביית במערכת על שבב, עם מהירות תיאורטית של 8 ג’יגה סיביות בשנייה, ועם היכולת לחבר שני זיכרונות מסוג DDR3 בגודל של עד 1 ג’יגה ביית, כל אחד מהם עם רוחב פס תיאורטי של 12 ג’יגה ביית בשנייה.
מאחר שאנו מטפלים בקצבי נתונים גבוהים, בחרנו ב-Serial Rapid IO (ממשק כניסה יציאה טורי מהיר) כממשק הנבחר שלנו. למעבד MSC8156 יש שני חיבורים מסוג Rapid IO, אשר לכן, המהירות הנמדדת בשער אחד בכיוון אחד יכולה להגיע עד ל-9.11 ג’יגה סיביות בשנייה.
האלגוריתמים לעיצוב אלומות, כמו השהיה וסיכום, משתמשים בפעולות אינטרפולציה עם יכולות מימוש לפי פקודות בחבילות, כגון:
macd Da,Db,Dn Dn + (Da.L · Db.L) + (Da.H ·Db.H) ->Dn
mpyd Da,Db,Dn (Da.L · Db.L) + (Da.H ·Db.H) –>Dn
למצבים של דימות Doppler, כמו למשל Doppler ספקטראלי, המאיץ MAPLE–B מסוג התמרת פורייה מהירה (FFT) או מסוג התמרת פורייה מושהת (DFT) יכול להימצא מתאים. שעה שהמאיץ MAPLE מבצע התמרת פורייה מהירה, הליבות פנויות לביצוע מודולים עבור מצבי דימות אחרים.
3 – עיצוב אלומות
עיצוב אלומות עומד במרכזו של תהליך עיבוד האותות של כל התקן אולטרה–סאונד רפואי. הוא ממומש בדרך כלל ברכיבי FPGA וברכיבי ASIC בהתבסס על רוחב הפס הגדול ודרישות החישוב. החידושים האחרונים במעבדי אותות ספרתיים (DSP) פתחו את הדלת לעיצוב אלומות בשבבי עיבוד רגילים.
תמונות האולטרה-סאונד הרפואי נוצרות על ידי כך שראשית, בעת השידור, יוצרים אלומות אולטרה–סאונד ממוקדות, ולאחר מכן, בעת הקליטה, יוצרים תבניות של כיווניות (באותו כיוון כמו זה שנעשה עבור השידור). האזור הנסרק מכוסה על ידי אלומות סמוכות עם מרווח שמוגדר על פי הרזולוציה המינימלית הנדרשת. אלומות האולטרה-סאונד נוצרות על ידי הוספת השהיות לדפקים (פולסים) החשמליים שנשלחים לכל אלמנט, במטרה לבקר את תבנית הקרינה. בצד הקולט, הגישה דומה – האותות המגיעים מכל אלמנט מושהים באותה מידה כמו זו שבצד המשדר, והם מסוכמים יחד. פאזת ההשהיה מבטיחה שהגלים / האותות נמצאים כולם בפאזה ולא מתקיים חיבור הורס (איור 5).
את תהליך עיצוב האלומות אפשר לנסח בצורה נאותה בנוסחה הבאה:
כאשר, N הוא מספר האלמנטים, הם מקדמי פונקצית החלון (apodization) (משוקללים), הם ההדים המתקבלים, ו- מציין את ההשהיות. בהקשר זה, אנו מדברים על מיקוד דינמי ועל פונקצית חלון דינמית, מפני שהשהיה ומקדמי פונקצית החלון בהתאמה, הם פונקציות של הזמן.
הצעד הראשון שנדרשים לעשות כאשר מנתחים עיצוב אלומות הוא הגדרת הפרמטרים הפיסיקאליים של המערכת והגדרת התכונות שהיא אמורה לכלול. אנו נשקול מערכת בת 30 ערוצים עם ממירי אנלוגי לספרתי (ADC) שפועלים ב-32 מגה הרץ וברזולוציה של 16 סיביות עבור תדר מרכזי של 2 מגה הרץ. עבור המקרה לדוגמה שמוצג כאן, נלקחו בחשבון מיקוד דינמי ופונקצית חלון דינמית עם עדכוני מקדמים כל 0.96 מ”מ ועם אינטרפולציה בכל מחזור. העומק של הסריקה וזווית הצפייה מתוארים באיור 6
בהתבסס על קירוב פראונהופר (Fraunhofer), אפשר לחשב את המספר הנדרש של שורות לדגימת הגזרה על פי הנוסחה הבאה:
כאשר , היא זווית הגזרה, = הם חרירי השידור והקליטה ו- הוא אורך הגל.
בהתאם לתהליך הגילוי, שמרמז בדרך כלל על ריבוע של ההדים ודחיסה לוגריתמית של המספר בפועל של השורות שאותן יש צורך לדגום, הגזרה θ תהיה כפולה בערכה מהערך N. עבור המקרה לדוגמה המוצג, מספר השורות המספיק הוא 61.2, אך מאחר שאנו מטפלים בקירוב, 64 שורות יילקחו בחשבון בתיאורים הבאים.
כדי למנוע השמטה במסגרות לשנייה, יש לעבד את הנתונים הנרכשים עד אשר יועברו נתונים חדשים, כפי שאפשר לראות באופן סכמתי באיור 7.
הצעד הראשון שיש לקחת בחשבון הוא ההקצאה של מסגרת הזמן עבור עיצוב אלומות וספריית B-Mode המבוססת על המספר של מסגרות לשנייה שבהן יש לתמוך. במקרה לדוגמה זה, מספר של 45 מסגרות בשנייה נלקח בחשבון כמתאים. לאחר שחילקנו את מספר המסגרות בשנייה, במספר שורות הסריקה, אנו יכולים להקצות את מסגרת הזמן עבור מודול עיצוב האלומה ועבור ספריות B-Mode כפי שמוצג באיור 7.
כאשר מעריכים שיש אלגוריתמים מסוימים שהם אפשריים עבור ארכיטקטורה מסוימת, שלושה גורמים הופכים להיות החשובים ביותר: רוחב פס לכניסות ויציאות (אם אכן זהו המקרה), דרישות רוחב פס של הזיכרון, ומנייה של המחזורים הנדרשים לביצוע האלגוריתם.
את דרישת רוחב הפס לכניסות ויציאות אפשר לחשב בהתבסס על הקצאת מסגרת הזמן ועל הפרמטרים של ממיר ADC, ולקבל 8.07 ג’יגה סיביות בשנייה – תוצאה שנמצאת במקום טוב במסגרת המתאימה עבור חיבור port אחד של Rapid IO (כניסה ויציאה מהירים) – (במהירות נמדדת של עד 9.11 ג’יגה סיביות לשנייה). הזיכרון שבו נתוני הכניסה מאוחסנים יהיה M3 מפני שהוא מהיר יותר מ- DDR3 ומאופיין במספיק מקום שנחוץ לתמיכה, אפילו אם נדרשת גישה של שמירה במאגר זיכרון זמני כפול. מאחר שהשידור יתבצע דרך DMA, המודול שבהמשך לא ישתמש בגישת DMA ולכן לא תהיה הפרעה לשידור Rapid IO.
מאחר שעיצוב אלומות הוא אלגוריתם דורשני למדי, אנו מפצלים אותו לחמש ליבות ולשני שלבי עיבוד. בשלב הראשון שבכל ליבה יתווספו שישה ערוצים באופן קוהרנטי, ובשלב 2 – התוצאה של שלב 1 תעבור דרך תהליך חיבור (איור 8).
מסגרות הזמן עבור שלב 1 ושלב 2 מוקצות כפי שנראה באיור 9, בהתבסס על המורכבות של כל אחד מהשלבים.
אנו מתייחסים למקדמי פונקצית חלון ולמקדמי השהיה כנתונים מחושבים מראש, והם מאוחסנים בזיכרון DDR. כדי להקטין את רוחב הפס ואת דרישות הגודל, המקדמים יאוחדו לשני משתנים בני שמונה סיביות. אם ניקח בחשבון את כל נתוני הכניסות והיציאות, וכן את ההעברה ב-Rapid IO במסגרות הזמן המוקצות, ניתן לחשב את דרישות רוחב הפס אשר מוצגות בטבלה 2. כפי שניתן להבחין, הדרישות עבור כל אחת ממסגרות הזמן לא יחרגו ביותר מ-50% מרוחב הפס שניתן לקבל באופן תיאורטי עבור זיכרון DDR3 ו- M3.
הצעד הבא בתהליך ההערכה הוא אומדן של מניית המחזורים ששימשו לצורך תהליך העיבוד בפועל. קיימים שני גורמים שמשפיעים על מנייה כוללת של המחזורים: מחזורי ליבה כתוצאה מפעולות ומחזורים שנגרמים בגלל הפסדים. הקודים המדומים שמופיעים באיור 10 ובאיור 11 מציינים שיטת עיבוד בצנרת שיכולה להשיג דגימה של 9.4 מחזורים ליציאה בשלב 1, ודגימה של 2 מחזורים ליציאה בשלב 2.
בשל עיבוד הצנרת היעיל, אין הפסדי היתקעות בין קבוצות ה-VLES, ולכן סוג ההפסדים היחיד שאותו יש לקחת בחשבון הוא הפסדים הנובעים מהחטאות בזיכרון מטמון (cache). אם לוקחים בחשבון את הגדלים של שורות בזיכרון מטמון ואת ההפסדים האופייניים הצפויים בגלל החטאות בזיכרון מטמון, ניתן להעריך את הפסדי ההחטאה, בהתבסס על כלל האצבע הבא:
עבור זיכרון M3: 80 מחזורים ב- 128 בתים (הערכת יתר של 30% בערך, בגלל התעבורה של Rapid IO)
עבור זיכרון DDR: 100 מחזורים ב– 128 בתים
המעבד MSC8156 מציע מנגנון להקטנת ההפסדים הנובעים מהחטאות של נתונים בזיכרון מטמון, על ידי הבאת נתונים מהזיכרון לפני שהם יידרשו על ידי הליבה (הפקודה dfetch), לכן יש לשער שהנתונים המדווחים לעיל יהיו גבוהים יותר מאלו שניתן היה לקבל לאחר ביצוע אופטימיזציות.
לאחר הוספת כל האלמנטים המשתמשים במחזור, והשוואתם למספר המחזורים הזמינים, אפשר להבחין שניתן להשיג את עיצוב האלומות גם מתוך נקודת מבט אחרונה זו (טבלה 3).
4. B–MODE
אנו מציעים ספריית B-Mode שמורכבת מארבעת המודולים הבאים:
גילוי מעטפה – (ED) (דילול [decimation] ודחיסה אלגוריתמית)
המרת סריקה (SC)
סינון חציון (MF)
האחדה היסטוגרמית (HQ)
כדי לקבל תמונות ב–B–Mode, יש צורך בשני המודולים הראשוניים (ED ו–SC) בלבד; שני המודולים הבאים מהווים טכניקות קלאסיות לשיפור תמונה, שיכולות להוסיף לאיכות התמונה. לשילוב של התקני שיפור במסגרת זמן ההרכשה יש יתרון בכך שלא אובחן הפסד של מסגרות בשנייה בהשוואה ליישום שלהם לאחר שהתמונה נוצרה כבר. בהמשך, נדון באינטרפולציה ביליניארית המבוססת על המרת סריקה (Scan Conversion) עם תמונה בגודל של 640×480 ביציאה ועם סינון חציון בחלון בגודל 3×3.
אפשר למצוא בספרות גישות שונות לביצוע גילוי מעטפה, מבוסס על טרנספורם הילברט (Hilbert), גילוי אפנון מרובע או על ידי הפיכת אות הכניסה למרובע. אנו מציעים אלגוריתם לגילוי מעטפה שנוצר ממודולי המשנה הבאים:
הערך הריבועי של אות בעיצוב אלומות בכניסה (איור 12)
דילול עם CIC ועם FIR לפיצוי
דחיסה לוגריתמית
שיטה זו ייחודית עבור יצירת תמונות B–Mode ומוכחת כאחת הגישות הידידותיות ביותר מנקודת מבט של צריכת מספר המחזורים. המעבד MSC8156 עוזר לממש את הגישה הזו על ידי כך שהוא מאפיין כתובות מקומיות ב–40 סיביות, שיכולות לטפל בדרישות גידול הסיביות של מסנני CIC.
לביצוע סינון חציון והמרת סריקה יש צורך בגישה לשלוש שורות סריקה לפחות, ובהתאמה, לקריאה של שתי שורות סריקה, עובדה שהופכת אותם ללא מתאימות במיוחד עבור רכיבי FPGA ברמה נמוכה שלהם יש משאבי חציצה מוגבלים. בהמשך, נבצע קריאה של ארבעה מקרים של סינון חציון וארבעה מקרים של המרת סריקה עבור ליבות, לאחר שהורכשו מספיק נתונים (איור 14).
השוואת היסטוגרמה (Histogram Equalization) היא סוג שונה במקצת של אלגוריתם בהשוואה לאלו שבהם כבר דנו, בשל העובדה שבנקודה מסוימת יש צורך בגישה לתמונה כולה. כדי לשפר את הביצועים עד למקסימום מפצלים את השוואת ההיסטוגרמה לשני שלבים (איור 15):
חישוב ההיסטוגרמה (HQI) – מתבצע במסגרת הזמן של ההרכשה ובזמן של הכניסות והיציאות.
יישום טרנספורמציה (HQ2) – מתבצע לאחר שהתמונה כולה הורכשה (יקטין את מספר המסגרות בשנייה ל- 44.5 בערך).
דרישות רוחב הפס ודרישות מניית המחזורים (כפי שהם מתקבלים לאחר תיקוף הסימולטור) מסוכמים בטבלה 4.
ב-75% ממסגרת הזמן לא נבצע סינון חציון (MF), המרת סריקה (SC) והשוואת HQ1, לכן נראה גורם שימוש כמו זה המוצג בטבלה 5, בהשוואה למקרה שבו אנו מבצעים קריאה ל–MF, ל–SC ול–HQ1 שבו גורם השימוש יהיה זה שמוצג בטבלה 6.
על ידי חישוב הממוצע של השימוש המצוין בטבלאות, תוך כדי לקיחה בחשבון של מסגרות הזמן שאינן בשימוש, אפשר לצפות בשימוש של 38%, שהם 2300 מגה מחזורים בשנייה בערך, מתוך 6000 מחזורים בשנייה אשר זמינים לשימוש.
5. יצירת לוחות זמנים
איור 16 מציג את העיבוד המתבצע בליבה 0 עבור כל קו סריקה. אפשר לראות ש– 30% ממסגרת הזמן אינם בשימוש, אשר אותם ניתן היה לנצל למצבי דימות Doppler.
ליבות 1 עד 4 אינן מבצעות בדרך כלל סינון חציון (MF), המרת סריקה (SC) והשוואת HQI, כך ש-60% כמעט ממסגרת הזמן פנויים למצבי דימות אחרים (איור 17). כאשר מתבצעות קריאות גם ל-MF, ל-SC ול-HQI, 10% מהזמן אינם מנוצלים.
דרישות רוחב הפס של זיכרון DDR עבור כל מסגרות הזמן מתוארות באיור 19 בצד שמאל. על מנת להקטין את עלות המערכת כולה באמצעות שימוש בזיכרון DDR יחיד אפשר לפזר את מסגרת הזמן שאינה מנוצלת לצורך המרת סריקה ועיצוב אלומות בשלב 2, פעולה שתוביל לדרישות סבירות של רוחב פס של זיכרון DDR עבור זיכרון DDR יחיד (איור 19 בצד ימין).
6. מסקנות
בשלוש השנים האחרונות, מעבדי האותות הספרתיים התקדמו באופן משמעותי במונחים של יכולת עיבוד וצריכת הספק, עובדה שהפכה אותם למתאימים יותר ויותר עבור התקני אולטרה-סאונד רפואיים ניידים ברמה נמוכה וברמה בינונית. תוספת הגמישות, שנוצרה כתוצאה משימוש בגישת תוכנה עבור כל המודולים לעיבוד אותות, קיצור הזמן הנדרש ליציאה לשוק ומהפחתה בעלויות באמצעות שימוש ברכיבי חומרה מהמדף שנבחנו, וכן בשל העובדה שקיים חומר תדרוך רב להנחיה – כל אלו מהווים יתרון גדול עבור מעבדי DSP.
עבור גישת אלומה פשוטה, כמו זו המוצגת במאמר זה, גורם השימוש של 38 אחוזים בערך מעודד מאוד את המעבר לטכניקות של הרכשת שורות מרובות ולהוספת מצבי דימות אחרים, כמו Power Doppler ו-Colour Doppler.
כאשר MAPLE–B אינו משמש להבהרה זו, הוא יכול להיות שימושי מאוד עבור מצבי דימות Doppler ספקטרלי ועבור אלגוריתמים המעצבים אלומות במישור התדר.