Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Apuntes Semana 1 M3S3

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

1.

Introducción a los Microcontroladores

En este capítulo se da una introducción al tema, exponiendo conceptos generales, es


decir, conceptos que no están enfocados a un MCU particular. Se describen los alcances
y limitaciones de estos dispositivos y se muestra una organización común a la mayoría
de microcontroladores.

1.1 Sistemas Electrónicos

La electrónica ha evolucionado de manera sorprendente en los últimos años, tanto que


actualmente no es posible concebir la vida sin los sistemas electrónicos. Los sistemas
electrónicos son una parte fundamental en el trabajo de las personas, proporcionan
entretenimiento y facilitan las actividades en los hogares.

Un sistema electrónico puede ser representado con el diagrama de la figura 1.1, sin
importar la funcionalidad para la cual haya sido diseñado.

Figura 1.1 Abstracción de un sistema electrónico

El sistema recibe las peticiones de los usuarios o conoce lo que ocurre en su entorno por
medio de los sensores. Los sensores son dispositivos electrónicos que se encargan de
acondicionar diferentes tipos de información a un formato reconocido por los elementos
de procesamiento. Un sensor puede ser tan simple como un botón o tan complejo como
un reconocedor de huella digital, pero si los elementos de procesamiento son digitales,
en ambos casos la salida va a estar codificada en 1’s y 0’s. Con los sensores se pueden
monitorear diferentes parámetros, como: temperatura, humedad, velocidad, intensidad
luminosa, etc.

Los elementos de visualización son dispositivos electrónicos que muestran el estado actual del
sistema, notificando al usuario si debe tomar acciones. Los elementos de visualización típicos
son: LEDs individuales o matrices de LEDs, displays de 7 segmentos o de cristal líquido.

15
Los actuadores son dispositivos electrónicos o electromecánicos que también forman parte
de las salidas de un sistema, pero con la capacidad de modificar el entorno, es decir, van más
allá de la visualización, algunos ejemplos son: motores, electroválvulas, relevadores, etc.

Los elementos de comunicación proporcionan a un sistema la capacidad de comunicarse


con otros sistemas, son necesarios cuando una tarea compleja va a ser resuelta por
diferentes sistemas. Entonces, un sistema complejo está compuesto por diferentes
sistemas simples, cada uno con sus elementos de procesamiento, cada sistema simple o
sub-sistema está orientado a resolver una etapa de la tarea compleja.

Los elementos de procesamiento son dispositivos electrónicos que determinan la


funcionalidad del sistema, con el desarrollo de uno o varios procesos. Ocasionalmente a
estos elementos de procesamiento se les refieren como la Tarjeta de Control de un sistema
o simplemente el Controlador. El controlador recibe la información proveniente de los
sensores y, considerando el estado actual que guarda el sistema, genera algunos resultados
visuales, activa algún actuador o notifica sobre nuevas condiciones a otro sistema.

1.2 Controladores y Microcontroladores

El concepto de controlador ha permanecido invariable a través del tiempo, aunque


su implementación física ha variado con los cambios tecnológicos. En principio, los
controladores se construyeron con base en circuitos analógicos, las decisiones se
tomaban con diferentes configuraciones de transistores o amplificadores operacionales.
En los setentas se empleaba lógica discreta con circuitos digitales con baja o mediana
escala de integración.

El primer microprocesador (4004 de Intel) fue puesto en operación en 1971, esto


dio lugar al empleo de un microprocesador con sus elementos de soporte (memoria,
entrada/salida, etc.) como tarjetas de control. A estas tarjetas también se les conoce
como Computadoras en una Sola Tarjeta (SBC, single board computer). Actualmente
se han integrado todos estos elementos en un solo circuito integrado y a éste se le
refiere como Unidad Micro Controladora (MCU, Micro Controller Unit) o simplemente
microcontrolador, esta tendencia se ilustra en la figura 1.2.

Figura 1.2 Los microcontroladores remplazan a tarjetas con varios CIs

16
Un microcontrolador es un Circuito Integrado con una escala de integración muy grande
(VLSI1, very large scale integration) que internamente contiene una Unidad Central
de Procesamiento (CPU, Cental Processing Unit), memoria para código, memoria
para datos, temporizadores, fuentes de interrupción y otros recursos necesarios para el
desarrollo de aplicaciones, por lo general con un propósito específico.

