格雷码下的 fifo空满判断

使用gray码进行对比,如何判断“空”与“满”
   使用gray码解决了一个问题(降低亚稳态),但同时也带来另一个问题,即在格雷码域如何判断空与满。

  对于“空”的判断依然依据二者完全相等(包括MSB);

  而对于“满”的判断,如下图,由于gray码除了MSB外,具有镜像对称的特点,当读指针指向7,写指针指向8时,除了MSB,其余位皆相同,不能说它为满。因此不能单纯的只检测最高位了,在gray码上判断为满必须同时满足以下3条:

1、wptr和同步过来的rptr的MSB不相等,因为wptr必须比rptr多折回一次。
2、wptr与rptr的次高位不相等(如下图位置7和位置15,转化为二进制对应的是0111和1111,MSB不同说明多折回一次,111相同代表同一位置,而对应的格雷码是最高位相反同时次高位也相反)
3、剩下的其余位完全相等。
格雷码下的 fifo空满判断_第1张图片

你可能感兴趣的:(FPGA)