﻿library IEEE,lsi_10k;

use IEEE.std_logic_1164.all;
use IEEE.std_logic_arith.all;
use IEEE.std_logic_textio.all;
use lsi_10k.COMPONENTS.all;

package CONV_PACK_counter is

-- define attributes
attribute ENUM_ENCODING : STRING;

end CONV_PACK_counter;

library IEEE,lsi_10k;

use IEEE.std_logic_1164.all;
use IEEE.std_logic_arith.all;
use IEEE.std_logic_textio.all;
use lsi_10k.COMPONENTS.all;

use work.CONV_PACK_counter.all;

entity counter is

   generic( n : Integer := 2);
   port( clock, clear, count : in std_logic;  Q : out std_logic_vector (1 
         downto 0));

end counter;

architecture SYN of counter is

   component IV
      port( A : in std_logic;  Z : out std_logic);
   end component;
   
   component EO
      port( A, B : in std_logic;  Z : out std_logic);
   end component;
   
   component ND2
      port( A, B : in std_logic;  Z : out std_logic);
   end component;
   
   component FD2
      port( D, CP, CD : in std_logic;  Q, QN : out std_logic);
   end component;
   
   signal Q_1_port, Q_0_port, n149, n150, net9, n151, n152, n153 : std_logic;

begin
   Q <= ( Q_1_port, Q_0_port );
   
   U31 : IV port map( A => clear, Z => n150);
   U32 : EO port map( A => Q_0_port, B => count, Z => n152);
   U33 : EO port map( A => n149, B => net9, Z => n151);
   U34 : ND2 port map( A => count, B => Q_0_port, Z => n149);
   Pre_Q_regx1x : FD2 port map( D => n151, CP => clock, CD => n150, Q => 
                           Q_1_port, QN => net9);
   Pre_Q_regx0x : FD2 port map( D => n152, CP => clock, CD => n150, Q => 
                           Q_0_port, QN => n153);

end SYN;
