Hallo zusammen, ich überarbeite gerade ein altes Design und wollte gleich wegen den hilfreichen Hinweisen von Lothar (http://www.lothar-miller.de/s9y/categories/16-Numeric_Std) die numeric_std einpflegen. alt:
1 | LIBRARY ieee; |
2 | USE ieee.std_logic_1164.ALL; |
3 | USE ieee.std_logic_arith.ALL; |
4 | USE ieee.std_logic_unsigned.ALL; |
5 | ...
|
6 | type array_data is array (0 to 7) of std_logic_vector( 7 DOWNTO 0); |
7 | signal s_data : array_data; |
8 | type array_ergebnis is array (0 to 7) of std_logic_vector(11 DOWNTO 0); |
9 | signal s_ergebnis : array_ergebnis; |
10 | ...
|
11 | |
12 | FOR I IN 0 TO 7 LOOP |
13 | s_ergebnis(i) <= ("000000" & s_data(i)(s_data(i)'HIGH DOWNTO 2)) + conv_std_logic_vector(2, s_ergebnis(i)'LENGTH); |
14 | END LOOP; |
neu:
1 | LIBRARY ieee; |
2 | USE ieee.std_logic_1164.ALL; |
3 | USE ieee.numeric_std.ALL; |
4 | ...
|
5 | type array_data is array (0 to 7) of std_logic_vector( 7 DOWNTO 0); |
6 | signal s_data : array_data; |
7 | type array_ergebnis is array (0 to 7) of std_logic_vector(11 DOWNTO 0); |
8 | signal s_ergebnis : array_ergebnis; |
9 | ...
|
10 | |
11 | FOR I IN 0 TO 7 LOOP |
12 | s_ergebnis(i) <= std_logic_vector(to_unsigned((to_integer(unsigned("000000" & s_data(i)(s_data(i)'HIGH DOWNTO 2))) + 2), s_ergebnis(i)'LENGTH)); |
13 | END LOOP; |
Abgesehen, dass es mega unübersichtlich wird, will es auch nicht so recht klappen. Ich würde ungern irgendwelche Zwischensignale/-variablen verwenden. Dann hat man später noch mehr Probleme das Design zu verstehen. Kann mir jemand helfen den Knoten lösen? Vielen Dank! Andi :)