jueves, 1 de octubre de 2009

arquitectura de hardware

Arquitectura hardware (HW)
Para simplificar la estructura mecánica de la plataforma móvil hemos partido de una configuración de tracción diferencial, ya que es la más sencilla y fácil de implementar, tanto a nivel mecánico como electrónico. Desde el punto de vista mecánico, la plataforma consta de dos alturas (Fig. 02). La altura inferior da cabida a las baterías, motores, transmisión y a la electrónica de control, potencia y comunicaciones. La parte superior está pensada para situar en ella un ordenador portátil (en el que resida el control y la percepción de alto nivel) así como algunos periféricos (sónar de ultrasonidos o webcam). En cuanto al diseño de la electrónica, hemos optado por centralizar la mayoría de las funciones en un microcontrolador, que será el encargado de controlar y medir la velocidad de giro de cada rueda motriz, calcular el desplazamiento del robot (odometría) y medir variables de interés. Para comunicarnos con el robot hemos optado por utilizar un puerto serie estándar (interfaz RS-232). El microcontrolador también se encargará de gestionar las comunicaciones y de leer y ejecutar los comandos que se le envíen. De este modo, se independiza el control de alto nivel del de bajo nivel, que queda a cargo del microcontrolador. Por último, es necesario añadir una etapa de potencia adicional para poder mover los motores a partir de las señales generadas por el microcontrolador.

1.2.1 ARQUITECTURA DE HARDWARE
Un computador desde la perspectiva del hardware, esta constituido por una serie de dispositivos cada uno con un conjunto de tareas definidas. Los dispositivos de un computador se dividen según la tarea que realizan en: dispositivos de entrada, salida,
Figura 11. Arquitectura de Hardware
Dispositivos de entrada: Son aquellos que permiten el ingreso de datos a un computador. Entre estos se cuentan, los teclados, ratones, scaners, micrófonos, cámaras fotográficas, cámaras de video, game pads y guantes de realidad virtual.
Figura 12. Dispositivos de Entrada
Dispositivos de salida. Son aquellos que permiten mostrar información procesada por el computador. Entre otros están, las pantallas de video, impresoras, audífonos, plotters, guantes de realidad virtual, gafas y cascos virtuales.
Figura 13. Dispositivos de Salida
Dispositivos de almacenamiento. Son aquellos de los cuales el computador puede guardar información nueva y/o obtener información previamente almacenada. Entre otros están los discos flexibles, discos duros, unidades de cinta, CD-ROM, CD-ROM de re-escritura y DVD.
Figura 14. Dispositivos de Almacenamiento.
Dispositivos de comunicación: Son aquellos que le permiten a un computador comunicarse con otros. Entre estos se cuentan los modems, tarjetas de red y enrutadores.
Figura 15. Modem
Dispositivo de computo: Es la parte del computador que le permite realizar todos los cálculos y tener el control sobre los demas dispositivos. Esta formado por tres elementos fundamentales, la unidad central de proceso, la memoria y el bus de datos y direcciones.
Figura 16. Diagrama esquemático del dispositivo de computo
La unidad central de proceso (UCP)[1]: es el ‘cerebro’ del computador, esta encargada de realizar todos los cálculos, utilizando para ello la información almacenada en la memoria y de controlar los demás dispositivos, procesando las entradas y salidas provenientes y/o enviadas a los mismos. Mediante el bus de datos y direcciones, la UCP se comunica con los diferentes dispositivos enviando y obteniendo tales entradas y salidas.
Figura 17. Unidad Central de Proceso.
Para realizar su tarea la unidad central de proceso dispone de una unidad aritmético lógica, una unidad de control, un grupo de registros y opcionalmente una memoria cache para datos y direcciones.
La unidad aritmético lógica (UAL)[2] es la encargada de realizar las operaciones aritméticas y lógicas requeridas por el programa en ejecución, la unidad de control es la encargada de determinar las operaciones e instrucciones que se deben realizar, el grupo de registros es donde se almacenan tanto datos como direcciones necesarias para realizar las operaciones requeridas por el programa en ejecución y la memoria cache se encarga de mantener direcciones y datos intensamente usados por el programa en ejecución.
La memoria esta encargada de almacenar toda la información que el computador esta usando, es decir, la información que es accedida (almacenada y/o recuperada) por la UCP y por los dispositivos. Existen diferentes tipos de memoria, entre las cuales se encuentran las siguientes:
RAM (Random Access Memory): Memoria de escritura y lectura, es la memoria principal del computador. Solo se mantiene mientras el computador está encendido.
ROM (Read Only Memory): Memoria de solo lectura, es permanente y no se afecta por el encendido o apagado del computador. Generalmente almacena las instrucciones que le permite al computador iniciarse y cargar (poner en memoria RAM) el sistema operativo.
Cache: Memoria de acceso muy rápido, usada como puente entre la UCP y la memoria RAM, para evitar las demoras en la consulta de la memoria RAM.
El bus de datos y direcciones permite la comunicación entre los elementos del computador. Por el bus de datos viajan tanto las instrucciones como los datos de un programa y por el bus de direcciones viajan tanto las direcciones de las posiciones de memoria donde están instrucciones y datos, como las direcciones lógicas asignadas a los dispositivos.
[1] La unidad central de proceso es más conocida como CPU por sus siglas en inglés Central Process Unit.
[2] La unidad aritmético lógica es más conocida como ALU por sus siglas en inglés Arithmetic Logic Unit.

