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