-- The Electronic Gardener -- -- BCD to ASCII decoder -- -- Mark Kudryk, Kim Ellis -- -- module: bcd_ascii.vhd -- author: Mark Kudryk -- date: -- status: -- -- delay: 39.8 ns -- gates: 50 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity bcd_ascii is port (bcd: in std_logic_vector (7 downto 0); reset: in std_logic; ascii_0, ascii_1: out std_logic_vector (7 downto 0)); end entity bcd_ascii; architecture behaviour of bcd_ascii is constant ascii_mask: std_logic_vector (7 downto 0) := "00110000"; signal ones: std_logic_vector(7 downto 0); begin conversion: process(bcd, reset) begin if reset = '1' then ascii_0 <= "00000000"; ascii_1 <= "00000000"; ones <= "00000000"; elsif bcd >= 50 then ascii_1 <= "00110101"; ones <= bcd - 50; ascii_0 <= ones or ascii_mask; elsif bcd >= 40 then ascii_1 <= "00110100"; ones <= bcd - 40; ascii_0 <= ones or ascii_mask; elsif bcd >= 30 then ascii_1 <= "00110011"; ones <= bcd - 30; ascii_0 <= ones or ascii_mask; elsif bcd >= 20 then ascii_1 <= "00110010"; ones <= bcd - 20; ascii_0 <= ones or ascii_mask; elsif bcd >= 10 then ascii_1 <= "00110001"; ones <= bcd - 10; ascii_0 <= ones or ascii_mask; else ascii_1 <= "00100000"; ascii_0 <= bcd or ascii_mask; end if; end process conversion; end architecture behaviour;