שְׁאֵלָה:
מה זה FPGA?
zklapow
2009-12-16 07:11:45 UTC
view on stackexchange narkive permalink

ראיתי בעבר הרבה אנשים מדברים על FPGA ואני יודע שהוא מייצג מערך שערים לתכנות בשטח, אבל איך זה עובד ומה המטרה להשתמש ב- FPGA?

חָמֵשׁ תשובות:
#1
+30
Maciek Sawicki
2009-12-16 07:37:52 UTC
view on stackexchange narkive permalink

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

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

קישורים שימושיים:

שימוש לדוגמא: http://nsa.unaligned.org/

אציין כי הרבה FPGA הם גדולים מספיק כדי להכיל מספר ליבות מעבד, ובכך מאפשר ל- FPGA להיות מחשב שלם בפני עצמו.
כהערה, אני חושב שמהירויות שעון נמוכות יותר יכולות להטעות. בהשוואה למחשב אישי, כן. בהשוואה ל- pic16, הם יכולים להיות מהירים יותר, אבל זה תלוי בעלות. רוב הזולות שהיו לי בידיים פועלות ב 40 מגה-הרץ, אבל שוב, מוצר למוצר וריאציה.
#2
+24
SiliconFarmer
2009-12-19 02:10:37 UTC
view on stackexchange narkive permalink

FPGA הוא ממש מערך של שערי לוגיקה שניתן לתכנת בשטח. כפכפים, מולטיפלקסים, טבלאות חיפושי 4 סיביות וכו 'הניתנים לחיבור בכל דרך שתרצו, תוך שימוש בשפה דמוית C (Verilog). עשוי משערי לוגיקה דומים, אך הם מוגדרים בעת יצירת המכשיר. בטח, יש לו זיכרון RAM ופלאש, כך שתוכל לכתוב תוכנה לקריאת תשומות ופלטים, אך אינך יכול לשנות את הסידורים בפועל של השערים. השערים תמיד יסודרו ל- ALU, לבקר זיכרון, ליציאה טורית וכו '.

היתרון של ה- UC הוא שתוכל לתכנת אותו בשטח (ליד שולחן העבודה שלך), עם קל לשימוש בשפה מוכרת וברמה גבוהה כמו C. הבעיה היא שהתוכנה "איטית". כדי לקבל קלט לשלוט על פלט, במקרה הפשוט ביותר, אתה יכול לכתוב:

loop void () {buttonState = digitalRead (buttonPin); אם (buttonState == HIGH) {
digitalWrite (ledPin, HIGH);
} אחר {digitalWrite (ledPin, LOW); }}

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

ב- FPGA, אני יכול להגדיר את השערים כך שיהיה להם בקרת קלט פלט בשעון אחד. כך שהפלט היה עוקב אחר הקלט עם עיכוב של אולי 25 ננו שניות. זה 40X מהר יותר, תוך שימוש באותה תקופת שעון. ושאר השערים ב- FPGA זמינים לעשות דברים רבים אחרים, שלא ישפיעו על מהירות הפונקציה הקטנה הזו.

הקוד ל- FPGA יהיה כפכף פשוט:

תמיד @ (שעון פוזה) ledPin < = buttonPin;

זה ייקח רק תא FPGA אחד, בערך 40 שערים, מתוך עשרות אלפים ב- FPGA.

אני יכול לתכנת מחדש את ה- FPGA שלי כדי לעשות משהו אחר, למשל לשלוט על ה- LED על בסיס שילוב של ארבע כניסות, עדיין בשעון אחד, ועדיין משתמש באותו תא FPGA אחד. או לשלוט על ה- LED על בסיס זרם סדרתי מהכניסה, בכמה תאי FPGA, שיהיו שערים של 100. אז יכולתי לשלוט על ה- LED על סמך נתונים סדרתיים, לומר "ON" או "OFF", עם הזרם הסדרתי בקצב גבוה מאוד (בקלות 20 מגה-הרץ), ועדיין להשתמש רק בשבריר זעיר מהקיבולת של ה- FPGA.

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

