Hardware Reference
In-Depth Information
Im nächsten Schritt wird der Zustandsgraph entwickelt (Abb. 1.78 a). In
seinem Kern ist ein Zahlenschloss ein Akzeptorautomat. Die Eingabe einer
Ziffernfolge beginnt mit der Initialisierung, die den Automaten in den Start-
zustand Z
0
versetzt. Von dort aus führt eine Zustandsfolge Z
i
zum Endzustand
Z
n
(Eingabe akzeptiert). Der Index i ist dabei jeweils die Anzahl der bisher
richtig eingegebenen Ziffern. Im Endzustand Z
n
soll die Leuchtdiode leuchten
(y = 0) und in allen andern Zuständen soll sie ausgeschaltet sein (y = 1).
signal
T, I, I_next, xu, xu_del, y:std_logic;
signal
s:std_logic_vector(
2
downto
0
);
signal
x, x_next:std_logic_vector(
3
downto
0
);
...
-- c) Beschreibung der Abtastregister
process
(T)
begin
if
rising_edge(T)
then
x <= x_next;
I <= I_next;
xu_del <= xu;
end if
;
end process
;
-- d) nebenläufige Bildung von xu
xu <= x(
0
)
and
x(
1
)
and
x(
2
)
and
x(
3
);
-- e) Abtastprozess der Uebergangsfunktion
process
(I, T)
variable
v:std_logic_vector(
6
downto
0
);
begin
if
I=
'0'
then
s <=
"000"
;
elsif
rising_edge(T)
and
xu=
'0'
and
xu_del=
'1'
and
s(2)=
'0'
then
v := s & x;
case
v
is
when
"000"
&
"1110"
=> s <=
"001"
;
-- 1. Geheimzahl: Taste 0
when
"001"
&
"0111"
=> s <=
"010"
;
-- 2. Geheimzahl: Taste 3
when
"010"
&
"1101"
=> s <=
"100"
;
-- 3. Geheimzahl: Taste 1
when others
=> s <=
"111"
;
end case
;
end if
;
end process
;
-- f) nebenläufige Anweisung zur Bildung von y
y <=
not
s(
2
)
or
s(
1
)
or
s(
0
);
Z
0
sonst
∗
LEDaus
1110
∗
Z
1
sonst
∗
LEDaus
0111
∗
sonst
∗
Z
2
1101
∗
LEDaus
Z
3
F
LEDein LEDaus
a)
∗
∧
(x
U
=0)
∧
(x
U
'=1)
ZustandCodierung
Z
0
Z
1
Z
2
Z
3
F
000
001
010
100
b)
111
⇒
Web-Projekt:P1.6/Zahlenschloss.vhdl
Abb. 1.78. Fortsetzung des Entwurfs der Zahlenschlosssteuerung a) Zustands-
graph b) Zustandscodierung c) Abtastregister d) UND-Gatter e) Übergangsfunk-
tion und Zustandsregister f) Ausgabefunktion