Ich möchte eine MAtrix aus einem verschachtelten Generate erzeugen und
die zugehörigen Portsignale erzeugen und verknüpfen. Ausgehend von
diesem Beispiel:
1 | architecture GEN of REG_BANK is
|
2 | component REG
|
3 | port(D,CLK,RESET : in std_ulogic;
|
4 | Q : out std_ulogic);
|
5 | end component;
|
6 | begin
|
7 | GEN_REG:
|
8 | for I in 0 to 3 generate
|
9 | REGX : REG port map
|
10 | (DIN(I), CLK, RESET, DOUT(I));
|
11 | end generate GEN_REG;
|
12 | end GEN;
|
habe ich mir eine zweidimensionale Struktur geschrieben, welche in etwa
so aussieht:
1 | architecture GEN of REG_MATRIX is
|
2 | component REG
|
3 | port(D,CLK,RESET : in std_ulogic;
|
4 | Q : out std_ulogic);
|
5 | end component;
|
6 | begin
|
7 | GEN_ROW:
|
8 | for Y in 0 to 3 generate
|
9 | GEN_REG
|
10 | for X in 0 to 3 generate
|
11 | REGX : REG port map
|
12 | --(DIN(X), CLK, RESET, DOUT(X));
|
13 | --(DIN(X,Y), CLK, RESET, DOUT(X,Y));
|
14 | (DIN(X)(Y), CLK, RESET, DOUT(X)(Y));
|
15 | end generate GEN_REG;
|
16 | end generate GEN_ROW;
|
17 | end GEN;
|
was aber den Fehler "X is not a static expression" hervorruft.
Wie muss ich die Signale zwsichen den Registern erzeugen lassen?
Ich bekomme ja eine Matrix aus Registern und Ports. Ich möchte / muss
später eine spezielle Verknüpfung der In und Out Ports der Register
vornehmen, die so regelmaessig ist, dass ich sie auch gerne mit einem
GENERATE verdrahten möchte.
So muss z.B. der Eingang aus einer ADdition mit dem jeweils linken
NAchbar gespeist werden. Ebenso zieht sich das von oben nach unten
durch. Per HAnd will ich es nicht machen, da es sich um 32 x 64
handelt!!!!!