La práctica que vamos a diseñar consistirá en un circuito que multiplique dos números binarios de cuatro bits utilizando el método natural de suma y desplazamiento.
Los componentes de la práctica son:
- Registro de desplazamiento universal de 4 bits: 74194
- Registro de 4 bits tipo D: 74173
M, N: Señales de habilitación de salida activas a nivel bajo.
G1, G2: Señales de habilitación de carga activas a nivel bajo.
- Sumador completo de 4 bits con acarreo anticipado: 7483ª
- Contador de 4 bits: 74393
-
- Registro de desplazamiento con entrada y salida en paralelo: 74LS245
ENTRADAS Y SALIDAS
Entradas :CLK: señal de reloj
Dato A y Dato B: son los números que se van a multiplicar.
RESET: es un reset común que inicializa todos los componentes del circuito.
Salidas : RESULTADO: es la solución que sale de multiplicar los datos A y B.
ESQUEMAS DEL CIRCUITO
ESQUEMA GENERAL
GENERADOR DE ESTIMULOS
S1 Y S0
El circuito genera los estímulos automáticamente, de esta manera nos evitaremos tener introducirlos a mano.
Queremos un circuito que genere la siguiente secuencia:
Cargar dato (1 1)
Desplazamiento hacia la izquierda de los cuatro bits del Dato A (1 0)
Mantener (0 0)
Hemos utilizado un contador de 4 bits y puertas lógicas.
CONTADOR 4 BITS
CONTADOR INVERTIDO
0
0
0
0
1
1
1
1
0
0
0
1
1
1
1
0
0
0
1
0
1
1
0
1
0
0
1
1
1
1
0
0
0
1
0
0
1
0
1
1
0
1
0
1
1
0
1
0
0
1
1
0
1
0
0
1
0
1
1
1
1
0
0
0
1
0
0
0
0
1
1
1
1
0
0
1
0
1
1
0
1
0
1
0
0
1
0
1
1
0
1
1
0
1
0
0
1
1
0
0
0
0
1
1
1
1
0
1
0
0
1
0
1
1
1
0
0
0
0
1
1
1
1
1
0
0
0
0
Cogemos de la tabla anterior las columnas coloreadas, que corresponden con los bits B y C del contador invertido de 4 bits. Cogemos estas columnas porque a través de una puerta OR y una AND conseguimos sacar la combinación deseada para S1 y S0. Con dicha combinación realizaremos la secuencia que ya se ha especificado más arriba y de esa manera se realizara la multiplicación de los datos correctamente.
OR (S1)
AND (S0)
1
1
1
1
1
0
1
0
1
0
1
0
0
0
La señal de reloj CLK la hemos multiplicado por S1, para que cuando este pase a valer 0 la señal de reloj pare y se mantenga el resultado obtenido.
REGISTRO DE DESPLAZAMIENTO DEL DATO A
Hemos utilizado el registro de desplazamiento 74194 para ir multiplicando cada bit del Dato A por el Dato B, ya que este registro nos va sacando uno a uno cada bit del Dato A. Para ello hemos usado la combinación de S1 y S0 obtenida anteriormente.
La entrada SL y la salida QA están unidas para que el Dato A no se pierda una vez realizada la operación.
MULTIPLCACIÓN DEL DATO B
Multiplicamos cada Bit de A por el dato B y esto pasa al sumador completo de cuatro bits.
SUMADOR COMPLETO DE 4BITS Y REGISTROS ADICIONALES
Para realizar las sumas intermedias de la multiplicación, llevamos la multiplicación del Dato B por cada bit del Dato A a las entradas [A4:A1] del sumador de 4 bits. Seguidamente se coge el bit de posible acarreo C4 y los tres bits más significativos del resultado de la suma y se almacenan en un biestable tipo D. Seguidamente realimentamos los bits almacenados en el biestable tipo D al segundo término [B4:B1] del sumador de 4 bits para realizar la suma siguiente. El acarreo de entrada al sumador de 4 bits C0, siempre es 0.
El bit menos significativo del resultado de cada suma no cambia, ya que al realizar las sumas intermedias de la multiplicación se van desplazando un lugar a la izquierda cada vez que se multiplica por un nuevo bit. Por lo tanto este bit menos significativo, lo vamos almacenando en un registro de desplazamiento.
Ejemplo:
REGISTRO PARALELO DE HABILITACIÓN
Utilizamos este registro para que cuando lo habilitemos salga el resultado de la suma que queremos, es decir, habilitaremos en la última suma para que nos salga ese resultado. De esta manera evitamos posibles confusiones con las sumas intermedias.
Hemos creado una salida llamada Final_operacion que nos indica en qué instante se ha producido la multiplicación y ya hemos obtenido el resultado en la salida.
SIMULACIÓN
ESTÍMULOS EJEMPLO 1
RESULTADO EJEMPLO 1
Como podemos apreciar en la grafica anterior la multiplicación se realiza correctamente. Además, solo nos muestra el resultado final de la multiplicación debido a la acción del registro paralelo de habilitación, como ya hemos comentado anteriormente.