Hallo liebe Community,
ich bin vor kurzem damit angefangen, mich ins Thema VHDL, FPGA's und Co
einzuarbeiten. Aktuell sitze ich an einem Projekt, das Vektoren
vergleichen soll. Nichts großartiges.
Auf ein kleines Problem stoße ich da:
Ein 32 Bit breiter Vektor enthält die Ergebnisse von 4 Vergleichen in
den einzelnen Bytes.
1 | result_reg <= data_reg (31 downto 24) + data_reg (23 downto 16) + data_reg (15 downto 8) + data_reg (7 downto 0);
|
Wäre die Addition der einzelnen Bytes in ein Ergebnisregister. Auf einen
möglichen Überlauf brauch nicht geachtet werden, da die Ergebnisse nicht
entsprechend groß werden können. Die Addition geschieht in einem
sequentiellem Prozess.
Nun möchte ich diese Zeile durch eine For-Schleife tauschen, um später
auch größere Vektoren zu verwenden, ohne dort was ändern zu müssen.
Mein Konstrukt (Versuch) sieht bisher so aus:
1 | for i in 0 to adder_amount_g-1 loop
|
2 | result_reg <= result_reg + data_reg(byte+(byte*i)-1 downto byte*i);
|
3 | end loop;
|
Die Register sind vom selben Typ, entsprechende Libraries sind
eingebunden,
die in dem Package definierten Konstanten "adder_amount_g" und "byte"
haben den Wert 4 und 8.
Bin ich gänzlich auf dem Holzweg? Wie würde ein entsprechender Code
aussehen?
Ich bin für alle Ideen dankbar.
Mit freundlichen Grüßen
Hille