Forum: FPGA, VHDL & Co. Integer Vektor ausgeben


von Matze (Gast)


Lesenswert?

Hallo

Ich möchte 10 Integerwerte ausgeben, die in einem Block berechnet werden 
und dann an einen anderen Block übergeben werden sollen.

Kann ich das so machen das ich ein 1D Array von 10 Integern erstelle und 
das als Ausgang in der Entity deklariere.

Ich dachte dabei an so was in der Form:

ENTITY Look_up_table is
  port(  Zeile: IN   std_logic_vector(1 to 6);
            PWM_in_init: array (1 to 10) of integer(0 to 4096)
        );
end Look_up_table;

Kann mir jemand weiterhelfen, bin in VHDL leider noch nichts o ganz fit?
Vielen Dank

von mac4ever (Gast)


Lesenswert?

Damit Du ein Array im Port nutzen kannst, musst Du einen Type 
definieren.
Z.B.
1
type pwm_array is array(9 downto 0) of integer range 0 to 4095;
Also einfach ein Package beschreiben und diesen Typ dort definieren. 
Anschließend das Package in deinen Modul-Code inkludieren ( use work. 
... ). Damit ist der Typ nun bekannt und kann auch in der Portdefinition 
genutzt werden. Ob sich das allerdings auch synthetisieren lässt kann 
ich Dir nicht sagen.
Ich würde eher einen std_logic_vector nutzen. Und btw. fang die Vetoren 
lieber immer bei 0 an ... also 0 to 5 anstatt 1 to 6
Das entspricht dann also
1
port(
2
 Zeile: IN   std_logic_vector(0 to 5);
3
 pwm_in_init : in std_logic_vector(0 to 9*12-1)
4
);

 0-11 = array(0)
12-23 = array(1)
24-35 = array(2) ... usw

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> Und btw. fang die Vetoren lieber immer bei 0 an ...
> also 0 to 5 anstatt 1 to 6
>> Zeile: IN   std_logic_vector(0 to 5);
Und noch besser:
setze die höchstwertige Stelle eines Vektors immer links (wie auch im 
anderen Zahlensystemen so üblich).
1
 Zeile: IN  std_logic_vector(5 downto 0);

von Matze (Gast)


Lesenswert?

Vielen Dank für die Hilfe

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.