Gast
#489505
Hallo
Ich möchte die Daten aus dem RAM laden und in einen std_logic_vector
zwischenspeichern. Jetzt zu meinem Problem: Ich lade den Wert aus dem
Speicher (Block RAM). Dies geschieht zu einem Zeitpunkt X. Anschließend
verarbeite ich den Wert. Ein wenig später muss ich noch mal auf dem RAM
zugreifen und erneut einen Wert laden. Da ich nicht tausend
Zwischenvariablen haben möchte, muss ich den alten Wert durch den Neune
ersetzen. Dies geschieht aber in einem anderen Prozess. Da nur 1 Prozess
gleichzeitig auf den std_logic_vector zugreifen kann habe ich das ganze
durch eine Enable-Leitung gesichert. Mein Quellcode sieht wie folgt aus:
-- A-Scan aus dem Block-Ram laden
process (USB_CLK)
begin
if(USB_CLK'event and USB_CLK = '0')then
if(CLR = '1')then
S_DOUT_RAM_B1 <= (others => 'Z');
elsif(EN = "01")then
S_DOUT_RAM_B1 <= DOUT_RAM_B1;
else
S_DOUT_RAM_B1 <= (others => 'Z');
end if;
end if;
end process;
-- A-Scan aus dem Block-Ram laden
process (USB_CLK)
begin
if(USB_CLK'event and USB_CLK = '0')then
if(CLR = '1')then
S_DOUT_RAM_B1 <= (others => 'Z');
elsif(EN = "10")then
S_DOUT_RAM_B1 <= DOUT_RAM_B1;
else
S_DOUT_RAM_B1 <= (others => 'Z');
end if;
end if;
end process;
Mein Problem ist das ich nicht weiß was passiert, nachdem der Wert in
den std_logic_vector geschrieben wurde, da der std_logic_vector
anschließend in den Tristate geschaltet wird. Bleibt der Wert solange im
std_logic_vector vorhanden, bis der zweite Prozess, der später auftritt
den Wert überschreibt?
Grüsse
Sebastian