格雷码相邻数字间只相差一位,那么这样就可以做到比较低功耗。
FIFO中一般使用Gray code去表示地址。Gray码有反射特性和自补特性,它的循环和单步特性消除了随机数出现重大错误的可能性。
转换关系:
二进制转格雷码:
G[ n-1 ] = b[ n - 1 ] (最高位的转化)
G[ i ] = b[i] & b[ i+1 ]
格雷码转二进制:
b[ n-1 ] = G[ n-1 ]
b[ i ] = G[ i ] ^ G[ i+1 ] ^ .....^G[ n -1 ]
= G[ i ] ^ b[ i + 1 ]
代码:
Gray->B