Skip to content

Microprocesadores y Microcontroladores: generalidades

21 julio, 2013

Los más viejos seguramente recordéis con cariño nombres como Zilog Z80, Motorola 6809, MOS 6502, MOS 6510 o Intel 8080.    Fueron algunos de los microprocesadores (en adelante µP o MPU, MicroProcessor Unit) que nos permitieron disfrutar de  computadores míticos como el Sinclair ZX Spectrum, Commodore 64, IMSAI 8080, Rockwell AIM-65, Dragon 64.  Estos en concreto son µP de 8 bits, pero también los hay de 16 (Motorola 68000 o Intel 8086), de 32 bits (Motorola 680030, Intel 80386) y por supuesto de 64 bit (Intel i5, etc.)   En seguida explicaré qué define a un µP pero antes hagamos memoria y repasemos también la otra rama que se trata en esta entrada, los microcontroladores (en adelante µC o MCU, MicroController Unit).   De nuevo apelo a la memoria de los más viejos, ¿recordáis alguno de los clásicos? Intel MCS48, Intel MCS51, Motorola 68HC11, SGS-Thomson ST-6 o Microchip 16C84… Actualmente podemos encontrar µC más avanzados como los ATmega de los Arduino o la evolución de los µC: los SoC, como toda la línea de dispositivos basados en ARM. Ciertamente existen diferencias entre estos dos grandes grupos (µP y µC) pero se podrían resumir en una sola y es que los primeros son sistemas más abiertos y genéricos  que los segundos.

A continuación  puedes ver una tabla con características genéricas de ambos sistemas.  Explicaré cada punto por separado pero antes aclarar que los µP en los que me fijaré son aquellos de gama baja que cualquiera podría emplear en un diseño doméstico, centrándome sobre todo en los viejos clásicos de 8/16 bits:

 

Microprocesador

Microcontrolador

Memoria RAM

Externa, amplia

Interna, escasa

Memoria ROM

Externa, amplia

Interna, escasa

Registros

Escasos

Número mayor

Arquitectura

Von Neumann

Harvard

Instrucciones

CISC

RISC

Reset y reloj 

Control externo

Control interno

Patillaje  Genérico, 28, 40, 60, 64  Muy variable, desde 8 hasta > 300
Interrupciones internas

Genéricas

Dependientes del dispositivo

E/S

Mapeado en memoria

Pocos puertos

Conversor A/D, D/A

No disponible

Disponible

Contadores

No disponible

Varios disponibles

Comparadores

No disponible

Varios disponibles

Memoria Flash de datos

No disponible

Disponible

Generador de PWM

No disponible

Disponible

Gestión RS-232

No disponible

Disponible

Gestión USB

No disponible

Disponible

Gestión SPI

No disponible

Disponible

Gestión I2C

No disponible

Disponible

Ethernet

No disponible

Disponible

Coprocesador matemático

No disponible

Disponible

Memoria caché

Disponible

No disponible

Veamos primero qué tienen en común ambos sistemas y qué define por tanto a un µP o a un µC:

Se trata de circuitos integrados (comúnmente conocidos como chip) que contienen la lógica electrónica necesaria para ejecutar secuencias de instrucciones (programas).  Se compone de los siguientes elementos:

Unidad de Control: Se encarga de buscar y cargar en el orden apropiado las instrucciones y datos del programa en curso y después ejecutar el código asociado a éstas.

Unidad Aritmético-Lógica: aunque parezca mentira, la base principal de estos sistemas digitales (µP y µC) se encuentra en realizar operaciones aritméticas y lógicas.  Con eso, más el movimiento de datos y las bifurcaciones, ya tendremos un microprocesador sencillo.  Esta unidad, también conocida por sus siglas como UAL (o en inglés ALU) es la encargada de sumar, restar, multiplicar, dividir, desplazar, rotar, comparar; hacer operaciones booleanas como AND, OR, NOT, EXOR, etc…

Memoria interna en forma de registros: es una zona de memoria usada para almacenar datos intermedios en las operaciones.  Su número es pequeño y algunos están destinados a propósitos muy específicos, como descubriremos más adelante.

