日常记录(9)异步FIFO相关

2021-12-14 15:26:32 浏览数 (1)

格雷码转换

格雷码属于镜像码

代码语言:javascript复制
always  @(wptr or winc)  
begin: Gray_inc
  integer i;
  for(i=0; i<=ADDRSIZE; i=i 1)
    wbin[i]= ^ (wptr>>i);      //grey to binary
  if (!wfull)
    wbnext = wbin winc;      //FIFO
  else
    wbnext = wbin;
  wgnext=(wbnext>>1) ^ wbnext;  //binary to grey
end

FIFO满状态判断

除最高两位外都相同,前两位的异或值相同(2ndmsb),首位不同。

代码语言:javascript复制
  wfull <= ((wgnext[ADDRSIZE] !==wrptr2[ADDRSIZE])&&(w_2ndmsb== wr_2ndmsb)
             && (wgnext[ADDRSIZE-2:0]== wrptr2[ADDRSIZE-2:0]));

亚稳态处理

多级寄存器同步,是一种方式,

https://www.cnblogs.com/xiaoxie2014/p/4149565.html

0 人点赞