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

multiplicador.h

/*
 * multiplicador.h
 * Clase que implementa el multiplicador combinacional por sumas y desplazamientos
 * 
 * Autores: JOSE LUIS BERENGUEL GOMEZ
	    JORGE BARBERO PEREZ
 *
 * Ultima modificación: 29-1-02
 */


/*
 * Multiplicador de 4 bits
 *                         q[3]  q[2]  q[1]  q[0]
 *                       0  |  0  |  0  |  0  |
 *                       |  |  |  |  |  |  |  |
 *                       |  |  |  |  |  |  |  |
 *                     +------------------------+
 *        -------------|                        |--mult[0]
 *                     |    Linea       Base    |
 *                   +-|                        |--0
 *                   | +------------------------+
 *                   \   |  |  |  |  |  |  |  |
 *                            auxlin1
 *                    \  |  |  |  |  |  |  |  \
 *                    |  |  |  |  |  |  |  |   \
 *                    |  |  |  |  |  |  |  |    \
 *                  +------------------------+  |
 *        ----------|                        |-----mult[1]
 *                  |    Linea       Base    |  |
 *                +-|                        |-----0
 *                | +------------------------+  |
 *                \   |  |  |  |  |  |  |  |    |
 *                         auxlin2
 *                 \  |  |  |  |  |  |  |  \    |
 *                 |  |  |  |  |  |  |  |   \   |
 *                 |  |  |  |  |  |  |  |    \  |
 *               +------------------------+  |  |
 *        -------|                        |--------mult[2]
 *               |    Linea       Base    |  |  |
 *             +-|                        |--------0
 *             | +------------------------+  |  | 
 *             \   |  |  |  |  |  |  |  |    |  |
 *                        auxlin3
 *              \  |  |  |  |  |  |  |  \    |  |
 *              |  |  |  |  |  |  |  |   \   |  |
 *              |  |  |  |  |  |  |  |    \  |  |
 *            +------------------------+  |  |  |
 *        ----|                        |-----------mult[3]
 *            |    Linea       Base    |  |  |  |
 *          +-|                        |-----------0
 *          | +------------------------+  |  |  |
 *          |   |  |  |  |  |  |  |  |    |  |  |
 *          |   |  |  |  |  |  |  |  |    |  |  |
 *       prod[8] ...   ...   ...   ...   ...  prod[0]
 */

/* clase que implementa un multiplicador de 4 bits */
class MULTIPLICADOR_4BITS{
	LINEA_BASE_4BITS linea[4];	// 4 objetos de la clase linea_base para el multiplicador
	WIRE aux_lin1[4];	
	WIRE aux_lin2[4];
	WIRE aux_lin3[4];
	WIRE aux_lin4[4];
	WIRE cout1,cout2,cout3,cout4; // lineas auxiliares desde cin hasta cout

public:
	void run(WIRE mult[4],	// entrada de los 4 bits del multiplicando
		 WIRE Pp[4],	// entrada de los 4 productos parciales iniciales. Siempre a cero
		 WIRE q[4],	// entrada de los 4 bits del multiplicador
		 WIRE cin[4],	// entrada de los 4 acarreos de cada linea. Siempre a cero
		 WIRE Prod[8]);	// salida de los 8 bits del producto
};

/*
 * Multiplicador de 4 bits
 *                        q[31]              q[0]
 *                       0  |              0   |
 *                       |  |  ... .. ...  |  |
 *                       |  |              |  |
 *                     +------------------------+
 *        -------------|                        |----mult[0]
 *                     |    Linea       Base    |
 *                   +-|                        |----0
 *                   | +------------------------+
 *                   \   |  |              |  \
 *                    \  |  |  ... .. ...  |   \
 *                    |  |  |              |    \
 *                    |  |  |              |     \
 *                  +------------------------+   |
 *        ----------|                        |-------mult[1]
 *                  |    Linea       Base    |   |
 *                +-|                        |-------0
 *                | +------------------------+   |
 *                \   |  |              |  |     |
 *                 \  |  |  ... .. ...  |  \     |
 *				
 *               ... ... ... ... ... ... ... ...
 *
 *              |  |  ... .. ...  |  |   \      |
 *              |  |              |  |    \ ... |
 *            +------------------------+  |     |
 *        ----|                        |-------------mult[31]
 *            |    Linea       Base    |  |     |
 *          +-|                        |-------------0
 *          | +------------------------+  |     |
 *          |   |  |              |  |    |     |
 *          |   |  |  ... .. ...  |  |    | ... |
 *      prod[63] ...  ... .. ...  ...  ...    prod[0]
 */

/* clase que implementa un multiplicador de 32 bits */
class MULTIPLICADOR_32BITS{
	LINEA_BASE_32BITS linea[32];// 32 objetos de la clase linea_base para el multiplicador
	WIRE auxlin[32][32];
	WIRE cout[32];		// lineas auxiliares desde cin hasta cout

public:	
	void run(WIRE mult[32],	// entrada de los 32 bits del multiplicando
		 WIRE Pp[32],	// entrada de los 32 productos parciales iniciales. Siempre a cero
		 WIRE q[32],	// entrada de los 32 bits del multiplicador
		 WIRE cin[32],	// entrada de los 32 acarreos de cada linea. Siempre a cero
		 WIRE Prod[64]);// salida de los 64 bits del producto
};




2000-02-09