Si bien, un MCU incluye prácticamente los elementos necesarios para ser considerado
como una computadora en un circuito integrado, frecuentemente no es tratado como tal,
ya que su uso típico consiste en el desempeño de funciones de “control” interactuando
con el “mundo real” para monitorear condiciones (a través de sensores) y en respuesta
a ello, encender o apagar dispositivos (por medio de actuadores).

1.3 Microprocesadores y Microcontroladores

Ocasionalmente estos dispositivos se tratan como iguales, sin embargo existen


diferencias fundamentales a considerar.

Un microprocesador básicamente contiene una CPU, mientras que un microcontrolador


además de la CPU contiene memoria, temporizadores, interrupciones y otros recursos
útiles para el desarrollo de aplicaciones, todos estos elementos en un circuito
integrado.

El microcontrolador tiene más recursos que el microprocesador, pero su CPU está


limitada en términos de su capacidad de procesamiento. Las limitaciones principales
son:

• Velocidad de procesamiento: Actualmente los microcontroladores trabajan a


frecuencias máximas de 20 MHz, mientras que los microprocesadores están en el
orden de GHz.

• Capacidad de direccionamiento: Un microcontrolador promedio dispone de 8


Kbyte para instrucciones y 1 Kbyte para datos, los microprocesadores modernos
pueden direccionar hasta 1 Terabyte, espacio compartido para instrucciones y
datos. Por lo que en su repertorio de instrucciones, los microprocesadores deben
incluir modos de direccionamiento que les permitan este alcance.

• Tamaño de los datos: Los microcontroladores populares son de 8 bits y dentro


de sus instrucciones incluyen algunas que permiten evaluar o modificar bits
individuales. Los microprocesadores actuales trabajan con datos de 32 ó 64 bits. Sus
instrucciones operan directamente sobre palabras de esta magnitud y generalmente
no cuentan con instrucciones dedicadas a bits.

Estas notables diferencias entre microprocesadores y microcontroladores los enfocan


a diferentes aplicaciones. Un microprocesador se utiliza como la CPU de una

1 Circuitos integrados con más de 10,000 transistores

17
computadora, una computadora es un Sistema de Propósito General, es decir, un
sistema de procesamiento intensivo capaz de realizar cualquier tarea que se le solicite
por programación.

Los microcontroladores están enfocados a Sistemas de Propósito Específico, sistemas


que se crean con una funcionalidad única, la cual no va a cambiar durante su tiempo de
vida útil. Por ejemplo: cajas registradoras, hornos de microondas, sistemas de control de
tráfico, videojuegos, equipos de sonido, instrumentos musicales, máquinas de escribir,
fotocopiadoras, etc.

Las limitaciones de los microcontroladores con respecto a los microprocesadores


no son una restricción para este tipo de aplicaciones, si se consideran los siguientes
aspectos:

• El tiempo de respuesta en una aplicación de propósito específico no es crítico,


las operaciones para monitorear parámetros o actualizar resultados requieren
de periodos en el orden de cientos de microsegundos o milisegundos, periodos
que pueden conseguirse con un microcontrolador operando a unos cuantos mega
hertzios.

• La aplicación es única, eso significa que la memoria de código no debe alojar


otros programas que nada tengan que ver con la aplicación, como un cargador o
un sistema operativo, lo cual es fundamental en un sistema de propósito general.
Por lo tanto, la capacidad de memoria incluida en los microcontroladores llega
a ser suficiente. Por otro lado, también hay microcontroladores con diferentes
capacidades de memoria de código, que van desde 1 Kbyte hasta 256 Kbyte, el
desarrollador de sistemas puede seleccionar el modelo que mejor se ajuste a sus
requerimientos.

• Las aplicaciones por lo general utilizan pocas entradas, algunas son directamente
de 1 bit y otras pueden ser agrupadas en un puerto de 8 bits, para su procesamiento
es suficiente con una CPU que trabaje por bytes. De manera poco frecuente estas
aplicaciones requieren datos de 16 bits, por ello, algunos microcontroladores
incluyen instrucciones que operan directamente sobre 16 bits, o bien, puede buscarse
un microcontrolador con una CPU de 16 bits. Para las salidas, es muy común que se
requiera la manipulación directa de 1 bit. El encendido o apagado de un motor, un
relevador, una lámpara, etc., no requiere más de 1 bit. Si fuera necesario algún tipo
de variación en la intensidad de la salida, puede utilizarse modulación por ancho de
pulso (PWM, pulse width modulation).

