250 likes | 474 Views
חברת BitLee. קורס : VHDL יישומי לתעשיה. VHDL- V ery high speed integrated circuits H ardware D escription L anguage. מהי שפת VHDL. שפת תיאור חומרה – הרעיון הכללי רכיבים מתוכנתים שיטות תכנון. רכיבים מתוכנתים. CPLD. FPGA. Complex Programmable Logic Device. Field Programmable
E N D
חברת BitLee קורס : VHDL יישומי לתעשיה
VHDL- Very high speed integrated circuits Hardware Description Language.
מהי שפת VHDL • שפת תיאור חומרה – הרעיון הכללי • רכיבים מתוכנתים • שיטות תכנון
רכיבים מתוכנתים CPLD FPGA Complex Programmable Logic Device Field Programmable Gate Array
PAL-like block PAL-like block PAL-like block PAL-like block I/O block I/O block I/O block I/O block Interconnection wires Complex Programmable Logic Device (CPLD)
PAL-like block PAL-like block D D Q Q
FPGA Basic Structure Logic block Interconnection switches I/O block
משאבים פנימיים של רכיבי FLEX10K ממשפחת FPGA
חסרונות של תכנון גרפי • העדר גמישות • קושי בביצוע שינוים • אפשרויות הדמיה מוגבלות • סביבת עבודה לא נוחה • בעיות התאמה בין תוכנות שונות
שיטת תכנון אלטרנטיבית – באמצעות שפה • גמישות מרבית • ביצוע שינוים בקלות • סימולציה מתקדמת • עבודה עם טקסט בד"כ נוחה יותר מאשר עם שרטוטים • אוניברסאליות
אפשרויות חדשות העומדות לרשות המתכנן באמצעות שפה • תיאור התנהגות לעומת תיאור מבנה • בניית מעגל ע"י תוכנות סינתזה "אוטומטיות" • הסתכלות "מלמעלה"
תהליך התכנון בעזרת VHDL • תכנון לוגי • תיאור של התכנון באמצעות השפה • ביצוע בדיקות סימולציה • ביצוע תהליך סינתזה
rst 3 en clk count State machine clk en count 0 3 2 2 2 5 1 0 3 מימוש מכונת מצבים בצורה גראפית: דיאגראמת גלים
en=0 en=0 zero Count=000 three Count=011 one Count=001 en=1 en=1 en=1 en=1 en=1 en=0 en=0 two Count=010 five Count=101 en=0 דיאגראמת בועות
Q1(t) Q0(t) enxQ2(t) 0 0 0 1 1 1 1 0 X 0 0 X X X 0 1 X X 1 1 X 1 X 10 Q1(t) Q0(t) enxQ2(t) 0 0 0 1 1 1 1 0 X 0 0 1 1 X X X 0 1 X X X 1 1 X 1 0 1
Q1(t) Q0(t) enxQ2(t) 0 0 0 1 1 1 1 0 X 0 0 1 X X X 0 1 1 X X X 1 1 1 X 1 0 1 1
D2 D1 D0 Q2 Q1 Q0 count en מימוש המעגל:
מימוש מכונת מצבים בעזרת VHDL: ENTITY state_machine IS PORT( clk, reset, en : IN STD_LOGIC; count : OUT STD_LOGIC_VECTOR (2 DOWNTO 0)); END ; ARCHITECTURE a OF state_machine IS TYPE STATE_TYPE IS (zero, one, five, two, three); SIGNAL state: STATE_TYPE; BEGIN PROCESS (clk, reset) BEGIN IF reset = '1' THEN state <= zero; ELSIF clk'EVENT AND clk = '1' THEN CASE state IS WHEN zero => IF en = '0' THEN state <= three; ELSE state <= zero; END IF;
WHEN one => IF en = '0' THEN state <= three; ELSE state <= zero; END IF; WHEN five => IF en = '0' THEN state <= one; ELSE state <= five; END IF; WHEN two => IF en = '0' THEN state <= three; ELSE state <= five; END IF; WHEN OTHERS => IF en = '0' THEN state <= three; ELSE state <= two; END IF; END CASE; END IF; END PROCESS; WITH state SELECT count <= "000" WHEN zero, "001" WHEN one, "101" WHEN five, "010" WHEN two, "011" WHEN three; END a;