Proyecto Final
Proyecto Final
Proyecto Final
1IT-141
Microprocesadores
Proyecto Final
I Semestre
Estudiantes:
Gabriella Lovato 8-960-537
Ricardo Ogilvie 8-966-397
Emelina Peñalba 9-758-1405
Rashell De La Lastra 9-757-1878
1
Introducción
Se denomina microprocesador al circuito electrónico que procesa la energía
necesaria para que el dispositivo electrónico en que se encuentra funcione,
ejecutando los comandos y los programas adecuadamente. La Unidad Central de
Procesos (CPU) de una computadora es un ejemplo de un microprocesador.
Este componente electrónico forma parte de la tarjeta madre de una computadora
y se caracteriza por ser un circuito integrado con miles y, a veces, hasta con millones
de transistores.
Dicho componente electrónico es el encargado de procesar y ejecutar las
instrucciones codificadas en números binarios. El microprocesador es comúnmente
conocido como la Unidad Central de Procesos (CPU) de los diferentes dispositivos
electrónicos, pero también contienen procesadores otros dispositivos como los
discos duros.
Un microprocesador puede operar con una o más CPU (Unidades Centrales de
Procesamiento), constituidas cada una por registros, una unidad de control, una
unidad aritmético-lógica y una unidad de cálculo en coma flotante (o coprocesador
matemático).
Los microprocesadores se pueden distinguir por su velocidad interna y externa, que
también determina los bits procesados por segundo, así como la capacidad de
acceso a la memoria y el repertorio de instrucciones y programas a nivel informático
que se pueden procesar.
Gracias al avance tecnológico y científico, hoy en día un microprocesador es capaz
de recibir las instrucciones, decodificarlas, buscar los programas compatibles para
ejecutarlas, las ejecuta, analiza los datos y muestra los resultados de dicho proceso
en 1 segundo o menos.
2
Índice
1. Set de Instrucciones Típico (SIT)
2. Descripción AHPL
3. Unidad de Control
4. Unidad de Datos
5. Simulación Final
6. Conclusión
7. Recomendaciones
3
Set de Instrucciones Típico (SIT)
Descripción del Hardware de SIT
• Lectura de la Instrucción.
• Identificación del tipo de instrucción.
• Resolución del modo de direccionamiento para las instrucciones de memoria.
• Ciclo de ejecución para las instrucciones de memoria.
• Ciclo de ejecución para las instrucciones de control de programa.
• Ciclo de ejecución para las instrucciones de registro.
• Ciclo de ejecución para las instrucciones especiales.
4
Arquitectura interna de SIT
Registros Internos
Registro de la instrucción (IR):
Cuando el microprocesador lee la instrucción la deposita en el registro de la
instrucción, Las salidas del registro de instrucción tienen mayor injerencia en la
unidad de control ya que dependiendo de la instrucción la secuencia de control sigue
un flujo de transferencias específico. Este registro es transparente ya que no
aparece en el juego de instrucciones del microprocesador.
Registro de datos (MD):
Registro de 16 bits usado como auxiliar en las operaciones lógicas y aritméticas
como interfaz de datos entre el microprocesador y la memoria. Este registro es de
uso interno por lo que no aparece en el set de instrucciones del microprocesador.
Registro de dirección (MA):
Registro de 10 bits donde se almacena la dirección del ciclo de lectura o de escritura,
las salidas de este registro tienen conexión directa al bus de direcciones del
microprocesador.
5
Acumulador (AC):
Registro de 16 bits usado para las instrucciones lógicas y aritméticas del
microprocesador.
Puntero de Pila (SP):
Registro de 10 bits usado para el direccionamiento de la pila. Existe una sección
de la memoria que se reserva para la pila, esta sección de memoria es
direccionada usando el valor almacenado en el SP. El SP contiene la dirección
del último valor depositado en la pila. El cual usualmente es identificado como el
TOS. El puntero de pila es utilizado por las instrucciones de PUSH y de POP.
Contador de Programa (PC):
Registro de 10 bits que posee en todo momento la dirección de la próxima
instrucción que será ejecutada por el microprocesador. Cada vez que el
microprocesador lee una instrucción, usa el valor almacenado en este registro
como dirección de lectura. Una vez que la instrucción es leída, el PC se
incrementa (PC <= PC+1), de ahí su identificación como Contador.
Índice (IX):
Registro de 10 bits usado para el direccionamiento de un operando ubicado en
la memoria. El registro Índice puede tener a la mano la dirección del operando
para que pueda ser fácilmente accedido por el microprocesador. El registro
índice también puede tener un desplazamiento que se suma a una dirección
base dando como resultado la dirección física de operando.
Banderas
La bandera o flag se refiere a uno o más bits que se utilizan para almacenar un valor
binario o código que tiene asignado un significado.
cff : Bandera de acarreo, cff = 1 si el resultado de una suma o resta genera
un bit adicional. cff se puede usar para comparar con AC así cff = 1 si AC es
superior o igual.
6
zff : Bandera de resultado cero, zff = 1 si como resultado de una operación
lógica o aritmética AC = 0. Si la operación es de comparación entonces zff =
1 si ambos valores son iguales.
Instrucciones de SIT
Descripción AHPL
1. MA <= 10$1023; IFF <= \0\.
8
=>(11).
Ciclo de ejecución
16. NODELAY "Inicia Lectura de OV"
=>(^(^IR[0]&IR[1]&IR[2]))/(19).
17. BBUS = AC; OBUS = BBUS; MD <= OBUS.
9
CIN= (\1\!CFF!^CFF)*(^IR[5]&^IR[6],IR[5],IR[6]);
ABUS = (MD!^MD)*(IR[4]+IR[5],^IR[4]&^IR[5]);
OBUS = ((ADD[1:16](ABUS;BBUS;CIN))!(ABUS@BBUS)!(ABUS+BBUS)!
(ABUS&BBUS)!ABUS)*
(^IR[4],IR[5]&IR[6],IR[4]&IR[5]&^IR[6], IR[4]&^IR[5]&IR[6],
IR[4]&^IR[5]&^IR[6]);
AC*((IR[4]+IR[5]+IR[6])&(^(+/IR[7:10]))) <= OBUS;
IX*((IR[4]+IR[5]+IR[6])&IR[10])<= OBUS[6:15];
SP*((IR[4]+IR[5]+IR[6])&IR[9])<= OBUS[6:15];
CFF*(^IR[4]) <= ADD[0](ABUS;BBUS;CIN); NFF <= OBUS[0];
ZFF <=^(+/OBUS);
VFF*(^IR[4])<= ^OBUS[0]&ABUS[0]&BBUS[0]+OBUS[0]&^ABUS[0]&^BBUS[0];
=>(4). "Instrucciones de registro de dos direcciones listas"
Instrucciones de Ramificación
24. NODELAY
=>(^(&/IR[0:2]))/(31). "Salta a instrucciones especiales"
25. NODELAY
=>(^IR[4],IR[4]&IR[7],IR[4]&^IR[7])/(26,28,27).
26. NODELAY
=>(^(+/(DCD[0:7](IR[4:7])&(VFF,^VFF,ZFF,^ZFF,CFF,^CFF,NFF,^NFF))))/(4).
27. BBUS = 6$0,PC; ABUS = ^(8$0)&IR[8],IR[8:15]; CIN = \0\;
OBUS = ADD[1:16](ABUS;BBUS;CIN) ; PC <= OBUS[6:15];
=> (4).
28. BBUS = 6$0,SP; OBUS = DEC(BBUS) ; MA <= OBUS[6:15]; SP <=
OBUS[6:15].
29. BBUS = 6$0,PC; OBUS = BBUS ; MD <= OBUS.
30. ADRBUS = MA ; DBUS = MD ; WR = \1\;
=>(^READY, READY)/(30,27).
Instrucciones de control
10
31. NODELAY
=>(^(^IR[0]&IR[1]&^IR[2]))/(41).
"A las instrucciones de pila"
32. NODELAY
=>(+/IR[4:5])/(34).
33. IFF <= IR[6];
=>(4).
34. NODELAY
=>(IR[4])/(36).
35. CFF <= IR[6];
=>(4).
36. NODELAY
=>(IR[5])/(39).
37. NODELAY
=>(IR[6])/(4).
38. =>(^IRQ,IRQ)/(38,4). "Ejecuta Wait"
40. BBUS = AC ;
OBUS[0] = (BBUS[1]!BBUS[0]!CFF!BBUS[15]) *
(^IR[9],^IR[7]&^IR[8]&IR[9],IR[7]&IR[8]&IR[9],
IR[7]&^IR[8]&IR[9]);
OBUS[15] = (BBUS[14]!CFF!BBUS[0])*(
IR[9],^IR[9]&(^IR[7]+IR[8]),IR[7]&^IR[8]&^IR[9]);
OBUS[1:14] = (BBUS[0:13]!BBUS[2:15])*( IR[9],^IR[9]) ;
AC <= OBUS ; SHC <= DEC2(SHC);
CFF <= (BBUS[15]!CFF!BBUS[0])*(IR[9], ^IR[9]&^IR[7], ^IR[9]&IR[7]);
=>((+/SHC),^(+/SHC))/(40,4).
Instrucciones de pila
11
41. NODELAY
=>(^(IR[0]&^IR[1]&^IR[2]),(IR[0]&^IR[1]&^IR[2]&IR[6]),
(IR[0]&^IR[1]&^IR[2]&^IR[6]))/(53,45,42).
"Inicia Instrucciones de pila"
42. BBUS[6:15] =
(AC[6:15]!IX!SP!PC!5$0,VFF,CFF,NFF,ZFF,IFF)*(^(+/IR[12:15]),
IR[15], IR[14], IR[13], IR[12]);
BBUS[0:5] = (6$0!AC[0:5])*((+/IR[12:15]), ^(+/IR[12:15]));
OBUS = BBUS; MD <= OBUS.
43. BBUS = 6$0,SP; OBUS = DEC(BBUS) ;MA <= OBUS[6:15]; SP <=
OBUS[6:15].
44. ADRBUS = MA ; DBUS = MD ; WR = \1\;
=>(^READY,READY)/(44,4). "PSH lista"
45. "Instrucciones que extraen de la pila"
BBUS = 6$0,SP; OBUS = BBUS; MA <= OBUS[6:15].
46. BBUS = 6$0,SP; OBUS = INC(BBUS); SP <= OBUS[6:15].
47. ADRBUS = MA ; MD <= DBUS ; RD = \1\;
=>(^READY)/(47). "Dato leido"
48. ABUS = MD; OBUS = ABUS;
AC*(^(+/IR[12:15])) <= OBUS;
IX*(IR[15]) <= OBUS[6:15];
SP*(IR[14]) <= OBUS[6:15];
PC*(IR[13]) <= OBUS[6:15];
(VFF,CFF,NFF,ZFF,IFF)*(IR[12]) <= OBUS[11:15];
=>(^IR[5])/(4).
49. BBUS = 6$0,SP; OBUS = BBUS; MA <= OBUS[6:15].
50. BBUS = 6$0,SP; OBUS = INC(BBUS); SP <= OBUS[6:15].
51. ADRBUS = MA ; MD <= DBUS ; RD = \1\;
=>(^READY)/(51). "Dato leido"
52. ABUS = MD; OBUS = ABUS; (VFF,CFF,NFF,ZFF,IFF)*(IR[12]) <=
OBUS[11:15];
12
=>(4).
53. NODELAY
=>(^(IR[0]&IR[1]&^IR[2]))/(55).
54. ABUS = 6$0,IR[6:15]; OBUS = ABUS; PC<= OBUS[6:15];
=>(4).
55. NOINST = \1\; ADRBUS = MA;
=>(55).
56. BBUS = 6$0,SP; OBUS = DEC(BBUS); MA <= OBUS[6:15];
SP <= OBUS[6:15].
57. OBUS = 11$0,VFF,CFF,NFF,ZFF,IFF; MD <= OBUS.
58. ADRBUS = MA; DBUS = MD ; WR = \1\;
=>(^READY)/(58).
59. BBUS = 6$0,SP; OBUS = DEC(BBUS); MA <= OBUS[6:15];
SP <= OBUS[6:15].
60. BBUS = 6$0,PC; OBUS = BBUS; MD <= OBUS.
61. ADRBUS = MA; DBUS = MD ; WR = \1\;
=>(^READY)/(61).
62. MA <= 10$1022; IFF <= \0\.
63. ADRBUS = MA; RD = \1\; MD <= DBUS;
=>(^READY)/(63).
64. BBUS = MD; OBUS = BBUS; PC <= OBUS ;
=>(4).
ENDSEQUENCE
CONTROLRESET(1).
END.
13
Unidad de Control
14
15
16
17
18
19
20
Unidad de datos
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Esquemático Final
40
Simulación Final
Para la simulación final se desarrollo el siguiente código vhdl.
41
Simulación
42
Conclusión
Recomendaciones
43