תרגילים - Private Backup
Transcription
תרגילים - Private Backup
1 תרגילים בVHDL - תרגיל 1 S A F נתון buffer הפועל עם עכבה גבוהה Zלפי טבלת אמת הבאה: F עכבה גבוהה Z A S 0 1 א .כתוב תוכנית ב VHDL-למימוש הרכיב ב .המעגל הבא מורכב מהרכיב הנ"ל s1 x fout s2 y כתוב תוכנית בעזרת פקודת port map VHDLתרגיל 1 חיון אבי ויואל כהן 2 ' השלם את הטבלה הבאה עבור המעגל בסעיף ב.ג S1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 S2 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 x 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 y 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 Fout 2 תרגיל :נתונה התוכנית entity exam3 is port ( A: in BIT_VECTOR (3 downto 0); F,V,W: out BIT_VECTOR (3 downto 0) ); end ; architecture exam3 of exam3 is begin F<='0'& A(3 downto 1); V<= ('1'& A(2)& A(0)& '0'); W<= not(A); end; אםF,V,W מה יהיה תוכן A="0101" חיון אבי ויואל כהן 1 תרגילVHDL 3 3 תרגיל VHDL לפניך תוכנית בשפת חומרה . הסבר מה עושה התוכנית.א y מה ערך המוצא, e=1 - וdata=1101 אם.ב ENTITY x IS PORT ( clk, e, rl : IN BIT; data : IN BIT_VECTOR (3 DOWNTO 0); y : OUT BIT_VECTOR (3 DOWNTO 0)); END; ARCHITECTURE behave OF x IS BEGIN PROCESS (clk, e ) variable temp : BIT_VECTOR ( 3 DOWNTO 0 ); BEGIN IF e='1' THEN temp := data; ELSIF clk'EVENT AND clk='1' THEN CASE rl IS WHEN '0' => temp := '0' & temp (3 DOWNTO 1); WHEN '1' => temp := temp(2 DOWNTO 0) & '0'; END CASE; END IF; Y<= temp; END PROCESS; END behave; (rl=0) Y השלם את המוצא.ג 50 100 150 200 250 300 350 400 450 500 550 600 650 ns 650 ns clk e rl data 1101 y (rl=1) Y השלם את המוצא.ד 50 100 150 200 250 300 350 400 450 500 550 600 clk e rl data 1101 y חיון אבי ויואל כהן 1 תרגילVHDL 4 תרגיל 4 נתונה המערכת הבאה הכוללת DFF 3הפעילים בעליית שעון ושער AND ck U4 net3 q U3 net2 clk q clk d d dff1 dff1 U2 net1 q clk din d dff1 U1 I2 O out1 I1 I0 א .תכנן את ה) DFF -שם (dff1ואת שער ) ANDשם (and3 ב .כתוב תוכנית למערכת הכוללת בעזרת פקודת ,port map השתמש בcomponent - DFF1,AND3 ‐ לבניית המערכת . תרגיל 5 נתון מרבב 4ל1- S1 S0 output output d0 d1 d2 d3 s0 d0 0 0 d1 1 0 d2 0 1 d3 1 1 s1 mux4to1 א .כתוב תוכנית לרכיב הנ"ל תוך שימוש ב PROCESS - ב .כתוב תוכנית ל MUX-מ 256-ל 1- הערה :הגדר את Dכווקטור של 256סיביות ואת S כמשתנה INTEGER VHDLתרגיל 1 חיון אבי ויואל כהן 5 6 תרגיל נתונה תוכנית למונה ENTITY counter1 IS PORT ( clk : IN BIT; clear : IN BIT; q : OUT INTEGER RANGE 0 TO 255 ); END counter1; ARCHITECTURE count OF counter1 IS BEGIN PROCESS (clk) VARIABLE cnt : INTEGER RANGE 0 TO 255; BEGIN IF (clk'EVENT AND clk = '1') THEN IF clear = '0' THEN cnt := 0; ELSE cnt := cnt + 1; END IF; END IF; q <= cnt; END PROCESS; END count; הסבר כיצד סופר המונה.א ( )רשום רק את השינוי99 שנה את התוכנית כך שהמונה יספור עד.ב ( שנה את התוכנית כן שהוא יהיה אסינכרוני )רשום רק את השינוי, הוא סינכרוניClear .ג 50- וקטן מ20-' כאשר המונה יהיה בעל ערך הגדול מ1' שיוציאF הוסף למונה יציאה בשם.ד חיון אבי ויואל כהן 1 תרגילVHDL 6 7 תרגיל :נתונה התוכנית הבאה ENTITY XXX IS PORT ( clk : IN BIT; clear : IN BIT; q : OUT BIT ); END; ARCHITECTURE X OF XXX IS BEGIN PROCESS (clk) VARIABLE cnt : INTEGER RANGE 0 TO 9; BEGIN IF (clk'EVENT AND clk = '1') THEN IF clear = '0' THEN cnt := 0; ELSIF (cnt<9) THEN cnt := cnt + 1; ELSE cnt := 0; END IF; END IF; IF (cnt>2) THEN q <= '0'; ELSE q <= '1'; END IF; END PROCESS; END X; ck מחזורי שעון20 עבורclear=1 כאשרcnt והמשתנהq שרטט את גל המוצא 8 תרגיל , הפעיל בעלייה clk מטה עם מבוא-( מעלה0-9) BCD אשר למונהVHDL כתוב תוכנית בשפת .' סופר מטה0'-' שהמונה סופר מעלה ו1' - הקובע בU_D סינכרוני הפעיל בגבוה ומבואCLR מבוא חיון אבי ויואל כהן 1 תרגילVHDL 7 תרגיל 9 נתונה תוכנית שסופרת מספר האחדים של הכניסה d ENTITY count_value_1 IS (PORT ;)d : IN BIT_VECTOR (99 DOWNTO 0 ;)q : OUT INTEGER RANGE 0 TO 99 ;END count_value_1 ARCHITECTURE maxpld OF count_value_1 IS BEGIN )PROCESS (d ;VARIABLE num_bits : INTEGER BEGIN ;num_bits := 0 FOR i IN 0 to 99 LOOP IF d(i) = '1' THEN ;num_bits := num_bits + 1 ;END IF ;END LOOP ;q <= num_bits ;END PROCESS ;END maxpld א .הסבר את התוכנית ב .מדוע קיימת ההשמה num_bits := 0 ג .שנה את התוכנית כך שהמוצא q יציג את מספר האפסים . ד .שנה את התוכנית כך שהמוצא יציג פעולת XORבין כל הסיביות של d ה .שנה את התוכנית כך שהמוצא יציג מספר המייצג את מספר האפסים עד ה '1' -לוגי הימני ביותר . ) לדוגמא אם d=…………….100000אז , q=5 במקרה שכל הסיביות 0אז (q=100 VHDLתרגיל 1 חיון אבי ויואל כהן 8 10 תרגיל signal - ובתכנית השנייה כvariable - מוגדר כcnt בתוכנית אחת,נתונות שתי תוכניות של מונה . הסבר את ההבדלים בין התוכניות 1 תוכנית ENTITY counter1 IS PORT ( clk,clear : IN BIT; q : OUT INTEGER RANGE 0 TO 15 ); END counter1; ARCHITECTURE count OF counter1 IS BEGIN PROCESS (clk) VARIABLE cnt : INTEGER RANGE 0 TO 15; BEGIN IF (clk'EVENT AND clk = '1') THEN IF clear = '0' THEN cnt := 0; ELSE cnt := cnt + 1; cnt := cnt + 1; END IF; END IF; q <= cnt; END PROCESS; END count; 2 תוכנית ENTITY counter2 IS PORT( clk,clear : IN BIT; q : OUT INTEGER RANGE 0 TO 15); END counter2; ARCHITECTURE count OF counter2 IS signal cnt : INTEGER RANGE 0 TO 15; BEGIN PROCESS (clk) BEGIN IF (clk'EVENT AND clk = '1') THEN IF clear = '0' THEN cnt <= 0; ELSE cnt <= cnt + 1; cnt <= cnt + 1; END IF; END IF; END PROCESS; q <= cnt; END count; חיון אבי ויואל כהן 1 תרגילVHDL 9 תרגיל 11 נתונה מכונת המצבים הבאה: "Q="00 "Q="01 S2 reset S1 'x='0 'x='1 "Q="10 S3 כניסת המכונה CK :הפעיל בעליית שעון reset ,אסינכרוני הפעיל ב 1 -לוגי ו x - יציאת המכונה Q :בגודל 2סיביות. כתוב תוכנית למימוש המכונה. תרגיל 12 תכנן מכונת מצבים מסוג MOOR המגלה את הקוד 110 כניסות המכונה – clk פעיל בעליית שעון x ,כניסת הקוד reset ,סינכרוני פעיל בגבוה מוצא q לגילוי הקוד VHDLתרגיל 1 חיון אבי ויואל כהן 10 תרגיל 13 נתונה מכונת מצבים למכונת כביסה למכונה 4מצבים: • הכנסת מים water -עד שהמים הגיעו לגובה עליון • חימום – heatעד שהטמפ' הגיע לערך הרצוי • הוצאת מים – pumpעד שהמים הגיעו לגובה תחתון • סיום stop - reset 'lev el_h='0 'Tem p ='0 'lev el_h='1 'H='1 heat 'W ='1 water 'Tem p ='1 stop 'P='1 pump 'lev el_L='1 'lev el_L='0 כתוב תוכנית למכונת MOORהנ"ל ,השתמש בשני , PROCESS אחד עבור המעבר בין המצבים התלוי ב CK-והשני התלוי במצב STATE VHDLתרגיל 1 חיון אבי ויואל כהן