aboutsummaryrefslogtreecommitdiff
path: root/src/min8b.vhd
blob: 2a7b51ed2469bb896de37521f988e0857edcbc2e (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
46
47
48
49
50
51
52
53
54
55
56
57
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.numeric_std.all;

entity min8b 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 min8b;

architecture Behavioral of min8b is
	signal Bmin: std_logic_vector(7 downto 0);
  signal Bcom: std_logic;
  signal carry: std_logic;
	component twoc
		port (
			A: 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 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
	complement: component twoc
		port map (
			A => B,
			Cin => B(7),
			X => Bmin,
      Cout => Bcom);
	add8: component add8b
		port map (
			A => A,
			B => Bmin,
			Cin => Cin,
			X => X,
			Cout => carry);
  add1: component add1b
    port map(
      A => A(7),
      B => Bcom,
      Cin => carry,
      X => Cout,
      Cout => open);
end Behavioral;