28 de enero de 2013

Redes Neuronales

Al día de hoy existen muchos problemas que no se pueden resolver o que la solución utilizada no es la mejor para todos los contextos, la mayoría de estos problemas convergen en que la solución debería encontrarse mediante algún modelo matemático sin embargo, se pueden ocupar métodos alternativos para hacer el modelado matemático menos complejo. Partiendo de que la herramienta tecnológica más utilizada en la actualidad para facilitar el trabajo en general, son las computadoras; entonces los modelos matemáticos desarrollados deben poder ser implementados en estos dispositivos o en un procesador de propósito especifico.

Cuando los problemas a resolver tienen cálculos matemáticos muy complejos, su implementación computacional resulta muy difícil o casi imposible, porque los sistemas de cómputo tienen límites, como es la velocidad de procesamiento, la memoria, la cantidad de dispositivos internos, buses, periféricos, etc.
Existen problemas que tardan años en ser procesados mediante una supercomputadora, lo cual no resulta factible para problemas de urgente resolución. Para resolver este inconveniente se utilizan métodos alternativos a la matemática pura, como lo son las soluciones simbólicas o lógicas, o bien algoritmos que reduzcan el número de operaciones a realizar. Otra alternativa es utilizar modelos inspirados en la naturaleza o en el comportamiento de organismos vivos, como los son los llamados Algoritmos Bioinspirados.

Las redes neuronales artificiales se pueden considerar una especie de algoritmo bioisnpirado, porque modelan de manera sencilla el funcionamiento de las neuronas biológicas  y además son una de las técnicas utilizadas para resolver problemas de inteligencia artificial. Lo descrito anteriormente hace agradable el estudio de esta técnica para entender sus principios y aplicaciones, por lo que en las siguientes entradas se estudiaran las consideraciones más significativas de las Redes Neuronales Artificiales (RNA).

Los objetivos generales son:
  1. Comprender los elementos y el mecanismo de aprendizaje de una RNA.
  2. Determinar el tipo de problemas que se pueden resolver mediante una RNA y seleccionar la arquitectura adecuada para ello.
  3. Diseñar y aplicar a problemas reales, diversos tipos de RNA.


24 de enero de 2013

Introducción a los microcontroladores

Cuantos de nosotros alguna vez hemos necesitado manejar algun tipo de información mediante un circuito integrado (CI), probablemente controlar el accionamiento de algunos dispositivos, comunicar a nuestras máquinas con una computadora o simplemente hacer una maqueta funcional. Ahora si te has preguntado como lograr trabajos 100% funcionales, económicos y a la ves sencillos de realizar, la respuesta a todo esto en muchos de los casos son los microcontroladores.

Pero, ¿Qué es un microcontrolador?


Un microcontrolador es un circuito integrado programable, capaz de ejecutar las órdenes grabadas en su memoria. Está compuesto de varios bloques funcionales, los cuales cumplen una tarea específica. Un microcontrolador incluye en su interior las tres principales unidades funcionales de una computadora: unidad central de procesamiento, memoria y periféricos de entrada/salida.

Los microcontroladores representan la inmensa mayoría de los chips de computadoras vendidos, sobre un 50% son controladores "simples" y el restante corresponde a DSPs (procesador digital de señales, del que hablaremos en una nueva publicación) más especializados. Mientras se pueden tener uno o dos microprocesadores de propósito general en casa (estás usando uno para esto), tienes distribuidos seguramente entre los electrodomésticos de su hogar una o dos docenas de microcontroladores. Pueden encontrarse en casi cualquier dispositivo electrónico como automóviles, lavadoras, hornos microondas, teléfonos, etc.

Un microcontrolador difiere de una unidad central de procesamiento (CPU) normal, debido a que es más fácil convertirla en una computadora en funcionamiento, con un mínimo de circuitos integrados externos de apoyo. La idea es que el circuito integrado se coloque en el dispositivo, enganchado a la fuente de energía y de información que necesite, y eso es todo. Un microprocesador tradicional no le permitirá hacer esto, ya que espera que todas estas tareas sean manejadas por otros chips. Hay que agregarle los módulos de entrada y salida (puertos) y la memoria para almacenamiento de información.

Se dice que los ingenieros de Texas Instruments Gary Boone y Michael Cochran lograron crear el primer microcontrolador, TMS 1000, en 1971; fue comercializado en 1974. Combina memoria ROM, memoria RAM, microprocesador y reloj en un chip y estaba destinada a los sistemas embebidos.

Debido en parte a la existencia del TMS 1000, Intel desarrolló un sistema de ordenador en un chip optimizado para aplicaciones de control, el Intel 8048, que comenzó a comercializarse en 1977. Combina memoria RAM y ROM en el mismo chip y puede encontrarse en más de mil millones de teclados de compatible IBM PC, y otras numerosas aplicaciones. El en ese momento presidente de Intel, Luke J. Valenter, declaró que el microcontrolador es uno de los productos más exitosos en la historia de la compañía, y amplió el presupuesto de la división en más del 25%.

Actualmente existen diversos fabricantes de microcontroladores como es el caso de Microchip, Atmel, Motorola, Intel, Philips, por mencionar algunos. Cada uno de estos fabricantes ofrece una gama amplia de posibilidades que solo son limitadas por nuestra imaginación.

Arquitectura del microcontrolador


La arquitectura Harvard es utilizada en supercomputadoras, en los microcontroladores, y sistemas integrados en general. En este caso, además de la memoria, el procesador tiene los buses segregados, de modo que cada tipo de memoria tiene un bus de datos, uno de direcciones y uno de control.
La ventaja fundamental de esta arquitectura es que permite adecuar el tamaño de los buses a las características de cada tipo de memoria; además, el procesador puede acceder a cada una de ellas de forma simultánea, lo que se traduce en un aumento significativo de la velocidad de procesamiento. Típicamente los sistemas con esta arquitectura pueden ser dos veces más rápidos que sistemas similares con arquitectura Von Neumann.

La desventaja está en que consume muchas líneas de E/S del procesador; por lo que en sistemas donde el procesador está ubicado en su propio encapsulado, solo se utiliza en supercomputadoras. Sin embargo, en los microcontroladores y otros sistemas integrados, donde usualmente la memoria de datos y programas comparten el mismo encapsulado que el procesador, este inconveniente deja de ser un problema serio y es por ello que encontramos la arquitectura Harvard en la mayoría de los microcontroladores.

Por eso es importante recordar que un microcontrolador se puede configurar de diferentes maneras, siempre y cuando se respete el tamaño de memoria que este requiera para su correcto funcionamiento.

Hasta aqui con la introducción a los microcontroladores de esta semana, el proximo miercoles continuaremos el tema describiendo a detalle otras caracteristicas importantes de los microcontroladres y como hacer la selección adecuada de los mismos para cada aplicación.