Está en la página 1de 9

TEMA 1: SISTEMAS MICROPROGRAMABLES

El conocimiento adquirido en los temas precedente te permite acometer la solución de


un problema digital, empleando para ello un circuito combinacional, secuencial o una mezcla
de ellos. Ahora bien, debes tener muy claro que el funcionamiento del circuito desarrollado
depende de las conexiones de cada módulo o puerta utilizada. Es decir, depende de su
cableado.

Ahora se propone que se aprenda a usar una nueva herramienta: un programa. La idea
fundamental es que en vez de diseñar proyectos interconectando multitud de circuitos
integrados que cumplen determinadas funciones digitales, vamos a sustituir todo eso por un
solo circuito integrado o unos pocos, que siempre serán los mismos, para resolver cualquier
aplicación y lo que cambiará será el programa de instrucciones que le mandaremos ejecutar.
Ésa es la idea de un sistema microprogramable, el cual, llegó gracias al enorme desarrollo de
la tecnología electrónica con la alta integración de componentes, dando lugar a los circuitos
microprogramables (CµP’s).

A la hora de diseñar un automatismo, la elección entre un sistema cableado o sistema


programado, dependerá en general de su complejidad, de la cantidad a realizar, y fundamental-
mente, de su costo.

1. Estructura de un circuito microprogramable

Un sistema microprogramable es un conjunto de circuitos integrados capaces de leer,


interpretar y ejecutar las instrucciones de un programa a gran velocidad.

En todos los sistemas microprogramables se pueden distinguir tres componentes:

 Hardware: Lo conforman todos los circuitos y componentes físicos del sistema.


 Software: El conjunto de rutinas e instrucciones de un programa.
 Firmware: El conjunto de programas e instrucciones que el usuario no puede
cambiar. Contiene un grupo de programas intermedios entre el hardware y el
software.

Su diagrama de bloque (estructura), por muy complejo que sean estos sistemas,
consta de cinco elementos: C.P.U., reloj, memorias internas (ROM, RAM), unidad de E/S y
los diferentes buses.

1
 Reloj: Es un generador de onda cuadrada para que todo el sistema esté
sincronizado. Su frecuencia nos define la velocidad del sistema.

 Unidad central de proceso (CPU): Lugar donde se generan todas las órdenes de
control, se realizan las operaciones aritméticas y lógicas, se interpretan y ejecutan
las instrucciones procedentes de la memoria central o los contenidos que se
encuentran en los registros.

 Memoria interna o central: Donde se encuentran los datos y programas que debe
utilizar el sistema.

 Unidades de E/S (I/O): Es la parte que permite la comunicación del sistema


microprogramable con el exterior.

 Buses: Elementos que permiten la comunicación entre los elementos del sistema.

 Periféricos: Son los dispositivos que realizan el trabajo desde el exterior del
sistema y no forman parte del sistema microprogramable. Se clasifican en
periféricos de entrada y de salida.

Dependiendo del tipo de circuito microprogramable que se tenga, este tendrá una
arquitectura u otra que veremos más adelante.

2. Tipos de circuitos microprogramables. Estructura y aplicaciones

En general, entenderemos por circuito microprogramable un circuito integrado a gran


escala (LSI) o muy alta escala (VLSI) para el control, mediante lógica programada, de
sistemas electrónicos. Éste es capaz de leer, interpretar y luego ejecutar las instrucciones
contenidas en un programa.

En la práctica nos encontraremos con dos tipos de CµP’s, según el número de distintos
circuitos integrados que lo forman, la capacidad de trabajo y el tratamiento de datos:

 El microprocesador (µP).
 El microcontrolador (µC). Es una evolución del anterior.

2.1. Microprocesadores
El microprocesador en sí mismo constituye la
CPU de un circuito programable o de un ordenador. Pero
su funcionamiento requiere de más dispositivos, como
pueden ser la memoria, la unidad de entrada/salida y los
buses de datos.
2
Su esquema de bloques (hardware) de todo sistema con microprocesador es el
siguiente:

