/*
 * control.cpp - Unidad de control.
 * 'Ultima modificaci'on: 03-03-2002
 *
 * Antonio G'omez Muriana (correo@senco.net)
 * Miguel Montero G'amez
 */

/* Unidad de control para SENCOUNTER. Establece dos ciclos de carga de datos
 * (m=1 E=0 y muestra datos hasta que z=1
 *
 *
 *     +--------------------------------------+
 *  z---------------+    +------------------------E
 *     |            |    |    +---+           |
 *     |   +-----+  +----|---o|AND|           |
 *     +---|D   J|-------+----|   |--+        |
 *         | p1  |  +---------|a2 |  |  +---+ |
 *       +-|>   K|-----+      +---+  +--|OR |-+
 *       | +-----+  |  |      +---+  +--| o |
 *       |          |  +------|AND|--+  +---+
 * ck----+          |  |   +--|a1 |
 *       | +-----+  |  |   |  +---+  
 *   d2+---|D   J|--|--|---+  +---+
 *     | | | p2  |  |  +------|AND|      
 *     | +-|>   K|--+--|------|a3 |-+    
 *     |   +-----+     |      +---+ |
 *     +---------------|------------+ 
 *                     |
 *                     m
 */  

class CONTROL {
	AND a1, a2, a3;
	OR o;
	NOT no;
	NEG_D_FF p1, p2;
	WIRE q1a, q1b, q2a, q2b, w1, w2, nz, d1, d2;

public:
	CONTROL();
	void run(WIRE &ck, WIRE &E, WIRE &m, WIRE &z);
};