El documento describe el diseño de un sistema multiplicador digital para números binarios de 4 bits. El sistema incluye botones para ingresar los números, un botón de multiplicación, un LED que indica el final de la operación y un botón para mostrar el resultado. Se propone realizar el diagrama de bloques, la partición funcional, el diagrama de estado y el código VHDL para la simulación.
CULTURA NAZCA, presentación en aula para compartir
Sistema multiplicador binario 4x4
1. A
B
4
4
8
Enter
Mostrar
Fin
P
A B
Ingrese A
Ingrese B
terminé
Multiplica
muestra
visu
aliza
dor
Mult
Diseño de un Sistema Digital Multiplicador
Se desea diseñar un circuito Multiplicador de dos números binarios sin signo, cada uno
de 4 bits.
El sistema consta de un botón ‘Enter’ para ingresar el multiplicando y multiplicador
individual y respectivamente. Una vez ingresado los datos, procedemos a presionar el
botón ‘Mult’ para realizar el proceso de multiplicación, al finalizar el proceso, un led se
prende indicándonos que la multiplicación ha terminado, este led tiene nombre ‘Fin’. El
producto de los números ingresados no se muestra hasta que el usuario presione el botón
‘Mostrar’.
Realizar.
1. Diagrama de bloques general.
2. Partición funcional.
3. Diagrama ASM.
4. Códigos VHDL y simulación del sistema.
Solución:
Realizamos un bosquejo general del sistema:
1. Diagrama de bloques:
SISTEMA DIGITAL
MULTIPLICADOR
INGRESO DE DATOS
MULTIPLICADOR
O
O
O
O
O
O
O
O
2. C
O
N
T
R
O
L
A
D
O
R
Enter
Mult
mostrar
Ingrese A
Ingrese B
Multiplica
Fin
muestra
Antes de la partición funcional, vamos a plantearnos el problema:
Primero tenemos 2 números de 4 bits:
𝐴 = 1101 que es al multiplicando y 𝐵 = 1011 que es el multiplicador.
Ahora multiplicamos “a mano” estos valores:
×
1010
1011
1010
1010
0000
1010
1101110
Como vemos, cuando el bit menos significativo del multiplicador es 1, el multiplicando
baja y se desplaza hacia la izquierda, lo mismo ocurre con el multiplicador, pero este
se desplaza hacia la derecha.
Acá una aclaración más detallada:
Parar hasta que B = 0000:
1.
A = 00001010 ; B = 1011, cuando B(0) = 1, entonces sumo:
00001010 + 00000000 = 00001010
2.
A = 00010100 ; B = 0101, cuando B(0) = 1, entonces sumo:
00010100 + 00001010= 00011110
3. C
O
N
T
R
O
L
A
D
O
R
Enter
Mult
Termine
Bin(0)
en_R1
en_R2
ld_R1
ld_R1
en_ACUM
Sel
Sel_muestra
fin
clk
resetn
Mostrar
3.
A = 00101000 ; B = 0010, cuando B(0) = 0, no sumo:
00011110 se mantiene
4.
A = 01010000 ; B = 0001, cuando B(0) = 1, entonces sumo:
01010000 + 00011110= 01101110
5.
A = 10100000 ; B = 0000, B es un vector de ceros entonces cuando B = 0000, termina la
operación.
Resultado: 01101110
Como vemos, los números se desplazan, entonces necesitaremos 2 registros de
desplazamiento, un registro de sostenimiento, un sumador y un detector de cadena de
0’s que es una compuerta NOR de 4 entradas.
Lo demás se encarga el controlador.
2. Partición funcional
5. resetn
Ta
0
0
1
1
1
0
1
1
10
0
0
Tb
Tc
Td
Te
0
1
1
0
0
1
Tf
Tg
1
0
Th
0
1
3. A.S.M.
Se ha modificado un poco el programa en la parte de mostrar, tenemos que presionar Mostrar
una vez para mostrar el producto y otra vez como default para pasar al estado inicial.
en_ACUM
MultEnter
Enter
en_R1
ld_r1
Mult
Enter
Enter
en_R2
ld_r2
Sel , en_R1 ,en_R2
Termine
B_in(0)
en_ACUM
Fin
mostrar
Fin
mostrar
Sel_muestra, Fin
mostrar