gray码转换二进制
二进制格雷码转换成自然二进制码,其法则是保留格雷码的最高位作为自然二进制码的最高位,而次高位自然二进制码为高位自然二进制 码与次高位格雷码相异或,而自然二进制码的其余各位与次高位自然二进制码的求法相类似。
module gry2bin(Gry,Bin);
parameter length = 8;
input [length-1:0] Gry;
output [length-1:0] Bin;
reg [length-1:0] Bin;
integer i;
always @ (Gry)begin
Bin[length-1]=Gry[length-1];
for(i=length-2;i>=0;i=i-1)
Bin[i]=Bin[i+1]^Gry[i];
end
endmodule
module util_gray_to_bin (
d,
q
);
parameter WIDTH = 7;
input [WIDTH-1:0] d;
output [WIDTH-1:0] q;
wire [WIDTH-1:0] d;
reg [WIDTH-1:0] q;
genvar i;
// gray code to binary conversion
generate for (i=0; i<(WIDTH-1); i=i+1)
begin : gen_q
always @(d)
begin
q[i] = ^d[(WIDTH-1):i];
end
end
endgenerate
always @* q[WIDTH-1] = d[WIDTH-1];
endmodule