Dein Knoten ist der, dass du bei der Signaldeklaration gleich unsigned
verwenden solltest. Dann entfällt das ganze Gecaste, höchstens einmal zu
den entity-Ports.
Falls du die slv unbedingt behalten willst, dann besser so:
Das hier
1 | FOR I IN 0 TO 7 LOOP
|
2 | s_ergebnis(i) <= ("000000" & s_data(i)(s_data(i)'HIGH DOWNTO 2)) + conv_std_logic_vector(2, s_ergebnis(i)'LENGTH);
|
3 | END LOOP;
|
wird zu
1 | s_ergebnis(i) <= std_logic_vector(unsigned( ("000000" & s_data(i)(s_data(i)'HIGH DOWNTO 2)) + 2));
|
Der Operator + ist für unsigned + integer schon definiert. Du castest
dein data einmal zu unsigned, addierst mit einem integer und castest das
zurück nach slv.