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
חיון אבי ויואל כהן
© Copyright 2025