/*
* gates.h -- Bilbioteca de puertas lógicas.
*
* Este software de simulación digital simula los circuitos como redes de
* puertas lógicas. La precisión del modelo y el tiempo de simulación va
* a depender de la simulación de las puertas y por lo tanto, existen
* distintos niveles de aproximación.
*
* Considera tiempo de establecimiento y de propagación.
*
* gse. 1999.
*/
class NOT {
WIRE delay;
public:
void run(WIRE &output, WIRE &input);
};
class AND {
WIRE delay;
public:
void run(WIRE &output, WIRE &input0, WIRE &input1);
void run(WIRE &output, int inputs, WIRE &inputs, ...);
void run(WIRE &output, int inputs, WIRE inputs[]);
};
class NAND {
WIRE delay;
public:
void run(WIRE &output, WIRE &input0, WIRE &input1);
void run(WIRE &output, int inputs, WIRE &inputs, ...);
void run(WIRE &output, int inputs, WIRE inputs[]);
};
class OR {
WIRE delay;
public:
void run(WIRE &output, WIRE &input0, WIRE &input1);
void run(WIRE &output, int inputs, WIRE &inputs, ...);
void run(WIRE &output, int inputs, WIRE inputs[]);
};
class NOR {
WIRE delay;
public:
void run(WIRE &output, WIRE &input0, WIRE &input1);
void run(WIRE &output, int inputs, WIRE &inputs, ...);
void run(WIRE &output, int inputs, WIRE inputs[]);
};
class XOR {
WIRE delay;
public:
void run(WIRE &output, WIRE &input0, WIRE &input1);
void run(WIRE &output, int inputs, WIRE &inputs, ...);
void run(WIRE &output, int inputs, WIRE inputs[]);
};
class NXOR {
WIRE delay;
public:
void run(WIRE &output, WIRE &input0, WIRE &input1);
void run(WIRE &output, int inputs, WIRE &inputs, ...);
void run(WIRE &output, int inputs, WIRE inputs[]);
};
class BUFFER_Z {
WIRE delay[2];
int sample;
public:
BUFFER_Z();
void run(WIRE &output, WIRE &input, WIRE &enable);
};
Notar que se ha usado la definición WIRE para declarar las variables privadas delay. Esto significa que cuando se incluya el fichero gates.h para declarar las clases de las puertas, previamente tiene que haberse incluido el fichero defs.h.