ich erhalte eine kontinuierliche Signalfolge -> 00, 01, 11, 00, ... Jedes Signal liegt eine bestimmte Zeit(20-30 Taktperionden) an, bevor es sofort von dem drauffolgenden Signal abgelöst wird. Wie kann ich diese Signalfolge benützend einen "Takt" daraus ableiten? Als Ergebnis möchte ich, jedesmal wenn sich das anliegende Signal ändert, einen Impuls von 1-Clk-Takt Länge erhalten. so etwa: 00 01 11 00 01 XXXXXXXXXXXXXyyyyyyyyyyyyyyyyyyZZZZZZZZZZZZZZZZXXXXXXXXXXyyyyyy |-|__________|-|_______________|-|_____________|-|_______|-|___ Danke! Die Signalfolge sind die Zustaände eines Automaten!
Die Differenz zwischen zwei Signalen bilden, falls die ungleich Null ist, deinen Takt auslösen. Rick
Danke Rick! Das ist Super! (Ich hatte eine kompliziertere Lösung :( Bleibt aber erspart! :) )
> Die Differenz ... bilden
Bzw. hier reicht ein einfacher Vergleich aus.
Sig1 ist Dein Input.
...
if Reset ...
elsif rising_edge (clock) .....
Pulse <= '0';
Sig2 <= Sig1;
if Sig1 = Sig2 then
Pulse <= '1'
end if;
end if;
(Setzt voraus, dass Sich Sig1 nicht 2mal hintereinander
ändert, aber das hast Du oben ja geschrieben.)
Gruss,
Alex
Ein XOR kann hier wertvolle Dienste leisten. Da kann man auch auf das IF Konstrukt verzichten.
> Ein XOR kann hier wertvolle Dienste leisten
... 00, 01, 11 ist aber ein Bus und kein Signal ...
Alex
PS: Wenn ich 2 XORs nehme und ein OR Gatter, dann
ist das auch wie ein IF ...
Es geht auch ein "ungleich"-Vergleich, also Pulse <= (To_unsigned(Sig1) /= To_unsigned(Sig2)); Hab die genaue Syntax gerade nicht im Kopf, weiss nicht ob to_unsigned das auf std_logic oder bit_vector geht, ggf. auch direkt als Type-cast, /= kann leider kein std_logic_vector oder bit_vector. Oder ein XOR auf den Vector und danach OR_REDUCE (wenn man die entsprechenden Packages hat) oder so ... ;-) Pulse <= OR_REDUCE(XOR(Sig1, Sig2)); (Weiss die Schreibweise gerade nicht auswendig.) Viele Wege führen nach Rom. Alex
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.