Puede observarse que un MCU efectivamente contiene los elementos suficientes para
ser considerado como una computadora en un CI. Aunque sería una computadora con
una capacidad de procesamiento limitada. No obstante, los recursos incluidos en un
MCU son suficientes para aplicaciones de propósito específico, que no demanden
un alto rendimiento y que no requieran manejar un conjunto masivo de datos.
Aplicaciones como procesamiento de imágenes o video, están fuera del alcance de un
microcontrolador.

18
1.4 FPGAs y Microcontroladores

Los FPGAs son dispositivos electrónicos programables que también pueden emplearse como
elementos de procesamiento en sistemas electrónicos. La sigla FPGA (Field Programmable
Gate Array) hace referencia a un Arreglo de Compuertas Programable en Campo. En la
figura 1.3 se muestra la organización general de un FPGA, en donde puede notarse una
disposición matricial de Bloques Lógicos Configurables (CLB, Configurable Logic Block)
rodeados por Bloques de Entrada/ Salida (IOB, Input/Output Block), además de los recursos
necesarios para la conexión de CLBs con IOBs o entre CLBs.

Figura 1.3 Organización típica de un FPGA

En los CLBs se pueden programar funciones lógicas combinacionales o secuenciales,


con los recursos de interconexión es posible vincular diferentes bloques para construir
funciones más complejas. Dependiendo del fabricante, un CLB puede contener una tabla
de búsqueda (LUT, look-up table) o un arreglo de compuertas básicas más elementos de
estado. Los IOBs proporcionan el mecanismo para que el FPGA se comunique con su
entorno.

Los FPGAs se pueden programar por medio de diagramas esquemáticos, utilizando


símbolos básicos y conexiones entre estos símbolos. No obstante, por la alta densidad
de los dispositivos actuales, es mejor emplear un Lenguaje de Descripción de Hardware
(HDL, Hardware Description Language). Existen diferentes HDLs, como VHDL,
Verilog o ABEL.

Un aspecto común entre FPGAs y MCUs es que ambos son dispositivos configurables,
con ambos se pueden construir sistemas flexibles, cuyo comportamiento se puede
alterar al reprogramar al dispositivo. Con todo, debe distinguirse el papel del programa
en cada caso, en un FPGA el programa determina cómo se van a conectar sus elementos
internos, es decir, el programa define al hardware y de esta manera determina el
comportamiento del sistema. En cambio, en un MCU el hardware es fijo y el programa
establece la operación de ese hardware.

19
La organización de los FPGAs hace que el proceso de desarrollo de un sistema sea más
complejo y tardado, con respecto al uso de microcontroladores. La ventaja de su uso es
que la tecnología actual empleada en su fabricación y el hecho de trabajar directamente
en hardware hacen que se alcance una velocidad de procesamiento muy alta (100 MHz
o más) en relación a la velocidad de un MCU promedio.

Otra ventaja es que en un FPGA puede hacerse procesamiento concurrente real, si un


sistema está organizado en forma modular, los módulos van a revisar sus entradas para
generar sus salidas en forma concurrente. En un MCU el procesamiento es secuencial,
aunque la inclusión de múltiples recursos facilita la realización simultánea de tareas, en
el momento en que éstas generan un evento que requiere atención, la atención se realiza
mediante líneas de código secuenciales.

En forma práctica, siempre debería intentarse emplear un MCU como el controlador de


un sistema electrónico, si se requiere de más velocidad o capacidad de direccionamiento,
la alternativa sería un microprocesador con sus elementos de soporte. Si se va a hacer
un procesamiento aritmético intensivo, podría optarse por un procesador digital de
señales (DSP, Digital Signal Processor), el cual es un circuito integrado que contiene
un microprocesador más elementos de hardware enfocados a operaciones aritméticas,
como sumadores y multiplicadores. Y sólo en aquellos casos donde se requiera de un
hardware especializado, a la medida del sistema, que trabaje a altas velocidades y con
módulos concurrentes, la mejor opción es el uso de un FPGA.

1.5 Organización de los Microcontroladores

Existe una gama muy amplia de fabricantes de microcontroladores y cada fabricante


maneja diferentes familias con una variedad de modelos, a pesar de ello, hay bloques que
son comunes a la mayoría de modelos, en la figura 1.4 se muestra la organización típica
de un microcontrolador y en los siguientes apartados se describen sus bloques internos.

