/*
* 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