Hallo zusammen,
ich möchte gerne ein Signal definieren, dessen Länge von mehreren
Generics abhängt. Genaugenommen soll es so lang werden, wie das Maximum
der Generics. Habt ihr eine Idee, wie ich das direkt implementieren
kann?
Da ein Code mehr aussagt als tausend Worte, kommt hier ein Beispiel:
1 | entity testEntity is
|
2 | generic(
|
3 | gValue1_len : integer := 3;
|
4 | gValue2_len : integer := 7;
|
5 | gValue3_len : integer := 7;
|
6 | gValue4_len : integer := 5;
|
7 | );
|
8 | port(
|
9 | Value1 : in std_logic_vector(gValue1_len - 1 downto 0);
|
10 | Value2 : in std_logic_vector(gValue2_len - 1 downto 0);
|
11 | Value3 : in std_logic_vector(gValue3_len - 1 downto 0);
|
12 | Value4 : in std_logic_vector(gValue4_len - 1 downto 0)
|
13 | );
|
14 | end entity testEntity;
|
15 |
|
16 | architecture RTL of testEntity is
|
17 | signal processingValue : std_logic_vector(Maximum(gValue1_len, gValue2_len, gValue3_len, gValue4_len) - 1 downto 0);
|
18 | begin
|
19 | [...]
|
20 | end architecture RTL;
|
In diesem Fall soll die Länge von processingValue also 7 sein. Habt Ihr
eine Idee, wie sich das realisieren lässt? Aktuell fällt mir nur der Weg
über ein zusätzliches Generic gProcessing_len ein, aber das misfällt
mir, da ich quasi redundante Informationen in meinen Generics habe.
Ich freue mich auf Eure Rückmeldungen.
Vielen Dank
fpga-ing