Grüßt euch alle!
Also folgendes Problem:
Ich benutze ein Spartan-6 von XILINX und bin momentan auf dem SP605
Evalboard unterwegs.
Ich habe einen Button1, welchen ich schon (habe ich bereits überprüft)
erfolgreich entprelle. Ich habe dann also intern ein sauberes "Pushed"
Signal in meiner architecture, welches eben konstant auf 1 ist wenn der
button gerade eingedrückt ist und ansonsten 0. Liefer mir also sobald
ich drücke ne steigende Flanke...
Soweit so gut.
Diese Flanke möchte ich nun (ohne dass ich den restlichen code mit in
den Entprell-Prozess reinschreiben muss) nutzen, um damit folgendes
Auszulösen:
Mit einer FSM (6 Zustände...), welche über einen (internen Takt) mit 2
Hertz, abgelaufen wird soll eine LED auf dem Board An-Aus-An-Aus-An-Aus
gehen, also 101010.
Bisher dachte ich da an folgendes:
1 | Procedure Sequenz ( signal CLK_2Hz : in STD_LOGIC;
|
2 | signal State : inout BIT_VECTOR;
|
3 | signal LED1 : out STD_LOGIC) is
|
4 | begin
|
5 | if (CLK_2Hz='1' and CLK_2Hz'event) then
|
6 |
|
7 | case State is
|
8 | when "000001" => State <= "000010"; LED1 <= '1';
|
9 | when "000010" => State <= "000100"; LED1 <= '0';
|
10 | when "000100" => State <= "001000"; LED1 <= '1';
|
11 | when "001000" => State <= "010000"; LED1 <= '0';
|
12 | when "010000" => State <= "100000"; LED1 <= '1';
|
13 | when "100000" => LED1 <= '0';
|
14 | when others => null;
|
15 | end case;
|
16 | end if;
|
17 | end Sequenz;
|
18 |
|
19 |
|
20 | ......
|
21 | ......
|
22 | ......
|
23 | ......
|
24 | ......
|
25 | --UND NUN NACH DEM ARCHITECTURE-BEGIN:
|
26 |
|
27 | Activate : process(Pushed)
|
28 | begin
|
29 | if (Pushed='1' and Pushed'event) then
|
30 | State <= "000001"; --Zustand der FSM
|
31 | Sequenz(CLK_2Hz, State, LED1);
|
32 | end if;
|
33 | end process Activate;
|
Problem ist, dass wenn die Pushedflanke kommt, die FSM nicht komplett
durchläuft, sondern erstens mein CLK-2Hz einfach ignoriert wird und
einfach bei jedem button-push einfach nur der zustand der FSM um eins
hochgeht...
Habt ihr eine Lösung parat?
Allgemein habe ich immer wieder das Problem, dass ich mit Flanke-1 einen
Ablauf, welcher durch Flanke-2 synchronisiert wird, auslösen möchte...
Dank euch!