Forum: FPGA, VHDL & Co. std_logic_vector byte für byte füllen?


von Grumpi (Gast)


Lesenswert?

Hey Leute,

ich möchte einen großen std_logic_vector Byte für Byte füllen und zwar 
mit jedem Aufruf meines Prozesses.
Meine Idee ist in dem Code-Schnipsel zu sehen, leider stoße ich bei der 
Kompilierung auf ein Problem mit Quartus 13.1, welches diesen Code 
aufgrund eines internen Fehlers so nicht verarbeiten kann.
http://www.altera.com/support/kdb/solutions/rd12122013_218.html

Ein Upgrade der Quartus Software ist wegen Cyclon II Support nicht 
möglich.
Deshalb meine Frage, gibt es eine andere Möglichkeit den Vektor schritt 
für schritt mit Daten zu füllen?
1
-- Signal Declaration
2
SIGNAL pc_input_buffer_r : std_logic_vector(5119 downto 0) := (others => '0'); -- 640 Bytes
3
SIGNAL usb_datain  : std_logic_vector (7 downto 0);
4
SIGNAL i : integer := 1;
5
6
-- Code inside my process
7
pc_input_buffer_w <= pc_input_buffer_w(i*8-1 downto 0) & usb_datain; -- shift bytes left and add new data
8
i <= i + 1;

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


Lesenswert?

Grumpi schrieb:
> pc_input_buffer_w <= pc_input_buffer_w(i*8-1 downto 0) & usb_datain;
> i <= i + 1;
Dynamische Grenzen? Kann der Synthesizer das?

> SIGNAL pc_input_buffer_r : std_logic_vector(5119 downto 0) := (others =>
> '0'); -- 640 Bytes
Dieser Monsterverktor wird auch problematisch: 5200 Flipflops zum 
Speichern und davor ein 8 mal einen Riesenmonstermegamultiplexer von 
1:640. Das wird niemals klappen!

> pc_input_buffer_r
> pc_input_buffer_w
Wie? Hast du so einen Vektor gleich 2 mal?

Wie wäre es, wenn du ein normales RAM mit 8 Bit Datenbreite nimmst und 
dort die Werte reinspeicherst? Dafür gibt es auf dem FPGA fertige 
Komponenten...

: Bearbeitet durch Moderator
von Grumpi (Gast)


Lesenswert?

Hey Lothar,

Anscheinend sind dynamische grenzen ab Quartus 14 möglich, aber ich bin 
noch recht neu zu VHDL wie du an meinen zwei Monstervektoren mit 
insgesamt  10400 Flipflops und 16 Rießenmultiplexern wohl schon erkannt 
hast ;)
Der C-Style übernimmt oft überhand

Danke für den Tipp mit dem RAM!!! So werde ich das implementieren!

Grüße
Grumpi

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.