Die Theorie war klar, jetzt hapert es an der Praxis ;)
Ich habe mein Package:
1 | PACKAGE test_package IS
|
2 |
|
3 | CONSTANT C_NUM : integer := 3; -- number of ports
|
4 | CONSTANT C_WIDTH : integer := 3; -- port width
|
5 |
|
6 | TYPE test_type is array (0 to C_NUM-1) of std_logic_vector(C_WIDTH-1 downto 0);
|
7 |
|
8 | END test_package;
|
Mein Entity incl. dem Port sieht dann so aus:
1 | ENTITY test_entity IS
|
2 | PORT (
|
3 | ...
|
4 | STATUS : IN test_type;
|
5 | ...
|
6 | );
|
7 | END test_entity;
|
im test_entity muss ich das Package ja sichtbar machen, damit er die
Konstanten sieht und ich diese auch in meiner for-Schleife zu generieren
der Logik verwenden kann:
1 | USE work.test_package.ALL;
|
Nur wie mache ich das nun bei der Instantiierung?
Das Package sichtbar machen im Toplevel brauche ich ja nicht, solange
ich den Port komplett "ausfülle":
1 | i0_test_entity : entity work.test_entity
|
2 | port map (
|
3 | ...
|
4 | STATUS => ("000", "001", "010"), -- geht das so?
|
5 | ...
|
6 | );
|
Nur jetzt habe ich ein festes Package, das mir eine feste Anzahl
vorgibt. Das hilft mir ja nichts... dann kann ich den Type auch direkt
via Generic festlegen und habe keine Probleme mehr.
Jetzt arbeite ich ja noch mit Konstanten, so dass diese mehr oder minder
fest sind.
Wie mache ich es aber, damit ich ein GENERIC verwenden kann, der mir
dann irgendwie via Package verschiedene Instanzen mit verschiedener
Anzahl an Ports festlegt?
Ich stehe gerade auf dem Schlauch!
Vielen Dank!
Thommy