Forum: FPGA, VHDL & Co. array definition


von Thomas (Gast)


Lesenswert?

Hallo, ich habe mal eine Frage zur Definition eines Arrays.
Für ein Filterdesign auf einem FPGA werden parallel 32 8Bit Zahlen
ausgegeben. Kann man in der entity in vhdl ein Array definieren das es
mir ersparrt, 32 Ausgänge zu definieren? Ich kenne sowas nur aus der
architecture wo das ganze so aussieht:
xxx reg_type is array (0 to 31) of STD_LOGIC_VECTOR (7 downto 0);
Bin für jeden Tip dankbar,
Greetz

von Daniel R. (daniel_r)


Lesenswert?

Was ist schwer daran, in die entity
"xy : out std_logic_vector(31 downto 0);"
zu schreiben?

von Klaus F. (kfalser)


Lesenswert?

Du mußt ein package schreiben, das eine Type für Dein Array definiert.
Dieses package verwendest Du im File mit deinem Filter und dort wo Du
das Filter verwendest.
Damit ist die Type an beiden Orten bekannt.
Du kannst dann eine entity Filter schreiben, welches einen Paramter von
diesem Type verwendet.

Gruß
Klaus

von Thomas (Gast)


Lesenswert?

Hallo Klaus, wenn ich dich richtig verstehe willst du sowas hier
machen?!

package myPackage is
  constant width: integer;
  subtype FilterTap is std_logic_vector(width-1 downto 0);
end;

type Filter_Out is array(depth-1 downto 0) of FilterTap;

oder falsch verstanden?
Dann weiss ich immer noch nicht wie du in der entity die
Port-deklaration (out) schaffst..oder steh ich gerade auf dem
schlauch?

Und an deinen Vorredner: Das nächste Mal bitte eine Minute Denkpause
vor dem nächsten Beitrag, ok? Wer von "Was ist schwer daran" redet,
sollte doch 8 Zeilen Text nachvollziehen können oder?

Greetz

von Klaus F. (kfalser)


Lesenswert?

Die type Filter_Out gehört noch ins package.

Wenn Du dann "use myPackage.all;" an den Anfang stellst, dann
solltest Du schreiben können :

entity Filter is
port (
   ...
   Taps : in Filter_Out;
   ...
   );
end;

Syntax-Fehler im Beispiel möglich, aber das Prinzip sollte stimmen.

Gruß
Klaus

von Klaus F. (kfalser)


Lesenswert?

Entschuldigung,
Taps ist bei Dir aus Ausgangsparamter, also

entity Filter is
port (
   ...
   Taps : out Filter_Out;
   ...
   );
end;

von Daniel R. (daniel_r)


Lesenswert?

Ja ja. Hab deine 8 Zeilen nicht wirklich gelesen.

von Thomas (Gast)


Lesenswert?

Alles klar..funktioniert..
Dankeschön und schönes Wochenende zusammen

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.