library ieee;
ENTITY zadS is
^ J
— instrukcje "when - else"
ARCHITECTURE we OF Zad5 XS BEGIN
y <= |
"11" WHEN X = |
"1— |
ELSE | |
"10" |
WHEN |
X = |
"01—" ELSE | |
"01" |
WHEN |
X = |
"001-" ELSE | |
automat dla |
"00" |
WHEN |
X = |
"000-" ELSE |
wiec przyjąłem wersje, ze - END we;
(dowolne);
—tresc zadania nie specyfikuje jak zachowuje sie
—innych wektorów x ni z te z tabeli, —wyjście jest wtedy niezdefiniowane
— instrukcje "with - select - when"
ARCHITECTURE WSW OF Zad5 IS BEGIN
WITH X SELECT
y <= "11" WHEN "1- — ",
"—" WHEN OTHERS; —taka sama sytuacja, jak powyżej
END wsw;
Title "licznik modlO";
— dir - sygnał sterujący ("0" - w doi; "1" - w gore)
— clk - zegar
— oper[1..0] - wybór trybu pracy: “00": load, “01": HOŁD, "11": count
— wejście[3..0] - wejście licznika
— wyjscieL3..0] - wyiscie licznika
— detect - sygnał wskazujący na 0 na wyjściu
CONSTANT LOAD = B"00"; CONSTANT HOŁD = B"01"; CONSTANT COUNT = B"ll"; CONSTANT DOWN = B"0"; CONSTANT UP = B"l";
SUBDESIGN modlO (
dir, clk, operfl..0],wejscie[3..0] :INPUT;
wyjscie[3..0].detect :OUTPUT;
VARIABLE
BEGIN
END;
WHEN LOAD =>
f[] = wejscief];
WHEN HOŁD =>
f[].d = f[].q;
WHEN COUNT =>
IF dir==DOWN THEN
IF f[]==0 THEN
f[] = 9;
ELSE
f[] ■= f[]-i;
END IF;
ELSIF di r=UP THEN
IF f[]=9 THEN
f[] = 0;
ELSE
f[) = f[]+l;
END IF;
END IF;
END CASE;
*■ ■ Y:.-;
$ • -'V -