Hallo,
ich bräuchte für eine State-Machine in AHDL mehrere Verzweigungen per
if-Anweisung.
IN AHDL sähe das so aus:
1 | SUBDESIGN my_state_machine
|
2 |
|
3 | S[2..0] : INPUT;
|
4 | clk : INPUT;
|
5 | P : OUTPUT;
|
6 |
|
7 | VARIABLE
|
8 | M1 : MACHINE WITH STATES (Q0,Q1, Q2, Q3);
|
9 |
|
10 | BEGIN
|
11 | M1.clk = clk;
|
12 | CASE M1 IS
|
13 | WHEN Q0 =>
|
14 | P = 1;
|
15 | IF (S==0)
|
16 | THEN M1 = Q1;
|
17 | IF (S==1)
|
18 | THEN M1 = Q3;
|
19 | IF (S==2)
|
20 | THEN M1 = Q2;
|
21 | ELSE M1 = Q0; % keine Zustandsänderung %
|
22 | WHEN Q1 =>.....
|
23 |
|
24 | WHEN Q2 =>.....
|
25 |
|
26 | WHEN Q3 =>.....
|
27 |
|
28 | END CASE;
|
29 |
|
30 | END;
|
Jetzt habe ich rausgefunden, daß AHDL mehrere IF-Anweisungen in einem
CASE einer State-Machine nicht zulässt. Zulässig ist nur eine einzige
IF-Anweisung und eine ELSE-Anweisung. ELSIF ist auch nicht zulässig.
Nun überlege ich, ob man eine solche State-Machine vielleicht in VHDL
programmieren kann. Lässt VHDL mehrere IF-Anweisungen und mehrere
Verzweigungen in einer State-Machine zu?
Vielen Dank, Philipp