Esto es, a grandes rasgos lo que define tanto a un µP como a un µC.  Veamos ahora, ejemplificadas, cuáles son sus diferencias.

Hemos dicho que la unidad de control secuencia las instrucciones contenidas en la memoria.  Estas instrucciones pueden encontrarse en una memoria RAM o en una ROM (puedes ver más información de memorias aquí)  En el caso de los µC ambas memorias se alojan dentro del mismo circuito integrado (en el mismo chip) ahorrando por tanto al usuario toda la lógica de conexionado, alimentación, gestión de direcciones y espacio en la placa; en los µP esta memoria se aloja fuera.  Aquí encontramos la primera gran diferencia y la primera limitación de los µC frente a los µP, los primeros tienen una cantidad de memoria RAM y ROM muy limitada y que en algunos casos puede parecer ridícula (1.024 “palabras” para el programa y 68 bytes para los datos en el caso de un PIC16C84, explicaré a cuento de qué viene lo de “palabras” cuando hable de arquitecturas)  En cambio, un µP puede disponer de un máximo de memoria RAM + ROM limitado por el direccionamiento del dispositivo.  Así, un procesador con 16 líneas de direcciones podría tener hasta 2^16 =  64 KB de RAM + ROM, aunque existen técnicas que permiten ampliar estas limitaciones; un procesador con 24 líneas de dirección podría disponer de 2^24 = 16 MB de memoria RAM + ROM.  Es cierto que en unos pocos kilobytes no entra un programa muy extenso pero hay que tener en cuenta que los µC se orientan a propósitos muy concretos, mientras que los µP tienen una aplicación más general.

Veamos un detalle acerca de la memoria.  En un µP, al ser necesario utilizar memoria exterior encontramos patillas dedicadas en exclusiva a acceder a las direcciones, los datos y las señales de control de esas memorias.  Esas patillas no pueden emplearse entonces para otros usos.

Por ejemplo ésta es la distribución de patillas (pin-out) del µP Zilog Z80:

Z80_pinout

De las 40 patillas disponibles, las salidas A0 a A15 corresponden a las de selección de direcciones y las líneas D0 a D7 a las de entrada y salida de datos.  Además hay varias líneas de control de bus y memorias (/RD, /WR, /REFSH, /MREQ, /BUSRQ,…) Como vemos son patillas y espacio en la placa que no se pueden emplear para otros usos.

En cuanto a la memoria interna de registros, en un µP existirá al menos un juego de registros en los que se pueden almacenar datos intermedios.  Algunos están destinados a propósitos concretos, como los registros señalizadores o ‘flags‘, con los que se indican situaciones como que un byte tiene contenido igual a cero, si es positivo o negativo o si se produjo un desbordamiento en una operación aritmética.  Otro registro específico es el apuntador de pila o ‘stack pointer‘ que permite llevar la cuenta de dónde se encuentra el tope de la pila en cada momento (la pila se emplea como almacén de direcciones de retorno, de parámetros y de variables)

Los µP suelen estar diseñados basándose en una arquitectura Von Neumman mientras que los µC aprovechan la característica de incorporar la memoria en su interior para hacer uso preferente de la arquitectura Harvard.  Brevemente: en la primera los datos y el programa comparten la misma memoria, es lo que podríamos encontrar en cualquiera de nuestros computadores personales actuales; en la otra, el programa se ubica en una memoria interna totalmente aislada de la memoria de datos, lo que proporciona un mayor nivel de seguridad.  Así mismo, los micros con arquitectura Harvard suelen disponer de un juego de instrucciones reducido (o RISC, Reduced Instruction Set Computing) con un número de instrucciones menor pero más eficiente y rápido en ejecución.  Una de las ventajas de los micros RISC frente a los CISC (Complex Instruction Set Computing, el otro tipo de micros) es que al tener la memoria de instrucciones en el interior pueden emplear un mayor número de bits por palabra de código de los bits por palabra de proceso de datos.  Así, un µC puede trabajar con datos de 8 o 16 bits pero tener un ancho de instrucciones de 14 bits por ejemplo.  Si bien es cierto que no todos los µP son Von Neumann ni todos los µC son Harvard, sí que mayoritariamente se cumple esta regla.

