Proyecto Final

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 43

Universidad Tecnológica de Panamá

Facultad De Ingeniería Eléctrica

Licenciatura en ingeniería electrónica y telecomunicaciones

1IT-141

Microprocesadores

Proyecto Final

I Semestre

Profesor: Medardo Logreira

Estudiantes:
Gabriella Lovato 8-960-537
Ricardo Ogilvie 8-966-397
Emelina Peñalba 9-758-1405
Rashell De La Lastra 9-757-1878

Fecha de entrega: 19 de julio de 2022.

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.

Arquitectura externa de SIT

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.

nff : Bandera de resultado negativo, nff = 1 si como resultado de una


operación lógica o aritmética el bit AC[0] = 1. Si la operación es de
comparación entonces nff = 1 si AC es el menor. Esta bandera es importante
si la aplicación requiere números con signo.

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.

vff : Bandera de desbordamiento , vff = 1 si el resultado de una operación de


suma de dos números de igual signo posee signo diferente, esta condición
se señala como un desbordamiento de la capacidad de representación de
números con signo.

iff : Bandera de control de la interrupción, cuando el programador establece


iff se activa el reconocimiento de interrupciones a través de la entrada IRQ.
Si por el contrario se borra esta bandera entonces el micro no reconoce
solicitudes de interrupción en IRQ.

Instrucciones de SIT

Descripción AHPL
1. MA <= 10$1023; IFF <= \0\.

2. ADRBUS = MA; RD = \1\ ; MD <= DBUS;


7
=>(^READY)/(2).
3. ABUS = MD; OBUS = ABUS ; PC <= OBUS[6:15].
"INICIA EL CICLO DE LECTURA DE INST."
4. BBUS = 6$0,PC; OBUS = BBUS ; MA <= OBUS[6:15];
=>(IRQ&IFF)/(56). "MA <= PC"
5. ADRBUS = MA; RD = \1\ ; MD <= DBUS; "Lee INSTRUCCIÓN"
=>(^READY)/(5).
6. BBUS = 6$0,PC; OBUS = INC(BBUS); PC <= OBUS[6:15].

7. ABUS = MD; OBUS = ABUS; IR <= OBUS. "IR <= MD"


"Inicia el ciclo de ejecución y resolución de AM"
8. =>(^IR[3])/(21). "IR3=0 para las instrucciones de registro"

Secuencia de control para lectura de OV


9. NODELAY
ABUS = IR; OBUS = ABUS; MA <= OBUS[6:15]; "MA <= IR[6:15] inmediato"
=>(IR[4])/(12).
10. NODELAY
=>(^IR[5])/(16). "LectOV"
11. ABUS = 6$0,MA; BBUS = 6$0,IX; CIN = \0\;
OBUS = ADD[1:16](ABUS;BBUS;CIN); MA <= OBUS[6:15];
=>(16). "Directo e indexado: done"
12. NODELAY
=>(^IR[5])/(14).
13. ABUS = ^(6$0)&MA[0],MA; OBUS = ABUS; MD <= OBUS;
=>(20). "Inmediato: done"
14. ADRBUS = MA; RD = \1\; MD <= DBUS;
=>(^READY)/(14).
15. ABUS = MD; OBUS = ABUS; MA <= ABUS[6:15];

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.

18. ADRBUS = MA; WR = \1\; DBUS = MD;


=>(^READY,READY)/(18,4). "STA: done"
19. ADRBUS = MA; RD = \1\; MD <= DBUS;
=>(^READY)/(19).
"Lectura de operando: done"
20. BBUS = AC; CIN = (\1\!CFF!^CFF)*(^IR[1]&^IR[2],IR[1],IR[2]) ;
ABUS = (MD!^MD)*(IR[0]+IR[1],^IR[0]&^IR[1]);
OBUS = ((ADD[1:16](ABUS;BBUS;CIN))!(ABUS@BBUS)!(ABUS+BBUS)!
(ABUS&BBUS)!ABUS)*(^IR[0], IR[1]&IR[2],IR[0]&IR[1]&^IR[2],
IR[0]&^IR[1]&IR[2], IR[0]&^IR[1]&^IR[2]);
AC*(IR[0]+IR[1]+IR[2]) <= OBUS;
CFF*(^IR[0]) <= ADD[0](ABUS;BBUS;CIN); NFF <= OBUS[0];
ZFF <=^(+/OBUS);
VFF*(^IR[0])<= ^OBUS[0]&ABUS[0]&BBUS[0]+OBUS[0]&^ABUS[0]&^BBUS[0];
=>(4). "Instrucciones de memoria: done"
Instrucciones de Registro
21. NODELAY "Inicio de las instrucciones de registro"
=>(^(^IR[0]&^IR[1]&IR[2]))/(24). "Otras instrucciones de registro"
22. BBUS = (AC!^(6$0)&IX[0],IX!^(6$0)&SP[0],SP)*(^(+/IR[12:15]), IR[15],
IR[14]);
ABUS = ^(12$0)&IR[12],IR[12:15];
OBUS = (ABUS!BBUS)*(IR[11],^IR[11]); MD <= OBUS.
23. BBUS = (AC!^(6$0)&IX[0],IX!^(6$0)&SP[0],SP)*(^(+/IR[7:10]),IR[10],IR[9]);

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"

39. SHC <= DEC2(IR[12:15]). "SHC queda fuera de la estructura de buses"

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

En este trabajo pudimos experimentar la realización de un microprocesador de 64


bits, con la ayuda de la herramienta de simulación de Xilinx, de esta manera
pusimos en práctica todos los conocimientos adquiridos durante el semestre en
clases y afianzar ciertos conocimientos de materias previas.
Cabe resaltar que fue de suma importancia la creación de las unidades de control y
de datos, puesto que una controla el paso de las señales o datos y la otra controla
la otra controla la información que se va a enviar, de esta manera se garantiza el
buen funcionamiento del microprocesador.

Recomendaciones

• Familiarizarse de manera correcta con la codificación en VHDL


• Chequear antes de simular la sintaxis de los códigos realizados.
• Cuando se asignen los nombres a las entradas y salidas y vemos que coinciden
debemos colocar que se unan los valores de ambas.
• Tener cuidado con las librerías que se van a asignar.

43

También podría gustarte