Name       gcount;
Partno     XXXXX;
Date       12/07/93;
Revision   01;
Designer   Anonymous;
Company    XXXXX;
Assembly   XXXXX;
Location   XXXXX;
Device     V750;

/**************************************************************************/
/*              8-Bit Pseudo Grey Code Counter and decode                 */
/*                                                                        */
/*  This example is of a Mealy state machine - in other words,            */
/*  combinatorial outputs are generated from the machine states and the   */
/*  combinatorial inputs.  This is actually a very common design -        */
/*  decoding the state machine's outputs into combinatorial outputs.      */
/*  Problems can arise when pure binary counters are used, as many bits   */
/*  are changing simulataneously.  Race conditions can result and         */
/*  glitches appear on combinatorial outputs when many inputs change      */
/*  simulataneously.  We recommend using a grey coded counter.  However,  */
/*  it is easier to define a large counter with Boolean equations than    */
/*  with a state machine diagram.  This example is a pseudo grey code     */
/*  counter for 8 bits.  Smaller counters can be cut down from this one   */
/*  and larger ones can be built up using the same algorithm.             */
/**************************************************************************/

/** Inputs **/

PIN     1   = Clk;
PIN     2   = D0;
PIN     3   = D1;
PIN     4   = D2;
PIN     5   = D3;
PIN     6   = rest;
PIN     7   = OEB;

/** Outputs **/

PIN     14  = O64;
PIN     15  = O128;
PIN     16  = O63;
PIN     17  = O127;
PIN     18  = O16;
PIN     19  = O32;
PIN     20  = O15;
PIN     21  = O31;
PIN     22  = O7;
PIN     23  = O8;

PINNODE 25  = Q0;
PINNODE 34  = Q1;
PINNODE 26  = Q2;
PINNODE 33  = Q3;
PINNODE 27  = Q4;
PINNODE 32  = Q5;
PINNODE 29  = Q6;
PINNODE 30  = Q7;


/** Logic Equations **/

[Q7..0].ar =  rest;
[Q7..0].ck =  Clk ;

O128.oe =  !OEB ;
O127.oe =  !OEB ;
O64.oe =  !OEB ;
O63.oe =  !OEB ;
O32.oe =  !OEB ;
O31.oe =  !OEB ;
O16.oe =  !OEB ;
O15.oe =  !OEB ;
O8.oe =  !OEB ;
O7.oe =  !OEB ;


Q0.d =  !Q1 ;

Q1.d =  Q0 ;

Q2.d =  !Q0 & Q2
       # !Q1 & Q2
       # Q0 & Q1 & !Q3 ;

Q3.d =  Q0 & Q1 & Q2
       # !Q0 & Q3
       # !Q1 & Q3 ;

Q4.d =  !Q0 & Q4
       # !Q1 & Q4
       # !Q2 & Q4
       # !Q3 & Q4
       # Q0 & Q1 & Q2 & Q3 & !Q5 ;

Q5.d =  Q0 & Q1 & Q2 & Q3 & Q4
       # !Q0 & Q5
       # !Q1 & Q5
       # !Q2 & Q5
       # !Q3 & Q5 ;

Q6.d =  !Q0 & Q6
       # !Q1 & Q6
       # !Q2 & Q6
       # !Q3 & Q6
       # !Q4 & Q6
       # !Q5 & Q6
       # Q0 & Q1 & Q2 & Q3 & Q4 & Q5 & !Q7 ;

Q7.d =  Q0 & Q1 & Q2 & Q3 & Q4 & Q5 & Q6
       # !Q0 & Q7
       # !Q1 & Q7
       # !Q2 & Q7
       # !Q3 & Q7
       # !Q4 & Q7
       # !Q5 & Q7 ;


O128 =  !D0 & D1 & !D2 & D3 & !Q0 & !Q1 & !Q2 & !Q3 & !Q4 & !Q5 & Q6 & Q7
       # D0 & !D1 & !D2 & D3 & !Q0 & !Q1 & !Q2 & !Q3 & !Q4 & !Q5 & Q6 & Q7 ;

O127 =  !D0 & D1 & !D2 & D3 & !Q0 & Q1 & !Q2 & !Q3 & !Q4 & !Q5 & Q6 & Q7
       # D0 & !D1 & !D2 & D3 & !Q0 & Q1 & !Q2 & !Q3 & !Q4 & !Q5 & Q6 & Q7 ;

O64 =  !D0 & !D1 & !D2 & D3 & !Q0 & !Q1 & !Q2 & !Q3 & !Q4 & !Q5 & Q6 & !Q7
       # D0 & D1 & D2 & !D3 & !Q0 & !Q1 & !Q2 & !Q3 & !Q4 & !Q5 & Q6 & !Q7 ;

O63 =  !D0 & !D1 & !D2 & D3 & !Q0 & Q1 & !Q2 & !Q3 & !Q4 & !Q5 & Q6 & !Q7
       # D0 & D1 & D2 & !D3 & !Q0 & Q1 & !Q2 & !Q3 & !Q4 & !Q5 & Q6 & !Q7 ;

O32 =  !D0 & D1 & D2 & !D3 & !Q0 & !Q1 & !Q2 & !Q3 & Q4 & Q5 & !Q6 & !Q7
       # D0 & !D1 & D2 & !D3 & !Q0 & !Q1 & !Q2 & !Q3 & Q4 & Q5 & !Q6 & !Q7 ;

O31 =  !D0 & D1 & D2 & !D3 & !Q0 & Q1 & !Q2 & !Q3 & Q4 & Q5 & !Q6 & !Q7
       # D0 & !D1 & D2 & !D3 & !Q0 & Q1 & !Q2 & !Q3 & Q4 & Q5 & !Q6 & !Q7 ;

O16 =  !D0 & !D1 & D2 & !D3 & !Q0 & !Q1 & !Q2 & !Q3 & Q4 & !Q5 & !Q6 & !Q7
       # D0 & D1 & !D2 & !D3 & !Q0 & !Q1 & !Q2 & !Q3 & Q4 & !Q5 & !Q6 & !Q7 ;

O15 =  !D0 & !D1 & D2 & !D3 & !Q0 & Q1 & !Q2 & !Q3 & Q4 & !Q5 & !Q6 & !Q7
       # D0 & D1 & !D2 & !D3 & !Q0 & Q1 & !Q2 & !Q3 & Q4 & !Q5 & !Q6 & !Q7 ;

O8 =  !D0 & D1 & !D2 & !D3 & !Q0 & !Q1 & Q2 & Q3 & !Q4 & !Q5 & !Q6 & !Q7
       # D0 & !D1 & !D2 & !D3 & !Q0 & !Q1 & Q2 & Q3 & !Q4 & !Q5 & !Q6 & !Q7 ;

O7 =  !D0 & D1 & !D2 & !D3 & !Q0 & Q1 & Q2 & Q3 & !Q4 & !Q5 & !Q6 & !Q7
       # D0 & !D1 & !D2 & !D3 & !Q0 & Q1 & Q2 & Q3 & !Q4 & !Q5 & !Q6 & !Q7 ;