module bin_to_bcd ( input rstn , input [4:0] bin_code, //需要进行BCD转码的二进制数据 output reg [7:0] bcd_code //转码后的BCD码型数据输出 ); reg [12:0] shift_reg; always@(bin_code or rstn)begin shift_reg = {8'h0,bin_code}; if(!rstn) bcd_code = 0; else begin repeat(5) begin //循环16次 //BCD码各位数据作满5加3操作, if (shift_reg[8:5] >= 5) shift_reg[8:5] = shift_reg[8:5] + 2'b11; if (shift_reg[12:9] >= 5) shift_reg[12:9] = shift_reg[12:9] + 2'b11; shift_reg = shift_reg << 1; end bcd_code = shift_reg[35:16]; end end endmodule