sumador 10 números con unidad de control y camino de datos
DESCRIPTION
Implementación en VHDL del algoritmo para un sumador de 10 números, utilizando el modelo de unidad de control más camino de datosTRANSCRIPT
SUMADOR 10 NÚMEROS CON UC Y CD
(Tarea)
Universidad Distrital Francisco José de Caldas
Diego Alejandro Barragán Vargas .20131005113
Bayron Alexis Cárdenas Espitia .20132005045
PROBLEMA
Desarrollar en código VHDL un procesador dedicado que realice la suma de 10 números.
DISEÑO
Teniendo en cuenta que las funciones a realizar de la ALU y el registro acumulador son:
ALU
M 𝑆1 𝑆0 OPERACIÓN
0 0 0 A+B
0 0 1 A-B
0 1 0 A+1
0 1 1 B-1
1 0 0 NOT(A)
1 0 1 AND(A,B)
1 1 0 OR(A,B)
1 1 1 XOR(A,B)
Fig2. Diagrama
estructural CD
REGISTRO
R1 R0 FUNCIÓN
0 0 CARGA
0 1 ROTAR <-
1 0 DESPLAZAR <-
1 1 NADA
Se procede a realizar el siguiente algoritmo:
Suma =0; Final=0;
For => i=1:100
Suma= Suma + 𝑋𝑖
End;
Y = suma, Final=1;
P1
P2
P3
WHEN INICIO=’1’
Fig3. Diagrama de
Estados de la Unidad
de Control
Con este diagrama de estados se tienen las siguientes tablas:
EP EF
Q0 Q1 I=0 α =0 I=0 α =1 I=1 α =0 I=1 α =1
0 0 0 0 0 0 0 1 0 1
0 1 0 1 1 0 0 1 1 0
1 0 0 0 0 0 0 0 0 0
SEÑALES DE CONTROL
0 1 0 1 0 0 0 0 1
1 0 0 0 0 0 0 1 1
X X X X 1 1 1 X X
Con esta información obtenida de los análisis se obtiene la FSM:
Fig4. Modelo implementación directa UC
P2
P1
P1 P1 P1 P1 P1 P1 P1 P1 P3
S M S1 S0
R1 R0 R1 P W
De igual forma hay que tener en cuenta que para realizar la sumatoria se debe agregar otro
circuito adicional el cual es:
Fig5. Circuito contador del CD
Los códigos en VHDL para implementar la UC y el CD se muestran a continuación:
Unidad de Control
Fig6. Código VHDL UC
Para la implementación del CD se requirieron 7 archivos (uno para el Mux 2 a 1, uno para
la ALU, uno para el Registro del camino de datos, uno para el three state, uno para el
contador de las 10 iteraciones, uno para el Package que contuviese todos los componentes
anteriores y uno para la unidad del CD como tal) los cuales se muestran a continuación:
Mux 2 a 1
ALU
Fig7. Código VHDL Mux 2 a 1
Fig9. Código VHDL ALU
Three State
Fig8. Código VHDL Three State
Registro Camino de Datos
Fig10. Código VHDL Registro Acumulador
Contador del CD
Fig11. Código VHDL Contador del CD
Package componentes del CD
Fig12. Código VHDL Package
componentes del CD
Camino de Datos
Fig13. Código VHDL CD
Finalmente para unir la Unidad de Control y el camino de Datos, se requirió de otro archivo VHDL y se obtuvo el sumador de 10
números; dicho archivo es el siguiente:
Sumador 10 números Unión UC/CD
Fig14. Código VHDL Sumador 10 números unión UC/CD
De la Unidad de Control, el Camino de Datos y la unión de ambos, se obtuvo una simulación (para un total de 3 simulaciones). Dichas
simulaciones fueron las siguientes:
Simulación Unidad de Control
En está simulación se pueden apreciar los 3 estados de la Unidad de Control para las diferentes condiciones (señalados con los 3
cursores amarillo, azul y naranja). En el lugar del cursor amarillo se presenta que el reset es igual a 1 por lo tanto la UC hace final a 0 y
la señal de control “010100001”, luego start se hace 1 y la UC pasa al siguientes estado que se señala con el cursor azul, allí final es
igual a cero y la señal de control es “100000011”, luego alpha es cero por lo que se mantiene este último estado. Finalmente, cuando
alpha se hace 1 y start está en 1, la UC pasa al estado 2 donde final se hace 1 y la señal de control “XXXX111XX”.
Simulación Camino de Datos
En la simulación se pueden apreciar los mismos 3 valores de la señal de control de la UC mostrada anteriormente. Para cada señal de
control el CD realiza determinada acción. Primero, en el cursor amarillo, para la SC “010100001”, el CD hace la señal de estado SE
cero y la salida alta impedancia o circuito abierto. Cuando se cambia la Sc por “100000011” en el cursor azul, el CD mantiene la SE en
cero, la salida sigue siendo alta impedancia pero comienza a realizar la sumatoria de los números ingresados. Se ingresan 10 números
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9) durante 10 pulsos de reloj y al onceavo pulso se obtiene la salida al ingresar la SC “XXXX111XX”. La
sumatoria de los números del 0 al 9 da como resultado 45 que en binario a 10 bits sería “0000101101” que es el resultado obtenido
donde se señala con el cursor naranja.
Finalmente se simula el sumador de 10 números Unión UC/CD para comprobar el correcto funcionamiento del conjunto ya que se
comprobó que tanto la UC como el CD funcionaban de buena manera; la simulación obtenida es la siguiente:
Simulación Sumador 10 números Unión UC/CD
En el cursor amarillo se puede ver el primer estado que se inicializa con el reset en 1 y que hace final a cero y la salida alta impedancia.
Este estado se mantiene con start en 0. En el cursor azul o segundo estado, cuando start se hace 1 se comienzan a ingresar los valores a
sumar; estos se ingresan durante 10 pulsos (enteros del 0 al 9); y se ve que final se mantiene en 0 y la salida en alta impedancia.
Después de pasados los 10 pulsos, en el pulso siguiente, cuando se cambia al 3 estado, se ve que final se hace 1 y que la salida muestra
el resultado de la sumatoria que es el mismo del caso anterior o sea 45 que en binario es “0000101101” que es lo mismo que aparece
en la simulación. Después del estado 3 la FSM se reinicia y vuelve al estado cero haciendo final a 0 y la salida alta impedancia.
SÍNTESIS EN ISE
Los diagramas estructurales de la UC, Cd y el sumador obtenidos en ISE fueron los siguientes:
Fig15. Síntesis ISE de la UC
Fig16. Síntesis ISE del CD
Fig17. Síntesis ISE Sumador de 10 Números