העלות אינה מבדיל. אני יכול לקנות FPGA שיכול ליישם כמעט כל עיצוב ארדואינו שראיתי אי פעם בכ -5 דולר, בערך כמו שבב AVR של ארדואינו. יש גם שרשראות כלים בחינם (IDE, מהדר, ניפוי באגים) עבור FPGAs.

כוח אינו מבדל. מכיוון שאני יכול להריץ את ה- FPGA בקצב שעון נמוך בהרבה כדי לקבל את אותה פונקציה כמו uC, ולהשתמש בחלק קטן מהשערים שלו (שערים שאינם בשימוש משתמשים רק בכוח דליפה), FPGA יכול לנצח את הכוח של כמעט כל UC מבוסס. העיצוב.

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

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

נושא נוסף הוא ש- FPGA אינם מגיעים בחבילות DIP קטנות של 8 עד 20 פינים. הם נוטים להגיע באריזות הרכבה על פני השטח של 100 פינים או גדולים יותר, כך שבניית הלוחות קשה יותר.

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

"אני יכול לקנות FPGA שיכול ליישם כמעט כל עיצוב ארדואינו שראיתי אי פעם בערך 5 $" אני מצטער, אבל מה? איפה?
#3
+9
ppvi
2009-12-16 14:19:26 UTC
view on stackexchange narkive permalink

אם אתה מכיר שערי לוגיקה בסיסיים, עליך לדעת שהם כמעט מיידית. הפעולה A ו- B או C משתנה באופן מיידי כאשר A, B או C משתנים.

FPGA הוא (מעין) מטריצה ​​של שערי לוגיקה ניתנים לתכנות. ניתן להגדיר את הכניסות והפלטים (כשילוב של הכניסות).

ב- uC, A + B / C * sqrt (D) ייקח כמה מחזורי שעון וקצת זיכרון. ב- FPGA התוצאה כמעט מיידית.

הם מעולים לווידאו, DSP, הצפנה ...

זהו היתרון העיקרי. מכשירי FPGA מודרניים מתאימים כעת עם זיכרון וישנם היברידיות uC / FPGA.

אני מכיר רבים מתרגלי EE עם ניסיון רב שנים שלעתים קרובות רק באמצעות FPGA לתוך העיצוב במקום UC שבו היית רואה UC. אני באמת חושב שהם נהדרים לטיפול בממשק.
כן אני חושב שזו דוגמה נחמדה: http://www.armadeus.com/english/index.html. מעניין במיוחד עבורי הוא דוגמה לבקרת סרוו: http://marwww.in2p3.fr/~duval/wiki_html_dump/articles/m/o/t/MotionSystem_05a0.html
יש לציין גם שיש יותר ויותר ממירי "C ל- VHDL" או "C ל- Verilog". הם לא הדברים היעילים ביותר עדיין, אבל אתה יכול להמיר קוד כתוב כבר לחומרה שניתן להשתמש בהם לשיפור המהירות. די מגניב אם תשאלו אותי (ואם יש לכם את הבצק בשביל זה).
#4
+5
endolith
2009-12-18 00:26:06 UTC
view on stackexchange narkive permalink

הם משמשים לפיצוח מפתחות הצפנה הרבה יותר מהר ממה שיכול היה לעשות במחשב למטרות כלליות. : D

חח, נהנתי מהתיאור המאוד פונקציונלי שלך. הם בהחלט מדהימים בעיבוד מקביל.
פרויקט שוברי קוד: http://www.copacobana.org/
#5
+2
Brian Carlton
2010-02-23 03:03:15 UTC
view on stackexchange narkive permalink

כדי לחסוך כסף וסיכון לעומת ASIC. אלא אם כן

  1. אכפת לך מאוד מהכוח או
  2. בונים חבורה מהן (נניח> 10,000 יחידות)

הקבוע ( עלויות NRE) של ביצוע ASIC הופכות את זה ליותר מדי.

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



שאלה ותשובה זו תורגמה אוטומטית מהשפה האנגלית.התוכן המקורי זמין ב- stackexchange, ואנו מודים לו על רישיון cc by-sa 2.0 עליו הוא מופץ.
Loading...