> Nun habe ich hier einen Code von Lothar Millers Seite, welchen ich
> nur etwas abgeaendert...
Allerdings komplett ohne jeglichen Plan... :-o
> Habe mal 2 Varianten gepostet:
Du kannst beide Varianten in die Tonne hauen. Sie werden beide nicht in
Hardware umsetzbar sein.
Wie wird in VHDL ein Takt beschrieben? Richtig: mit 'event. Blöderweise
ist aber in der Funktion rising_edge() schon ein 'event drin und so
beschreibst du hier ein "Triple-Clock-Flipflop":
1 | wait until rising_edge(clk); -- !!! DER ALLEREINZIGSTE TAKT !!!
|
2 | case (state) is
|
3 | when "00" => if (inp='0') then state<="01"; end if;
|
4 | -- when "01" => if (inp='1') then state<="10"; end if;
|
5 | when "01" => if ((inp'event and inp = '0') or (inp'event and inp = '1')) --- !!! Hoppala: noch zwei Takte !!!
|
Und so ein Bauteil gibt es nicht, nirgends, niemals. Schon aus dem
Grund, weil nie zwei Takte (clk und inp) gleichzeitig kommen können.
Also: du hast ein grundlegendes Problem. VHDL ist eine
Hardware-Beschreibungs-Sprache, das heißt du musst dir eine Hardware
vorstellen/aufzeichnen/skizzieren/ausdenken und die dann anschließend
mit VHDL beschreiben. Das funktioniert bei dir offenbar noch nicht.
Leih dir das Buch VHDL-Synthese von Reichardt&Schwarz aus und sieh dir
die Beschreibungen und die zugehörigen Syntheseergebnisse an. Vielleicht
geht dann ein Licht auf...
> ich wuerde gerne auf die positive und negative Flanke eines
> Eingangssignals reagieren...
Sieh dir das mal an. Ganz unten ist das, was du brauchst:
http://www.lothar-miller.de/s9y/categories/18-Flankenerkennung
Und diese Flankenerkennung muss nicht in deine FSM, die kann ruhig
nebenher laufen, das ist ja nur ein Schieberegister. Kannst du dir das
vorstellen?