hallo, ich habe leider ein Problem mit einem Teil meiner Statemachine,
bzw wohl eher noch mit einer IF Abfrage, bei der ich allein leider auf
keinen grünen Zweig komme. Bestimmt ist die Lösung ganz einfach, aber
mein Horizont(=Abstand zwischen Kopf und Brett) ist im Moment zu klein.
Ich habe mal den Code Teil eingefügt, der mir Probleme macht:
1 | ENTITY my_entity IS
|
2 | PORT (
|
3 | clock : IN std_logic; -- Main Clock
|
4 | reset : IN std_logic; -- Reset
|
5 | Value1 : IN STD_LOGIC_VECTOR(3 downto 0);
|
6 | Value2 : IN STD_LOGIC_VECTOR(3 downto 0);
|
7 | Trigger1 : IN STD_LOGIC;
|
8 | Trigger2 : IN STD_LOGIC;
|
9 | )
|
10 |
|
11 | [...]
|
12 |
|
13 | CASE next_state IS
|
14 | WHEN Wait_State =>
|
15 | IF (Trigger1 ='1') AND (Value1 = Value2) THEN
|
16 | Send_Data<= '1';
|
17 | next_state <= STATE1;
|
18 | ELSIF (Trigger2 ='1') AND (Value1 = Value2) THEN
|
19 | Send_Data<= '1';
|
20 | next_state <= STATE2;
|
21 | ELSE
|
22 | Send_Data<= '0';
|
23 | next_state <= Wait_State;
|
24 | END IF;
|
25 |
|
26 | [...]
|
Beim Simulieren (Quartus, Vector Wave Form File) habe ich folgendes
Problem festgestellt: wenn Value 1 und Value 2 jeweils "0000" sind, dann
läuft alles gut, es wird in State1 bzw State2 gesprungen. Wenn ich die
Eingänge jedoch auf einen anderen Wert als "0000" setze (und zwar beide
auf den gleichen Wert) dann bleibt die Statemachine im Wait State.
der Versuch, die Eingangswerte erst einmal einem Signal zuzuweisen und
anschliessend die Signale zu vergleichen, ist auch fehlgeschlagen...
Ich würd mich freuen, wenn mir jemand weiterhelfen kann,
viele Grüße,
Martin