Hallo, Ich will mit einem 32 bit breiten Typ sowohl Additionen, logische Operaten (nand, or, xor, etc...) als auch Rotationen (rol) durchführen, welchen Typ soll ich hierführ wählen? Für bit_vector wäre die rotation kein problem, allerdings ist die Addition nicht definiert, bei std_logic_vecotor wiederum habe ich kein rol. Was empfehlt ihr mir, um mit möglichst wenig to_blablabla() auszukommen? Corni
Die einfachste Lösung ist, std_logic_vector verwenden und rol ausschreiben, ohne den rol-Operator zu benutzen. signal : std_logic_vector(15 downto 0); ... signal <= signal(0) & signal(15 downto 1); Oder, um es generisch zu halten für verschiedene Vektorbreiten: signal <= signal(signal'left) & signal(signal'right downto signal'left-1); Die anderen möglichen Schiebeoperationen lassen sich genauso schreiben. (Wer kam eigentlich auf die Idee, in VHDL für eine solche Operation einen eigenen Operator einzuführen?)
Leute die wie ich (auch noch mehrmals) um 19 Stellen linksrotieren wollen... Aber danke schonmal, ich hoffe, nur, das es noch ne einfachere Lösung gibt :(
> signal : std_logic_vector(15 downto 0); > ... > signal <= signal(0) & signal(15 downto 1); Du meintest mit "rotate LEFT" bestimmt: signal <= signal (14 downto 0) & signal (15); oder? MfG Thomas Pototschnig
@Thomas: Ups, links ist ja die andere Seite ;-) @Cornelius: 19 Stellen ist doch auch kein Problem (natürlich nur wenn Signal breiter als 19 Bit ist): signal <= signal(signal'left-19 downto signal'right) & signal(signal'left downto signal'right+19);
ah danke, ich dachte, ich müsste jetzt für jede stelle ein & signal (xy) schreiben und war etwas entsetzt ;) Meine Signale sind 32 bit breit, da sind 19 kein problem :) MfG Corni
Wenn du oft die Rotation brauchst, ist es am besten die Funktion in ein Package zu schreiben. So kannst du sie individuell aufrufen. mfg, mike
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.