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

格雷码转换

格雷码属于镜像码

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),首位不同。

  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

 

于斌,《Verilog HDL 数字系统设计及仿真》,电子工业,2018

 

上一篇:linux shell 多线程执行程序


下一篇:2021-08-07