module decoder38( input wire [2:0]i, output wire [7:0]o ); // 直接使用门电路连线 wire [7:0] w_o; assign w_o[0] = i[0] && i[1] && i[2]; assign w_o[1] = !i[0] && i[1] && i[2]; assign w_o[2] = i[0] && !i[1] && i[2]; assign w_o[3] = !i[0] && !i[1] && i[2]; assign w_o[4] = i[0] && i[1] && !i[2]; assign w_o[5] = !i[0] && i[1] && !i[2]; assign w_o[6] = i[0] && !i[1] && !i[2]; assign w_o[7] = !i[0] && !i[1] && !i[2]; assign o = w_o; // 使用 always 连线 reg [7:0]r_o; always @(i) begin // 阻塞赋值 r_o[0] = i[0] && i[1] && i[2]; r_o[1] = !i[0] && i[1] && i[2]; r_o[2] = i[0] && !i[1] && i[2]; r_o[3] = !i[0] && !i[1] && i[2]; // 非阻塞赋值, 他们是并行连线的 r_o[4] <= i[0] && i[1] && !i[2]; r_o[5] <= !i[0] && i[1] && !i[2]; r_o[6] <= i == 3'b001; // i[0] && !i[1] && !i[2]; r_o[7] <= !i[0] && !i[1] && !i[2]; end assign o=r_o; endmodule