Hallo zusammen,
ich habe einen Prozess, der mit einem 80 MHz-Takt läuft. In diesem
Prozess soll bei einer steigenden Flanke eines anderen Signals eine
bestimmte Aktion durchgeführt werden. Gibt es dafür eine elegantere
Möglichkeit als sich bei jeder Taktflanke den aktuellen Zustand des
Signals zu Puffern und anschließend den alten mit dem neuen Zustand zu
vergleichen?
Um das Ganze zu verdeutlichen etwas Code (signal_i ist ein Eingangsport
vom Typ std_logic):
1 | signal buffered_signal_s : std_logic := '0';
|
2 |
|
3 | process (rst_l, clk80m, signal_i)
|
4 | begin
|
5 | if (rst_l = '0') then
|
6 | -- asynchronous reset
|
7 | elsif (rising_edge(clk80m)) then
|
8 | -- hier soll nur auf die steigende Flanke von signal_i hin etwas passieren (diese ist aber asynchron zu clk80m!)
|
9 | -- meine Lösung bisher:
|
10 | buffered_signal_s <= signal_i;
|
11 | if (buffered_signal_s = '0' and signal_i = '1') then
|
12 | -- Tu was
|
13 | end if;
|
14 | end if;
|
15 | end process;
|
Danke vorab für die Hilfe und viele Grüße