同步FIFO的空满检测

上一篇 / 下一篇  2017-07-14 15:59:59 / 个人分类:FIFO

试了一下,好像基本功能是OK的。深度为8        
parameter   DATA_WIDTH     = 8 ;         
parameter   DATA_DEPTH     = 8;         
parameter   DATA_PTR_WIDTH = 3 ;         
reg[DATA_PTR_WIDTH-1 :0] counter_rd   ;         
reg[DATA_PTR_WIDTH-1 :0] counter_wt   ;       
 wire[DATA_PTR_WIDTH-1:0]    counter_rd_tmp;       
 wire                    counter_rd_zero;        
wire                    ptr_eq;        
wire                    ptr_eq_tmp;
空的判断 读指针 == 写指针              
assign  ptr_eq = !(counter_rd ^ counter_wt);             
 assign    empty = ptr_eq ? 1'b1 : 1'b0; 
满的判断 [深度为8]
1. 写指针在前:读指针在 0,而写指针在7    
2. 读指针在前:即写指针已写满FIFO一次后,再次追上了读指针           
assign  counter_rd_zero = & ((~counter_rd) & counter_wt);           
assign  counter_rd_tmp = counter_rd >> 1;           
assign  ptr_eq_tmp = !(counter_rd_tmp ^ counter_wt);           
assign  full   = counter_rd_zero ? 1'b1 : ptr_eq ? 1'b0 : ptr_eq_tmp;

TAG:

引用 删除 kuaijin_09   /   2017-07-20 15:20:31
简单明了,好文章
引用 删除 kuaijin_09   /   2017-07-20 15:05:36
5
 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

我的栏目

日历

« 2017-07-22  
      1
2345678
9101112131415
16171819202122
23242526272829
3031     

数据统计

  • 访问量: 274
  • 日志数: 2
  • 建立时间: 2016-12-14
  • 更新时间: 2017-07-14

RSS订阅

Open Toolbar