module DEM_Reverse (
    input clk,             // 时钟输入
    input [6:0] therm_in,  // 7位温度计码输入 (MSB部分)
    input [4:0] bin_in,    // 5位二进制码输入 (LSB部分)
    output reg [7:0] data_out // 恢复的8位DAC输入
);

// 统计温度计码中1的个数（权重总和）
function [2:0] count_ones;
    input [6:0] data;
    integer i;
    begin
        count_ones = 0;
        for (i = 0; i < 7; i = i + 1) begin
            if (data[i]) count_ones = count_ones + 1;
        end
    end
endfunction

// 组合逻辑计算中间值
wire [2:0] msb_value = count_ones(therm_in);
wire [4:0] lsb_value = bin_in;
wire [7:0] data_comb = {msb_value, lsb_value};

// 在时钟上升沿寄存输出
always @(posedge clk) begin
    data_out <= data_comb;
end

endmodule