En una máquina Von Neumann hay un único bus de direcciones y de datos, y tanto los
datos como las instrucciones están en la misma memoria.

Los elementos que forman el hardware de un sistema con microprocesador son:

 Unidad central de proceso o CPU: Es el chip integrado que forma el


microprocesador. Su estructura interna está formada por:

 Unidad aritmético lógica (ALU): Es el elemento que realiza las operaciones


elementales: la suma o resta aritmética, el producto lógico, incrementación,
decrementación, etc.

 La unidad de control (UC): Es el bloque más importante del microprocesa-


dor. En él se van a realizar todas las señales de control para el gobierno del
microprocesador pues en él se desarrolla la lectura, interpretación y ejecución
de una instrucción.

 Registros: Encargados de almacenar la información temporalmente (memoria


local) de los resultados de la ejecución de instrucciones, cargar datos desde la
memoria externa o almacenarlos en ella.

 Acumulador: Es uno de los más importantes. Éste almacena los datos, y


los resultados de las operaciones aritmético-lógicas. Está bidireccionado
con la ALU.

 Auxiliares: Se utilizan para almacenar datos y resultados dentro de la


CPU.
3
 Reloj: Ya mencionado.

 Memorias: Son las encargadas de almacenar los programas y la información que


permiten el funcionamiento del sistema. Existen dos tipos:

 Memoria RAM: Es una memoria de acceso aleatorio o memoria de


lectura/escritura. Contiene los programas y datos que el usuario puede
modificar a su voluntad.

 Memoria ROM: Es una memoria de solo lectura, por lo que únicamente se


puede leer la información almacenada. Comprende todos los programas de
arranque que precisa el sistema microprogramable para activarse, además de
los datos.

 Unidad de entrada/salida (I/O): Es la interfaz entre los circuitos internos y el


exterior, pues todo sistema microprogramable tiene que comunicarse con el
exterior para poder enviar o recibir la información.

 Buses: Son las líneas de interconexión eléctrica por donde fluye la información en
todo el sistema, ya sea entre los bloques del sistema (externa) o entre los elementos
que integran un bloque (interna). Existen tres tipos:

 Bus de datos: Manejan la información del sistema. Su


número de líneas tiene que ser igual al número de bits
del dato. Este bus interconecta a todas las unidades del
sistema y es bidireccional, es decir, sirve para leer y
escribir información entre las mismas.

 Bus de direcciones: Se utiliza para señalar la ubicación


de la memoria (ROM, RAM, o unidad de E/S) que debe
ser leída o escrita.

 Bus de control: Sirve para seleccionar qué unidad debe


dar o recibir cada dato del microprocesador
(lectura/escritura). Además, sincroniza de forma precisa
la transmisión de datos en el sistema.

 Periféricos externos: Ya mencionados anteriormente. En el caso de un ordenador,


los periféricos o dispositivos de entrada y de salida podrían ser los que se muestran
en la figura 1. En el caso de un controlador programable de un proceso
automatizado los dispositivos de entrada y salida podrían ser los que se muestran
en la figura 2.

Figura 1 Figura 2
4
Los microprocesadores se utilizan en aquellas aplicaciones en las que se requieren
grandes cantidades de memoria, ejecutar una gran cantidad de programas o se prevea hacer
futuras ampliaciones realizando las tareas a una elevada velocidad. Un ejemplo de aplicación
son los ordenadores personales.

Actividad 1: Señala los elementos de un sistema microprogramable en la imagen dada.

En cuanto al software de un sistema microprocesador, éste está formado por una serie
de instrucciones que indican al sistema lo que tiene que hacer, y la CPU toma las instrucciones
de la memoria. A su vez, las instrucciones indican qué hay que hacer con los datos, es decir,
las órdenes que tiene que cumplir el sistema. Así, la estructura habitual de una instrucción es
la siguiente:

 Código de operación: Indica la tarea que tiene que realizar el sistema, por
