一个最简单的
FIFO
如下图:
左图包括数据输入
data[7:0]
,输出
q[7:0]
,写请求
wrreq
,读请求
rdreq
,时钟
clock
,
FIFO
满标志位
full
,有的还有
FIFO
空标志位
empty
,其时序图如下:
需要注意的是写请求
wrreq
必须配合数据输入
data
,只有在有数据输入时才能把
wrreq
拉高,否则会在时钟
clock
的作用下吧无效的数据输入到
FIFO
。
当
FIFO
满时,
full=1
,此时一旦有一个数据被读出,
FIFO
里面数据就少了一个,
full
马上变为
0
。
当
counter
第一次计到
FF
时,因为计到
1
就是有
1
个计到
FF
就是
255
个,所以计到
FF
再返回
0
才是
256
个计数,然后当计到
256
个计数时
data_out
自加
1
后变为
1
,有了数据就马上把写请求
wr_req
置
1
,在
CLK
的作用下数据就会被写入到
FIFO
。