Autor |
Beitrag |
Stephan Birkhäuser
Gast
|
Erstellt: 04.09.08, 16:14 Betreff: Frage zu FIFO
drucken
Thema drucken weiterempfehlen
|
|
|
Hallo zusammen! Ich arbeite mit VHDL erst seit ein paar Wochen und hab folgendes Problem: Ich hab code für einen FIFO geschrieben und in Modelsim läuft alles genauso wie es soll. Bei der Synthese gibt es auch keine Fehlermeldungen aber dort wird deutlich, dass ich meinen FIFO sehr umständlich geschrieben haben muss. Meine Frage ist jetzt, wie kann ich die Performance verbessern? Hier mein Problem: Delay: 10.886ns (Levels of Logic = 34) Source: difference_2 (FF) Destination: empty_sig_BRB0 (FF) Von dem signal difference bis zu empty gibt es 34 (!!!) logiclevel?!?! das is doch viel zu viel oder?
Ich lasse alles in einem Prozess erledigen weil ich nicht weiß wie ich das anders hinbekommen kann. Wie könnte ihc das ändern?
if (reset = '1') then write_address <= 0; read_address <= 0; difference := 0; next_write_address := 0; full_sig <= '0'; empty_sig <= '1'; next_read_address := 0; full <= full_sig; empty <= empty_sig; data_out <= (others => '0'); elsif (clock = '1' and clock'event) then
if write_request = '1' and full_sig = '0' then next_write_address := next_write_address + 1; difference := difference + 1; data (write_address) <= data_in; end if; if read_request = '1' and empty_sig = '0' then data_out <= data(read_address); next_read_address := next_read_address + 1; difference := difference - 1; end if;
full_sig <= '0'; empty_sig <= '0'; if difference = fifo_depth then full_sig <= '1'; end if; if difference = 0 then empty_sig <= '1'; end if; full <= full_sig; empty <= empty_sig; write_address <= (next_write_address mod fifo_depth); read_address <= (next_read_address mod fifo_depth); end if;
end process;
|
|
nach oben |
|
|
Dr. Faustus
Administrator
Beiträge: 107 Ort: Aßling
|
Erstellt: 24.09.08, 16:08 Betreff: Re: Frage zu FIFO
drucken
weiterempfehlen
|
|
|
Alles in einem Process ist nicht so gut. Google mal nach Fifo und VHDL da findest du sehr viele Vorschläge wie man so etwas gut aufbaut. Viele aktuelle FPGAs haben fifos als hard-IP eingebaut (z.B. Xilinx).
|
|
nach oben |
|
|
|