FIFO : Synchronous WRITE, Asynchronous READ ?

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.

Reply to
Pasacco
Loading thread data ...

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

Reply to
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.

Reply to
Pasacco

So you're looking for a fall through mode?

formatting link

Reply to
Marc Randolph

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.