Forum: FPGA, VHDL & Co. Indizierung bei mehrdimensionalen Arrays


von Steffen (Gast)


Lesenswert?

Hallo

Ich habe ein Problem mit mehrdimensionalen Arrays und ihrer
Indizierung. Ich möchte ein kleines Speichermodul aufbauen, welches
eine bestimmte Anzahl von Byte in einer Tabelle speichert. Schon im
vorraus, Rams will ich nicht, da sie schon auf der Platine vorhanden
sind, auch die Daten zwischenspeichert, ich allerding eine bestimmte
Anzahl von Daten jeweils in aufeinanderfolgenden Takten benötige. hat
irgendwer schon mal mehrdimensionale Arrays gemacht. Habe es so
versucht:

type TYPE1 is Array (7 downto 0) of std_logic;
type TYPE2 is Array (128 downto 0) of TYPE1;
shared Variable Type_mem : Type2;


Hat irgendwer ne ahnung was die Synthese daraus macht, habe versucht
Type_mem mit nem byte zu beladen, kriege aber nur ne Fehlermeldung,
also kann mir irgendwer helfen.

Danke Steffen

von Jörn (Gast)


Lesenswert?

Da zu nur Byteweise zugreifen willst, könntest du es so umformulieren:

type TYPE_MEM is array (128 downto 0) of std_logic_vector(7 downto 0);
signal ram : TYPE_MEM;

Schreibzugriff : ram(conv_integer(unsigned(writeaddress)))<= din;
Lesezugriff    : dout<=cycle_ram(conv_integer(unsigned(readaddress)));

Gruß Jörn

von Steffen (Gast)


Lesenswert?

Danke Jörn

werde es morgen gleich mal testen.

Gruß Steffen

von Steffen (Gast)


Lesenswert?

Hallo Jörn oder auch alle anderen

habe das array so aufgebaut, und will damit daten speichern die per usb
übertragen werden. Haut auch alles soweit hin, bis auf das auslesen mit
einer leseadresse. Muß dazu sagen das ich die convertierung nicht mit
eingebaut habe, sondern die adresse direkt als index benutze.
vielleicht liegt dort mein fehler, auf jeden fall funktioniert es in
der simulation. Bekomme allerdings keine vernünftigen daten wieder bei
der übertragung. vielleicht kann mir jemand sagen ob ich die
convertierung unbedingt benötige oder nicht, und ob jemand weiß wie die
indizierung mal funzt.

gruß steffen

von Jörn K. (joern)


Lesenswert?

Was für eine Simulation hast du laufen lassen? RTL?

Wenn du nur auf RTL Ebene simuliert hast, würde ich dir empfehlen noch
eine Post Synthese und/oder eine P&R zu machen.

Gruß Jörn

von Steffen (Gast)


Lesenswert?

Ok bin dabei, mal sehen.

danke

ich melde mich mit ergebnissen

von Steffen (Gast)


Lesenswert?

Hallo

habe jetzt mal eine post place and route Simulation mit Modelsim
gemacht, habe auch keine Probleme. Die Simulation funktioniert also wie
sie soll. Hab allerdings meinen Eingang und Ausgang etwas verändert, da
ich beides sonst auf einem INOUT Port habe(USB). Das Problem ist das
ich es also nicht genau sagen kann ob es im FPGA also Probleme mit der
Treiberumschaltung gibt. Glaube ich allerdings auch nicht, da ich
andere Daten (ändern des VHDL-Codes) senden kann. Habe also anscheinend
Probleme mit der Indizierung meines Arrays.



"variable fifo_adr_count:integer range 511 downto 0;

type FIFO_MEM is array(511 downto 0) of std_logic_vector(7 downto 0);
variable fifo_memo: FIFO_MEM;


GPIF_DATAL <= Fifo_Memo( fifo_adr_count);"


Hab dann noch ne Schleife die alle 4 Takte den fifo_adr_count
runterzählt.

Hat wer ne Idee ob ich noch ne Convertierung machen muß?

Gruß Steffen

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.