aboutsummaryrefslogtreecommitdiff
path: root/src/add8bs.vhd
blob: 83e048fa9710d3bace0a220afe53b42bff6a295b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.numeric_std.all;

entity add8bs is
	port (
		A, B: in std_logic_vector(7 downto 0);
		Cin: in std_logic;
		X: out std_logic_vector(7 downto 0);
		Cout: out std_logic);
end add8bs;

architecture Behavioral of add8bs is
  signal C: std_logic; -- Cout0 -> Cin1
	component add8b 
		port (
			A, B: in std_logic_vector(7 downto 0);
			Cin: in std_logic;
			X: out std_logic_vector(7 downto 0);
			Cout: out std_logic);
	end component;
	component add1b 
		port (
			A, B, Cin: in std_logic;
			X, Cout: out std_logic);
	end component;
begin
	-- add8b (signed)
	-- add first eight bits normally
	add0: component add8b
		port map (
			A => A,
			B => B,
			Cin => Cin,
			X => X,
			Cout => C);
	-- extend signed (two's complement) number to 9-bits
	add1: component add1b
		port map (
			A => A(7),
			B => B(7),
			Cin => C,
			X => Cout,
			Cout => open);
end Behavioral;