מאמר העוסק בסקירת ההבדלים בין FPGA ומיקרו בקרים (מיקרו-מעבדים, מיקרו-קונטרולרים). המאמר מציג את הטכנולוגיות השונות, הבדלים בינהן, והיתרונות והחסרונות של כל טכנולוגיה.
FPGA או מיקרו-בקר?
המאמר הבא עוסק בהצגה קצרה של הטכנולוגיות השונות.
לא אכנס בפירוט לאיך הרכיבים עצמם עובדים וכיצד מתבצעת התכנות והצריבה אליהם, אלא אעמוד בעיקר על ההבדלים החשובים למתכנן שרוצה לפתח מוצר לא יודע באיזו טכנולוגיה כדאי לו להשתמש.
מהו FPGA?
FPGA – Field Programmable Gate Array הינו רכיב אלקטרוני מתכנת הבנוי כמעגל משולב (Integrated Circuit) המכיל בתוכו מספר רב מאוד של "בלוקים לוגיים" הניתנים לתכנות. בלוקים לוגיים הם אוסף של שעריים לוגיים (כמו שער NOT ו AND), רכיבים מורכבים יותר כגון בוררים ומפענחים ואף רכיבי זכרון מ flip-lops, בודדים ועד רגיסטרים ובלוקים שלמים של תאי זיכרון.
מעל שכבה זו נמצאת שכבה שבעת צריבת (התוכנית שכתב המשתמש) לרכיב FPGA יוצרת "קשרים" חשמליים בין רכיבים האלה ובין הבלוקים הלוגיים עצמם בהתאם להגדרות שקבע המתכנת ובכך נוצר מעגל חשמלי המתאים לקוד.
מהו מיקרו-בקר?
מיקרו-בקר (microcontroller) הינו מעגל משולב Integrated Circuit בו ממומשת מערכת שלמה SoC הכוללת יחידת עיבוד, ממשקים חיצוניים, זיכרונות ועוד. זהו רכיב שהחומרה בו קבועה ואנו טוענים אליו קוד לזכרון מיוחד שבזמן ריצה מפוענח ומבוצע.
הבדלים
ההבדל העיקרי בין שני הטכנולוגיות השונות הוא אופי הריצה. למיקרו-בקר יש תכונות של מעבד. כלומר שבזמן ריצה הקוד נלקח מזכרון מסויים מובא למעבד ושם מפוענח ובהצאם לפקודה מבוצעים חישובים שונים משתנים ערכי הכניסות יציאות ועוד. הפקודות מבוצעות באופן סדרתי אחת אחרי השנייה. אפשר לומר שבזמן נתון רק פקודה אחת מבוצעת ונעשה עיבוד רק על נתון אחד (זוהי הכללה קצת גורפת שאינה מדוייקת אך ממחישה את אופי הפעולה). ברכיב FPGA לעומת זאת, הקוד לא צריך להיות מפוענח בזמן ריצה, כי הוא כבר "נצרב" על הרכיב ובכך הגדיר את אופן פעולתו. רק המידע משתנה בהתאם לכניסות. כמו כן, לרכיב זה יש אופי מקבילי. כל הבלוקים הלוגיים פועלים לפי אות השעון ומבצעים פעולות לפי המידע המצוי אצלם בכניסות. לכן מידע יכול להיותר מחושב ברכיב זה בכמה מסלולים מקבילים, מה שמאפשר לעשות פעולות מקבליות במהירות גבוהה בהרבה ממיקרו-בקר.
שיקולים בבחירה
שטח: ברכיב FPGA יכולים להיות מליוני טרנזיסטורים ולכן הם בדרכ כלל גדולים יותר (רכיב ממוצע בגודל של כמה סמ"ר) בעוד שמיקרו-בקרים קטנים יכולים להיות בגודל של כמה מ"מ רבועים)
דרישות הספק: מאותה הסיבה, רכיב FPGA בו מיליוני טרנזיסטורים יצרוך הספק גבוה בהרבה. לכן נמעט לראותם בהתקנים ניידים.
מהירות: רכיבי FPGA מגיעים לקצבים של מאות מגה-הרץ בעוד שמיקרו-בקרים סטנדרטיים מסתפקים בעשרות בודדות.
תכנות: תכנות מיקרו-בקרים נעשה לרוב בשפת לC או באסמבלר. תכנות ל FPGA נעשה בשפת HDL כגון Verilog או VHDL ולרוב האנשים יראה מסובך יותר.
מחיר: רכיב FPGA מודרני יכול לעלות מאות ואף אלפי שקלים (רכיב בודד) בעוד מחיר מיקרו-בקר משוכלל יכול להגיע לעשרות שקלים בלבד, כאשר מיקרו-בקר פשוט יכול לעלות שקלים בודדים בכמויות גדולות.
אז מה לבחור?
אם אתם צריכים להתעסק עם אותות מעל 10MHZ או עיבוד אותות תמונה מקביליים, ודרישות הספק פחות חשובות לכם. השתמשו ב FPGA . אחרת, כנראה שהבחירה הנכונה עבורכם היא מיקרו בקר.
עדיין מבולבלים? לא מצליחים להחליט? לא בטוחים איזה מיקרו מעבד או איזה FPGA מתאים ביותר לאפליקציה שלכם?
התייעצו בפורומים המתאימים.