Figura 1.4 Organización típica de un Microcontrolador

20
1.5.1 La Unidad Central de Procesamiento (CPU)

Este bloque administra todas las actividades en el sistema y ejecuta todas las
operaciones sobre los datos. Esto mediante la ejecución de las instrucciones
ubicadas en la memoria de código, con las cuales se determina el comportamiento
del sistema. Un programa se define como una serie de instrucciones, combinada
para realizar algún trabajo específico. El grado en el cual los trabajos son realizados
eficiente y correctamente depende muchas veces del software y no de qué tan
sofisticada es la CPU.

El trabajo de la CPU puede resumirse en tres tareas fundamentales:

a) Captura de una Instrucción.

b) Decodificación de la misma.

c) Ejecución.

Trabajo que realiza a altas velocidades, por lo que el usuario observa el efecto de un
programa completo y no de instrucciones individuales.

Cada procesador tiene su propio repertorio de instrucciones. Si un grupo de


computadoras o microcontroladores comparten el mismo repertorio de instrucciones,
pero los elementos del grupo difieren en recursos, costo y rendimiento, entonces este
grupo forma una familia de computadoras.

Los repertorios de instrucciones difieren entre microcontroladores o microprocesadores,


no obstante, existen algunos grupos de instrucciones que son comunes a la mayoría de
este tipo de dispositivos. Estos grupos incluyen:

a) Aritméticas: suma, resta, producto, división, etc.

b) Lógicas: AND, OR, NOT, etc.

c) Transferencias de datos.

d) Bifurcaciones o saltos (condicionales o incondicionales).

Una computadora es un sistema originalmente planeado para procesamiento de datos,


por lo que podría pensarse que las instrucciones de mayor uso son aritméticas o
lógicas, sin embargo, actualmente las computadoras han ampliado tanto su campo
de acción que las aplicaciones comunes hacen un uso exhaustivo de transferencias
de datos. El ejemplo típico es el procesador de palabras, el cual transfiere datos del
espacio disponible para entradas y salidas, a memoria principal y a memoria de video,
cuando se respalda un documento, la información es transferida de memoria principal
a memoria secundaria.

21
Una instrucción es una cadena de 1’s y 0’s que la computadora reconoce e interpreta,
en esa cadena existen diferentes grupos de bits que se conocen como campos de
la instrucción. Una instrucción incluye un campo para el código de operación
(opcode), éste determina la operación a realizar, y típicamente uno o dos campos para
los operandos, que corresponden a los datos sobre los cuales se aplica la operación.

Las CPUs se clasifican como CISC o RISC, esto de acuerdo con su organización
interna. Con CISC se hace referencia a computadoras con un Repertorio de
Instrucciones Complejo (CISC, Complex Instruction Set Computers) y RISC es para
referir a computadoras con un Repertorio de Instrucciones Reducido (RISC, Reduced
Instruction Set Computers).

Las primeras computadoras se construyeron con la filosofía CISC, en la cual se buscaba


que el programador escribiera programas compactos, por lo tanto, cada instrucción
requería de un hardware complejo. Esto afecta el rendimiento de las computadoras
dado que se requiere de un ciclo de reloj duradero o de varios ciclos de reloj para la
ejecución de una instrucción. La filosofía RISC es opuesta, busca que el hardware
sea simple y que resuelva pocas instrucciones, con ello el hardware puede trabajar a
frecuencias mayores.

Una arquitectura RISC tiene pocas instrucciones y generalmente éstas son del mismo
tamaño; en la CISC hay demasiadas instrucciones con diferentes tamaños y formatos,
que pueden ocupar varios bytes, uno para el opcode y los demás para los operandos.
La tarea realizada por una instrucción CISC puede requerir de varias instrucciones
RISC. En contraste, el hardware de un procesador RISC es tan simple, que se puede
implementar en una fracción de la superficie ocupada en un circuito integrado por un
procesador CISC.

La organización de los procesadores RISC hace que, aun con tecnologías de


semiconductores comparables e igual frecuencia de reloj, su capacidad de
procesamiento sea de dos a cuatro veces mayor que la de un CISC, esto porque
permite la aplicación de técnicas como la segmentación, mediante la cual es
posible solapar diferentes instrucciones en diferentes etapas del procesador, por
ejemplo, mientras una instrucción se está ejecutando, otra puede estar en proceso
de decodificación y la siguiente en la etapa de captura. El número de instrucciones
que simultáneamente están en el procesador depende del número de etapas de
segmentación incluidas.

