一、二进制转BCD的由来
电脑中的数据是以二进制来存储的,而人类习惯的是用十进制来表示数据,所以为了人与电脑之间更好的理解与沟通,所以就有了它的存在。
二、原理
用四位的二进制来表示十进制值,就是二进制转BCD,如10位的二进制最大可以表示4位的十进制数值,所以可以用16的BCD码值来表示这4位十进制数值。
三、代码
(1)顶层
module bin2bcd # (parameter WIDTH_BIN = 10, WIDTH_BCD = 16)(
input wire [WIDTH_BIN - 1:0] bin,
output wire [WIDTH_BCD - 1:0] bcd
);
wire [WIDTH_BIN + WIDTH_BCD - 1:0] temp [WIDTH_BIN:0];
genvar i;
assign temp[0] = bin;
generate
for (i = 0; i < WIDTH_BIN - 1; i = i + 1)
begin : s_a
shift_adjust # (.WIDTH_BIN(WIDTH_BIN), .WIDTH_BCD(WIDTH_BCD)) shift_adjust_inst(
.idata (temp[i]),
.odata (temp[i+1])
);
end
endgenerate
assign temp[WIDTH_BIN] = temp[WIDTH_BIN - 1] << 1;
assign bcd = temp[WIDT