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