1.5.1.1 Organización de una CPU

A pesar de que existe una diversidad de fabricantes de procesadores, hay elementos


que son comunes a todos ellos. En la figura 1.5 se muestran los bloques típicos de
una CPU, los cuales se pueden clasificar en dos grupos: el Camino de Datos y la
Unidad de Decodificación y Control. El Camino de Datos involucra los elementos en
donde puede fluir la información cuando se ejecuta una instrucción y la Unidad de
Decodificación y Control determina qué elementos se activan dentro del Camino de
los Datos para la correcta ejecución de una instrucción.

22
El Contador de Programa (PC, Program Counter), el Registro de Instrucción (IR,
Instruction Register) y el Apuntador de Pila (SP, Stack Pointer), son registros con una
función específica en una CPU.

Figura 1.5 Elementos comunes en una CPU

El PC contiene la dirección de la instrucción que se va a ejecutar en un instante de


tiempo determinado y mientras esa instrucción se ejecuta, el PC automáticamente
actualiza su valor para apuntar a la siguiente instrucción a ejecutar.

El registro IR contiene la cadena de bits que conforman a la instrucción bajo ejecución,


de esa cadena, la unidad de control considera el campo del opcode para determinar la
activación de las señales en los demás elementos en la CPU.

El SP contiene la dirección del tope de la pila, que es un espacio de almacenamiento


utilizado durante la invocación de rutinas. La llamada a una rutina requiere que el
valor del PC sea respaldado en la pila, con ello, el SP se ajusta automáticamente al
nuevo tope. Cuando la rutina termina, se extrae el valor del tope de la pila y con éste
se reemplaza al PC, para que el programa continúe con la instrucción posterior al
llamado de la rutina, esto también requiere un ajuste del SP. Además de las llamadas
a rutinas, algunos procesadores incluyen instrucciones para hacer respaldos (push) y
recuperaciones (pop) en forma explícita. Instrucciones que también producen cambios
automáticos en el SP.

La Unidad Aritmética y Lógica es el bloque que se encarga de realizar las


operaciones aritméticas y lógicas con los datos, no obstante, en ocasiones también
opera sobre direcciones para calcular el destino de un salto o la ubicación de
una localidad a la que se va a tener acceso para una transferencia de memoria a
registro o viceversa.

Los registros de propósito general son los elementos más rápidos para el almacenamiento
de variables. Dado que el número de registros en una CPU es limitado, si éste no es
suficiente para todas las variables requeridas, debe utilizarse la memoria de datos para
su almacenamiento.

23
1.5.1.2 Tareas de la CPU

Con cada instrucción, la CPU realiza tres tareas fundamentales: Captura, Decodificación
y Ejecución.

La Captura de una Instrucción es una tarea que involucra los siguientes pasos:

a. El contenido del PC se coloca en el bus de direcciones.

b. La CPU genera una señal de control, para habilitar la lectura de memoria de código.

c. Una instrucción se lee de la memoria de código y se coloca en el bus de datos.

d. La instrucción se toma del bus de datos y se coloca en el IR.

e. El PC es preparado para la siguiente instrucción.

Una vez que la instrucción está en el IR, el procesador continúa con la decodificación
de la instrucción. Decodificar una instrucción consiste en descifrar el opcode para
generar las señales de control necesarias, dependiendo del tipo de instrucción.

Finalmente, la tercera de las tareas de la CPU es la Ejecución. Ejecutar una instrucción


puede involucrar: habilitar a la ALU para que genere algún resultado, cargar un dato de
memoria a un registro, almacenar el contenido de un registro en memoria o modificar
el valor del PC, según las señales generadas por la unidad de decodificación y control.

1.5.2 Sistema de Memoria

Una computadora (y por lo tanto, también un microcontrolador) debe contar con


espacios de memoria para almacenar los programas (código) y los datos. En relación a
cómo se organizan estos espacios se tienen dos modelos de computadoras, un modelo
en donde el código y datos comparten el mismo espacio de memoria y el otro en donde
se tienen memorias separadas, una para código y otra para datos, éstos se ilustran en la
figura 1.6.

Figura 1.6 Modelos de computadoras respecto a la organización de la memoria (a) Arquitectura von Neumann y (b)
Arquitectura Harvard

24

También podría gustarte