LUISM - Microprocesadores
LUISM - Microprocesadores
LUISM - Microprocesadores
Ampliación-Charallave
MICROPROCESADORES
Alumno:
Luis Cornieles
C.I: 27.218.652
octubre, 2020
En general, el término “microprocesador”, remite al dispositivo
principal dentro de las computadoras digitales, es decir, al elemento
encargado de realizar los cálculos que permiten desde escribir una carta
hasta editar una fotografía; desde administrar una nómina hasta platicar
en tiempo real con alguna persona al otro lado del mundo; desde disfrutar
una película hasta controlar complejos procesos industriales; en fin, el
concepto de “microprocesador” evoca un dispositivo de enorme poder de
cálculo, relativamente costoso, que consume mucha potencia y que, por
tanto, sólo está al alcance de pocas personas.
Sin embargo, la realidad es muy distinta. En un hogar típico,
existen una enorme cantidad de microprocesadores, realizando diversas
tareas que buscan facilitar la vida diaria de los usuarios. Se encuentran en
el televisor, en el equipo de sonido, en el reproductor de DVD, en los
teléfonos celulares, ¡incluso en un control remoto o en un reloj de cuarzo
existen microprocesadores! Y es que esta tecnología se ha abaratado a
tal grado que muchas aplicaciones que antes requerían el uso de varios
dispositivos individuales, ahora se pueden realizar con más facilidad y de
manera más económica con la aplicación de un microprocesador, o de su
variante, un microcontrolador.
Esto significa que los microprocesadores y microcontroladores se
han convertido en parte de la vida diaria, y esto a su vez implica que
cualquier persona interesada en el área de la electrónica o del control
debe saber cómo funcionan y cómo se aplican estos dispositivos.
Precisamente, el objetivo de este libro es proporcionar los principios
básicos de los microprocesadores y microcontroladores, combinando la
teoría y la práctica.
COMPONENTES BÁSICOS DE UNA COMPUTADORA DIGITAL
Si bien las computadoras digitales han salido de los laboratorios de
investigación y de las grandes empresas, para llegar a los hogares y a las
oficinas; esto ha sido el resultado de largos años de trabajo de múltiples
compañías alrededor del mundo, que desarrollaron componentes cada
vez más confiables, pequeños y económicos, al grado de que en la
actualidad, una computadora con una potencia de cálculo que hace un
par de décadas habría costado cientos de miles de dólares, ahora se
puede obtener por menos de mil dólares, convirtiéndose en una
herramienta indispensable para realizar trabajos diarios. Al observar una
computadora moderna, pocos imaginan la enorme cantidad de elementos
que tienen que trabajar en estrecha colaboración para que este
dispositivo realice adecuadamente su labor. Desde el punto de vista
exclusivamente físico, se necesitan una gran cantidad de componentes
que, al ser ensamblados adecuadamente, dan el soporte para la
ejecución de complejos programas de software, y la combinación de
hardware y software es lo que hace de una computadora digital, un
auxiliar invaluable en las labores cotidianas. En la siguiente figura, se
muestran los componentes básicos de una computadora personal (PC)
moderna. A continuación se describe brevemente qué es cada una de
estas partes, y su función principal.
En realidad, una computadora opera alrededor de un elemento
central, que es la tarjeta madre; en este elemento se concentran todos los
protocolos de comunicación que permiten la interacción de los distintos
componentes, así que funciona como una especie de “estación de tránsito
principal” para canalizar los datos desde y hacia todos los elementos que
sean necesarios.
En esta tarjeta madre se instala el microprocesador, el cual es el
encargado de realizar todos los cálculos indicados en el software que se
estén ejecutando. Este dispositivo determina la potencia de cómputo del
equipo, y se considera como la pieza individual más importante dentro de
una computadora personal.
Para poder almacenar temporalmente todos los datos que necesita
para trabajar, el microprocesador requiere de una memoria RAM, y la
capacidad de esta última determina la complejidad de los programas o de
los datos que puede manejar una PC. Como en la memoria RAM sólo
pueden guardarse datos en forma temporal (cuando se apaga el equipo,
se pierde la información que contiene), se requieren de otros medios de
almacenamiento más permanentes para guardar el sistema operativo, los
programas y los datos que vaya generando el usuario, y para ello está un
disco duro y una unidad de discos ópticos. Estos tres elementos, RAM,
disco duro y unidad óptica, son los principales medios de almacenamiento
de datos de una computadora personal, aunque no son los únicos. Para
introducir las órdenes del usuario, es necesario tener elementos
especiales, como el teclado y el ratón. A estos elementos recientemente
se les ha añadido un micrófono, una cámara web, un escáner, etc., pero
incluso en la actualidad, estos últimos componentes aún se consideran
como equipo opcional, mientras que el teclado y el ratón son elementos
indispensables en cualquier computadora moderna.
La computadora para poder presentar sus resultados al usuario,
también necesita elementos de salida de información, que por lo general
consisten en una tarjeta de video a la cual está conectado un monitor, y
una tarjeta de sonido (normalmente incluida en la tarjeta madre) de la que
salen un par de bocinas; con estos elementos, el usuario puede ver y
escuchar lo que está haciendo la máquina, y aprovecharlo ya sea para el
trabajo diario o para el entretenimiento.
Todo lo anterior está contenido en un gabinete, dentro del cual
también se encuentra la fuente de poder que se encarga de alimentar
adecuadamente a todos los componentes de la computadora. Se puede
indicar que esta es la estructura básica de una PC moderna, y aunque
poco a poco se le han añadido más elementos externos y/o internos, los
que se mencionaron son los elementos más importantes y que se
consideran indispensables, para que una computadora actual sea capaz
de ejecutar el software que la convertirá en una poderosa herramienta de
productividad o en un centro de entretenimiento de propósito general.
ALIMENTACIÓN
Como cualquier circuito electrónico, un microprocesador necesita
de una fuente de alimentación que le proporcione la energía eléctrica
necesaria para su correcto funcionamiento. Esta fuente entrega al
dispositivo el voltaje y la corriente adecuados para que pueda realizar sus
tareas. La fuente de alimentación puede ser ya sea un bloque que tome la
electricidad de la línea de corriente alterna (CA) hogareña, y la transforme
en el voltaje adecuado para el circuito, o una simple pila eléctrica (o
varias).
SEÑAL DE RELOJ
Los circuitos de proceso digital requieren de una señal que les
indique la velocidad en la que se ejecutarán sus cálculos internos, esta
señal también sirve como sincronía entre los diversos bloques periféricos
necesarios para cierta aplicación.
RESET
Cuando se enciende un aparato que posea en su interior un
microprocesador, existe un momento justo después del encendido en que
el voltaje de la fuente aún no se estabiliza por completo, y por lo tanto,
puede ocasionar que el dispositivo comience a generar resultados
extraños. Para evitar que el microprocesador comience a funcionar
cuando su voltaje de alimentación aún no se ha estabilizado, existe una
señal conocida como “reset” (RST), cuyo objetivo es mantener apagado al
micro durante esos milisegundos iniciales, y una vez que la fuente ya se
ha encendido por completo, libera al micro y le permite iniciar su labor de
proceso de información.
BUS DE DATOS
Para que el micro pueda comunicarse con el exterior; recibir las
instrucciones que necesita para trabajar, los datos que debe procesar y
las instrucciones del usuario, para expedir los resultados obtenidos, etc.,
existen una serie de líneas de comunicación conocidas como “bus de
datos”.
BUS DE DIRECCIONES
Cualquier microprocesador requiere de una memoria externa para
guardar en ella las instrucciones básicas del programa que debe ejecutar,
así como los datos iniciales con los que comenzará su proceso de cálculo;
para poder acceder al contenido de esa memoria, es necesario contar con
un bus de direcciones, donde precisamente el micro puede indicar a la
memoria: “necesito el dato escrito en la celdilla XX”, y de este modo, el
chip de memoria busca en su almacén interno y suministra al bus de
datos la información deseada.
MAPA DE MEMORIA
Durante la ejecución de cualquier programa, los saltos de una
dirección a otra son muy comunes, ya que se usan por ejemplo, para
llamar a sub-rutinas, para ejecutar diversas acciones según lo requieran
las condiciones de operación del circuito, etc. Esto implica que dentro del
micro debe existir un control de memoria muy preciso, capaz de ir leyendo
los datos e instrucciones de forma secuencial, pero también de llevar un
registro exacto de los saltos realizados, y de los puntos de retorno
asignados; y ese es precisamente el objetivo del control de memoria,
donde se almacena un verdadero “mapa” de ésta, definiendo cuáles
bloques se leerán en forma secuencial, dónde se establecen los saltos o
los puntos de retorno, etc.
INTERRUPCIONES
Otro punto importante a considerar es qué hacer si el dispositivo
entra en un ciclo interminable, pero el usuario no desea hacer algo tan
drástico como apagar el micro o darle un reset, sino que desea que
continúe haciendo su trabajo normal. Para esos casos, los
microprocesadores cuentan con una o más señales de interrupción (INT),
que como su nombre lo indica, cuando se aplican al dispositivo éste
detiene lo que esté haciendo en ese momento y se dirige a una dirección
de memoria preestablecida, donde deberán estar programadas las
instrucciones adecuadas para que el micro recobre su estado de control
normal. Casi siempre hay dos tipos de señal de interrupción: las
interrupciones “mascarables” y las “no-mascarables”. Las primeras
pueden ser ignoradas por el micro en un momento dado, si así está
determinado en su programación, mientras que las segundas no pueden
ser ignoradas por el micro, e implican la interrupción inmediata de
cualquier proceso que esté realizando, y el salto hacia la dirección de
memoria predeterminada.
OPERACIONES BÁSICAS ENTRE REGISTROS
Antes de comenzar con la explicación de la estructura y
funcionamiento de un microprocesador o microcontrolador, se indicarán
las operaciones principales que se pueden hacer con estos dispositivos, y
aclarar un concepto que en ocasiones confunde a quienes apenas
comienzan en este tema: la distinción entre números decimales y
números binarios, y las distintas operaciones que se pueden realizar con
estos últimos. Aunque probablemente quien ya llegó a esta unidad
domina el concepto de numeración binaria, no está de más dar un repaso
rápido sobre el tema. Como se sabe, las personas utilizan el sistema
decimal para realizar sus operaciones diarias, desde contar las frutas y
verduras, hasta los más complejos cálculos astronómicos o físicos. El
sistema decimal ha demostrado su efectividad a través del tiempo, y se ha
convertido en algo tan natural que parece difícil pensar que existan otras
formas de realizar operaciones matemáticas; sin embargo, utilizar el
sistema decimal es más fruto de la casualidad que de un razonamiento
lógico, y la razón principal por la que se estableció desde el inicio de la
humanidad, es debido a que tenemos diez dedos en ambas manos, así
que este aspecto se utilizó como base y se creó un sistema de
numeración fundamentado en potencias de diez.
Como su nombre lo indica, la numeración binaria representa
cualquier tipo de cantidad utilizando sólo dos símbolos: un “0” y un “1”.
Esto podría parecer extraño a primera vista, pero una vez que se
comprende la lógica detrás de la conversión, resulta fácil de entender. Por
ejemplo, al analizar los diez números naturales (del 0 al 9) que se utilizan
de manera cotidiana, y cómo se pueden representar por numeración
binaria; se han añadido también los números del 10 al 15 con su
correspondiente representación en lenguaje hexadecimal (indicado como
Ah, Bh, etc), ya que es el más utilizado al momento de programar
dispositivos de 8 bits.
REGISTROS CON ELEMENTOS ARITMÉTICOS BÁSICOS
Ahora que se recordaron los conceptos básicos de la numeración
binaria, se describirán las operaciones básicas que se pueden hacer con
este tipo de números, y así, más adelante, analizar lo que se puede hacer
cuando se desean realizar operaciones con dos números binarios. Como
última aclaración: se utilizarán palabras de 8 bits, pero se separarán en
dos grupos de cuatro, ya que así se pueden interpretar más fácilmente;
también se mostrará su equivalente hexadecimal, ya que es la notación
más común al programar microprocesadores de 8 bits.
Operaciones con un registro sencillo
Con un número binario se pueden realizar una gran cantidad de
operaciones, de las cuales, bastantes están incluidas en el juego de
instrucciones básicas de microprocesadores y microcontroladores.
Aritmética básica con registros
Así como en numeración decimal se pueden efectuar sumas,
restas y demás operaciones matemáticas, también se pueden realizar con
la numeración binaria, aunque sus reglas son un algo distintas. No se
profundizará en cómo se hace una suma o resta en binario, tan sólo se
mencionarán las operaciones más importantes y cómo se interpretan en
los registros. Se supondrá que los registros con los que se realizará la
operación se identifican como [A] y [B], y el resultado se colocará en un
registro especial de resultado [R].
Operaciones condicionales y de salto
Existen otras operaciones básicas que cualquier microprocesador
debe ser capaz de realizar, para ejecutar determinados segmentos de
código en el momento en que se cumplan ciertas condiciones; es
precisamente por eso que a ese tipo de instrucciones se les llama
“condicionales”, y resultan fundamentales al momento de realizar el
programa básico de cualquier circuito de proceso lógico de información.
Además de éstas, hay instrucciones en las que simplemente se le ordena
al microprocesador que haga un “salto” en su memoria, esto es, que deje
de leerla secuencialmente y en un momento dado se dirija a una posición
de memoria determinada, donde probablemente exista una serie de
instrucciones necesarias en ese momento, u otra serie de comandos que
deben ejecutarse cuando se llega a un cierto punto del programa. A
continuación, se indican cuáles son estas instrucciones condicionales y de
salto, y así, tener las herramientas principales que permitirán comenzar a
realizar los primeros programas de prueba. Aquí se debe introducir un
registro muy especial, llamado “contador de programa” o PC por sus
siglas en inglés; en este registro, se lleva precisamente qué localidad de
memoria se está leyendo en un momento dado; y en condiciones
normales, cada vez que se ejecuta alguna instrucción, el PC se
incrementa una unidad para leer la siguiente orden. Esta lectura
secuencial sólo se interrumpe cuando existe alguna instrucción de salto,
con lo cual el contenido del PC puede cambiar según la instrucción dada
o según lo indiquen los comandos básicos del microprocesador
empleado. También es importante mencionar la existencia de otro registro
muy especial: el stack pointer o almacén de direcciones, el cual se usa
especialmente cuando se llaman a segmentos de código que se deben
usar una y otra vez. A estos segmentos se les da el nombre de
“subrutinas”, y existen instrucciones especiales para llamarlas y para
regresar de ellas, y es ahí donde se aprovechan los registros stack. Si el
concepto de estos dos registros no queda muy claro en este momento,
más adelante, cuando se hagan los primeros programas de prueba y se
apliquen todos estos registros, su utilidad será evidente.
CONCEPTOS BÁSICOS DE INSTRUCCIÓN Y CÓDIGOS DE
OPERACIÓN
Hasta este momento, ya se indicó que para que un
microprocesador pueda comenzar a trabajar, es necesario proporcionarle
una serie de órdenes y datos, que detallen exactamente qué labor se
desea realizar, cómo utilizar sus puertos, cómo establecer contacto con
sus periféricos, etc. Sin esta serie de instrucciones, un microprocesador
no sirve absolutamente para nada, pero si estos comandos están
correctamente programados, el micro se convierte en una poderosa
herramienta de productividad, ya sea para trabajos generales (como los
microprocesadores en computadoras personales), o para aplicaciones
muy específicas (como los microcontroladores incorporados en los
equipos electrónicos hogareños). Además, esta serie de instrucciones
permite utilizar un mismo micro para distintas aplicaciones, tan sólo
cambiando la asignación de terminales, la forma de interpretar las señales
de sus sensores, conectando distintos actuadores, etc. Es precisamente
este programa base lo que proporciona versatilidad a los
microprocesadores, y permiten aprovecharlos en muchas y muy variadas
formas.
Ahora bien, este programa base debe tener cierta estructura, la
cual es determinada por el microprocesador. Si por ejemplo, se programa
un microcontrolador para un sistema de aire acondicionado, se supondría
que como entrada se colocará un termómetro, y como salida un par de
controles que enciendan ya sea el calefactor o el enfriador de aire;
además, este aparato deberá tener un teclado de control para que el
usuario determine la temperatura que desea, y un display donde muestre
dicho valor. Con esta información básica, se puede comenzar a pensar en
cómo puede ser un programa que controle el funcionamiento de este
aparato; sin embargo, aquí existe un problema fundamental.
Entonces, en resumen, los microprocesadores poseen un juego de
instrucciones básicas con las cuales deberá estar elaborado el programa
que le va diciendo a cada momento qué hacer; estas instrucciones tienen
una construcción muy particular, dependiendo del microprocesador en
cuestión, y pueden ser combinaciones de bits de diversa longitud,
dependiendo de cómo haya sido diseñado ese dispositivo.
MICROPROCESADOR HIPOTÉTICO
Antes de comenzar las prácticas con un microcontrolador real, a
continuación se indica cómo funciona un microprocesador hipotético, y
esto servirá como base para comprender mejor el funcionamiento de
dispositivos reales. También permitirá conocer algunos puntos
importantes en el funcionamiento de estos circuitos de proceso lógico,
que se aplican a cualquier marca y modelo de microprocesador o
microcontrolador.