Вы находитесь на странице: 1из 4

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

---- Binary to BCD (0 – 99)

entity CodBinBCD is
Port(Bin : in STD_LOGIC_VECTOR (6 downto 0); -- Numero a ser convertido
Uni : out STD_LOGIC_VECTOR (3 downto 0); -- Unidades del BCD
Dec : out STD_LOGIC_VECTOR (3 downto 0) -- Decenas del BCD
);
end CodBinBCD;

architecture Behavioral of CodBinBCD is

signal R : STD_LOGIC_VECTOR (6 downto 0); -- Resultado de la resta

begin

process (Bin)
begin
R <= "0000000";
if (Bin >= "0000001" and Bin <= "0001001") then R <= (Bin - "0000000");

Dec <= "0000";


elsif (Bin >= "0001010" and Bin <= "0010011") then R <= (Bin - "0001010");

Dec <= "0001";


elsif (Bin >= "0010100" and Bin <= "0011101") then R <= (Bin - "0010100");

Dec <= "0010";


elsif (Bin >= "0011110" and Bin <= "0100111") then R <= (Bin - "0011110");

Dec <= "0011";


elsif (Bin >= "0101000" and Bin <= "0110001") then R <= (Bin - "0101000");

Dec <= "0100";


elsif (Bin >= "0110010" and Bin <= "0111011") then R <= (Bin - "0110010");

Dec <= "0101";


elsif (Bin >= "0111100" and Bin <= "1000101") then R <= (Bin - "0111100");
Dec <= "0110";
elsif (Bin >= "1000110" and Bin <= "1001111") then R <= (Bin - "1000110");
Dec <= "0111";
elsif (Bin >= "1010000" and Bin <= "1011001") then R <= (Bin - "1010000");
Dec <= "1000";
elsif (Bin >= "1011010" and Bin <= "1100011") then R <= (Bin - "1011010");
Dec <= "1001";

else Dec <= "0000"; end if;


end process;

Uni <= R(3)&R(2)&R(1)&R(0);

end Behavioral;

---- Another code

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

---- Binary to BCD (0 – 99)

entity Bin2BCD is
Port ( Bin : in STD_LOGIC_VECTOR (6 downto 0);
D : out STD_LOGIC_VECTOR (3 downto 0);
U : out STD_LOGIC_VECTOR (3 downto 0));
end Bin2BCD;

architecture Behavioral of Bin2BCD is

begin

process (Bin)
begin

case Bin is

when "0000000" => D <= "0000"; U <= "0000";


when "0000001" => D <= "0000"; U <= "0001";
when "0000010" => D <= "0000"; U <= "0010";
when "0000011" => D <= "0000"; U <= "0011";
when "0000100" => D <= "0000"; U <= "0100";
when "0000101" => D <= "0000"; U <= "0101";
when "0000110" => D <= "0000"; U <= "0110";
when "0000111" => D <= "0000"; U <= "0111";
when "0001000" => D <= "0000"; U <= "1000";
when "0001001" => D <= "0000"; U <= "1001";

when "0001010" => D <= "0001"; U <= "0000";


when "0001011" => D <= "0001"; U <= "0001";
when "0001100" => D <= "0001"; U <= "0010";
when "0001101" => D <= "0001"; U <= "0011";
when "0001110" => D <= "0001"; U <= "0100";
when "0001111" => D <= "0001"; U <= "0101";
when "0010000" => D <= "0001"; U <= "0110";
when "0010001" => D <= "0001"; U <= "0111";
when "0010010" => D <= "0001"; U <= "1000";
when "0010011" => D <= "0001"; U <= "1001";
when "0010100" => D <= "0010"; U <= "0000";
when "0010101" => D <= "0010"; U <= "0001";
when "0010110" => D <= "0010"; U <= "0010";
when "0010111" => D <= "0010"; U <= "0011";
when "0011000" => D <= "0010"; U <= "0100";
when "0011001" => D <= "0010"; U <= "0101";
when "0011010" => D <= "0010"; U <= "0110";
when "0011011" => D <= "0010"; U <= "0111";
when "0011100" => D <= "0010"; U <= "1000";
when "0011101" => D <= "0010"; U <= "1001";

