移位加三BIN转BCD码

原理,将二进制码转换为BCD码,对于8位二进制码,最大为255,需要个位、十位、百位三个BCD码。

移位加三的原理是用20位的寄存器,高12位置零,低八位为原二进制码。然后开始移位,移位8次,每次移位后判断个位、十位、百位是否大于等于5,如果大于等于5再移位那么就会大于10,就会溢出,因此需要加三后移位,(这样移位后相当于+6),即将满16进位变成了满10进位。

代码如下。

`timescale 1ns/1ps 

module bin_bcd(Clk,Rst_n,data_bin,data_b,data_s,data_g);

input Clk,Rst_n;
input [7:0] data_bin;
//input s;
output reg [3:0] data_b,data_s,data_g;

reg [19:0] data_buff;
reg [3:0] cnt ;

always@(posedge Clk,negedge Rst_n ) begin
if(~Rst_n)
	cnt <= 0;
else if (cnt ==4'd8)
	cnt <= 0;
else
	cnt <= cnt + 4'b1;
end

always@(posedge Clk,negedge Rst_n) begin
if(~Rst_n)
	data_buff <= {12'd0,data_bin};
else if(~|cnt)
	data_buff <= {12'd0,data_bin};
else  begin 
	if(data_buff[11:8]  >= 4'd5 )
		data_buff[11:8] = data_buff[11:8] + 'd3 ;
	if(data_buff[15
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值