Name Count10;
Partno CA0018;
Date 12/19/89;
Revision 02;
Designer Kahl;
Company Logical Devices, Inc.;
Assembly None;
Location None;
Device g16v8a;
/****************************************************************/
/* */
/* Decade Counter */
/* */
/* This is a 4-bit up/down decade counter with synchronous */
/* clear capability. An asynchronous ripple carry output is */
/* provided for cascading multiple devices. CUPL state machine */
/* syntax is used. */
/****************************************************************/
/** Inputs **/
Pin 1 = clk; /* Counter clock */
Pin 2 = clr; /* Counter clear input */
Pin 3 = dir; /* Counter direction input */
Pin 11 = !oe; /* Register output enable */
/** Outputs **/
Pin [14..17] = [Q3..0]; /* Counter outputs */
Pin 18 = carry; /* Ripple carry out */
/** Declarations and Intermediate Variable Definitions **/
field count = [Q3..0]; /* declare counter bit field */
$define S0 'b'0000 /* define counter states */
$define S1 'b'0001
$define S2 'b'0010
$define S3 'b'0011
$define S4 'b'0100
$define S5 'b'0101
$define S6 'b'0110
$define S7 'b'0111
$define S8 'b'1000
$define S9 'b'1001
field mode = [clr,dir]; /* declare mode control field */
up = mode:0; /* define count up mode */
down = mode:1; /* define count down mode */
clear = mode:[2..3]; /* define count clear mode */
/** Logic Equations **/
Sequenced count { /* free running counter */
present S0 if up next S1;
if down next S9;
if clear next S0;
if down out carry;
present S1 if up next S2;
if down next S0;
if clear next S0;
present S2 if up next S3;
if down next S1;
if clear next S0;
present S3 if up next S4;
if down next S2;
if clear next S0;
present S4 if up next S5;
if down next S3;
if clear next S0;
present S5 if up next S6;
if down next S4;
if clear next S0;
present S6 if up next S7;
if down next S5;
if clear next S0;
present S7 if up next S8;
if down next S6;
if clear next S0;
present S8 if up next S9;
if down next S7;
if clear next S0;
present S9 if up next S0;
if down next S8;
if clear next S0;
if up out carry; /* assert carry output */
}