Hallo µCler,
ich möchte als Input und Output einer VHDL-Entity ein Integer-Array
verwenden, und zwecks Validierung/Verifikation bevorzuge ich es, alle
Integers mit einer Range zu versehen. Bisher sieht mein Ansatz
folgendermaßen aus:
1 | package types_comp is
|
2 | type array_integer_t is array (natural range <>) of integer;
|
3 | end package;
|
4 |
|
5 | library ieee;
|
6 | use ieee.std_logic_1164.all;
|
7 | use ieee.numeric_std.all;
|
8 | use work.types_comp.all;
|
9 |
|
10 | entity cpe is
|
11 | generic (
|
12 | MAX_VALUE : positive := 255;
|
13 | PE_COUNT : positive := 128
|
14 | );
|
15 | port (
|
16 | clk_i : std_ulogic;
|
17 | reset_i : std_ulogic;
|
18 |
|
19 | s_base_i : in integer range 0 to MAX_VALUE;
|
20 | s_calc_i : in integer range 0 to MAX_VALUE;
|
21 | m_cost_o : out array_integer_t (0 to PE_COUNT-1) -- range?
|
22 | );
|
23 | end cpe;
|
Wie ihr seht, ist der Output in seiner Range nicht beschränkt. Dadurch,
dass der Port per Generics definiert ist, sehe ich leider keine
Möglichkeit, die Range zu definieren, ohne im externen Package bereits
die Ranges vorzudefinieren. Das Modul wird voraussichtlich mehrfach
instanziiert, mit unterschiedlichen Generics.
Habt ihr Rat?
Viele Grüße,
dz