die Simulation sagt mir, dass sich pro steigende Taktflanke die
Werte A(0), A(1), A(2) folgendermaßen verhalten:
(1,0,0), (1,1,0), (1,1,1), (0,1,1), (0,0,1), (0,0,0), (1,0,0), (1,1,0)
usw.
ich kann das überhaupt nicht nachvollziehen.
Für eine Erklärung würde ich mich sehr freuen.
Vielen Dank im voraus.
aber dann würde sich A(0),..,A(2) ja so verhalten müssen:
(1,0,0), (0,0,0), (1,0,0), (0,0,0), (1,0,0) usw. weil invert ja "not
sr(0)"
ist, was das Komplement von A(0) ist und sr(1), sr(2) was A(1), A(2)
entspricht ist ja Initial auf 0. Bei der ersten Taktflanke passt (1,0,0)
noch, aber bei der zweiten ist nach der Simulation (1,1,0). Irgendwie
passt das so nicht.
Grüße
Volker D. schrieb:> verstehe ich folgende Zeile nicht:> sr <= invert & sr(2) & sr(1);
Schlag mal in deinem VHDL Buch unter dem Stichwort "Concatenation" (von
concatenate = aneinanderhängen) nach. Auf Deutsch: der &-Operator ist
kein UND-Operator!!!
> (1,0,0), (1,1,0), (1,1,1), (0,1,1), (0,0,1), (0,0,0), (1,0,0), (1,1,0)> ich kann das überhaupt nicht nachvollziehen.
Dem sr wird stellenweise versetzt ein neuer Wert zugewiesen. Das ist
ein Schieberegister, das den Wert von invert von links nach rechts
durchschiebt. Schreib einfach die Werte mal untereinander und lass die
Klammern und das störende Beiwerk weg, dann siehst du das Muster:
Volker D. schrieb:> signal sr : std_logic_vector(2 downto 0);
Damit ist
sr so definiert
sr (2) & sr (1) & sr (0)
Mit dieser Zeile
> sr <= invert & sr(2) & sr(1);
sr <= not sr(0) & sr(2) & sr(1);
setzt du es um eine Position nach rechts rotiert neu zusammen. Das ist
nichts anderes als eine Rotation rechts mit Negation.
Tom
hallo,
das der erste Wert von A: 100 ist versteh ich, aber wie komm ich auf den
zweiten Wert 110 ? A(2) müsste doch eigentlich bei der zweiten
steigenden Taktflanke 0 werden und A(1) und A(0) müssten doch immer 0
bleiben. Also wäre doch A: 000 der zweite Wert eigentlich? Ich verstehs
einfach nicht :(
Wieso? sr(2) wird auch im zweiten Zyklus sr(0) invertiert sein. Da sr(0)
im ersten Zyklus '0' ist (siehe A = "100") ist die Invertierung immer
noch '1'. Also was kann anderes herauskommen als "110"?
ich hab's mir jetzt mal Schritt für Schritt aufgeschrieben und hab es
dann doch hinbekommen. War nur schwierig, das alles direkt im Kopf zu
lösen.
Aber danke für die Hilfe.