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
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
> 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); |
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.