Forum: FPGA, VHDL & Co. BRAM Component in eine state machine instantierien


von abumarcel (Gast)


Lesenswert?

Hallo

ich habe ein problem, und zwar ich will ein Cache speicher aufbauen und 
will es aus 2 BRAM bauen und das ganze soll nur in zwei prozess methode 
implementiert werden. aber ich bekomme immer das Fehler
" ERROR:HDLParsers:164 - "D:/.Xilinx/CacheMem/mem.vhd" Line 148. parse 
error, unexpected PORT, expecting OPENPAR or TICK or LSQBRACK
WARNING:HDLParsers:901 - "D:/.Xilinx/CacheMem/mem.vhd" Line 148. Label 
Mem1 is ignored."

und ich weiß nicht woran es liegt. und hier ist eine stuck aus der state 
machine:
1
when save => if (r.Mem = "00000000") then
2
        
3
  Mem1 : BRAM port map(
4
         clka => clk,
5
  wea => '1',
6
  addra => r.Mem_addr,
7
  dina => r.Mem_in(161 downto 0),
8
  douta => r.Mem_out(161 downto 0));
9
                
10
  else
11
12
  Mem2 : BRAM port map (
13
    clka => clk,
14
  wea => '1',
15
  addra => r.Mem_addr,
16
         dina => r.Mem_in(161 downto 0),
17
  douta => r.Mem_out(161 downto 0));
18
            
19
         v.state := idle;
20
  end if;


Mem zeigt nur welche BRAM ich schreiben will. ich hoffe das jemand so 
eine problem schon gesehen hat.

Gruß

von NoInstInProc (Gast)


Lesenswert?

Du instanziierst Komponenten in sequentiellen Befehlen?
Das geht überhaupt nicht!

Schieb beide Komponenten aus dem Prozess raus und setze
deren Signale im Prozess entsprechend der spec.

von Hani S. (abumarcel)


Lesenswert?

vielen Dank, du hast ja recht, und ich habs gemacht wie du gesagt hast 
und jetzt habe ich kein fehler mehr

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.