when "0011110" => D <= "0011"; U <= "0000";


when "0011111" => D <= "0011"; U <= "0001";
when "0100000" => D <= "0011"; U <= "0010";
when "0100001" => D <= "0011"; U <= "0011";
when "0100010" => D <= "0011"; U <= "0100";
when "0100011" => D <= "0011"; U <= "0101";
when "0100100" => D <= "0011"; U <= "0101";
when "0100101" => D <= "0011"; U <= "0111";
when "0100110" => D <= "0011"; U <= "1000";
when "0100111" => D <= "0011"; U <= "1001";

when "0101000" => D <= "0100"; U <= "0000";


when "0101001" => D <= "0100"; U <= "0001";
when "0101010" => D <= "0100"; U <= "0010";
when "0101011" => D <= "0100"; U <= "0011";
when "0101100" => D <= "0100"; U <= "0100";
when "0101101" => D <= "0100"; U <= "0101";
when "0101110" => D <= "0100"; U <= "0110";
when "0101111" => D <= "0100"; U <= "0111";
when "0110000" => D <= "0100"; U <= "1000";
when "0110001" => D <= "0100"; U <= "1001";

when "0110010" => D <= "0101"; U <= "0000";


when "0110011" => D <= "0101"; U <= "0001";
when "0110100" => D <= "0101"; U <= "0010";
when "0110101" => D <= "0101"; U <= "0011";
when "0110110" => D <= "0101"; U <= "0100";
when "0110111" => D <= "0101"; U <= "0101";
when "0111000" => D <= "0101"; U <= "0110";
when "0111001" => D <= "0101"; U <= "0111";
when "0111010" => D <= "0101"; U <= "1000";
when "0111011" => D <= "0101"; U <= "1001";

when "0111100" => D <= "0110"; U <= "0000";


when "0111101" => D <= "0110"; U <= "0001";
when "0111110" => D <= "0110"; U <= "0010";
when "0111111" => D <= "0110"; U <= "0011";
when "1000000" => D <= "0110"; U <= "0100";
when "1000001" => D <= "0110"; U <= "0101";
when "1000010" => D <= "0110"; U <= "0110";
when "1000011" => D <= "0110"; U <= "0111";
when "1000100" => D <= "0110"; U <= "1000";
when "1000101" => D <= "0110"; U <= "1001";

when "1000110" => D <= "0111"; U <= "0000";


when "1000111" => D <= "0111"; U <= "0001";
when "1001000" => D <= "0111"; U <= "0010";
when "1001001" => D <= "0111"; U <= "0011";
when "1001010" => D <= "0111"; U <= "0100";
when "1001011" => D <= "0111"; U <= "0101";
when "1001100" => D <= "0111"; U <= "0110";
when "1001101" => D <= "0111"; U <= "0111";
when "1001110" => D <= "0111"; U <= "1000";
when "1001111" => D <= "0111"; U <= "1001";

when "1010000" => D <= "1000"; U <= "0000";


when "1010001" => D <= "1000"; U <= "0001";
when "1010010" => D <= "1000"; U <= "0010";
when "1010011" => D <= "1000"; U <= "0011";
when "1010100" => D <= "1000"; U <= "0100";
when "1010101" => D <= "1000"; U <= "0101";
when "1010110" => D <= "1000"; U <= "0110";
when "1010111" => D <= "1000"; U <= "0111";
when "1011000" => D <= "1000"; U <= "1000";
when "1011001" => D <= "1000"; U <= "1001";

when "1011010" => D <= "1001"; U <= "0000";


when "1011011" => D <= "1001"; U <= "0001";
when "1011100" => D <= "1001"; U <= "0010";
when "1011101" => D <= "1001"; U <= "0011";
when "1011110" => D <= "1001"; U <= "0100";
when "1011111" => D <= "1001"; U <= "0101";
when "1100000" => D <= "1001"; U <= "0110";
when "1100001" => D <= "1001"; U <= "0111";
when "1100010" => D <= "1001"; U <= "1000";
when "1100011" => D <= "1001"; U <= "1001";

when others => D <= "0000"; U <= "0000";

end case;
end process;

end Behavioral;

Вам также может понравиться