Hallo Leute, will eine Shift-Operation in VHDL machen. a, b und out sind jeweils 32 Bit std_logic_vector Typen. out <= std_logic_vector(unsigned(a) srl to_integer(unsigned(b))); Leider kommt bei Out in der Simulation immer 0 raus egal welche Zahl ich um wie viel shifte. Wäre lieb wenn mir einer helfen kann. Danke!
probier mal numeric_std package laden out <= std_logic_vector(SHIFT_LEFT(unsigned(a),to_integer(unsigned(b))));
VHDL schrieb im Beitrag #4221959: > RSHIFT: ("0" & a(31-1 downto 0)) Ja, knapp vorbei ist auch daneben. Und diese Zeile ist gleich 2 mal knapp vorbei... > Leider kommt bei Out in der Simulation immer 0 raus egal welche Zahl ich > um wie viel shifte. 1. "out" ist ein ganz schlechter Name für ein Signal... 2. Welche Simulation? Wie sieht der Rest der Beschreibung aus? Wie hast du den Fehler festestellt? Welchen Wert hättest du erwartet? 3. aus http://vhdl.renerta.com/mobile/source/vhd00047.htm
1 | shift_operator ::= sll | srl | sla | sra | rol | ror |
2 | : |
3 | : |
4 | The shift operators are defined for the one-dimensional array with |
5 | the elements of the type BIT or BOOLEAN |
:
Bearbeitet durch Moderator
Hallo Leute, es geht inzwischen, der Fehler lag an der Testbench. Sorry dann für euren Aufwand. Wollte eine 32 Bit Folge in der Testbench um dezimal drei Shiften, hatte aber die Eingänge an der Alu vertauscht. Die dezimal drei wurde dann um eine extrem hohe Zahl geschiftet, wo natürlich logisch ist, dass dann überall 0en standen in der Simulation. Schlussendlich haben jetzt sogar beide Methoden funktioniert. Sowohl mit der SLL SRL SRA operatoren als auch mit der SHIFT_LEFT / SHIFT_RIGHT Funktion! Danke
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.