miércoles, 8 de febrero de 2012

Sistemas Integrados


Sistemas integrados


Un sistema integrado es un sistema de computación que realiza una o varias funciones dedicadas en un sistema de computación en tiempo real. Estos sistemas se utilizan para cubrir necesidades específicas. En un sistema integrado los componentes están incluidos en la placa base (tarjeta de video, audio, módem, etc.) y en algunas ocasiones los dispositivos resultantes no tienen parecido a lo que tienen las computadoras. Algunos ejemplos de estos sistemas son dispositivos como un taximetro, una tarjeta de control de acceso, el sistema de control de una fotocopiadora, entre otras cosas.

Los sistemas integrados peuden ser programados en lenguaje ensamblador del microcontrolador o microprocesador, así como también pueden programarse en lenguajes como C o C++ utilizando los compiladores específicos. 

Componentes de un sistema integrado


Microprocesador, microcontrolador, DSP son algunos de los componentes que se encuentran en la parte central del sistema. la CPU aporta capacidad de cómputo al sistema, haciendo posible añadir memoria interna o externa. 


La comunicación en los componentes es muy importante, el sistema puede comunicarse mediante interfaces estándar de cable o inalámbricas. Los sistemas integrados normalmente tienen puertos de comunicaciones tipo RS-232, RS-485, SPI, CAN, USB, IP, Wi-Fi, GSM, GPRS, entre otros.

Los elementos electrónicos que el sistema controla son llamados actuadores. Pueden ser motores eléctricos, conmutadores, entre otros.


El módulo de entrada y salida analógicas y digitales se utilizan para digitalizar señales analógicas que proceden de sensores, activar diodos LED, reconocer un estado abierto o cerrado de un conmutador, etc.

El módulo de reloj genera señales de reloj a través de un oscilador principal único. El tipo de oscilador tiene importancia por la frecuencia, la estabilidad y por el consumo de corriente que se requieren. 

El módulo de energía se utiliza para generar las diferentes tensiones y corrientes que se necesitan para alimentar los circuitos del sistema integrado.  


Aplicaciones de sistemas integrados


Algunas de las aplicaciones donde se pueden encontrar los sistemas integrados son los siguientes:
  • En una fábrica, para controlar un proceso de montaje o producción. Habiendo una máquina que se encargue de cierta función específica cuenta con varios circuitos electrónicos para controlar los motores, hornos, etc. los cuales deben ser controlados por un procesador, el cual cuenta con una interfaz persona-computadora para ser controlado por un operador e informarle al mismo como va avanzando el proceso.
  • Puntos de servicio o venta. Las cajas donde pagas en un supermercado cuentan con teclados numéricos, lector de códigos de barra mediante láser, lectores de tarjetas de débito o crédito (banda magnética o chip), pantalla alfanumérica, entre otras cosas. El sistema integrado requiere de muchos conectores de entrada y salida.
  • Puntos de información al ciudadano. En estos establecimientos cuentan con equipos con pantalla táctil donde se puede presionar sobre si misma y elegir la consulta que quieren realizar, obteniendo una respuesta personalizada.
  • Decodificadores y set-top boxes para la recepción de televisión.
  • Sistemas de radar de aviones.
  • Cajeros automáticos.
  • Máquinas de revelado de fotos.


El lenguaje C es más comunmente usado para programar sistemas integrados. El código que genera un compilador C combinado con la capacidad de acceso a capas del software cercanas al hardware son el porque es tan popular en estas aplicaciones.

Una característica donde C muestra su uso en sistemas integrados es la manipulación de bits. Los sistemas integrados tienen registros mapeados en memoria (MMR) mediante los cuales los periféricos se configuran. Estos registros se unen con algunas configuraciones en la misma dirección de memoria, en bits diferentes. 

Ejemplo:

int *mmr; /* puntero al registro que queremos modificar */
mmr = 0x40008ABC; /* dirección de memoria del registro */
 
* mmr |= 1<<7; /* pone a 1 el bit 8 sin modificar los demás */
* mmr &= ~(1<<12) /* pone a 0 el bit 13 sin modificar los demás */

Este tipo de manejo es muy tedioso o imposible en otros lenguajes de alto nivel, ya que se usan operaciones comunes del lenguaje ensamblador que están disponibles en lenguaje C.

1 comentario: