参考来源:https://www.cnblogs.com/IClearner/archive/2004/01/13/6579754.html
格雷码与二进制互转及为何用格雷码做同步地址的编码
具体转换过程可见上述图片的手推过程
1. 格雷码转二进制码
module gray_to_bi(
input[n-1:0] G,
output reg[n-1:0] B
);
parameter n=4;
interger i;
always@(G)
begin
B[n-1] = G[n-1];
for(i=n-1;i>0;i=i-1)
B[i-1] = G[i-1]^B[i];
end
2. 二进制码转格雷码
module bi_to_gray(
input[n-1:0] B,
output reg[n-1:0] G
);
parameter n=4;
interger i;
always@(B)
begin
G[n-1] = B[n-1];
for(i=n-1;i>0;i=i-1)
G[i-1] = B[i]^B[i-1];
end
3. 为什么要选择格雷码作为同步地址的编码