std_logic_vector über anderen Vector adressieren

Gast #894751
Lesenswert?

hi!

ich möchte den std_logic_vector(511 DOWNTO 0) "next_reset_eeprom_data" 
in einer fsm in zu jedem Takt mit 8bit aus dem Speicher "bram_dout" 
füllen.
obwohl upper und lower adress in der Simulation(Modelsim) die Werte '7' 
und '0' haben,  kommt der Fehler:

 ** Fatal: (vsim-3420) Array lengths do not match. Left is 1 (0 downto 
0). Right is 8 (7 downto 0).

habe außer dem to_integer(unsigned(std_logic_vector)) cast noch
to_unsigned(unsigned(std_logic_vector))  und
CONV_INTEGER(std_logic_vector)

ausprobiert - aber es kommt der selbe Fehler. Was mache ich bloß falsch?


WHEN READ_DATA =>
  next_reset_eeprom_ctrl_bram_addr <= reset_eeprom_ctrl_bram_addr +1;
  next_reset_eeprom_upper_addr <= current_reset_eeprom_upper_addr +8;
  next_reset_eeprom_lower_addr <= current_reset_eeprom_lower_addr +8;

  next_reset_eeprom_data(
to_integer(unsigned(current_reset_eeprom_lower_addr))
 DOWNTO
to_integer(unsigned(current_reset_eeprom_lower_addr)))
 <= bram_dout;

IF (current_reset_eeprom_upper_addr = 16#200#) THEN --512 bit!
  next_reset_eeprom_ctrl_state       <= SET_READY;
END IF;


Gruß

Martin
Gast #894763
Lesenswert?

wie die Fehlermeldung schon sagt, Du hast links ein einzelnes bit und 
willst diesem einen 8bit vector zuweisen - geht nicht.

to_integer(unsigned(current_reset_eeprom_lower_addr))
 DOWNTO
to_integer(unsigned(current_reset_eeprom_lower_addr)))

müsste z.B.

to_integer(unsigned(current_reset_eeprom_lower_addr))
 DOWNTO
to_integer(unsigned(current_reset_eeprom_lower_addr))-7) heißen

dann sollte es gehen
Gast #906354
Lesenswert?

hi!

ich bins nochmal :)


Die Simulation läuft mit der obigen Lösung einwandfrei. Allerdings kommt 
ISE 10.1 damit nicht klar. Der Speicher läuft einfach voll und die 
Synthese wird abgebrochen.

Unter Windows wird noch eine Warnung, dass zu wenig Speicher vorhanden 
sei, ausgegeben.
Unter Linux (ink. virt. Speicher 20GB!) bricht ISE ohne Fehlermeldung 
einfach mit "Synthesize failed" ab.


Kommentiere ich die Zeile aus, geht es.

Mit Synplify gehts. Aber ich würde lieber die ISE nutzen... jemand ne 
Idee, wie ich das umgehen kann?

Gruß
Gast #908500
Lesenswert?

Schau mal im xst.pdf ob Du eine (für ISE-XST) gängige Beschreibung 
Deines Problem findest. Ich hatte auch schon den Fall, das er 
stundenlang versucht hat einen ROM-Inhalt zu optimieren und in eine 
Funktion zu packen :-(.

Rick

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren