רכיבים מתוכנתים (FPGA,EPLD) – אלי קרן
מטרת המאמר להציץ לתוך עולם
הרכיבים המתוכנתים לאלו שלא מודעים לכך או לאלו הרוצים לרענן את ידיעותיהם. סביר
להניח כי במאמר זה לא אצליח לכסות את כל הניתן בתחום, ולכן כדאי לראות בו מעין
מבוא.
מהו רכיב מתוכנת ?
רכיב מתוכנת הוא רכיב הניתן
לתכנות או במילים אחרות אוסף של שערים לוגיים ,דלגלגים
(DFF,JKFF) ואחרים הניתנים
לחיבור בינם לבין עצמם. החיבורים מבוצעים באמצעות תוכנה פשוטה למדי, הכוללת אפשרות
לבדוק את תקינות התכנון באמצעות הדמיה (סימולציה).
אפשרויות החיבור הפנימיות הן
כמעט ובלתי מוגבלות, אך ממומלץ להתחשב בדפי הנתונים של היצרן.
קיימים שני סוגים עיקריים של רכיבים מתוכנתים, האחד מבוסס על זיכרון זמני (SRAM) והשני על זיכרון קבוע (FLASH). רכיב מבוסס זיכרון זמני יאבד את תוכנו ברגע כיבוי המתח, לעומת רכיב מבוסס זיכרון קבוע השומר על תוכנו גם לאחר כיבוי המתח. לרוב רכיבים מבוססי זיכרון קבוע כוללים פחות רכיבים פנימיים לעומת רכיבי זיכרון זמני, אך לעיתים קיימת חפיפה ביניהם כאשר מדובר בכמות נמוכה. לדוגמא, רכיב קטן במושגי זיכרון זמני יכיל כ- 10,000 שערים לוגיים, הגדולים במשפחות אלו יכולים להגיע אף ל – 3,000,000 שערים (הם כמובן עולים הרבה כסף).
יישומים של רכיבים מבוססי SRAM מיועדים לשימושים
שיכולים לסבול Latency
גבוה (זמן ההשהיה של מערכת מרגע קבלת הקלט ועד לעדכון הפלט), כלומר עבודה ב- Pipe-Line. ע"י כך ניתן
להגיע לקצבי עבודה של 200 עד 300 מגהרץ. במידה והשימוש ברכיב הוא לצורכי לוגיקה רגילה
(שערים) אז תיווצר השהייה גדולה מרגע קבלת האות ועד להופעת התוצאה במוצא.
לעומת זאת, רכיבים מבוססי FLASH הנם מהירים יותר עבור פעולות לוגיות רגילות ולכן נהוג להשתמש בהם לעבודה עם רכיבים אסינכרוניים
מהירים.
על-מנת לתכנת רכיבים אלו יש
צורך להשתמש במהדרים (compilers)
ייעודיים, באחת משפות התכנות הבאות: VHDL,AHDL,VERILOG,ABEL,HDL. שפות תכנות אלו
דומות למדיי באופיין אך שונות בתחביר שלהן. כמו כן, ניתן לבנות קוד גם באמצעות שרטוט
של התכנון (כמו שרטוט מעגלים אלקט'), אך יש צורך להשתמש בספריות של סביבת הפיתוח.
לאחר סיום כתיבת הקוד, נהוג
ורצוי מאוד לתכנן סימולציה הבוחנת את התכנון ככל שניתן. כדאי לבחון כמה שיותר את
המצבים הנפוצים, ולשים דגש על מצבי קצה (כאן תמיד יש צרות).
דוגמא לקוד בשפת AHDL
SUBDESIGN EXAMPLE
(
IN1 : INPUT;
// סיגנל כניסה ראשון
IN2 : INPUT; // סיגנל כניסה שני
OUT1 : OUTPUT; // סיגנל יציאה
)
BEGIN // התחל
OUT1 = IN1&
IN2; // פעולת "וגם"
בין שתי הכניסות - התוצאה הולכת ליציאה
END; // סוף
דוגמא לקוד בשפת VHDL
ENTITY simpsig IS
PORT(
enable : IN BIT;
d, clk : IN BIT;
q : OUT BIT
);
END simpsig;
ARCHITECTURE maxpld OF simpsig IS
BEGIN
PROCESS(clk)
BEGIN
IF (enable = '0' ) then null;
ELSIF (clk'event and clk = '1') then
q <= d;
END IF;
END PROCESS;
END maxpld;
רכיבים מתוכנתים מהסוגים בהם דנו ניתן לצרוב באמצעות
מתאמים מיוחדים וקובץ מיוחד הנוצר ע"י המהדר. ניתן לצרוב
אותם גם ללא מתאמים אך יש צורך לבנות באמצעות מעבד אחר את הממשק דרכו יועבר
הקובץ(פורמט בינרי).
כלי פיתוח
בשוק ישנם מספר רב של כלי פיתוח וסינטזה לרכיבים אלו, ישנם מאוד מתוחכמים ויקרים עד כדי 15,000$ ויותר וכאלו שעולים 1,500$, עבור סטודנטים מרבית החברות הרציניות מציעות להשתמש בגרסה מוגבלת אך מספקת על-מנת להשתפשף בתחום.
כיום ישנן מספר רב של חברות בתחום זה. החברות הותיקות, בעלות
רכיבים וכלי פיתוח טובים הן : ALTERA, XILINX, חברות נוספות שניתן למצוא הן CYPRESS,ATMEL ועוד.
,בעלי אתר זה לא ישאו באחריות כלשהי לכל נזק, כספי או אחר
שייגרם במישרין או בעקיפין משימוש במידע המצוי באתר זה
כל הזכויות שמורות לאסף פוניס, גיא יונה ואלי קולברג ©
אין להעתיק תכנים מאתר זה ללא רשות בכתב ממנהלי האתר