Verilog 格雷码转温度计码译码器代码
做个备忘,纯组合逻辑,分为两步进行,也供需要相关逻辑的同学参考:
首先把格雷码转换为二进制码
二进制码转为温度计码
module gray2therm #(
parameter N = 6
)(
input [N-1:0] grey_i,
output [0:(2**(N))-2] therm_o
);
wire [N-1:0] bin;
wire [0:(2**(N))-1] therm_code;
assign bin[N-1] = grey_i[N-1];
localparam NUM = 2**(N);
genvar i;
generate
for(i = N-2; i >= 0; i = i - 1) begin: gray_2_bin
assign bin[i] = bin[i + 1] ^ grey_i[i];
end
endgenerate
assign therm_o = $signed({1'b1,{(2**(N)-1){1'b0}}}) >>> bin;
endmodule