Asynchronous, 8-word, 1wr/1rd FIFO
WR_CLK DOMAIN RD_CLK DOMAIN
8-Word Regfile
wr_data rd_data
WR_DATA RD_DATA
wren rden
WREN
+1 1 wc_wr_ptr rc_rd_ptr 1 +1
WR_ADDR RD_ADDR
0 4 3 3 4 0
wc rc
wc_wr_ptr rc_rd_ptr
wc
empty empty
detect
full full
detect gray gray_wr_ptr gray rc_wr_ptr
code decode
wc rc rc
wc_rd_ptr gray gray_rd_ptr gray
decode code
wc wc rc
Signal Logic:
full <= '1' when (wc_wr_ptr[2:0] = wc_rd_ptr[2:0]) and ((wc_wr_ptr[3] xor wc_rd_ptr[3]) = '1') else '0';
empty <= '1' when (rc_wr_ptr[3:0] = rc_rd_ptr[3:0]) else '0';
overflow <= full and wren; (optional - implement externally)
gated_wren <= (not full) and wren; (optional - implement externally)
async_fifo : afifo-8w