En cuanto al ‘reset’ (la señal que inicializa el dispositivo) y el reloj (la que marca impulsos de ejecución), en los µP suelen ser más rudimentarias y limitadas, sobre todo en los antiguos, recayendo a veces la responsabilidad del control de ‘reset’ en circuitos externos o conjuntos de componentes.  Los µC s suelen incorporar un circuito de ‘reset’ complejo que permite disparar un reinicio en caso de caída de tensión, mantenerlo mientras el sistema arranca, etc.  Con el circuito de reloj sucede algo similar: en los µP se aceptan señales extenas de sincronización (generalmente un cuarzo u oscilador) pero en los µC encontramos más variedad permitiendo, por ejemplo que el circuito sea sincronizado por cuarzos de diversas frecuencias, osciladores RC, resonadores e incluso muchos incorporan un generador de reloj interno, aunque no muy fiable, que permite reducir el número de componentes de la placa.  Este puede incorporar incluso un prescaler para darle mayor resolución.

Los µPs suelen venir con una configuración de patillas en módulos estándar DIP de 40 patillas.  Desde hace tiempo también podemos encontrar versiones SMD más pequeñas y manejables.  Los modernos micros de alta potencia utilizan disposiciones de conexiones tipo BGA, con más de mil conexiones…  Por su parte los µC pueden venir en soportes muy variables desde apenas 6 patillas de los más pequeños ATtiny, hasta varios cientos.

Ambos dispositivos, µC y µP, disponen de gestión de interrupciones internas y externas.  Las primeras lanzan subrutinas de servicio de interrupciones (RSI en inglés) para permitir ejecutar código generado por eventos internos inesperados o por eventos solicitados por el propio código en ejecución mediante instrucciones concretas.  Las interrupciones externas permiten que se ejecuten RSIs para dar servicio a solicitudes de periféricos externos.  Las interrupciones internas del µC están más orientados a eventos dependientes de sus elementos integrados como pueden ser temporizadores, contadores, memorias EEPROM, puertos serie, etc, como desbordamientos de temporizadores, señalización de EEPROM disponible para escritura u otras.  En un µP responden sobre todo a eventos  como condiciones de error (divisiones por cero, instrucciones inválidas, errores de acceso a memoria), o solicitudes por parte del usuario.  En ambos casos las externas suelen responder a cambios de estado o activaciones en patillas

La Entrada y Salida (E/S) del µP, el medio con el que se comunica con el exterior, suele realizarse mediante mapeo de las E/S sobre las líneas de direcciones.  Esto es en parte debido al uso de arquitecturas Von Neumann en la que datos y programa se encuentran direccionados por las mismas líneas.  Por tanto un µP puede disponer de un número muy elevado de direcciones de E/S pero a costa de introducir lógica de control externa para activar los buses de E/S mientras se desactivan los de memoria; esto supone más componentes en placa y por tanto, más gasto.  En un µC las líneas de E/S se limitan a las que el fabricante decidió incluir y están unidas directamente a las patillas del integrado.  No es inusual encontrar µC con buses de E/S de 2, 3, 4 ó 5 patillas, mientras que en los µP son generalmente del tamaño del ancho de bus (8, 16, 32 bits).  Otra diferencia es que los µP las líneas de un mismo puerto se conmutan todas de entrada o salida mientras que en un µC se pueden direccionar como E/S las patillas individuales.

También es frecuente encontrar en los µC conversores Analógicos a Digital (ADC) y viceversa Digital a Analógico (DAC), lo que no es habitual en µP.  Otros elementos distintivos son los contadores y los comparadores, capaces los primeros de cotar eventos (ticks de reloj, impulsos por una patilla, etc) y disparar una interrupción cuando se desborda o, los segundos, de dispararla cuando se llega a un valor establecido.

