Forum: FPGA, VHDL & Co. Arbeiten mit unterschiedlichen Arrays | VHDL


von M. D. (buzz)


Lesenswert?

Hallo,

ich habe zwei Arrays:
1
buf10 is array (99 downto 0) of std_logic_vector(15 downto 0); 
2
buf15 is array (149 downto 0) of std_logic_vector(15 downto 0);

Jetzt möchte ich von dem zweiten Array alle Daten von 99 bis 0 in das 
Erste verschieben.
1
buf_10 <= buf_15 (99 downto 0);

Weiß vielleicht jemand ob das auch ohne alle Daten einzeln zu 
verschieben funktioniert?

Vielen Dank im Voraus

von Duke Scarring (Gast)


Lesenswert?

M. D. schrieb:
> buf_10 <= buf_15 (99 downto 0);
Was funktioniert daran nicht?

von Vancouver (Gast)


Lesenswert?

Nein, das möchstest Du offenbar nicht. Mit Deinem Code hast Du zwei 
Signale definiert, Das eine besteht aus 100, das andere aus 150 
16bit-Worten. Mit der Anweisung

buf_10 <= buf_15 (99 downto 0);

machst Du nichts anderes, als die untersten 100 dieser Signale paarweise 
miteinander zu verbinden. Da wird nichts verschoben, nichts kopiert und 
es verändert sich nichts, das ganze ist eine rein statische Beschreibung 
einer Verbindungstruktur. Ich hoffe, das ist Dir klar. Davon abgesehen 
scheint Dein Code korrekt zu sein. Hast Du es ausprobiert? Gibt es ein 
Problem damit?

von M. D. (buzz)


Lesenswert?

Ich bekomme bei dem Code oben diese Fehlermeldung:
indexed name returns a value whose type does not match "buf10", the type 
of the target expression

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


Lesenswert?

M. D. schrieb:
> Weiß vielleicht jemand ob das auch ohne alle Daten einzeln zu
> verschieben funktioniert?
Das geht schon, aber du willst die daraus generierte Hardware nicht 
sehen. Allerdings hilft da auch die Einzelzuweisung in einer Schleife 
nicht weiter.

Du solltest ein RAM implementieren, mit einem passenden 
Zustandsautomaten ansteuern und so pro Takt Wort für Wort kopieren...

M. D. schrieb:
> Ich bekomme bei dem Code oben diese Fehlermeldung:
Von wem?

von M. D. (buzz)


Lesenswert?

Lothar M. schrieb:
> M. D. schrieb:
>> Ich bekomme bei dem Code oben diese Fehlermeldung:
> Von wem?


Von dem:
M. D. schrieb:
>
1
> buf_10 <= buf_15 (99 downto 0);
2
>

Mit dem Array wollte ich eigentlich erstmal meinen Code testen, aber so 
kann ich besser gleich den RAM implementieren.

Trotzdem danke :)

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


Lesenswert?

Mit "wem" meinte ich eigentlich "welchem Teil der Toolchain". Denn 
alleine diese Zeile erzeugt so wie sie dasteht z.B im Editor ja noch 
keinen Fehler...

: Bearbeitet durch Moderator
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.