Hallo Forum,
wenn ich eine procedur oder function habe, der ich slices
aus einem array übergebe ... wie sind dann die ranges
der procedure lokalen Variablen oder Signale?
Beispiel:
1 | architecture X of X is
|
2 | signal a : std_logic_vector(0 to 7);
|
3 | signal b : std_logic;
|
4 | begin
|
5 | equal(a(0 to 3), a(4 to 7), b);
|
6 | end;
|
7 |
|
8 | procedure equal(signal x1,x2: in std_logic_vector;
|
9 | signal eq: std_logic) is
|
10 | --variable idx1 : integer x1'range;
|
11 | --variable idx2 : integer range x2'low to x2'high;
|
12 | begin
|
13 | for i in idx'range loop
|
14 | if x1(i) /= x2(i) then
|
15 | return '0';
|
16 | end if;
|
17 | end loop;
|
18 | return '1';
|
19 | end;
|
das Problem liegt in der Schleife bei der Indizierung von x2 mit i.
weil anscheindend range von x1 0 to 3 ist und range von x2 4 to 7 ist,
aber das ist meine Vermutung weil compiler sich an der Stelle beschwert.
Weiss jemand wie die Sprache Attribut range in dieser Situation handelt?
Grüsse, daniel