FIFO : Synchronous WRITE, Asynchronous READ ?

Jul 21, 2007 3 Replies

Dear



Using BRAM (for example, RAMB16_S36_S36), I do need to implement "synchronous WRITE, asynchronous READ" FIFO.


From the following previous discussion:

formatting link


I still do not get to solution.



My FIFO module has following I/O.



------------------------------ clk : in std_logic; -- common clock for "read/write" rst : in std_logic; -- reset wr_data : in std_logic_vector(32 downto 0); -- write 'data' write_in : in std_logic; -- want to 'write' read_in : in std_logic; -- want to 'read' rd_data : out std_logic_vector(32 downto 0); -- read 'data' write_out : out std_logic; -- data 'written' (or can be written) read_out : out std_logic; -- data 'read' (or can be read)



--------------------------------



In my implementation, always one cycle for 'write' and one cycle for 'read' occur !!



By the way, "Synchronous write, asynchronous read" was possible, when we use "look-up tables" (or slices). I wish to use BRAM to have such a behavior. It seems that some people have this experience. Please give me more hints.



Well, you quoted the previous discussion... The BlockRAM absolutely needs a clock edge to read data. No ifs or buts. If you have a read clock, or a common write/read clock, you have no problem, just use the Enable inputs to control the operation. It also helps to read the data sheet and the user guide... Peter Alfke

Well, I used wrong term "asynchronous read". Actually I have read clock. So, what I need is to implement

'prefetch' first word, before read pulse and synchronous 'read' for consecutive words.

So you're looking for a fall through mode?

formatting link

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required