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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.