Arquitectura de Microcontroladores Cap 1 - Almagro

Anuncio
DEPARTAMENTO DE ELECTRONICA
Introducción a los microprocesadores / microcontroladores
Capítulo 1
Análisis de un procesador simple
El concepto de Arquitectura de computadoras se define como el funcionamiento,
estructura y diseño de computadoras.
Dentro de este término se engloban entre otros aspectos tales como:
•
Almacenamiento
•
Control
•
Interconexión
•
Temporización
•
Entrada/salida
•
Instrucciones
•
Direccionamiento
Controlador
Se denomina controlador al dispositivo que se emplea para el manejo o gobierno
de uno o varios procesos.
El controlador conceptualmente no ha cambiado con el tiempo, pero su
implementación ha tenido diversas transformaciones a lo largo del mismo, aunque
muchas de ellas se utilizan en la actualidad con mucha frecuencia ya sea por costo,
confiabilidad o sencillez.
Hubo transformaciones
desde mecánicas, luego con elementos
de lógica
discreta, Relay, y en la década del ´60 aparecen los PLC (sigla de origen inglés para
denominar al Controlador Lógico Programable); posteriormente se emplearon los
microprocesadores, que se rodeaban con chips de memoria y elementos de E/S
montados sobre una placa de circuito impreso.
Arquitectura de Microcontroladores Cap 1.doc
Ing. Josè M. Salama
Electrónica Digital II
hoja 1 de 12
DEPARTAMENTO DE ELECTRONICA
En la actualidad, todos estos elementos se encuentran incluidos en un chip que
recibe el nombre de microcontrolador. La diferencia fundamental entre un
microcontrolador y un microprocesador está en que el primero posee una cantidad
limitada de procesos e instrucciones de lógica y cálculo pero un manejo versátil y
poderoso de distintos periféricos, como ser varios puertos de entrada/salida,
conversiones AD/DA, etc.; en cambio en el microprocesador estas características
son a la inversa.
Un microcontrolador dispone normalmente de los siguientes componentes:
•
Procesador o UCP (Unidad Central de Proceso).
•
Memoria RAM para Contener los datos.
•
Memoria para el programa tipo ROM/PROM/EPROM.
•
Líneas de E/S para comunicarse con el exterior.
•
Diversos módulos para el control de periféricos (temporizadores, Puertas
Serie y Paralelo, CAD: Conversores Analógico/Digital, CDA: Conversores
Digital/Analógico, etc.).
•
Generador de impulsos de reloj que sincronizan el funcionamiento de todo
el sistema.
Las primeras computadoras consistían en máquinas compuestas por distintos
elementos, cuya finalidad era ejecutar una serie de operaciones. Dichas operaciones
se realizaban cableando
dichos elementos (Hardware) y estos respondían
generalmente de forma secuencial.
Por ejemplo si consideramos como sistema una caldera, el controlador que
regula el funcionamiento de la misma recibirá información de un sensor que mide
constantemente la temperatura del agua, y cuando traspasa los límites prefijados, el
controlador genera las señales adecuadas que accionaran los correspondientes
Arquitectura de Microcontroladores Cap 1.doc
Ing. Josè M. Salama
Electrónica Digital II
hoja 2 de 12
DEPARTAMENTO DE ELECTRONICA
actuadores que intentan llevar el valor de la temperatura dentro del rango estipulado.
En este caso el controlador esta llevando a cabo un control llamado a “lazo cerrado”
pues toma información sobre una determinada variable que quiere controlar y luego
ejecuta las acciones necesarias sobre los actuadores para que dicha variable llegue
al valor preestablecido.
Otro ejemplo sería el control de la secuencia de un semáforo, este tipo de control
no posee sensores aunque en algunos casos pueden utilizarse, el encendido de las
luces del semáforo siguen una determinada secuencia con tiempos prefijados para
cada una de ellas. En este caso el controlador lleva a cabo un control a lazo abierto,
pues actúa sobre la variable de salida sin tener en cuenta el estado en que se
encuentra esta o sea sin tomar información del estado de la misma.
Este ejemplo lo tomaremos como base para explicar la arquitectura de un
microcontrolador rudimentario y a partir de él llegar a los utilizados en la actualidad..
El siguiente circuito se puede utilizar para controlar la secuencia de un semáforo.
Vcc
V Vcc
L1
J
SET
Q
J
V
K
CLR
R
A
SET
Q
J
A
Q
K
CLR
SET
Q
R
Q
K
CLR
Q
1 Hz
CK
Arquitectura de Microcontroladores Cap 1.doc
Ing. Josè M. Salama
Electrónica Digital II
hoja 3 de 12
DEPARTAMENTO DE ELECTRONICA
El principio de funcionamiento de este circuito podría sintetizarse de la siguiente
manera:
En este caso inicialmente se activa la llave L1 seteandose el flip flop V
encendiéndose la luz verde.
verde Al primer pulso de CK el FF V por tener sus entradas JK
en 01, su salida pasa a 0 apagándose la luz verde, como el FF A cambia de estado
con cada pulso de CK, se enciende la luz Amarilla y el FF R al tener sus entradas en
nivel bajo permanece en 0. Al segundo pulso de CK el FF V permanece en 0 por
tener las mismas condiciones anteriores, el FF A vuelve a cambiar de estado por lo
que se apaga la luz amarilla y como el FF R tiene sus entradas en 1 cambia de
estado encendiéndose la luz roja.
roja Al tercer pulso de CK el FF V repite las
condiciones anteriores por lo que la luz verde permanece apagada, el FF A vuelve a
cambiar de estado, no así el FF R por lo que quedan encendidas las luces amarilla y
roja.
roja Al siguiente pulso de CK los 3 FF quedan con la condición de cambiar de
estado por lo que se enciende la luz verde y se apagan la amarilla y la roja volviendo
a la condición inicial y a repetir la secuencia [ V – A – R – RA – V .....].
.....]
Los tiempos que permanecen encendidas cada luz dependen de la frecuencia
del CK que se utilice.
Si se quisiera cambiar la secuencia de encendido de las luces o tener tiempos
distintos para cada una de ellas se debería cambiar la estructura del circuito.
Se debía hacer un cambio conceptual en los sistemas basados en
comportamientos secuenciales para no tener que cambiar la estructura circuital del
mismo cada vez que se quería modificar su secuencia. Para ello, el científico John
von Neumann, propuso el concepto de programa almacenado (software),
(software) el cual
consiste en una serie de instrucciones guardadas en una memoria que se deben
ejecutar ordenadamente.
Arquitectura de Microcontroladores Cap 1.doc
Ing. Josè M. Salama
Electrónica Digital II
hoja 4 de 12
DEPARTAMENTO DE ELECTRONICA
Basándonos
en
las
consideraciones
propuestas
por
von
Neumann
desarrollaremos un circuito que permita controlar la secuencia de encendido de las
luces del semáforo. Dicho circuito podría representarse por el siguiente esquema:
Contador
Rst
Q0
Qn
Ck
10 Hz
y
a
x
b
Decodificador
de Instrucciones
Memoria D0
D1
D2
An
D3
D4
D5
D6
D7
A0
R
A
V
S1
R
A
V
S2
Para este circuito el contador utilizado es uno del tipo ascendente que
incrementa su cuenta por cada pulso de CK que aparece en su entrada. Las salidas
Q0 a Qn de este contador están conectadas a las entradas de dirección A0 a An de
una memoria con palabras de 8 bits de dato D0 a D7 . Al ir contando el contador, la
memoria se va recorriendo en forma secuencial desde la dirección 0 en adelante y
esta entregará en sus salidas los datos que tenga almacenados en las distintas
direcciones.
Se puede observar que mientras el
bit de datos D7
permanezca en 1, al
contador le llegaran los pulsos de CK provistos por el generador correspondiente
haciendo que el contador incremente su cuenta por lo que se procede a recorrer
secuencialmente la memoria. En cambio si el bit de datos D7 permanece en 0 la
compuerta inhabilita el paso de los pulsos de CK y el contador se detiene en el valor
que estaba y por consiguiente la memoria quedará direccionada en una dirección
fija. El bit de datos D6
es el que proporcionará el reset de la memoria que
supondremos se logrará con un 1 en la entrada correspondiente, en este caso el
contador volverá a la posición inicial 0 por lo que la memoria quedará direccionada
también en la dirección 0 .
Arquitectura de Microcontroladores Cap 1.doc
Ing. Josè M. Salama
Electrónica Digital II
hoja 5 de 12
DEPARTAMENTO DE ELECTRONICA
•
Ejemplo 1 Si quisiéramos encender solamente las luces del semáforo S1 con
una sola secuencia [ R – A – V ] y que luego este quede apagado, deberíamos
escribir lo siguiente en la memoria:
Dir 0
Dir 1
Dir 2
Dir 3
Dir 4
a
D7
1
1
1
0
x
b
D6
0
0
0
0
x
V2
D5
0
0
0
0
x
A2
D4
0
0
0
0
x
R2
D3
0
0
0
0
x
V1
D2
0
0
1
0
x
A1
D1
0
1
0
0
x
R1
D0
1
0
0
0
x
Inicialmente al estar la memoria posicionada “direccionada” en la dirección 0, el
bit D0 enciende la luz roja y con D7 en 1 queda habilitada la entrada de CK, con el
próximo pulso de CK la memoria pasa a la dirección 1encendiendo la luz amarilla
mediante D1 , al siguiente pulso de CK se enciende la luz verde que está comandada
por el bit D2 , por último con el próximo pulso de CK quedan apagadas todas las
luces y como el bit D7 está en 0 queda inhabilitada la entrada de pulsos de CK por
lo que el semáforo quedará permanentemente apagado.
•
Ejemplo 2 Si ahora quisiéramos encender los 2 semáforos simulando la
secuencia de un cruce de calles deberíamos escribir en la memoria lo mostrado en
la tabla.
Dir 0
Dir 1
Dir 2
Dir 3
Dir 4
Dir 5
Dir 6
Dir 7
Dir 8
Dir 9
Arquitectura de Microcontroladores Cap 1.doc
Ing. Josè M. Salama
a
D7
1
1
1
1
1
1
1
1
1
b
D6
0
0
0
0
0
0
0
0
1
V2
D5
1
0
0
0
0
0
0
0
1
A2
D4
0
1
0
0
0
0
0
1
0
R2
D3
0
0
1
1
1
1
1
1
0
V1
D2
0
0
0
0
1
0
0
0
0
A1
D1
0
0
0
1
0
1
0
0
0
Electrónica Digital II
R1
D0
1
1
1
1
0
0
1
1
1
hoja 6 de 12
DEPARTAMENTO DE ELECTRONICA
Como puede observarse desde la dirección 0 hasta la dirección 7 están escritos
los datos que comandan una secuencia completa de los semáforos y en la dirección
8 al poner en 1 el bit D6 este resetea al contador permitiendo que la memoria se
direccione en la posición 0 reiniciándose la secuencia, por lo que quedan
funcionando los semáforos permanentemente.
Como se ha mostrado, con sólo cambiar unos datos en la memoria se cambió la
secuencia de encendido de las luces y si se quisiera mantener por mas tiempo
alguna de las luces encendidas podríamos repetir los datos de la correspondiente
dirección varias veces: por esto es que a diferencia del circuito anterior no hay que
cambiar la estructura del mismo sino solamente algunos datos, demostrando su
versatilidad.
Este circuito básico que denominaremos “procesador” posee datos almacenados
en las distintas direcciones de memoria que se van seleccionando secuencialmente,
a esta propiedad la podríamos denominar “ejecución del programa” de control de
secuencia del semáforo.
A los bits D0 ... D5 los llamaremos bits de dato propiamente dicho, pues estos
corresponden a la información que se va a utilizar en el semáforo. Los bits D7 y D6
representan lo que llamaremos las “instrucciones” del programa, estos dos bits
ingresan al bloque que hemos denominado “Decodificador de instrucciones”, quien
es el encargado de operar sobre el contador “Contador de Programa PC“, para que
este direccione la memoria convenientemente. Como sólo posee 2 bits de
instrucciones se lo denomina “procesador de 2 bits”.
Arquitectura de Microcontroladores Cap 1.doc
Ing. Josè M. Salama
Electrónica Digital II
hoja 7 de 12
DEPARTAMENTO DE ELECTRONICA
En la siguiente tabla se muestra el valor que pueden adoptar estos dos bits, la
operación que realiza el circuito con su abreviatura:
D7
D6
0
0
1
0
0
1
1
1
Operación
Operación que se realiza
Abreviaturas
El contador de programa se bloquea, deteniéndose STOP
HLT
la ejecución del programa.
PAUSA
El contador de programa queda habilitado para
continuar ejecutando el programa
El contador de programa se resetea reiniciándose
la ejecución del programa.
El contador de programa se resetea reiniciándose
la ejecución del programa.
ALTO
CONT
RST
RST
Como se puede observar con dos bits se pueden tener cuatro posibles
“instrucciones” que llamaos con las abreviaturas STOP CONTINUAR y RESET, pero
como se observa se está desperdiciando una posibilidad debido a que el contador se
resetea con el D6 en 1 sin importar el valor de D7. Cabe destacar que los bits D0 ...
D5 sombreados en este caso, podrían adoptar cualquier valor, debido a que el
tiempo que se va a estar ejecutando esta instrucción no depende del valor de
período de CK sino al tiempo que tarda el contador de programa en resetearse que
es mucho menor, pero se ha decidido escribir el próximo valor que adoptarán estos
bits y por ende los semáforos para que estos no presenten aunque mas no sea por
un tiempo pequeño una información errónea, este inconveniente será subsanado
mas adelante.
Arquitectura de Microcontroladores Cap 1.doc
Ing. Josè M. Salama
Electrónica Digital II
hoja 8 de 12
DEPARTAMENTO DE ELECTRONICA
Modificando el circuito anterior, para no desperdiciar una opción y disponer de
las cuatro instrucciones que nos permiten los dos bits, se puede obtener el circuito
siguiente:
Rst
P5 P4 P3 P2 P1 P0
Q0
Contador de
Pst
Programa
Ck
Memoria D0
D1
D2
An
D3
D4
D5
D6
D7
A0
Qn
1 Hz
R
A
V
S1
R
A
V
S2
a
x
y
z
b
Decodificador
de Instrucciones
Con este circuito se optimiza el “juego de instrucciones” detalladas
anteriormente debido a que ahora tendremos la posibilidad de utilizar las cuatro
posibles instrucciones que permite este procesador de dos bits. Para ello se ha
modificado también el circuito “decodificador de instrucciones” y el Contador utilizado
ahora tiene la propiedad de ser preseteable o sea que si se ingresa un valor
determinado por las entradas P0 ... P5 y al activar el comando Pst dicho contador
pasará a tener en sus salidas Q0 ... Qn, el valor prefijado y continuará la cuenta a
partir de este o sea que la ejecución del programa dará un salto hasta la nueva
dirección desde donde este proseguirá.
Arquitectura de Microcontroladores Cap 1.doc
Ing. Josè M. Salama
Electrónica Digital II
hoja 9 de 12
DEPARTAMENTO DE ELECTRONICA
El nuevo “set” de instrucciones correspondiente a este nuevo circuito será:
D7 D6
Abreviaturas
0
0
STOP
1
0
CONT
0
1
RST
1
1
JMP
•
Operación que se realiza
El contador de programa se bloquea, deteniéndose la
ejecución del programa.
El contador de programa queda habilitado para
continuar ejecutando el programa
El contador de programa (PC) se resetea
reiniciándose la ejecución del programa.
El “ PC ” se presetea con el valor a donde saltará y
proseguirá con la ejecución del programa.
Ejemplo 3 Veamos como se podría escribir un programa que realice
inicialmente el encendido secuencial de cada una de las 6 luces y que luego los 2
semáforos queden titilando en amarillo.
PC
Dir 0
Dir 1
Dir 2
Dir 3
Dir 4
Dir 5
Dir 6
Dir 7
Dir 8
Dir 9
a
D7
1
1
1
1
1
1
1
1
1
b
D6
0
0
0
0
0
0
0
0
1
V2
D5
1
0
0
0
0
0
0
0
0
A2
D4
0
1
0
0
0
0
1
0
0
R2
D3
0
0
1
0
0
0
0
0
0
V1
D2
0
0
0
1
0
0
0
0
1
A1
D1
0
0
0
0
1
0
1
0
1
R1
D0
0
0
0
0
0
1
0
0
0
Como se observa desde la dirección 0 a la 5, se realiza el encendido secuencial
de todas las luces del semáforo, durante el tiempo que el contador permanece en la
dirección 6, los semáforos estarán en amarillo, mientras que cuando el contador esté
en la dirección 7 los semáforos permanecerán apagados. Al llegar el contador al
valor 8, se preseteará el mismo con el valor 6 “000110”, por lo que los semáforos
pasarán nuevamente a amarillo.
Arquitectura de Microcontroladores Cap 1.doc
Ing. Josè M. Salama
Electrónica Digital II
hoja 10 de 12
DEPARTAMENTO DE ELECTRONICA
Cabe destacar que por un lapso muy breve el semáforo 1 encenderá
conjuntamente las luces verde y amarilla lo cual es un estado no deseado de las
luces del semáforo.
Para que esto no ocurra modificaremos el circuito de la siguiente manera:
Rst
P5 P4 P3 P2 P1 P0
Q0
Contador de
Pst
Programa
Qn
Ck
Q
T
Memoria D0
D1
D2
An
D3
D4
D5
D6
D7
A0
1 Hz
Vcc
L
A
T
C
H
Le
R
A
V
S1
R
A
V
S2
FF
Q
x
a
y
z
b
w
Decodificador de
Instrucciones
Con este circuito se puede guardar en el “Latch” cuando se desee, el valor que
se mostrará en los semáforos, y cuando se quiera direccionar el PC con el número
correspondiente a la dirección a dónde saltar, este nuevo valor no se mostrará como
dato de salida debido a que se inhabilita la posibilidad de posibilidad de “latchear”
“latchear” el
dato. Se agregó también al decodificador de instrucciones un divisor de pulsos de
reloj por lo que cada incremento del “PC” al que llamaremos “ Ciclo de máquina “ le
corresponderán varios pulsos de reloj ( en este caso 2 pulsos): esto nos dará la
posibilidad de tener mas tiempo para hacer distintas cosas dentro de una misma
instrucción. Cabe destacar que el decodificador de instrucciones es el encargado
organizar para cada una de las instrucciones los pasos que debe seguir el
procesador para ejecutar convenientemente esa instrucción, o sea en cada Ciclo de
máquina debe primero leer la instrucción, luego si debe producir un salto bloquear la
activación del Lctch, en caso contrario guardar el dato para ser mostrado y
Arquitectura de Microcontroladores Cap 1.doc
Ing. Josè M. Salama
Electrónica Digital II
hoja 11 de 12
DEPARTAMENTO DE ELECTRONICA
dependiendo de la complejidad del procesador deberá realizar distintas operaciones
antes de pasar a la próxima instrucción activando la entrada de cuenta del PC.
El siguiente diagrama de tiempos muestra un ejemplo de esta técnica.
CK
t
CM
t
Le
t
Instrucción
CONT
Reiniciar el programa
Decodificar instrucción
Guardar dato
Incrmentar dirección
Decodificar instrucción
Guardar dato
Incrmentar dirección
Decodificar instrucción
Saltar a otra dirección
Decodificar instrucción
Guardar dato
Incrmentar dirección
Decodificar instrucción
Guardar dato
Incrmentar dirección
Decodificar instrucción
PC
t
Instrucción Instrucción Instrucción
JMP
CONT
RST
Es importante destacar que para el análisis que estamos realizando sobre la
arquitectura de un procesador no profundizaremos en la circuitería correspondiente
al decodificador de instrucciones ni en los tiempos involucrados en el mismo sino en
que este debe tomar la información proveniente de los bits de instrucción,
decodificarla y realizar las acciones necesarias para que los datos se guarden, se
realice un salto a una dirección determinada, etc. sin que haya ningún tipo de
ambigüedad en la decisión a tomar, este análisis se realizará en el momento que
sea necesario.
Arquitectura de Microcontroladores Cap 1.doc
Ing. Josè M. Salama
Electrónica Digital II
hoja 12 de 12
Descargar