From 586888eb79dece078253fbd3af16b8167e84d960 Mon Sep 17 00:00:00 2001 From: lonkaars Date: Wed, 16 Nov 2022 16:48:21 +0100 Subject: implement bin2bcd --- .../adder-and-display.srcs/sources_1/bin2bcd.vhd | 33 ++++++++++++++++++++++ .../adder-and-display.srcs/sources_1/main.vhd | 32 +++++++++------------ adder-and-display/adder-and-display.xpr | 6 ++++ 3 files changed, 53 insertions(+), 18 deletions(-) create mode 100644 adder-and-display/adder-and-display.srcs/sources_1/bin2bcd.vhd (limited to 'adder-and-display') diff --git a/adder-and-display/adder-and-display.srcs/sources_1/bin2bcd.vhd b/adder-and-display/adder-and-display.srcs/sources_1/bin2bcd.vhd new file mode 100644 index 0000000..4bb18bb --- /dev/null +++ b/adder-and-display/adder-and-display.srcs/sources_1/bin2bcd.vhd @@ -0,0 +1,33 @@ +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; + +entity bin2bcd is port( + I: in std_logic_vector(4 downto 0); + X: out std_logic_vector(3 downto 0); + Y: out std_logic_vector(3 downto 0)); +end bin2bcd; + +architecture Behavioral of bin2bcd is +begin + with I select + X <= + x"0" when x"00" | x"0a" | x"14" | x"1e", + x"1" when x"01" | x"0b" | x"15" | x"1f", + x"2" when x"02" | x"0c" | x"16", + x"3" when x"03" | x"0d" | x"17", + x"4" when x"04" | x"0e" | x"18", + x"5" when x"05" | x"0f" | x"19", + x"6" when x"06" | x"10" | x"1a", + x"7" when x"07" | x"11" | x"1b", + x"8" when x"08" | x"12" | x"1c", + x"9" when x"09" | x"13" | x"1d", + (others => '0') when others; + with I select + Y <= + x"0" when x"00" | x"01" | x"02" | x"03" | x"04" | x"05" | x"06" | x"07" | x"08" | x"09", + x"1" when x"0a" | x"0b" | x"0c" | x"0d" | x"0e" | x"0f" | x"10" | x"11" | x"12" | x"13", + x"2" when x"14" | x"15" | x"16" | x"17" | x"18" | x"19" | x"1a" | x"1b" | x"1c" | x"1d", + x"3" when x"1e" | x"1f", + (others => '0') when others; +end Behavioral; + diff --git a/adder-and-display/adder-and-display.srcs/sources_1/main.vhd b/adder-and-display/adder-and-display.srcs/sources_1/main.vhd index 907d8cc..92e306e 100644 --- a/adder-and-display/adder-and-display.srcs/sources_1/main.vhd +++ b/adder-and-display/adder-and-display.srcs/sources_1/main.vhd @@ -23,7 +23,7 @@ architecture Behavioral of main is end component; component bin2bcd port ( - I: in std_logic_vector(3 downto 0); + I: in std_logic_vector(4 downto 0); X: out std_logic_vector(3 downto 0); Y: out std_logic_vector(3 downto 0)); end component; @@ -38,6 +38,8 @@ architecture Behavioral of main is DS: out std_logic_vector(3 downto 0)); end component; signal X: std_logic_vector(3 downto 0); -- add out + signal Cout: std_logic; -- carry out + signal AOW: std_logic_vector(4 downto 0); -- add out wide (5-bit) signal BCD0: std_logic_vector(3 downto 0); -- bcd 10^0 signal BCD1: std_logic_vector(3 downto 0); -- bcd 10^1 signal CLK_T: std_logic_vector(18 downto 0); -- clock counter for display clock @@ -54,26 +56,20 @@ begin B => B, Cin => '0', X => X, - Cout => open); - -- bcd: component bin2bcd - -- port map ( - -- I => X, - -- X => BCD0, - -- Y => BCD1); - -- disp: component bcd2disp - -- port map ( - -- CLK => CLK_T(19), - -- N0 => BCD0, - -- N1 => BCD1, - -- N2 => "0000", - -- N3 => "0000"); + Cout => Cout); + AOW <= Cout & X; + bcd: component bin2bcd + port map ( + I => AOW, + X => BCD0, + Y => BCD1); disp: component bcd2disp port map ( CLK => CLK_T(18), - N0 => X, - N1 => X, - N2 => "0000", - N3 => "0000", + N0 => "0000", + N1 => "0000", + N2 => BCD1, + N3 => BCD0, DD => DD, DS => DS); end Behavioral; diff --git a/adder-and-display/adder-and-display.xpr b/adder-and-display/adder-and-display.xpr index 2ff8357..5dcc304 100644 --- a/adder-and-display/adder-and-display.xpr +++ b/adder-and-display/adder-and-display.xpr @@ -114,6 +114,12 @@ + + + + + + -- cgit v1.2.3 From eb1e133237544a31db67358cb65200a0717c1ace Mon Sep 17 00:00:00 2001 From: lonkaars Date: Wed, 16 Nov 2022 18:40:01 +0100 Subject: fix bin2bcd implementation --- .../adder-and-display.srcs/sources_1/bin2bcd.vhd | 28 ++++++++++----------- adder-and-display/adder-and-display.xpr | 29 ++++++++++++++++++---- 2 files changed, 38 insertions(+), 19 deletions(-) (limited to 'adder-and-display') diff --git a/adder-and-display/adder-and-display.srcs/sources_1/bin2bcd.vhd b/adder-and-display/adder-and-display.srcs/sources_1/bin2bcd.vhd index 4bb18bb..548c9e5 100644 --- a/adder-and-display/adder-and-display.srcs/sources_1/bin2bcd.vhd +++ b/adder-and-display/adder-and-display.srcs/sources_1/bin2bcd.vhd @@ -11,23 +11,23 @@ architecture Behavioral of bin2bcd is begin with I select X <= - x"0" when x"00" | x"0a" | x"14" | x"1e", - x"1" when x"01" | x"0b" | x"15" | x"1f", - x"2" when x"02" | x"0c" | x"16", - x"3" when x"03" | x"0d" | x"17", - x"4" when x"04" | x"0e" | x"18", - x"5" when x"05" | x"0f" | x"19", - x"6" when x"06" | x"10" | x"1a", - x"7" when x"07" | x"11" | x"1b", - x"8" when x"08" | x"12" | x"1c", - x"9" when x"09" | x"13" | x"1d", + b"0000" when b"00000" | b"01010" | b"10100" | b"11110", + b"0001" when b"00001" | b"01011" | b"10101" | b"11111", + b"0010" when b"00010" | b"01100" | b"10110", + b"0011" when b"00011" | b"01101" | b"10111", + b"0100" when b"00100" | b"01110" | b"11000", + b"0101" when b"00101" | b"01111" | b"11001", + b"0110" when b"00110" | b"10000" | b"11010", + b"0111" when b"00111" | b"10001" | b"11011", + b"1000" when b"01000" | b"10010" | b"11100", + b"1001" when b"01001" | b"10011" | b"11101", (others => '0') when others; with I select Y <= - x"0" when x"00" | x"01" | x"02" | x"03" | x"04" | x"05" | x"06" | x"07" | x"08" | x"09", - x"1" when x"0a" | x"0b" | x"0c" | x"0d" | x"0e" | x"0f" | x"10" | x"11" | x"12" | x"13", - x"2" when x"14" | x"15" | x"16" | x"17" | x"18" | x"19" | x"1a" | x"1b" | x"1c" | x"1d", - x"3" when x"1e" | x"1f", + b"0000" when b"00000" | b"00001" | b"00010" | b"00011" | b"00100" | b"00101" | b"00110" | b"00111" | b"01000" | b"01001", + b"0001" when b"01010" | b"01011" | b"01100" | b"01101" | b"01110" | b"01111" | b"10000" | b"10001" | b"10010" | b"10011", + b"0010" when b"10100" | b"10101" | b"10110" | b"10111" | b"11000" | b"11001" | b"11010" | b"11011" | b"11100" | b"11101", + b"0011" when b"11110" | b"11111", (others => '0') when others; end Behavioral; diff --git a/adder-and-display/adder-and-display.xpr b/adder-and-display/adder-and-display.xpr index 5dcc304..0a0e2ef 100644 --- a/adder-and-display/adder-and-display.xpr +++ b/adder-and-display/adder-and-display.xpr @@ -59,7 +59,7 @@ - - - - - - @@ -166,16 +161,8 @@ - - - - - - - - -- cgit v1.2.3