library IEEE; use IEEE.std_logic_1164.all; entity Vcnt1str is port ( D: in STD_LOGIC_VECTOR (31 downto 0); SUM: out STD_LOGIC_VECTOR (5 downto 0) ); end Vcnt1str; architecture Vcnt1str_arch of Vcnt1str is component FA port ( A, B, CI: in STD_LOGIC; S, CO: out STD_LOGIC ); end component; component ADDER2 port ( A, B: in STD_LOGIC_VECTOR(1 downto 0); CI: in STD_LOGIC; S: out STD_LOGIC_VECTOR(2 downto 0) ); end component; component ADDER3 port ( A, B: in STD_LOGIC_VECTOR(2 downto 0); CI: in STD_LOGIC; S: out STD_LOGIC_VECTOR(3 downto 0) ); end component; component ADDER4 port ( A, B: in STD_LOGIC_VECTOR(3 downto 0); CI: in STD_LOGIC; S: out STD_LOGIC_VECTOR(4 downto 0) ); end component; component INCR5 port ( A: in STD_LOGIC_VECTOR(4 downto 0); CI: in STD_LOGIC; S: out STD_LOGIC_VECTOR(5 downto 0) ); end component; type Ptype is array (0 to 7) of STD_LOGIC_VECTOR(1 downto 0); type Qtype is array (0 to 3) of STD_LOGIC_VECTOR(2 downto 0); type Rtype is array (0 to 1) of STD_LOGIC_VECTOR(3 downto 0); signal P: Ptype; signal Q: Qtype; signal R: Rtype; signal S: STD_LOGIC_VECTOR(4 downto 0); begin U1: for i in 0 to 7 generate U1C: FA port map (D(3*i), D(3*i+1), D(3*i+2), P(i)(0), P(i)(1)); end generate; U2: for i in 0 to 3 generate U2C: ADDER2 port map (P(2*i), P(2*i+1), D(24+i), Q(i)); end generate; U3: for i in 0 to 1 generate U3C: ADDER3 port map (Q(2*i), Q(2*i+1), D(28+i), R(i)); end generate; U4: ADDER4 port map (R(0), R(1), D(30), S); U5: INCR5 port map (S, D(31), SUM); end Vcnt1str_arch;