二进制转BCD

什么是BCD码?

BCD码称为二进码十进数或BCD码(Binary-Coded Decimal‎)亦称二进码十进数或二-十进制代码。用4位二进制数来表示1位十进制数中的0~9这10个数码。

BCD码这种编码形式利用了四个位元来储存一个十进制的数码,使二进制和十进制之间的转换得以快捷的进行。这种编码技巧,最常用于会计系统的设计里,因为 会计制度经常需要对很长的数字串作准确的计算。相对于一般的浮点式记数法,采用BCD码,既可保存数值的精确度,又可免却使电脑作浮点运算时所耗费的时 间。此外,对于其他需要高精确度的计算,BCD编码亦很常用。

Bin转BCD比较常见的方法是:除法取余的方法来实现

这种方法虽然能够实现功能,达到bin2bcd的目的,但是占用的逻辑资源确实相当的多,所以为了对其进行优化,就要考虑到运用移位的方法来实现这个目的。

Bin2bcd移位算法原理:

此处要介绍的是二进制转BCD码的硬件实现,采用左移加3的算法,具体描述如下:

(此处以8-bit 二进制码为例)

1、左移要转换的二进制码1位

2、左移之后,BCD码分别置于百位、十位、个位

3、如果移位后所在的BCD码列大于或等于5,则对该值加3

4、继续左移的过程直至全部移位完成

举例:将十六进制码0xFF转换成BCD码

实现代码:

module  bin2bcd(
                input [7:0] binary,//最多能表示255
                output reg [3:0] Hundreds,
                output reg [3:0] Tens,
                output reg [3:0] Ones
                );
integer i;
always @(binary)
begin
    Hundreds = 4'd0;
    Tens         = 4'd0;
    Ones         = 4'd0;
    for( i=7; i>=0 ;i=i-1)
    begin
        if(Hundreds >=5)
            Hundreds = Hundreds+3;
        if(Tens >=5)
            Tens = Tens+3;
        if(Ones >=5)
            Ones = Ones+3;        
        Hundreds = Hundreds <<1;
        Hundreds [0] = Tens[3];
        Tens = Tens <<1;
        Tens [0] = Ones[3];
        Ones = Ones <<1;
        Ones [0] = binary[i];
            
    end
end
endmodule

 

转载于:https://www.cnblogs.com/zhouzheng/p/5827870.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
二进制BCDBinary-coded decimal)是将二进制换为BCD编码的过程。BCD是一种用4位二进制数表示一个十进制位数的编码方式,常用于数字显示和计算机系统中的数据处理。在Multisim中,我们可以通过使用逻辑门电路来实现二进制BCD的功能。 首先,我们需要了解BCD编码的规则。BCD编码中,十进制的0到9分别由0000到1001表示,而十进制的10到15则没有对应的BCD编码,需要使用额外的代码表示。常见的BCD换方式有两种:8421码和余3码。我们这里以8421码为例进行说明。 我们可以使用Multisim中的逻辑门电路来完成这种换。首先,我们将二进制数的每一位输入到一个包含4个与门电路的逻辑模块中。每个与门的一个输入接入相应的二进制位,另外三个输入分别接入二进制位变化时上一位的递推逻辑。这样可以确保逻辑的连续性和正确性。 接下来,将每个与门的输出连接到一个包含4个选择器门的逻辑模块中。选择器门根据与门的输出信号选择相应的BCD编码输出。最后,将4个选择器门的输出组合成一个4位的BCD编码输出。 在Multisim中,可以使用数字电路设计和模拟工具进行这个过程的建模和仿真。根据输入的二进制数,通过逻辑门电路计算并输出相应的BCD编码。使用仿真工具可以验证换的正确性,并可进一步优化和改进设计。 总之,通过使用Multisim中的逻辑门电路,我们可以很方便地实现二进制BCD的过程。这种换是数字电路设计和计算机系统中非常重要的基础操作,对于数字信号处理和数据处理来说具有重要的意义。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值