End of Best.
by WeiLin
相邻编码间只有1bit不同,除最高位外镜像对称。在异步FIFO里Gray码有重要的作用,后面会详细介绍异步FIFO。可以通过右移异或得到Gray码:
bin->gray: assign gray = (bin >> 1) ^ bin;
gray->bin: assign bin = {gray[n-1],bin[n-1:1]^gray[n-2:0]};
结构图如下所示(以4bit为例),Gray的详细介绍参考这里.
下面为具体代码及仿真波形:
//bin2gray.v//
//方法:向右移1再异或
module bin2gray #(parameter n=4)
(
input [n-1:0] bin,
output [n-1:0] gray
);
assign gray= (bin>>1) ^ bin;
endmodule
//gray2bin.v//
module gray2bin#(parameter n=4)
(
input [n-1:0] gray,
output [n-1:0] bin
);
assign bin={gray[n-1],bin[n-1:1]^gray[n-2:0]};
endmodule
Question: 有可能为任何非2幂数(只要是偶数)生成一个Gray码计数器吗?点击该链接参看问题及答案.
tags: verilog