Clear Sky Science · he
לקראת המרת מודלים של MATLAB למאיצי חומרה מבוססי FPGA
הפיכת אלגוריתמים ממעבדה למכשירים במציאות
רבים מההתפתחויות המודרניות ברפואה ובהנדסה נולדות בתחילה כתוכנה שכתבו חוקרים, לעיתים בכלים ידידותיים כמו MATLAB. אבל כשהאלגוריתמים הללו נדרשים לפעול בזמן אמת — למשל לאיתור בעיות קצב מסוכנות מתוך אלקטרוקרדיוגרמה (ECG) — הם זקוקים למהירות וליעילות של חומרה ייעודית. מאמר זה מציג כיצד להעביר באופן אמין רשת עצבית מורכבת לזיהוי פעימות לב מ-MATLAB לשבב מיוחד שנקרא FPGA, מבלי לאבד את הדיוק שעליו סומכים רופאים ומהנדסים.

למה קשה כל כך לכתוב קוד לשבבים
FPGA (שדות לוחות שערים ניתנים לתכנות) הם שבבים שניתנים להגדרה מחדש ומוערכים על מהירותם ושימושם הנמוך באנרגיה. באופן מסורתי, תכנותם דרש שפות ממוקדות חומרה כמו VHDL או Verilog, שהן רחוקות מקוד המתמטי ועיבוד האותות ברמה גבוהה שכותבים מדענים ב-MATLAB. כלים חדשים יכולים להמיר אלגוריתמים לתיאורי חומרה באופן אוטומטי, אבל הם לעיתים דורשים כיוונון ידני ומתמקדים בעיקר בביצועים: מהירות הריצה וכמה משאבים השבב צורך. מה שחסר הוא דרך ברורה להוכיח שהחומרה עושה בדיוק את מה שהתוכנה המקורית עשתה, שכבה אחר שכבה, מספר אחר מספר.
בדיקה שלב-אחר-שלב עבור כל שכבת רשת
המחבר מתמודד עם הפער הזה באמצעות תהליך אימות ממוקד עבור רשת עצבית קונבולוציונית חד-ממדית המסווגת פעימות לב מתוך מאגר המידע המוכר MIT-BIH Arrhythmia Database. הרשת, שנבנתה ב-MATLAB, בוחנת קטעים קצרים של נתוני ECG ומקצה אותם לאחד מחמישה סוגי פעימות, כולל תקינות ומספר קצבים חריגים. שלוש גרסאות של הרשת, בעומקים שונים, אומנו על אותו מאגר נתונים. לאחר האימון נשמרו המשקלים, ההטיות והתודעות של כל שכבה על אותות מבחן כ"תוצאות זהב" — רישום מספרי מדויק של התנהגות מודל ה-MATLAB.
מ-MATLAB ל-C++ ל-FPGA, תוך מעקב אחר מספרים
במקום ללחוץ על כפתור המרה אוטומטית, הרשת הומשה מחדש ידנית ב-C++, בהתאם לפריסת הנתונים ולשלבים המתמטיים של MATLAB. קוד ה-C++ שימש לאחר מכן כלי סינתזה ברמה גבוהה ליצירת חומרה שפועלת על לוח PYNQ-Z1 FPGA. בכל שלב — MATLAB, C++ ו-FPGA — הפלטים של השכבות הושוו אל מול תוצאות הזהב המאוחסנות באמצעות מדד פשוט: שגיאה מוחלטת ממוצעת, שמודדת את ההפרש המספרי הממוצע בין שתי קבוצות תוצאות. המחקר קבע סובלנות קפדנית: כל השכבות חייבות להישאר מתחת לשגיאה של 1.5×10⁻³. לאורך אלפי דגימות ECG, כל השכבות הנבדקות עמדו ביעד זה, והדיוק הסופי של הסיווג נותר כמעט ללא שינוי: כ-98.3–98.4% ב-MATLAB וב-C++, ופחות בכ-0.2 נקודות אחוז על ה-FPGA — הבדל העומד בקנה אחד עם ההשפעות הצפויות של שימוש במספרים קצרים בנקודה קבועה בחומרה.

הפיכת החומרה למהירה בלי לשבור את המתמטיקה
לאחר שבטיחות נכונות התנהגות הושגה, תכנן העיצוב למען מהירות. החלקים התובעניים ביותר ברשת — שכבות הקונבולוציה — הוצבו על לוגיקת ה-FPGA התכנותית, תוך שימוש באריתמטיקה בנקודה קבועה ליעילות, בעוד משימות קלות יותר כמו חישוב ה-softmax הסופי רצות על המעבד המובנה של השבב עם נקודה צפה רגילה. טכניקות כמו צינוריות לולאות, פתיחת לולאות וחלוקה זהירה של הזיכרון לבנקים מקבילים מאפשרות לחלקי חישוב והעברות נתונים שונות לפעול במקביל. גרסה מותאמת של החומרה מעבדת חלון פעימה בכ-1.7 מילישניות ונכנסת בנוחות במגבלות המשאבים והצריכה של ה-FPGA, הכל תוך שמירה על ההתנהגות המספרית של כל שכבה כפי שהייתה במודל ה-MATLAB המקורי.
מה משמעות הדבר עבור מכשירים חכמים בעתיד
לא-מומחים צריכים לקחת את המסר המרכזי: כיום אפשר לא רק להאיץ מסווג קצב לב מתקדם המבוסס על MATLAB על שבב בעל צריכת כוח נמוכה, אלא גם להוכיח שעבודת הפנים של השבב תואמת מקרוב את מודל התוכנה האמין בכל שכבה. במקום לרדוף אחרי מהירות על חשבון אמינות, הגישה הזו בונה מסלול ביקורת ברור מקוד נקודה צפה ב-MATLAB לחומרת FPGA בנקודה קבועה. מתודת האימות זהה — שמירת תוצאות זהב, השוואת שגיאות שכבה-אחר-שכבה מול סף מחמיר ובדיקת הדיוק הסופי — ניתנת ליישום על רשתות עצביות חד-ממדיות אחרות בתחומים כמו מכשירים לבישים לניטור בריאות, חיישנים תעשייתיים וכלי רכב חכמים, ועוזרת להבטיח שכאשר אלגוריתמים עוזבים את המעבדה ומועברים למכשירים, החלטותיהם נשארות מהימנות.
ציטוט: Bal, S. Towards the transformation of MATLAB models into FPGA-Based hardware accelerators. Sci Rep 16, 5027 (2026). https://doi.org/10.1038/s41598-026-36033-z
מילות מפתח: מאיצי FPGA, רשתות עצביות ב-MATLAB, סיווג הפרעות קצב לב מתוך ECG, אימות חומרתי, למידה עמוקה בנקודה קבועה