Documentos de Académico
Documentos de Profesional
Documentos de Cultura
RAM
ROM
CPU
E/S
RAM
ROM
CAN
Comps Analgicos
Int LCD
instrucciones datos
Interfaz E/S
bus de datos
D[(n-1)..0] D[(n-1)..0] D[(n-1)..0]
D[(n-1)..0]
CPU
A[(m-1)..0]
ROM
A[(m-1)..0]
RAM
A[(m-1)..0]
E/S
A[(m-1)..0]
bus de control
m
bus de direcciones
BUS DE DATOS
BUS DE DIRECCIONES
bit 15
bit 7
bit 0
bit 0
CPU
datos/instrucciones direcciones control
ROM
RAM
E/S
Ms de un ciclo de reloj por instruccin Repertorio de instrucciones complejo (CISC) Normalmente mayor capacidad de direccionamiento y de pila
Arquitectura Harvard
(C de Microchip, Atmel)
ROM
CPU
RAM
E/S
Arquitectura Harvard
(C de Microchip, Atmel)
bit 7 bit 0
ROM
CPU
RAM
E/S
bit 13
Instrucciones (programa) direcciones de programa control Ej: en un C de 14 bits de ancho de instruccin (PIC 16xxx): 6 bits para cdigo de instruccin 8 bits para operandos constantes 8 bits para direcciones de operandos (RAM-E/S)
bit 0
CPU
ROM
RAM
E/S
1
+ RE
selA
1 A
ALU
m
ckCP
CP
ckRD
RD
ckRI
RI
ckAC
AC
m
selB
0 1 B
n
ckCP ckRD ckRI ckAC selA selB
Unidad de Control
R/W
bus de Direcciones
Sintaxis
Explicacin
Carga constante k en el acumulador AC. El segundo byte es k. ACk AND bit a bit entre el contenido de AC y la constante k. El segundo byte es k. El resultado se carga en AC. ACAC and k OR bit a bit entre el contenido de AC y la constante k. El segundo byte es k. ACAC or k Resta al contenido de AC la constante k. El segundo byte es k. ACAC k Suma aritmtica entre el contenido de AC y la constante k. El segundo byte es k. ACAC + k Salto incondicional del programa. D es la direccin donde contina la ejecucin del programa. CP D
2 2 2 2 2 2
SALTAZ
SALTAZ D
Salto de programa si el resultado de la ltima operacin de la ALU es cero (bit Z del RE activado). D es la direccin donde contina la ejecucin del programa. CP D si Z=1
Salto de programa si el resultado de la ltima operacin de la ALU es negativo (bit N del RE activado). D es la direccin donde contina la ejecucin del programa. CP D si N=1
SALTAN
SALTAN D
Sintaxis
Explicacin
Carga variable X en el acumulador AC. El segundo byte es la direccin de N. AC [X] AND bit a bit entre AC y la variable X. El segundo byte es la direccin de X. El resultado se carga en AC. ACAC and [X] OR bit a bit entre AC y la variable X. El segundo byte es la direccin de X. El resultado se carga en AC. ACAC or [X] Resta al contenido de AC la variable X.El segundo byte es la direccin de X. El resultado se carga en AC. ACAC - [X] Suma aritmtica entre el contenido de AC y la variable N. El segundo byte es la direccin de N. El resultado queda en AC. ACAC + [N]
LEE AND
OR
2 OR [X]
RESTA
C SUMA
D NOT
E F ESCRIBE NOP
1 NOT
2 ESCRIBE [X] 1 NOP
CPU
ROM
RAM
E/S
RESET
00
1
+ RE ALU
00 06 0C 81 0E 82
01 02 03 04
selA
1 A
ckCP
CP
ckRD
RD
ckRI
RI
ckAC
AC
05
selB
1 B
Unidad de Control
81
R/W
15 ??
X Y
82
bus de Direcciones
00 LEEC 01 ANDC 02 ORC 03 REST AC 04 SUMA C 05 SALT A 06 SALT AZ 07 SALT AN 08 LEE 09 AND 0A OR 0B REST A 0C SUMA 0D NOT 0E ESCR IBE 0F NOP
1 - Un reset pone al Contador de programa CP en cero (inicio de programa). La seal RW est en 1, por lo que la ROM/RAM es leda
bus de Datos
RESET
00
1
+ RE ALU
00 06 0C 81 0E 82
01 02 03 04
selA
ckCP
00
ckRD
RD
ckRI
RI
ckAC
AC
05
selB
Unidad de Control
81
R/W
15 ??
X Y
82
bus de Direcciones
00 LEEC 01 ANDC 02 ORC 03 REST AC 04 SUMA C 05 SALT A 06 SALT AZ 07 SALT AN 08 LEE 09 AND 0A OR 0B REST A 0C SUMA 0D NOT 0E ESCR IBE 0F NOP
1b Por el Bus de direcciones se presenta el valor de CP (00). La RAM/ROM entrega en el bus de datos el valor que tiene en la posicin 00, en este caso 00, que es la instruccin LEEC (leer constante)
bus de Datos
RESET
00
1
+ RE ALU
00 01 02 03 04
00 06 0C 81 0E 82
selA
ckCP
00
ckRD
RD
ckRI
RI
ckAC
AC
05
selB
Unidad de Control
81
R/W
15 ??
X Y
82
00
bus de Direcciones
00 LEEC 01 ANDC 02 ORC 03 REST AC 04 SUMA C 05 SALT A 06 SALT AZ 07 SALT AN 08 LEE 09 AND 0A OR 0B REST A 0C SUMA 0D NOT 0E ESCR IBE 0F NOP
2 Este valor es almacenado en el Registro de Instrucciones RI. La Unidad de Control decodifica la instruccin, y la ALU se pone en modo LEER (deja pasar el dato presente en su rama derecha)
bus de Datos
RESET
00
1
+ RE LEE
00 01 02 03 04
00 06 0C 81 0E 82
selA
ckCP
00
ckRD
RD
ckRI
00
ckAC
AC
05
selB
Unidad de Control
81
R/W
15 ??
X Y
82
00
bus de Direcciones
00 LEEC 01 ANDC 02 ORC 03 REST AC 04 SUMA C 05 SALT A 06 SALT AZ 07 SALT AN 08 LEE 09 AND 0A OR 0B REST A 0C SUMA 0D NOT 0E ESCR IBE 0F NOP
bus de Datos
RESET
06
1
+ RE LEE
00 01 02 03 04
00 06 0C 81 0E 82
selA
ckCP
01
ckRD
RD
ckRI
00
ckAC
AC
05
selB
Unidad de Control
81
R/W
15 ??
X Y
82
01
bus de Direcciones
00 LEEC 01 ANDC 02 ORC 03 REST AC 04 SUMA C 05 SALT A 06 SALT AZ 07 SALT AN 08 LEE 09 AND 0A OR 0B REST A 0C SUMA 0D NOT 0E ESCR IBE 0F NOP
bus de Datos
RESET
06
1
+ RE LEE
00 01 02 03 04
00 06 0C 81 0E 82
selA
ckCP
01
ckRD
RD
ckRI
00
ckAC
AC
05
selB
Unidad de Control
81
R/W
15 ??
X Y
82
01
bus de Direcciones
00 LEEC 01 ANDC 02 ORC 03 REST AC 04 SUMA C 05 SALTA 06 SALTA Z 07 SALTA N 08 LEE 09 AND 0A OR 0B REST A 0C SUMA 0D NOT 0E ESCRI BE 0F NOP
bus de Datos
RESET
06
1
+ RE LEE
00 01 02 03 04
00 06 0C 81 0E 82
selA
ckCP
01
ckRD
RD
ckRI
00
ckAC
06
05
selB
Unidad de Control
81
R/W
15 ??
X Y
82
01
bus de Direcciones
00 LEEC 01 ANDC 02 ORC 03 REST AC 04 SUMA C 05 SALTA 06 SALTA Z 07 SALTA N 08 LEE 09 AND 0A OR 0B REST A 0C SUMA 0D NOT 0E ESCRI BE 0F NOP
4b Una vez almacenada tambin est presente en la rama izquierda de la ALU y en la entrada del buffer Triestate
bus de Datos
RESET
06
1
+ RE LEE
00 01 02 03 04
00 06 0C 81 0E 82
selA
ckCP
01
ckRD
RD
ckRI
00
ckAC
06
05
selB
Unidad de Control
81
R/W
15 ??
X Y
82
01
bus de Direcciones
00 LEEC 01 ANDC 02 ORC 03 REST AC 04 SUMA C 05 SALT A 06 SALT AZ 07 SALT AN 08 LEE 09 AND 0A OR 0B REST A 0C SUMA 0D NOT 0E ESCR IBE 0F NOP
bus de Datos
RESET
0C
1
+ RE LEE
00 01 02 03 04
00 06 0C 81 0E 82
selA
ckCP
02
ckRD
RD
ckRI
00
ckAC
06
05
selB
Unidad de Control
81
R/W
15 ??
X Y
82
02
bus de Direcciones
00 LEEC 01 ANDC 02 ORC 03 REST AC 04 SUMA C 05 SALT A 06 SALT AZ 07 SALT AN 08 LEE 09 AND 0A OR 0B REST A 0C SUMA 0D NOT 0E ESCR IBE 0F NOP
5b En esa posicin est el CDIGO de la siguiente instruccin en este caso 0C (Sumar variable)
bus de Datos
RESET
0C
1
+ RE LEE
00 01 02 03 04
00 06 0C 81 0E 82
selA
ckCP
02
ckRD
RD
ckRI
00
ckAC
06
05
selB
Unidad de Control
81
R/W
15 ??
X Y
82
02
bus de Direcciones
00 LEEC 01 ANDC 02 ORC 03 REST AC 04 SUMA C 05 SALT A 06 SALT AZ 07 SALT AN 08 LEE 09 AND 0A OR 0B REST A 0C SUMA 0D NOT 0E ESCR IBE 0F NOP
6 Este valor es almacenado en el Registro de Instrucciones RI. La Unidad de Control decodifica la instruccin, y la ALU se pone en modo SUMAR (suma aritmtica de ambas ramas)
bus de Datos
RESET
0C
1
+ RE SUMA
00 01 02 03 04
00 06 0C 81 0E 82
selA
ckCP
02
ckRD
RD
ckRI
0C
ckAC
06
05
selB
Unidad de Control
81
R/W
15 ??
X Y
82
02
bus de Direcciones
00 LEEC 01 ANDC 02 ORC 03 REST AC 04 SUMA C 05 SALT A 06 SALT AZ 07 SALT AN 08 LEE 09 AND 0A OR 0B REST A 0C SUMA 0D NOT 0E ESCR IBE 0F NOP
bus de Datos
RESET
81
1
+ RE
00 01
00 06 0C 81 0E 82
06
SUMA
02 03 04
selA
ckCP
03
ckRD
RD
ckRI
00
ckAC
06
05
selB
Unidad de Control
81
R/W
15 ??
X Y
82
03
bus de Direcciones
00 LEEC 01 ANDC 02 ORC 03 REST AC 04 SUMA C 05 SALT A 06 SALT AZ 07 SALT AN 08 LEE 09 AND 0A OR 0B REST A 0C SUMA 0D NOT 0E ESCR IBE 0F NOP
bus de Datos
RESET
81
1
+ RE
00 01
00 06 0C 81 0E 82
06
SUMA
02 03 04
selA
ckCP
03
ckRD
RD
ckRI
00
ckAC
06
05
selB
Unidad de Control
81
R/W
15 ??
X Y
82
03
bus de Direcciones
00 LEEC 01 ANDC 02 ORC 03 REST AC 04 SUMA C 05 SALT A 06 SALT AZ 07 SALT AN 08 LEE 09 AND 0A OR 0B REST A 0C SUMA 0D NOT 0E ESCR IBE 0F NOP
bus de Datos
RESET
81
1
+ RE SUMA
00 01 02 03 04
00 06 0C 81 0E 82
selA
ckCP
03
ckRD
81
ckRI
00
ckAC
06
05
selB
Unidad de Control
81
R/W
15 ??
X Y
82
03
bus de Direcciones
00 LEEC 01 ANDC 02 ORC 03 REST AC 04 SUMA C 05 SALT A 06 SALT AZ 07 SALT AN 08 LEE 09 AND 0A OR 0B REST A 0C SUMA 0D NOT 0E ESCR IBE 0F NOP
7 Moviendo selB el multiplexor inferior deja pasar el valor de RD (81) al bus de direcciones.
bus de Datos
RESET
15
1
+ RE
00 01
00 06 0C 81 0E 82
06
SUMA
02 03 1B 04 05
selA
ckCP
03
ckRD
81
ckRI
00
ckAC
06
selB
Unidad de Control
81
R/W
15 ??
X Y
82
81
bus de Direcciones
00 LEEC 01 ANDC 02 ORC 03 REST AC 04 SUMA C 05 SALT A 06 SALT AZ 07 SALT AN 08 LEE 09 AND 0A OR 0B REST A 0C SUMA 0D NOT 0E ESCR IBE 0F NOP
7b La Memoria presenta el valor almacenado en dicha posicin, en este caso 15. La ALU, que est en modo suma, presenta el resultado de la misma a la entrada de AC, en este caso 06+15=1B (hexadecimal)
bus de Datos
RESET
15
1
+ RE
00
00 06 0C 81 0E 82
06
SUMA
15
01 02 03
selA
1B
ckCP
04 05
03
ckRD
81
ckRI
00
ckAC
06
selB
Unidad de Control
81
R/W
15 ??
X Y
82
81
bus de Direcciones
00 LEEC 01 ANDC 02 ORC 03 REST AC 04 SUMA C 05 SALT A 06 SALT AZ 07 SALT AN 08 LEE 09 AND 0A OR 0B REST A 0C SUMA 0D NOT 0E ESCR IBE 0F NOP
bus de Datos
RESET
15
1
+ RE
00
00 06 0C 81 0E 82
06
SUMA
15
01 02 03
selA
1B
ckCP
04 05
03
ckRD
81
ckRI
00
ckAC
1B
selB
Unidad de Control
81
R/W
15 ??
X Y
82
81
bus de Direcciones
00 LEEC 01 ANDC 02 ORC 03 REST AC 04 SUMA C 05 SALT A 06 SALT AZ 07 SALT AN 08 LEE 09 AND 0A OR 0B REST A 0C SUMA 0D NOT 0E ESCR IBE 0F NOP
8b Una vez almacenado tambin est presente en la rama izquierda de la ALU y en la entrada del buffer Triestate
bus de Datos
RESET
15
1
+ RE
00
00 06 0C 81 0E 82
1B
SUMA
15
01 02 03 04
selA
ckCP
03
ckRD
81
ckRI
00
ckAC
1B
05
selB
Unidad de Control
81
R/W
15 ??
X Y
82
81
bus de Direcciones
00 LEEC 01 ANDC 02 ORC 03 REST AC 04 SUMA C 05 SALT A 06 SALT AZ 07 SALT AN 08 LEE 09 AND 0A OR 0B REST A 0C SUMA 0D NOT 0E ESCR IBE 0F NOP
9 El contador de programa CP se incrementa y el selector selB vuelve a dejar pasar el CP al bus de direcciones por lo que ahora se direcciona la posicin 04 de la memoria
bus de Datos
RESET
0E
1
+ RE SUMA
00 01 02 03 04
00 06 0C 81 0E 82
selA
ckCP
04
ckRD
81
ckRI
00
ckAC
1B
05
selB
Unidad de Control
81
R/W
15 ??
X Y
82
04
bus de Direcciones
00 LEEC 01 ANDC 02 ORC 03 REST AC 04 SUMA C 05 SALT A 06 SALT AZ 07 SALT AN 08 LEE 09 AND 0A OR 0B REST A 0C SUMA 0D NOT 0E ESCR IBE 0F NOP
9b En esa posicin est el CDIGO de la siguiente instruccin en este caso 0E (Escribir variable)
bus de Datos
RESET
0E
1
+ RE SUMA
00 01 02 03 04
00 06 0C 81 0E 82
selA
ckCP
04
ckRD
81
ckRI
00
ckAC
1B
05
selB
Unidad de Control
81
R/W
15 ??
X Y
82
04
bus de Direcciones
00 LEEC 01 ANDC 02 ORC 03 REST AC 04 SUMA C 05 SALT A 06 SALT AZ 07 SALT AN 08 LEE 09 AND 0A OR 0B REST A 0C SUMA 0D NOT 0E ESCR IBE 0F NOP
10 Este valor es almacenado en el Registro de Instrucciones RI. La Unidad de Control decodifica la instruccin. La operacin que realice la ALU es indiferente.
bus de Datos
RESET
0E
1
+ RE ---
00 01 02 03 04
00 06 0C 81 0E 82
selA
ckCP
04
ckRD
81
ckRI
0E
ckAC
1B
05
selB
Unidad de Control
81
R/W
15 ??
X Y
82
04
bus de Direcciones
00 LEEC 01 ANDC 02 ORC 03 REST AC 04 SUMA C 05 SALT A 06 SALT AZ 07 SALT AN 08 LEE 09 AND 0A OR 0B REST A 0C SUMA 0D NOT 0E ESCR IBE 0F NOP
bus de Datos
RESET
82
1
+ RE ---
00 01 02 03 04
00 06 0C 81 0E 82
selA
ckCP
05
ckRD
81
ckRI
0E
ckAC
1B
05
selB
Unidad de Control
81
R/W
15 ??
X Y
82
05
bus de Direcciones
00 LEEC 01 ANDC 02 ORC 03 REST AC 04 SUMA C 05 SALT A 06 SALT AZ 07 SALT AN 08 LEE 09 AND 0A OR 0B REST A 0C SUMA 0D NOT 0E ESCR IBE 0F NOP
11b Esa posicin (82) es la DIRECCIN donde debe escribirse lo que contiene el acumulador
bus de Datos
RESET
82
1
+ RE ---
00 01 02 03 04
00 06 0C 81 0E 82
selA
ckCP
05
ckRD
81
ckRI
00
ckAC
1B
05
selB
Unidad de Control
81
R/W
15 ??
X Y
82
05
bus de Direcciones
00 LEEC 01 ANDC 02 ORC 03 REST AC 04 SUMA C 05 SALT A 06 SALT AZ 07 SALT AN 08 LEE 09 AND 0A OR 0B REST A 0C SUMA 0D NOT 0E ESCR IBE 0F NOP
bus de Datos
RESET
82
1
+ RE ---
00 01 02 03 04
00 06 0C 81 0E 82
selA
ckCP
05
ckRD
82
ckRI
00
ckAC
1B
05
selB
Unidad de Control
81
R/W
15 ??
X Y
82
05
bus de Direcciones
00 LEEC 01 ANDC 02 ORC 03 REST AC 04 SUMA C 05 SALT A 06 SALT AZ 07 SALT AN 08 LEE 09 AND 0A OR 0B REST A 0C SUMA 0D NOT 0E ESCR IBE 0F NOP
13 Moviendo selB el multiplexor inferior deja pasar el valor de RD (82) al bus de direcciones.
bus de Datos
RESET
??
1
+ RE ---
00 01 02 03 04
00 06 0C 81 0E 82
selA
ckCP
05
ckRD
82
ckRI
00
ckAC
1B
05
selB
1 B
Unidad de Control
81
R/W
15 ??
X Y
82
82
bus de Direcciones
00 LEEC 01 ANDC 02 ORC 03 REST AC 04 SUMA C 05 SALT A 06 SALT AZ 07 SALT AN 08 LEE 09 AND 0A OR 0B REST A 0C SUMA 0D NOT 0E ESCR IBE 0F NOP
14 Al poner la seal R/-W en 0 el buffer Triestate deja pasar el valor del acumulador (1B) al Bus de Datos. Al mismo tiempo pone a la RAM en modo escritura. El dato (1B) se escribe en la posicin 82
bus de Datos
RESET
1B
1
+ RE ---
00 01 02 03 04
00 06 0C 81 0E 82
selA
ckCP
05
ckRD
82
ckRI
00
ckAC
1B
05
selB
1 B
Unidad de Control
81
R/W
15 1B
X Y
82
82
bus de Direcciones
00 LEEC 01 ANDC 02 ORC 03 REST AC 04 SUMA C 05 SALT A 06 SALT AZ 07 SALT AN 08 LEE 09 AND 0A OR 0B REST A 0C SUMA 0D NOT 0E ESCR IBE 0F NOP
SUMA [X]
12 13 14 15
(ACAC+b) 16 17 18
ESCRIBIR [Y]
19 20
([Y]AC)
clkRI
clkCP
clkRD selB
clkAC
R/W bus direcc bus datos
00
01 6
02
0C(suma)
03
81(dir B)
81
15(B)
04
0E(escrib)
05 82(dir C)
82
1B
06
....
08 (lee)
(ACa) 8
SUMA [b]
9 10 11 12 13 14
(ACAC+b) 15 16 17
ESCRIBIR [c]
18 19 20
([c]AC)
clkRI
clkCP
clkRD selB
clkAC
R/W bus direcc bus datos
00
01
81(dir A)
81 15
02
0C(suma)
03
82(dir B)
82
1A(B)
04
0E(escrib)
05
83(dir C)
83
2F
06
....
08 (lee)
Operacin de Salto
1-El CP apunta a la direccin 31 donde hay una instruccin de salto
bus de Datos
RESET
05
1
+ RE ALU
30 31 32 33 34 05 40 ---SALTA 40 ----
selA
ckCP
31
ckRD
RD
ckRI
RI
ckAC
AC
35
selB
Unidad de Control
40
R/W
00 91
LEE [91]
41
04
bus de Direcciones
00 LEEC 01 ANDC 02 ORC 03 REST AC 04 SUMA C 05 SALT A 06 SALT AZ 07 SALT AN 08 LEE 09 AND 0A OR 0B REST A 0C SUMA 0D NOT 0E ESCR IBE 0F NOP
Operacin de Salto
2-La instruccin de salto se presenta en el Bus de Datos
bus de Datos
RESET
05
1
+ RE ALU
30 31 32 33 34 05 40 ---SALTA 40 ----
selA
ckCP
31
ckRD
RD
ckRI
RI
ckAC
AC
35
selB
Unidad de Control
40
R/W
00 91
LEE [91]
41
04
bus de Direcciones
00 LEEC 01 ANDC 02 ORC 03 REST AC 04 SUMA C 05 SALT A 06 SALT AZ 07 SALT AN 08 LEE 09 AND 0A OR 0B REST A 0C SUMA 0D NOT 0E ESCR IBE 0F NOP
Operacin de Salto
3-La instruccin de salto se carga en el RI La ALU es indiferente
bus de Datos
RESET
05
1
+ RE --
30 31 32 33 34 05 40 ---SALTA 40 ----
selA
ckCP
31
ckRD
RD
ckRI
05
ckAC
AC
35
selB
Unidad de Control
40
R/W
00 91
LEE [91]
41
04
bus de Direcciones
00 LEEC 01 ANDC 02 ORC 03 REST AC 04 SUMA C 05 SALT A 06 SALT AZ 07 SALT AN 08 LEE 09 AND 0A OR 0B REST A 0C SUMA 0D NOT 0E ESCR IBE 0F NOP
Operacin de Salto
4-El CP se incrementa y apunta a 32, donde se encuentra la direccin de destino del salto (en este ejemplo 40)
bus de Datos
RESET
40
1
+ RE ---
30 31 32 33 34 05 40 ---SALTA 40 ----
selA
ckCP
32
ckRD
RD
ckRI
RI
ckAC
AC
35
selB
Unidad de Control
40
R/W
00 91
LEE [91]
41
32
bus de Direcciones
00 LEEC 01 ANDC 02 ORC 03 REST AC 04 SUMA C 05 SALT A 06 SALT AZ 07 SALT AN 08 LEE 09 AND 0A OR 0B REST A 0C SUMA 0D NOT 0E ESCR IBE 0F NOP
Operacin de Salto
5-La direccin de destino del salto (en este ejemplo 40) se presenta en el bus de datos
bus de Datos
RESET
40
1
+ RE ---
30 31 32 33 34 05 40 ---SALTA 40 ----
selA
ckCP
32
ckRD
RD
ckRI
RI
ckAC
AC
35
selB
Unidad de Control
40
R/W
00 91
LEE [91]
41
32
bus de Direcciones
00 LEEC 01 ANDC 02 ORC 03 REST AC 04 SUMA C 05 SALT A 06 SALT AZ 07 SALT AN 08 LEE 09 AND 0A OR 0B REST A 0C SUMA 0D NOT 0E ESCR IBE 0F NOP
Operacin de Salto
6-El multiplexor A selecciona el bus de datos (en vez de CP+1)
bus de Datos
RESET
40
1
+ RE ---
30 31 32 33 34 05 40 ---SALTA 40 ----
selA
ckCP
32
ckRD
RD
ckRI
RI
ckAC
AC
35
selB
Unidad de Control
40
R/W
00 91
LEE [91]
41
32
bus de Direcciones
00 LEEC 01 ANDC 02 ORC 03 REST AC 04 SUMA C 05 SALT A 06 SALT AZ 07 SALT AN 08 LEE 09 AND 0A OR 0B REST A 0C SUMA 0D NOT 0E ESCR IBE 0F NOP
Operacin de Salto
7- Al dar clock a CP, ste adopta el valor 40. El programa contina en dicha direccin.
bus de Datos
RESET
08
1
+ RE ---
30 31 32 33 34 05 40 ---SALTA 40 ----
selA
ckCP
40
ckRD
RD
ckRI
RI
ckAC
AC
35
selB
Unidad de Control
40
R/W
08 91
LEE [91]
41
40
bus de Direcciones
00 LEEC 01 ANDC 02 ORC 03 REST AC 04 SUMA C 05 SALT A 06 SALT AZ 07 SALT AN 08 LEE 09 AND 0A OR 0B REST A 0C SUMA 0D NOT 0E ESCR IBE 0F NOP
Operacin de Salto
8-El multiplexor A vuelve a la posicin habitual (CP+1). Se apunta a la instruccin Lee
bus de Datos
RESET
08
1
+ RE ---
30 31 32 33 34 05 40 ---SALTA 40 ----
selA
ckCP
40
ckRD
RD
ckRI
RI
ckAC
AC
35
selB
Unidad de Control
40
R/W
08 91
LEE [91]
41
40
bus de Direcciones
00 LEEC 01 ANDC 02 ORC 03 REST AC 04 SUMA C 05 SALT A 06 SALT AZ 07 SALT AN 08 LEE 09 AND 0A OR 0B REST A 0C SUMA 0D NOT 0E ESCR IBE 0F NOP
Operacin de Salto
(...) Cuando se produce un nuevo clock en CP ste se incrementa al valor 41
bus de Datos
RESET
91
1
+ RE ---
30 31 32 33 34 05 40 ---SALTA 40 ----
selA
ckCP
41
ckRD
RD
ckRI
Lee
ckAC
AC
35
selB
Unidad de Control
40
R/W
08 91
LEE [91]
41
41
bus de Direcciones
00 LEEC 01 ANDC 02 ORC 03 REST AC 04 SUMA C 05 SALT A 06 SALT AZ 07 SALT AN 08 LEE 09 AND 0A OR 0B REST A 0C SUMA 0D NOT 0E ESCR IBE 0F NOP
Llamados a subrutina
LEE ESCRIBE
[A] [dividendo]
LEE
ESCRIBE LLAMA LEE
[B]
[divisor] division [cociente] division LEE RESTA [dividendo] [divisor]
ESCRIBE
LEE ESCRIBE LEE ESCRIBE LLAMA LEE [C] [dividendo] [D] [divisor] division [cociente] RETORNA
[cociente]
Llamados a subrutina:
Hardware que no soporta llamado a subrutina
bus de Datos
RESET
00
1
+ RE ALU
00 06 0C 81 0E 82
01 02 03 04
selA
1 A
ckCP
CP
ckRD
RD
ckRI
RI
ckAC
AC
05
selB
1 B
Unidad de Control
81
R/W
15 ??
X Y
82
bus de Direcciones
Llamados a subrutina:
Hardware que soporta 1 nivel de llamado a subrutina
bus de Datos
RESET
00
1
+ RE ALU
00 06 0C 81 0E 82
01 02 03 04
selA
1 A
ckCP
CP
ckRD
RD
ckRI
RI
ckAC
AC
05
CP2
selB
1 B
Unidad de Control
81
R/W
15 ??
X Y
82
bus de Direcciones
Llamados a subrutina:
Subrutinas anidadas
subC llama {subA}
subA
subB
llama {subC} retorna
llama {subB}
subD
llama {subA} llama {subD} llama {subE}
llama {subB}
retorna
Resumen
Un sistema de cmputo programable est constituido por una unidad de Procesamiento, una unidad de Memoria y una interfaz de E/S. El modo en que se implementa este sistema da lugar a las arquitecturas Harvard o Von Neumann. Esta ltima es la que se ha analizado porque es la ms utilizada. Un sistema con arquitectura Von Neumann tiene una nica memoria para instrucciones y datos, una unidad de procesamiento y una unidad de E/S, conectados por 3 buses: de datos, de direcciones y de control. El bus de datos transfiere tanto instrucciones de programa como datos. Un P es bsicamente un conjunto de registros, dispositivos de seleccin, una ALU y una Unidad de Control UC, que es un circuito generador de secuencias, que se denomina tambin Mquina de Estados. La UC de un P elemental con un reducido repertorio de instrucciones 16 en nuestro ejemplodebe realizar para cada una de ellas alguno de estos cuatro tipos de secuencia: de lectura inmediata (LEEC ANDC ..) , de lectura direccionada (LEE AND SUMA ...), de escritura o de salto. Una instruccin tpica est compuesta por dos campos, un campo cdigo de operacin (qu hay que hacer) y un campo operando (dato para ejecutar dicha operacin). El campo operando puede ser el valor con el cual operar (instrucciones de lectura inmediata), o la direccin de memoria de datos donde se encuentra el valor a operar (instrucciones de lectura direccionada o de escritura), o la direccin de memoria donde debe continuar el programa (instrucciones de salto). El uso de llamado a subrutinas (y el correspondiente retorno) permite escribir programas ms cortos, escribiendo una sola vez las rutinas ms utilizadas. Para el retorno se requiere resguardar el contador de programa. En un esquema de subrutinas anidadas es necesario contar con una pila y un puntero de pila.
Microcontroladores
PIC 16F83/84
RAM
ROM
Puertos Puertos Paralelos PWM UART SPI I2C CCP USB A/D CAN
Comps Analgicos
CPU
E/S
Int LCD
ROM PROG
RAM
CPU
E/S
16F8x
PIC 16F627/628/648
ROM PROG
16F627/628/648
RAM
CPU
E/S
PIC 16F873/876/874/877
ROM PROG
RAM
CPU
E/S
Configuracin
Inicializacin
Ciclo principal
Ciclo de scan
Terminar?
Fin
Lenguajes de Programacin de C
ALTO NIVEL (C, Basic, Pascal) Ensamblador (assembler)
Requiere compilador Cdigo portable Comprensible. Facilidad para trabajar programas grandes, operaciones aritmticas y de formateo de datos. Traduccin directa a lenguaje de mquina. Especfico del Hardware Difcil seguimiento y concepcin de programas grandes
Los compiladores incluyen Debe manipularse los registros funciones para manejo de perifricos. que controlan cada perifrico. Menos eficiente en velocidad y en tamao del cdigo. Puede optimizarse en velocidad y tamao.
Lenguaje C Ej01.C
PC
compilar
ensamblar desensamblar
grabar
leer
Grabador ISP
Programacin de un automatismo
Ejemplo: Portn automtico
PA PC FCA
R2 R1
FCC
PA: Pulsador para abrir PC: Pulsador para cerrar FCA: Final de carrera al abrir FCC: Final de carrera al cerrar R1, R2: Rels para giro directo-inverso de motor
Programacin de un automatismo
Ejemplo: Portn automtico
PA
PC
FCA
R1
R2
FCC
Comportamiento del automatismo: El portn se encuentra en Reposo. Si se pulsa PA el portn se debe abrir, y parar cuando se detecta FCA.
Diagrama de Estados
Leyendo la descripcin del funcionamiento se reconocen 3 estados. Reposo: El motor est detenido (portn abierto o cerrado). R1=R2=0
PC
PC
PC
PA
PC
PC
PA
Diagrama de Flujo
Inicial Inicial
R1=0 R2=0
PC
1 0
PA
0
PC R1=0 R2=1
FCA
FCC
R1=0 R2=0
PC
1 0
PA
0
PC
R1=0 R2=1
0 0
FCA
FCC
Codificacin en BASIC
REPOSO:
REPOSO2:
PA
0
ABRE: ABRE2:
PC R1=0 R2=1
CIERRA:
R1=1 R2=0
1
FCA
FCC
CIERRA2:
R1=0 R2=0 IF PA=1 THEN GOTO ABRE END IF IF PC=1 THEN GOTO CIERRA END IF GOTO REPOSO2 R1=1 R2=0 IF FCA=1 THEN GOTO REPOSO END IF GOTO ABRE2 R1=0 R2=1 IF FCC=1 THEN GOTO REPOSO END IF GOTO CIERRA2
Cdigo Fuente
Lenguaje C Ej01.C
PC
ensamblar desensamblar
grabar
leer
Grabador ISP
Rutina Principal
Cdigo insertado por el asistente Punto de insercin de cdigo
Datos A,B
Rx Tx
Usuario
Resultado C=A+B
A travs de Rx (receptor serie) el microcontrolador recibe los datos A y B, los suma y transmite el resultado por Tx (transmisor serie)