Muchos µC incorporan una pequeña memoria de datos no volátil de apenas unos pocos cientos de bytes.  El propósito es almacenar de manera permanente algunas variables del dispositivo por si se producen cortes de energía o para cuando sea preciso desconectarlo y reiniciarlo en el estado en que se quedó.  Estas memorias EEPROM permiten precisamente almacenar algunos valores y recuperarlos después bajo demanda.

Los µC más básicos pueden también incorporar funcionalidad PWM (Pulse Wide Modulation).  Dedicaremos también un capítulo aparte para explicar de qué se trata y cómo utilizarla pero, básicamente, permiten implementar un DAC (Conversor Digital Analógico) emitiendo trenes de pulsos de unos y ceros con un ciclo de trabajo variable.  Así, al 100% del ciclo de trabajo (emitiendo señales altas por la patilla durante el mayor tiempo posible) tendremos el máximo de tensión en la salida.  Emitiéndolas durante la mitad del tiempo tendremos la mitad de la tensión. y variando la relación entre el tiempo que la patilla está a nivel alto y a nivel bajo, conseguiremos una gradación en la patilla de salida.  Con esto podremos, por ejemplo, hacer lucir un LED con diferentes intensidades.  O pilotar un motor DC a diferentes velocidades.

Los modernos µC también incorporan funcionalidad y niveles de señal para gestionar puertos RS-232 (a niveles TTL), USB, SPI (Serial Peripheral Interface), I2C, y en algunos casos incluso Ethernet.  Los µP dejan recaer esta funcionalidad en circuitos externos.

Muchos µP sí incorporan circuitos específicos para cálculos matemáticos complejos (por ejemplo coma flotante), en ocasiones como instrucciones adicionales y en otras como un co-procesador integrado dentro del mismo µP.   En los µC  la limitación en cuanto a potencia de cálculo suele ser más evidente.

Otra ventaja de los µP frente a los µC es la incorporación de memorias caché de almacenamiento temporal de instrucciones y datos.  Éstas no son accesibles para el programador sino que las emplea el propio dispositivo para mejorar su rendimiento.

Como siempre hay excepciones y la línea que separa a unos de otros es cada vez más difusa, pero tratando de µC y µP de gama baja (PIC y AVR por un lado y micros de 8 bit como los Zilog, Intel  8085, MOS 6502, etc por otro) estas diferencias suelen ser más evidentes.

Es fácil ver por tanto que el microcontrolador evoluciona del microprocesador como una solución de compromiso pero elegante para diseñar sistemas digitales.   Muchos de los elementos que con un microprocesador se alojarían en otros circuitos, en un diseño con microcontrolador estarán integrados dentro del propio chip ahorrando considerablemente en espacio, costes de fabricación y  complejidad.  Como vemos no sólo la memoria se integra dentro del chip, sino también la gestión de periféricos, control de buses, gestión de protocolos de comunicación (RS-232, USB, SPI, I2C, CAN, Ethernet, etc); es habitual que disponga de temporizadores y contadores, generadores PWM y una potente y eficiente gestión de interrupciones.  Esto tiene un coste, de ahí que hable de solución de compromiso, y es que el microprocesador es un sistema abierto y puede conectarse con prácticamente cualquier memoria o periférico de propósito específico, mientras que los microcontroladores son sistemas cerrados teniendo que ceñirnos a lo que el fabricante ha decidido incluir en el chip.  Más aún, nos encontraremos muchas veces que una misma patilla del chip puede servir para conectarlo con el exterior de muy diferentes maneras, por ejemplo es habitual que una patilla se utilice como entrada de reloj, entrada del contador, puerto de E/S o disparador de interrupciones hardware.  Obviamente no puede utilizar toda esa funcionalidad a un mismo tiempo, así que seremos nosotros quienes decidamos cómo se comportará esa patilla.  En un microprocesador es común ver multiplexadas líneas de datos y direcciones pero en ese caso habrá una patilla encargada de señalizar en cada momento si se trata de unos u otros.

Más adelante publicaré diseños para µC y para µP para que pueda verse, en la práctica, la diferencia entre ambos.

 

Recuerda que nos mudamos. nuestra nueva dirección es:

http://arrizen.com

Anuncios

From → Electrónica

Dejar un comentario

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: