diff options
| author | lonkaars <loek@pipeframe.xyz> | 2022-11-13 12:02:44 +0100 | 
|---|---|---|
| committer | lonkaars <loek@pipeframe.xyz> | 2022-11-13 12:02:44 +0100 | 
| commit | 2cae44180091f8e75900360f3605b7480f52a49c (patch) | |
| tree | 64832f8a5ee109055fb2d741e068268745f873cd /full-adder/full-adder.srcs/sources_1/add1b.vhd | |
| parent | 97ea7b4d15504f6826d8ccec7383a5c4f7ea47d0 (diff) | |
| parent | e58bfa47ed7163b8fe3ef808fe77cc6f19160046 (diff) | |
Merge branch 'master' into dev
Diffstat (limited to 'full-adder/full-adder.srcs/sources_1/add1b.vhd')
| -rw-r--r-- | full-adder/full-adder.srcs/sources_1/add1b.vhd | 43 | 
1 files changed, 43 insertions, 0 deletions
| diff --git a/full-adder/full-adder.srcs/sources_1/add1b.vhd b/full-adder/full-adder.srcs/sources_1/add1b.vhd new file mode 100644 index 0000000..a2d4068 --- /dev/null +++ b/full-adder/full-adder.srcs/sources_1/add1b.vhd @@ -0,0 +1,43 @@ +LIBRARY ieee; +USE ieee.std_logic_1164.ALL; +USE ieee.numeric_std.ALL; + +-- full adder entity +entity add1b is +  port ( +    A: in std_logic; +    B: in std_logic; +    Cin: in std_logic; +    X: out std_logic; +    Cout: out std_logic); +end add1b; + +architecture Behavioral of add1b is +  signal s0: std_logic; +  signal s1: std_logic; +  signal s2: std_logic; +  component half_add +	port ( +	  A: in std_logic; +      B: in std_logic; +      X: out std_logic; +      Cout: out std_logic); +  end component; +begin +	-- first add A and B with HA +	add0: component half_add +    port map ( +      A => A, +      B => B, +      X => s0, +      Cout => s1); +	-- then add first result with Cin to get final result +  add1: component half_add +    port map ( +      A => Cin, +      B => s0, +      X => X, +      Cout => s2); +	-- calculate Cout by OR-ing the Cout of both half adders +  Cout <= (s2 OR s1); +end Behavioral; |