ABSICHT:VHDL - Array von std_logic_vectors konvertieren in std_logic_vector
ich Daten auf ZedBoard aus dem RAM lese, das RAM besteht aus 32 Bit langen Wörtern so verwende ich den folgenden Puffer
type mem_word is array (0 to 127) of std_logic_vector(31 downto 0);
signal buffer_word : mem_word;
aber dann würde ich mag Daten in einer linearen Weise adressieren, in einem Zwischenpuffer linearen
signal buffer_linear : std_logic_vector(4095 downto 0);
buffer_linear <= buffer_word; -- !!! PROBLEM
so kann ich leicht jede gewünschte Adresse Bit im Puffer, ohne die Position in einem bestimmten Wort (des Pufferwortes) neu zu berechnen.
FRAGE:
Wie komme ich aus dem Array von std_logic_vectors in 1 lange std_logic_vector? Gibt es eine Möglichkeit, die Verkettung von 128 Wörtern in einer Schleife zu vermeiden? (So etwas wie oben buffer_linear < = buffer_word;)
In welchem Zustand kann der RAM-Block verwendet werden? Gibt es eine Grenze für die Zugriffe auf einmal? –
@MartinG Die beste Möglichkeit ist es, sich die Interferenzmuster Ihrer Synthesewerkzeuge anzusehen. Zum Beispiel http://www.xilinx.com/support/documentation/sw_manuals/xilinx2014_1/ug901-vivado-synthesis.pdf Seite 95 und weiter –
Die Bedingung wird wahrscheinlich beinhalten, dass die Lese- und Schreibprozesse beide synchron sind, dh getaktete Prozesse, da der BlockRam ein synchroner RAM ist - und dass einige Bits der oberen Grenze (32 oder 64) gleichzeitig gelesen werden. –