ejemplo, suma, resta, etc.

 Operando: Indica con qué datos se deben realizar las operaciones, o las direccio-
nes en las que se encuentran esos datos. Los datos son grupos que pueden ser
empleados por las instrucciones.

Todas las instrucciones darán lugar a un programa.

5
Para que un determinado programa pueda ser ejecutado por el microprocesador ha de
ser almacenado en la memoria central. Éste irá tomando una a una las instrucciones del
programa y las irá ejecutando.

Dependiendo de lo avanzado que sea


el microprocesador, podrá entender y ejecutar
más o menos instrucciones.

El conjunto de instrucciones que es


capaz de entender y ejecutar un determinado
microprocesador nos da una idea de las
operaciones básicas que puede realizar, y que
organizadas de forma adecuada, constituyen
lo que conocemos como software.

Las instrucciones se clasifican según su función en:

 Instrucciones de transferencia de datos: Estas instrucciones mueven datos entre las


distintas memorias del sistema.

 Instrucciones de cálculo: Realizan operaciones aritméticas y lógicas, como sumar, restar,


multiplicar o dividir, AND, OR, etc.

 Instrucciones de transferencia del control del programa: Sirven para alterar la


secuencia lineal del programa y saltar a otro punto del mismo. Son similares a la
instrucción GOTO de muchos lenguajes de programación.

 Instrucciones de control: Permiten seleccionar diferentes funciones del microprocesador,


como por ejemplo, pasar órdenes al coprocesador matemático, detener la actividad del
microprocesador hasta que se produzca una determinada acción, etc.

La verdadera inteligencia de un procesador está en el programador, que es el que, a


través de un programa, indica la secuencia de acciones a realizar. Por esta razón, el
programador se las tiene que ingeniar para mover en cada instante los datos precisos, así como
realizar las operaciones adecuadas para conseguir el resultado esperado.

El único lenguaje que entiende un microprocesador es conocido como lenguaje


máquina (lenguaje de bajo nivel), en el que las instrucciones se escriben en código binario y
está ligado íntimamente con la arquitectura propia del mismo. Dada la dificultad de programar
en este lenguaje, se ha desarrollado lo que se conoce como lenguajes de alto nivel, como
Pascal, C, C++, Java, Visual Basic, que consiguen hacer mucho más fácil e intuitivo la tarea
de programar.

Ejemplos:

Código de operación Dirección Lenguaje de alto nivel Lenguaje humano


00010101 10000001 LOAD A
00010111 10000010 ADD B C = A+B
00010110 10000011 STORE C

Otro ejemplo: 00010111 10000010 → Suma el contenido de la dir. 130 al acumulador

6
Una vez escrito el programa
en un lenguaje de alto nivel, se
necesita traducir el mismo a lenguaje
máquina. Esto lo hace un programa
especial llamado Compilador. Una
vez compilado el programa ya se
puede cargar en la memoria del
sistema para que sea ejecutado por el
microprocesador.

En todos los sistemas microprogramables se dispone de interrupciones en el programa,


es decir, de una señal de control que obliga al microprocesador a parar el proceso que estaba
realizando para realizar otro proceso al que se le suele denominar subrutina de atención (rutina
de alta prioridad). Una vez finalizada ésta, la CPU vuelve a su actividad anterior.

Los eventos en los que se pueden definir interrupciones son de dos tipos. Por un lado
se tienen las interrupciones de timers (cuando se habla de temporizadores). Por otro lado, se
tienen las interrupciones de hardware, que responden a eventos ocurridos en ciertos pines
físicos.

En el caso del microcontrolador de Arduino los pines susceptibles de generar


