VHDL实现二进制转BCD码(8位二进制)

1 篇文章 0 订阅
1 篇文章 0 订阅
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;
entity BToD is--8二进制转3位BCD十进制,用大4加3法
    port (
        bin: in    STD_LOGIC_VECTOR (7 downto 0);--8位二进制输入,表示十进制数
        bai: out  STD_LOGIC_VECTOR (3 downto 0);--4位BCD输出,表示一个百位数
        ten: out  STD_LOGIC_VECTOR (3 downto 0);--4位BCD输出,表示一个十位数
        one: out STD_LOGIC_VECTOR (3 downto 0) --4位BCD输出,表示一个个位数     
    );
end BToD;
architecture bcd of BToD is
begin
  bcd1: process(bin)
  variable z: STD_LOGIC_VECTOR (19 downto 0);
  begin
    for i in 0 to 19 loop--i为LOOP的循环变量
  z(i) := '0';
    end loop;
  z(10 downto 3) := bin;
    for i in 0 to 4 loop
  if z(11 downto 8) > 4 then
    z(11 downto 8) := z(11 downto 8) + 3;
  end if;
  
  if z(15 downto 12) > 4 then
    z(15 downto 12) := z(15 downto 12) + 3;
  end if;
z(17 downto 1) := z(16 downto 0);
    end loop;
bai <= z(19 downto 16);
ten <= z(15 downto 12);
   one <= z(11 downto 8 );
  end process bcd1;            
end bcd;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值