next up previous
Next: La implementación gates.c Up: La biblioteca de puertas Previous: La biblioteca de puertas

El interface gates.h

Como usaremos la técnica de compilación separada, cualquier biblioteca en SDLC++ será descrita en dos ficheros independientes. El primero, con extensión .h describe las clases de los circuitos implementados: lo que se conoce generalmente como `interface' de programación de la biblioteca. Aquí se presenta el fichero gates.h que describe cómo usar las puertas lógicas fundamentales:
/*
 * 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.



Vicente González Ruiz 2001-10-15