interrupciones varían en función del modelo de Arduino. En Arduino y Nano se dispone de
dos interrupciones, 0 y 1, asociados a los pines digitales 2 y 3. El Arduino Mega dispone de 6
interrupciones, en los pines 2, 3, 21, 20, 19 y 18 respectivamente. Arduino Due dispone de
interrupciones en todos sus pines.

7
2.2. Microcontroladores
Es aquel en el que todo el sistema microprogra-
mable está integrado en un único circuito integrado, de
manera que un microcontrolador es un circuito integrado
que integra en la misma pastilla la CPU, la Memoria
Central, los puertos de E/S digitales y otros elementos.

Como desventaja su capacidad de trabajo es


menor que la de los microprocesadores. Se utiliza en
aquellas aplicaciones en las que necesitamos el uso de un
pequeño procesador. Se encuentra por todas partes, por
ejemplo, los autómatas programables industriales poseen este tipo de circuitos integrados, al
que se le han añadido sistemas de control de potencia tales como relés para poder controlar
maquinaria industrial, o en Arduino.

En el punto anterior se ha comentado que el µC puede tener integrada una arquitectura


Von Neumann, pero es más común que integren la arquitectura Harvard.

En esta arquitectura hay dos buses, de direcciones y de datos, cada uno conectado a
memorias distintas, una para los datos y otra para las instrucciones, respectivamente. Así, el
procesador puede acceder separada y simultáneamente a las dos memorias.

El esquema de bloques de un microcontrolador es:

8
Algunos de los campos de aplicación más habituales de los microcontroladores son los
siguientes:

 Telecomunicaciones: Teléfonos móviles.


 Productos de gran consumo: Electrodomésticos de línea blanca (lavadoras,
lavavajillas, microondas, etc.) y de línea marrón (televisores, reproductores de DVD,
aparatos de radio, etc.).
 Automoción: Control de los airbags, o de frenado.
 Informática: Periféricos como ratones, teclados, impresoras, escáneres, discos
duros, etc.
 Industria: Se utilizan en diferentes ámbitos, como la robótica o el control de
motores.

El lenguaje de programación que se usa para los microcontroladores es un lenguaje de


bajo nivel o ensamblador, aunque en la actualidad también se usa el lenguaje de alto nivel para
la programación, sobre todo el lenguaje C. En todo caso, cada microcontrolador se programa
atendiendo a sus características e instrucciones.

Con el uso de lenguajes de programación de bajo nivel (lenguaje ensamblador) se


consigue un considerable ahorro en el número de códigos a la hora de escribir los programas,
lo que en ocasiones resulta interesante debido a la limitación de la capacidad de la memoria de
programa interna que poseen los microcontroladores. Además, se consigue que la ejecución de
los programas sea más rápida.

La programación en lenguaje ensamblador es bastante más compleja que la de un


lenguaje de alto nivel, pero le da al programador el dominio absoluto del sistema. Los
fabricantes de microcontroladores suelen facilitar el programa ensamblador de forma gratuita.

Dada la dificultad que supone para muchos usuarios el dominio de este tipo de
lenguajes, existe la posibilidad de utilizar lenguajes de alto nivel, pudiéndose encontrar
versiones de compiladores e intérpretes para diferentes familias de microcontroladores.

Así, por ejemplo, para los PIC de la firma Microchip se puede utilizar el compilador
PCM de C de la empresa CCS comercializado en España por Microsystems Engineering. Por
otro lado, Microchip proporciona un entorno de desarrollo freeware llamado MPLAB que
incluye un simulador software y un ensamblador.

En la actualidad, existen muchos modelos de microcontroladores para aplicaciones de


todo tipo y cada uno con sus particularidades de programación. Con el fin de iniciarse en el
mundo de la programación de los microcontroladores, de una forma sencilla y didáctica, aquí
se ha seleccionado la placa de Arduino (Raspberry Pi es un microprocesador) debido a que
Arduino es una compañía de desarrollo de hardware y software libres.

Actividad 2: Realiza un resumen del tema en forma de esquema o llaves.

También podría gustarte