Verilog 格雷碼轉(zhuǎn)溫度計(jì)碼譯碼器代碼
做個(gè)備忘,純組合邏輯,分為兩步進(jìn)行,也供需要相關(guān)邏輯的同學(xué)參考:
首先把格雷碼轉(zhuǎn)換為二進(jìn)制碼
二進(jìn)制碼轉(zhuǎn)為溫度計(jì)碼
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
標(biāo)簽: