BCD码加法器

BCD码加法器

在计算机内部,出于存储和计算方便的目的,采用基2码对十进制数进行重新编码,最少需要基2码的位数为log210,取整数位4 ,4位基2码有16种表示方法。

十进制数的几种4位编码

8421码又称BCD码,是十进制代码中最常用的一种。在这种编码方式中,每一位二值代码的1都表示一个固定数值,将每一位的1代表的十进制数加起来,得到的结果就是它所代表的十进制数码。由于代码中从左到右每一位的1分别表示8、4、2、1,所以将这种编码称为8421码。每一位的1代表的十进制数称为这一位的权。8421码中每一位的权是固定不变的,它属于恒权代码。

在计算机内部实现BCD码之间的算术运算要复杂一些,即在某些情况下,对加法运算的结果进行修正。修正规则如下:

(1) 若两个8421码数相加之和等于或小于1001,不需修正。

(2) 若相加和在10-15之间,一方面应向高位产生进位,本身还要进行加6修正,进位是在加6修正时产生的。

(3) 若相加之和在16-18之间,向高位进位会在相加过程中自己产生,对本位还要进行加6修正。

实验代码使用vhdl语言:

LIBRARY IEEE;  
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
ENTITY bcd IS
  PORT( a : UNSIGNED(4 DOWNTO 0);
        b : UNSIGNED(4 DOWNTO 0);        
        c : OUT STD_LOGIC_VECTOR(4 DOWNTO 0)
       );
END bcd;
ARCHITECTURE adding OF bcd IS
  SIGNAL sum : STD_LOGIC_VECTOR(4 DOWNTO 0); 
  SIGNAL co  : STD_LOGIC;
  SIGNAL add : integer RANGE 0 TO 31;
BEGIN
  add <= conv_integer(a+b);
  co <= '1' WHEN add>9 ELSE 
        '0';
  sum <= a+b+6 WHEN co='1' ELSE 
         a+b;
  c <= sum;   
END adding;



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值