library IEEE; use IEEE.std_logic_1164.all; entity Vdffqqn is port( CLK, D: in STD_LOGIC; Q, QN: out STD_LOGIC ); end Vdffqqn; architecture Vdffqqn_arch of Vdffqqn is begin process(CLK) begin if (CLK'event and CLK='1') then Q <= D; QN <= not D; end if; end process; end Vdffqqn_arch; library IEEE; use IEEE.std_logic_1164.all; entity syncsercell is port( CLK, LDNOCLR, NOCLRORLD, CNTENP, D, CNTEN: in STD_LOGIC; CNTENO, Q: out STD_LOGIC ); end syncsercell; architecture syncsercell_arch of syncsercell is component Vdffqqn port( CLK, D: in STD_LOGIC; Q, QN: out STD_LOGIC ); end component; signal LDAT, CDAT, DIN, Q_L: STD_LOGIC; begin LDAT <= LDNOCLR and D; CDAT <= NOCLRORLD and ((CNTENP and CNTEN) xor not Q_L); DIN <= LDAT or CDAT; CNTENO <= (not Q_L) and CNTEN; U1: Vdffqqn port map (CLK, DIN, Q, Q_L); end syncsercell_arch; library IEEE; use IEEE.std_logic_1164.all; entity V74x163s is port( CLK, CLR_L, LD_L, ENP, ENT: in STD_LOGIC; D: in STD_LOGIC_VECTOR (7 downto 0); Q: out STD_LOGIC_VECTOR (7 downto 0); RCO: out STD_LOGIC ); end V74x163s; architecture V74x163s_arch of V74x163s is component syncsercell port( CLK, LDNOCLR, NOCLRORLD, CNTENP, D, CNTEN: in STD_LOGIC; CNTENO, Q: out STD_LOGIC ); end component; signal LDNOCLR, NOCLRORLD: STD_LOGIC; -- common signals signal SCNTEN: STD_LOGIC_VECTOR (8 downto 0); -- serial count-enable inputs begin LDNOCLR <= (not LD_L) and CLR_L; -- create common load and clear controls NOCLRORLD <= LD_L and CLR_L; SCNTEN(0) <= ENT; -- serial count-enable into the first stage g1: for i in 0 to 7 generate -- generate the eight syncsercell stages U1: syncsercell port map ( CLK, LDNOCLR, NOCLRORLD, ENP, D(i), SCNTEN(i), SCNTEN(i+1), Q(i)); end generate; RCO <= SCNTEN(8); -- RCO is equivalent to final count-enable output end V74x163s_arch;