| |
一个最简单的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。
上图是FIFO计满后的状态变化。