up previous
Up: Multiplicador Previous: multiplicador.c

test_multiplicador.c

/*
 * test_multiplicador.c
 * Prueba del multiplicador de sumas y desplazamientos de 4 y 32 bits
 * 
 * Autores: JOSE LUIS BERENGUEL GOMEZ
 *	    JORGE BARBERO PEREZ
 *
 * Compilación:
 *	c++ -D_MULTIPLICADOR_4BITS_ test_multiplicador.c multiplicador.o linea_base.o celda_base.o gates.o muxs.o decods.o alu32.o -o test_multiplicador_4bits	
 *	c++ -D_MULTIPLICADOR_32BITS_ test_multiplicador.c multiplicador.o linea_base.o celda_base.o gates.o muxs.o decods.o alu32.o -o test_multiplicador_32bits
 * Ultima modificación: 29-1-02
 */

#include "gates.h"
#include "decods.h"
#include "muxs.h"
#include "alu32.h"
#include "celda_base.h"
#include "linea_base.h"
#include "multiplicador.h"
#include <stdio.h>

/* TEST PARA EL MULTIPLICADOR DE 4 BITS */
#ifdef _MULTIPLICADOR_4BITS_
int main(void){

	WIRE m[4],Pp[4],q[4],cin[4],Prod[8]; // lineas de entrada y salida del multiplicador
	int cont;	// Nos sirve para generar las combinaciones de las variables de entrada
	MULTIPLICADOR_4BITS multiplicador;	 // Objeto que vamos a simular
	
	/* COMIENZO DEL PROGRAMA PRINCIPAL */
	printf("q3  q2  q1  q0  m3  m2  m1  m0    Prod7 Prod6 Prod5 Prod4 Prod3 Prod2 Prod1 Prod0\n");
	//generamos las combinaciones de las 8 variables de entrada (2^8 combinaciones)
	for (int i=0;i<256;i++){
		cont=i;
		if ((cont%2)==1)
			m[0]=VCC;
		else	m[0]=GND;
		cont=i>>1;
		if ((cont%2)==1)
			m[1]=VCC;
		else	m[1]=GND;
		cont=i>>2;
		if ((cont%2)==1)
			m[2]=VCC;
		else 	m[2]=GND;
		cont=i>>3;
		if ((cont%2)==1)
			m[3]=VCC;
		else	m[3]=GND;
		cont=i>>4;
		if ((cont%2)==1)
			q[0]=VCC;
		else	q[0]=GND;
		cont=i>>5;
		if ((cont%2)==1)
			q[1]=VCC;
		else 	q[1]=GND;
		cont=i>>6;
		if ((cont%2)==1)
			q[2]=VCC;
		else	q[2]=GND;
		cont=i>>7;
		if ((cont%2)==1)
			q[3]=VCC;
		else	q[3]=GND;
		// Comienzo de la simulación
		for(int j=0;j<20;j++){
			multiplicador.run(m,Pp,q,cin,Prod);
			printf("%3d %3d %3d %3d %3d %3d %3d %3d    %3d %3d %3d %3d %3d %3d %3d %3d\n",q[3],q[2],q[1],q[0],m[3],m[2],m[1],m[0],Prod[7],Prod[6],Prod[5],Prod[4],Prod[3],Prod[2],Prod[1],Prod[0]);
						
		}
		//fflush(stdin);
		//getchar();
	}
	return 0;
}
#endif

#ifdef _MULTIPLICADOR_32BITS_

#include "random.h"

int main(void)
{
	WIRE m[32],Pp[32],q[32],cin[32],Prod[64];
	//unsigned long int cont;

	MULTIPLICADOR_32BITS multiplicador;

/*	// generamos las combinaciones de las variables de entrada: 2^64 (64 variables de entrada)
	for(unsigned long int i=0;i<(2^64);i++){
		cont=i;
		for(int j=0;j<32;j++){
			cont=i>>j;
			if ((cont%2)==1)
				q[j]=VCC;
			else	q[j]=GND;
		}
		for(int j=0;j<32;j++){
			cont=i>>(j+32);
			if((cont%2)==1)
				m[j]=VCC;
			else	m[j]=GND;
		}

		// comienzo de la simulacion
		for(int k=0;k<100;k++)
			multiplicador.run(m,Pp,q,cin,Prod);
	}
*/
	// generamos 10 multiplicaciones con numeros aleatorios en cada una de ellas
	printf("\n\t\tSIMULACION DEL MULTIPLICADOR DE 32 BITS \n");

	for(int i=0;i<32;i++)
		m[i]=q[i]=VCC;
	for(int i=0;i<160;i++){
		multiplicador.run(m,Pp,q,cin,Prod);
		for(int j=63;j>=0;j--)
			if(Prod[j]!=0)
				printf("1");
			else printf("0");
		printf("\n");
	}


/*	for(int i=0;i<10;i++){
		printf("Multiplicacion aleatoria %d \n",i);
		printf("Contenido del multiplicando m[]: \n");
		for(int j=31;j>=0;j--){
			Random(1,1,m[j]);
			printf("%4d",m[j]);
		}
		printf("\nContenido del multiplicador q[]: \n");
		for(int j=31;j>=0;j--){
			Random(1,1,q[j]);
			printf("%4d",q[j]);
		}
		printf("\n Igual a: \n");
		for(int j=0;j<100;j++){
			multiplicador.run(m,Pp,q,cin,Prod);
			for(int k=63;k>=0;k--){
				printf("%4d",Prod[k]);
			}
		}
		printf("\n");
	}
*/
	return 0;
}
#endif




2000-02-09