1.2.2 ARQUITECTURA DE SOFTWARE
Un computador desde la perspectiva del software, esta :
Un sistema operativo.
Un conjunto de lenguajes a diferente nivel con los cuales se comunica con el usuario y con sus dispositivos. Entre estos están los lenguajes de máquina, los ensambladores y los de alto nivel.
Un conjunto de aplicaciones de software.
Un conjunto de herramientas de software.

1.2.2.1 Definiciones Básicas
Software: El hardware por si solo no puede haga nada, pues es necesario que exista el software, que es un conjunto de instrucciones que le dicen al hardware que haga .
Lenguaje de programación: Es un conjunto de reglas y estándares que es utilizado para escribir programas de computadoras que puedan ser entendidos por ellas. .
Programa: Es la representación de algún algoritmo en un lenguaje de programación específico.
1.2.2.2 Lenguaje de Máquina
Es el único lenguaje que entiende el hardware (máquina) y usa exclusivamente el sistema binario. Este lenguaje es específico para cada hardware (procesador, dispositivos, etc.)[1].
El programa es almacenado en memoria y es tanto códigos de instrucción como datos. La estructura de una instrucción en lenguaje máquina es la siguiente:
CODIGO ARGUMENTO(S)
Figura 18. Lenguaje de máquina
1.2.2.3 Lenguaje Ensamblador
Es un lenguaje que usa mnemónicos (palabras cortas escritas con caracteres alfanuméricos), para codificar las operaciones. Los datos y/o direcciones son codificados generalmente como números en un sistema hexadecimal. Generalmente es específico (aunque no único) para cada lenguaje de máquina.
La estructura de una instrucción en este lenguaje es la siguiente:
MNEMONICO ARGUMENTO(S)
Un ENSAMBLADOR es un software, generalmente escrito en lenguaje de máquina, que es capaz de traducir de lenguaje ensamblador a lenguaje de máquina, mientras que un CARGADOR es un software que almacena en memoria el programa en lenguaje de máquina generado por el ensamblador.
Figura 19. Lenguaje Ensamblador.
1.2.2.4 Lenguaje de Alto Nivel
Lenguaje basado en una estructura gramatical que permite el anidamiento de instrucciones (instrucciones dentro de instrucciones). Cuenta con un conjunto de palabras reservadas (escritas en lenguaje natural), para codificar estructuras de control y/o instrucciones. Estos lenguajes permiten el uso de símbolos aritméticos y/o relacionales para describir cálculos matemáticos, y generalmente representan las cantidades numéricas mediante sistema decimal.
Gracias a su estructura gramatical, estos lenguajes permiten al programador olvidar el direccionamiento de memoria (donde cargar datos y/o instrucciones en la memoria), ya que este se realiza mediante el uso de conceptos como el de variable; De esta manera, permiten la realización de programas independiente del Hardware.
Los COMPILADORES e INTERPRETES son software capaz de traducir de un lenguaje de alto nivel al lenguaje ensamblador específico de una máquina. Los primeros toman todo el programa en lenguaje de alto nivel, lo pasan a lenguaje ensamblador y luego lo ejecutan. Los últimos toman instrucción por instrucción, la traducen y la van ejecutando.
Figura 20. Lenguaje de Alto Nivel.

1.2.2.5 Sistema Operativo
Es el software encargado de administrar los recursos del sistema, para esto ofrece un conjunto de primitivas (funciones y procedimientos) a otro software, que le permiten a este ultimo ser tan independiente de la arquitectura de hardware como le sea posible. Se dice que un software es para el sistema operativo , si utiliza las primitivas que el sistema operativo proporciona. Adicionalmente, un sistema operativo ofrece un conjunto de comandos a los humanos sean o no programadores, para interactuar con la máquina.
Los sistemas operativos pueden ser escritos en lenguaje de alto nivel, como UNIX que fue escrito en C, en lenguaje ensamblador y/o en lenguaje máquina. Algunos de los sistemas operativos más conocidos son UNIX, LINUX, Microsoft Windows.

1.2.2.6 Aplicaciones y Herramientas
Una APLICACION es un software construido para que el computador realice una tarea específica y con el cual no se puede construir otro software. Ejemplos de aplicaciones son los procesadores de texto como Microsoft Word y Word Perfect y las hojas electrónicas de cálculo como Microsoft Excel y Lottus.
Una HERRAMIENTA es un software construido especialmente para el desarrollo de nuevo software, (tanto de aplicaciones como de herramientas). Ejemplos de herramientas son los compiladores como Turbo C y Turbo Pascal, las herramientas CASES y los ambientes integrados de desarrollo.
Figura 21. Arquitectura de Software Completa.
[1] En el Anexo A se expone el concepto de sistema de numeración, y en el Anexo B se muestra como el sistema de numeración binario es utilizado para representar datos en un computador digital.

Figura 21. Arquitectura de Software Completa.
[1] En el Anexo A se expone el concepto de sistema de numeración, y en el Anexo B se muestra como el sistema de numeración binario es utilizado para representar datos en un computador digital.
http://www.virtual.unal.edu.co/cursos/ingenieria/2001839/modulo1/cap_01/leccion202.htm