next up previous
Next: linea_base.c Up: Multiplicador Previous: celda_base.c

linea_base.h

/*
 * linea_base.h
 * Clase que implementa una linea de la matriz del multiplicador
 * por sumas y desplazamientos
 *
 * Autores: JOSE LUIS BERENGUEL GOMEZ
 *	    JORGE BARBERO PEREZ
 *
 * Ultima modificación: 29-1-02
 */


/*
 * Linea base para 4 bits
 *
 *              mj[3]       mj[2]       mj[1]       mj[0]
 *      ppi[3]   /  ppi[2]   /  ppi[1]   /   ppi[0]  /
 *           |  /        |  /        |  /        |  /
 *  qi    +----+      +----+      +----+      +----+   qi
 *  ------|    |------|    |------|    |------|    |-----
 *  cout  | CB |      | CB |      | CB |      | CB |   cin
 *  ------|    |------|    |------|    |------|    |-----
 *        +----+      +----+      +----+      +----+
 *       /   |       /   |       /   |       /   |
 *      / ppsig[3]  / ppsig[2]  / ppsig[1]  / ppsig[0]   
 *  mj[3]       mj[3]       mj[1]       mj[0]
 *
 */

/* clase que implementa una linea de 4 celdas bases para un multiplicador de 4 bits */
class LINEA_BASE_4BITS{
	CELDA_BASE celda[4]; // 4 objetos de la clase CELDA_BASE
	WIRE aux[3];	     // 3 lineas auxiliares necesarias para enlazar cin y cout
			     //   entre las celdas intermedias

public:
	void run(WIRE m[4],	// entrada de los 4 bits del multiplicando
		 WIRE Pp[4],	// entrada de los 4 productos parciales
		 WIRE &qi,	// entrada del bit i del multiplicador
		 WIRE &cin,	// acarrao de entrada
		 WIRE &cout,	// acarreo de salida
		 WIRE Ppsig[4]);// salida de los productos parciales para la siguiente linea

}; // CLASE LINEA_BASE_4BITS


/*
 * Linea base para 32 bits
 *
 *              mj[31]      mj[30]                   mj[0]
 *      ppi[31]  /  ppi[30]  /                ppi[0]  /
 *           |  /        |  /                     |  /
 *  qi    +----+      +----+                   +----+   qi
 *  ------|    |------|    |--- -  -   -  - ---|    |-----
 *  cout  | CB |      | CB |                   | CB |   cin
 *  ------|    |------|    |--- -  -   -  - ---|    |-----
 *        +----+      +----+                   +----+
 *       /   |       /   |                    /   |
 *      / ppsig[31] / ppsig[30]              / ppsig[0]   
 *  mj[31]      mj[30]                    mj[0]
 *
*/


/* clase que implementa una linea de 32 celdas bases para un multiplicador de 32 bits */
class LINEA_BASE_32BITS{
	CELDA_BASE celda[32]; // 32 objetos de la clase CELDA_BASE
	WIRE aux[31];	      // 31 lineas auxiliares necesarias para enlazar cin y cout
			      //    entre las celdas intermedias

public:
	void run(WIRE m[32],	// entrada de los 32 bits del multiplicando
		 WIRE Pp[32],	// entrada de los 32 productos parciales
		 WIRE &qi,	// entrada del bit i del multiplicador
		 WIRE &cin,	// acarreo de entrada
		 WIRE &cout,	// acarreo de salida
		 WIRE Ppsig[32]);// salida del producto parcial para la siguiente linea

}; // CLASE LINEA_BASE_32BITS




2002-02-09