sábado, 31 de agosto de 2019

Unidad 3. UNIDAD CENTRAL DE PROCESO / INTERFACES DE E/S

Unidad 3. UNIDAD CENTRAL DE PROCESO / INTERFACES DE E/S

INTERFACES DE E/S PARALELAS, SERIALES

PUERTO PARALELO


La transmisión de datos paralela consiste en enviar datos en forma simultánea por varios canales (hilos). Los puertos paralelos en los PC pueden utilizarse para enviar 8 bits (un octeto) simultáneamente por 8 hilos. 



Los primeros puertos paralelos bidireccionales permitían una velocidad de 2,4 Mb/s. Sin embargo, los puertos paralelos mejorados han logrado alcanzar velocidades mayores, como el EPP (Enhanced Parallel Port, puerto paralelo mejorado) que alcanza velocidades de 8 a 16 Mbps. El puerto ECP (Enhanced Capabilities Port, puerto de capacidad mejorada) desarrollado por Hewlett-Packard y Microsoft, posee las mismas características del EPP, pero incluye soporte Plug and Play que permite que el equipo reconozca los periféricos conectados. 


Los puertos paralelos, al igual que los seriales, se encuentran integrados a la placa madre. Los conectores DB25 permiten la conexión con un elemento exterior (por ejemplo, una impresora).





PUERTO SERIAL 



Los puertos seriales (también llamados RS-232, por el nombre del estándar al que hacen referencia) fueron las primeras interfaces que permitieron que los equipos intercambien información con el “mundo exterior”. El término serial se refiere a los datos enviados mediante un solo hilo: los bits se envían uno detrás de otro (consulta la sección sobre transmisión de datos para conocer los modos de transmisión).



Originalmente, los puertos seriales solo podían enviar datos, no recibir, por lo que se desarrollaron puertos bidireccionales (que son los que se encuentran en los equipos actuales). Por lo tanto, los puertos seriales bidireccionales necesitan dos hilos para que la comunicación pueda efectuarse. 


La comunicación serial se lleva a cabo asincrónicamente, es decir que no es necesaria una señal (o reloj) de sincronización: los datos pueden enviarse en intervalos aleatorios. A su vez, el periférico debe poder distinguir los caracteres (un carácter tiene 8 bits de longitud) entre la sucesión de bits que se están enviando.



Esta es la razón por la cual en este tipo de transmisión, cada carácter se encuentra precedido por un bit de inicio (llamado bit START) y seguido por un bit de fin (llamado bit STOP). Estos bits de control, necesarios para la transmisión serial, desperdician un 20 % del ancho de banda (de cada 10 bits enviados, 8 se utilizan para cifrar el carácter y 2 para la recepción). 

Los puertos seriales, por lo general, están integrados a la placa madre, motivo por el cual los conectores que se hallan detrás de la carcasa y se encuentran conectados a la placa madre mediante un cable, pueden utilizarse para conectar un elemento exterior. Generalmente, los conectores seriales tienen 9 o 25 clavijas y tienen la siguiente forma (conectores DB9 y DB25 respectivamente):
















Una computadora posee normalmente entre uno y cuatro puertos seriales.



EMU 8086

El emu8086 es un emulador del microprocesador 8086 (Intel o AMD compatible) con assembler integrado. A diferencia del entorno de programación en assembler utilizado anteriormente en la cátedra (MASM), este entorno corre sobre Windows y cuenta con una interfaz gráfica muy amigable e intuitiva que facilita el aprendizaje el leguaje de programación en assembler.

Dado que en un entorno emulado de microprocesador no es posible implementar una interfaz real de entrada/salida, el emu8086 permite interfacear con dispositivos virtuales y emular una comunicación con el espacio de E/S. Para esto, el emu8086 cuenta con una serie de dispositivos virtuales preexistentes en el software base, listos para ser utilizados, entre los que se encuentran una impresora, un cruce de calles con semáforos, un termómetro, un motor paso a paso, etc. No obstante, la cátedra ha desarrollado dispositivos adicionales con características particulares para la realización del segundo trabajo práctico.






CONECTORES DB- 9 DB- 25  

Conector DB25 

El conector DB25 (originalmente DE-25) es un conector analógico de 25 clavijas de la familia de conectores D-Subminiature (D-Sub o Sub-D).

Al igual que el conector DB9, el conector DB25 se usa principalmente para conexiones en serie, ya que permite una transmisión asíncrona de datos de acuerdo a lo establecido en la norma RS-232 (RS-232C). También se utiliza para conexiones por el puerto paralelo. En un principio se utilizó para conectar impresoras y por este motivo, se le conoce como el "puerto de impresora" (abreviado LTP). 

Entonces, para evitar confusiones, los puertos de serie DB25 de los equipos generalmente tienen conectores machos, mientras que los conectores de puerto paralelo son conectores hembra DB25.


Conector DB25

Conector DB9

El conector DB9 (originalmente DE-9) es un conector analógico de 9 clavijas de la familia de conectores D-Subminiature (D-Sub o Sub-D). Se utiliza principalmente para conexiones en serie, ya que permite una transmisión asíncrona de datos según lo establecido en la norma RS-232 (RS-232C). 

Conectores DB9

DIRECCIONES DE PUERTO 


El modelo de direccionamiento del PC ha adoptado dos modelos, según la naturaleza del dispositivo a conectar:  Direccionamiento dedicado para dispositivos de media/baja velocidad.  Por ejemplo, puertos serie y paralelo (impresora), teclado, Etc. y direccionamiento mapeado en memoria para dispositivos rápidos (típicamente los adaptadores gráficos).  En el apartado dedicado a E/S se explican las diferencias entre ambas modalidades

Respecto a los dispositivos de direccionamiento dedicado, desde la introducción del IBM-PC, es costumbre que determinados dispositivos muy comunes se conecten mediante puertos de direcciones determinadas.




En la tabla adjunta se muestran algunas de estas direcciones típicas para dispositivos de E/S.  Las referencias a los chips se refieren a los utilizados en los primeros PCs.  Actualmente han sido sustituidos por uno o dos integrados (Chipset) que realizan todas las funciones.
Puede observarse que para un mismo periférico se tienen varias direcciones (un "rango").  La razón es que estos dispositivos tienen varios registros y/o son programables, para lo que disponen de registros especiales (cada registro de un Byte tiene una dirección, y estas son correlativas).  Por ejemplo, el controlador de puerto serie de los primeros PCs era un circuito integrado 8250 de National Semiconductor; que dispone de 8 registros, aunque los datos se reciben y transmiten por uno de ellos, el resto sirve para programar y controlar el funcionamiento del chip.


Control de LEDS mediante Bluetooth


Primeramente para hacer un control de LEDS mediante Bluetooth debemos realizar una programación en arduino realizando una conexión sencilla que permita encender tres diodos leds previamente interconectados en un protoboard manejados mediante una aplicación desarrollada en app inventor conectada por un bluetooth, todo estará conectado a un arduino el cual alimenta de energía al protoboard y contiene la programación para que los diodos se enciendan o apaguen según lo que se solicite mediante la aplicación.

Programación del arduino

En la parte de programación del arduino comenzamos con la función que hará la llamada a los pines de salida que son:




La siguiente función comienza con un if el cual dice que si el serial esta activa realice el siguiente proceso, comenzamos declarando una variable char esta variable contendrá los datos que se ingresen al ordenador.
Para el siguiente if nos dice que si el dato es igual a 1 escriba en el pin 10 que significa encendido y segundo imprimirá en pantalla según el color del led.
Como vemos aquí tenemos 6 datos a posible ingreso, a partir del dato 4 en adelante se realizará el apague de los leds con un liley de 1000 milisegundos.

Creación de app inventora

Primeramente, como vemos aquí tenemos un listPicker que se conectará con otro listPikers de elementos y esos elementos conectaran al bluetooth.
También tenemos un listPicker que se hace después de hacerle clic la cual su función es prender el bluetooth y lo conecta al listPicker.
Cuando ejecutamos el botón rojo on en el bluetooth cliente nos enviará un texto (1), este procedimiento será igual para el color azul (2) y verde (3) en pocas palabras esto nos permitirá prender los leds, ahora para apagarlos debemos usar el color que queramos apagar y el comando off esto nos enviará un texto (4) y así con los demás colores azul (5), verde (6).
A partir del texto 4 hasta el 6 solo se utilizan principalmente para apagar los leds.




Una vez finalizada la aplicación la ejecutamos y se visualizará de la siguiente manera.
Como vemos en la interfaz hay un botón que dice conexión bluetooth esta conexión nos ayudara a conectar desde el celular al Arduino para marcar órdenes a distancia como son prender y apagar los distintos colores a elegir.




A continuación, se mostrará cómo se hace la conexión bluetooth al Arduino, primero se conecta los 5 volteos después conectamos a tierra, en ese momento el bluetooth se encenderá ahora conectaremos la trasmisión que recibe el bluetooth de lo que trasmite el Arduino.




Ahora que ya tenemos montado todo perfectamente solo nos faltaría probar el funcionamiento de prendido y apagado de los leds. 





Control de LEDS mediante Web

La comunicación serial consiste en el envío de un bit de información de manera secuencial, esto quiere decir que es un bit a la vez, de tal manera que va un ritmo acordado entre el emisor con el receptor.  
En el siguiente proyecto se pretende controlar 5 leds usando una página web que contendrá un botón para cada uno, los botones harán la acción de encender y apagar. Esto es con el fin de demostrar cómo funciona la comunicación serial y para ello se utilizarán herramientas electrónicas como un Arduino, los 5 leds, un protoboard, resistencias, y los cables necesarios para la respectiva conexión. Por otro lado, también necesitamos softwares para la creación de la página web y la programación de Arduino.
  1. Primero se programa el Arduino con los pines para encender y apagar los leds , para esto se inicializa el puerto serial 9600 y mediante un bucle se inicializa los puertos de salida.

 

5.Se procede a programar la pagina web a la cual se la guardo con el nombre de “Index.php” en la cual se inicia llamando a las paginas web de cada uno de los leds para que asi puedan encenderse desde la pagina principal.
 


            



6. Se definen el puerto en el cual se realizara la pragramacion en este caso es el COM8 luego se definen las variables que se utilizaran en el codigo para lo cual se coloca pin1 pin2 pin3 pin4 pin5 y el numero de cada uno de los pines con los que se encenderan y se apagaran.











7. Se realiza la programacion de cada uno de botones de la pagina para realizar el respectivo proceso de encendido y apagado de todos los 5 leds para lo cual se coloca un if el cual permitira que se realice el proceso de encedido y apagado.

 

 

     






8.Una vez realizado el proceso de los botones se procede a realizar el diseño del fondo y colores en la pagina.



9. Luego se procede a realizar el diseño de los botones como el tamaño y el color.


 






10. En esta parte se procede a colocar el mensaje de encendido y apagado de los leds.










11.  En la pagina de arduino se llama a los puertos que se utilizan para los leds.

 








12.  Se codifica el boton encender  apagar el led por medio de los numeros codificados anteriormente el mismo proceso se realiza con todoslos botones cambiando el numero ya que para cada boton sera un numero diferente.


 
 



13. Se realiza la verifcacion por medio del Cmd anteponiendo el codigo que se muestra en la siguiente imagen.

14. En el putty se coloca el puerto serial al que esta conectado al arduino.



16. Como paso final se ejecuta la pagina web terminada y se prueba que funcionen los botones de forma correcta.


https://www.youtube.com/watch?v=usulg8rynBA&t=37s












lunes, 26 de agosto de 2019

1. Unidad 2. CPU Y BUSES DEL SISTEMA

2. La CPU


  • Microprocesadores 8086


El microprocesador 8086 fue diseñado para trabajar con lenguajes de alto nivel se constituye por tener un soporte de hardware en el cual los programas escritos en lenguajes altos ocupan un poco espacio de código y pueden ejecutarse a gran velocidad.

El microprocesador 8086 se caracteriza por disponer de instrucciones especiales para poder realizar cadenas de caracteres.

Los registros del microprocesador 8086 tienen su propia personalidad y una misión específica.
Se caracterizan por tener una alta velocidad de trabajo esto incrementa a medida que se van almacenando los códigos de instrucciones en la cola de instrucciones.

Para direccionar una memoria de 1 Megabyte se necesitan 20 líneas del bus de direcciones ya que estas permiten el trabajo de direccionar la memoria.



El microprocesador 8086 requiere de una señal de reloj exterior, estas pueden ser de 5 y 8 MHz las frecuencias de funcionamiento, se caracteriza por poseer de una arquitectura muy importante llamada pipe line se basa en que la CPU le da la opción de leer instrucciones en el tiempo en que el bus no se utiliza.

3. MEMORIA 
  • Clasificación y características de los tipos de memoria de un computador
¿Que es la memoria?


La memoria es uno de los componentes fundamentales para el correcto funcionamiento de nuestra PC, ya que su existencia permite que la computadora pueda arrancar, se procesen los datos, se ejecuten las instrucciones para los distintos programas y demás.
Por otro lado, cuanto mayor es la cantidad de memoria que posea una PC, mayor será el rendimiento y la mejora en la performance del equipo.


No obstante, una computadora trabaja con cuatro tipos de memorias diferentes, que sirven para realizar diversas funciones. Estas son la memoria RAM, la memoria ROM, la memoria SRAM o Caché y la memoria Virtual o de Swap.

Tipos de memoria:


La memoria RAM


La más importante es la denominada memoria RAM (Random Access Memory), ya que nuestra computadora no podría funcionar sin su existencia.

En la RAM se guarda distinto tipo de información, desde los procesos temporales como modificaciones de archivos, hasta las instrucciones que posibilitan la ejecución de las aplicaciones que tenemos instaladas en nuestra PC.

Por tal motivo, es utilizada constantemente por el microprocesador, que accede a ella para buscar o guardar temporalmente información referente a los procesos que se realizan en la computadora.

Dentro de las memorias RAM existen distintos tipos de tecnologías que se diferencian principalmente por su velocidad de acceso y su forma física. Entre ellas encontramos las DRAM, SDRAM, RDRAM, entre otras.

  1. Las denominadas DRAM (Dynamyc Random Acces Memory) han sido utilizadas en las computadoras desde los primeros años de la década de los 80’s, y aún en la actualidad continúan utilizándose. Se trata de uno de los tipos de memorias más económicas, aunque su mayor desventaja está relacionada con la velocidad de proceso, ya que es una de las más lentas, lo que ha llevado a los fabricantes a modificar su tecnología para ofrecer un producto mejor.
  2. En cuanto al tipo de tecnología SDRAM, derivada de la primera, comenzó a comercializarse a finales de la década de los 90’s, y gracias a este tipo de memoria se lograron agilizar notablemente los procesos, ya que puede funcionar a la misma velocidad que la motherboard a la que se encuentra incorporada.
  3. Por su parte, la tecnología RDRAM es una de las más costosas debido a su complejidad de fabricación, y sólo se utilizan en procesadores grandes, tales como los Pentim IV y superiores.
La memoria ROM
 

Además de la memoria RAM, las computadoras trabajan con la memoria denominada ROM, Read Only Memory, que como su nombre lo indica se trata de una memoria sólo de lectura, ya que la mayoría de estas memorias no pueden ser modificadas debido a que no permiten su escritura.

La memoria ROM viene incorporada a la motherboard y es utilizada por la PC para dar inicio a la BIOS, lo cual es básicamente un programa que posee las instrucciones adecuadas para guiar a la computadora durante el arranque.




Entre sus funciones, la BIOS comienza con el proceso denominado POST (Power On Self Test) durante el cual inspeccionará todo el sistema para corroborar que todos sus componentes funcionan adecuadamente para dar lugar al arranque.

Para ello, la BIOS consulta un registro en el que se halla toda la información referente al hardware que tenemos instalado en nuestra PC, para comprobar que todo se encuentre en orden. Dicho registro es denominado CMOS Setup.

Si bien mencionamos que en muchos casos la memoria ROM no puede ser modificada, en la actualidad gran cantidad de motherboards incorporan nuevos modelos de ROM que permiten su escritura, para que el usuario pueda realizar cambios en la BIOS con el fin de mejorar su funcionamiento.



La memoria caché


Tanto el procesador como el disco rígido y la motherboard poseen su propia memoria caché, que básicamente resguarda distintas direcciones que son utilizadas por la memoria RAM para realizar diferentes funciones, tales como ejecutar programas instalados en la PC.
El proceso que realiza la memoria caché es guardar las ubicaciones en el disco que ocupan los programas que han sido ejecutados, para que cuando vuelvan a ser iniciados el acceso a la aplicación logre ser más rápido.
Existen tres tipos de caché diferentes:

– El caché L1 que se encuentra en el interior del procesador y funciona a la misma velocidad que éste, y en el cual se guardan instrucciones y datos.

– El caché L2 que suelen ser de dos tipos: interno y externo. El primero se encuentra dentro de la motherboard, mientras que el segundo se halla en el procesador pero de manera externa, lo que lo hace más lento que el caché L1.

– El caché L3 que sólo vienen incorporado a algunos de los microprocesadores más avanzados, lo que resulta en una mayor velocidad de procesos.

La memoria de Swap


En algunas computadoras, sobre todo en aquellas que poseen sistema operativo Microsoft Windows o Linux, también encontraremos la denominada memoria virtual o de Swap.
Este tipo de memoria, que funciona de manera similar a la caché, es creada por Windows o Linux para ser utilizada exclusivamente por el sistema operativo. En el caso de Linux esta denominada memoria swap generalmente está ubicada en una partición diferente del disco, mientras que en el sistema de Microsoft es un archivo dentro del sistema operativo mismo.

  • Memoria Principal 
La función de la memoria principal es almacenar datos e instrucciones de programa de forma temporal. 

Es estación obligada en todas las operaciones de entrada y salida y, por supuesto, de los resultados parciales o finales del proceso.


La memoria esta estructurada en forma de una colección de celdas, en cada una de las cuales cabe una unidad especifica de información: octetos o palabras. El contenido de cada una de las posiciones de memoria podrá ser bien dato o instrucción. Cada celda tiene asignada una posición relativa con respecto a un origen, cuyo valor numérico constituye la dirección de la misma y que no se encuentra almacenado en ella.


Con la misión de garantizar estabilidad y seguridad en las operaciones, la dirección y datos deben mantenerse en registros durante ese tiempo. En la memoria nos encontramos con:


Registro de dirección de memoria en la que almacena temporalmente la dirección sobre la que efectúa la selección.

Registro de Información de memoria en donde se almacena el dato durante las fases de lectura o escritura en la celda señalada por el registro anterior.

Características de la Memoria

Las magnitudes importantes que caracterizan la Memoria Central son:

· Capacidad o tamaño de la misma. Es decir, el numero de miles de posiciones que contiene. Normalmente se expresan en K.palabras, aunque en los ordenadores personales al ser las palabras de 8 bits se expresan en K-bytes. En la actualidad, el tamaño de la palabra es múltiplo del byte, ya que de esta forma el acceso a la misma puede hacerse desde uno al ancho máximo del bus de datos, ahorrando en muchos casos tiempo. Así tendremos palabras de 8, 16, 32, 64 bits y capacidades de siempre medidas en potencia de dos: 8, 16, 64, 128 K...etc(siendo 1K igual a 1025).


· Tiempo de Acceso. Es el tiempo que invierte el ordenador desde que se emite la orden de lectura-escritura, hasta que finaliza la misma. Este tiempo es muy pequeño, y de el depende la potencia del ordenado. Son típicos tiempos del orden de microsegundos e incluso del orden de 2 a 10 nanosegundos.


· El tamaño de la celda define su anchura de palabra, y viene fijado por el ancho del registro de información de memoria. Si la palabra interna es superior a la de la memoria, necesitara hacer más de un acceso para conseguir toda la información.



  • Memoria Cache


En informática, se conoce como memoria caché o memoria de acceso rápido a uno de los recursos con los que cuenta una CPU (Central Processing Unit, o sea, Unidad Central de Procesamiento) para almacenar temporalmente los datos recientemente procesados en un búfer especial, es decir, en una memoria auxiliar.

La memoria caché opera de modo similar a la Memoria Principal del CPU, pero con mayor velocidad a pesar de ser de mucho menor tamaño. Su eficacia provee al microprocesador de tiempo extra para acceder a los datos más frecuentemente utilizados, sin tener que rastrearlos a su lugar de origen cada vez que sean necesarios.
Así, esta memoria alterna se sitúa entre el CPU y la Memoria RAM (Random Access Memory, o sea, Memoria de Acceso Aleatorio), y provee de un empuje adicional en tiempo y ahorro de recursos al sistema. De allí su nombre, que en inglés significa “escondite”.
Existen varios tipos de memoria caché, como los siguientes:

1. Caché de disco. Es una porción de memoria RAM asociada a un disco particular, en donde se almacenan los datos de reciente acceso para agilizar su carga.



2. Caché de pista. Similar a la RAM, este tipo de memoria caché sólida empleada por supercomputadores es potente, pero costosa.



3. Caché de Web. Se ocupa de almacenar los datos de las páginas Web recientemente visitadas, para agilizar su carga sucesiva y ahorrar ancho de banda. Este tipo de caché a su vez puede funcionar para un solo usuario (privada), varios usuarios a la vez (compartida) o en conjunto para toda la red administrada por un servidor (en pasarela).


¿Cómo funciona la memoria caché?


El funcionamiento de esta memoria alterna es simple: cuando accedemos a un dato cualquiera en nuestro sistema computarizado, se crea de inmediato una copia de los datos más relevantes del mismo en la memoria caché, de modo que los accesos siguientes a dicha información la tengan a mano y no deban rastrearla hacia su lugar de origen.
Así, accediendo a la copia y no al original, se ahorra tiempo de procesamiento y por ende velocidad, ya que el microprocesador no debe acudir todo el tiempo a la memoria principal. Se trata, digámoslo así, de una copia de trabajo constantemente actualizada de los datos de más frecuente utilización.

Borrar la memoria caché no borra tus archivos

Como todas las memorias, la caché puede llenarse o contar con datos tan desorganizados que se retrase el proceso de verificar si algún dato solicitado está disponible en caché: un procedimiento que todos los microprocesadores llevan a cabo rutinariamente. 

Esto puede enlentecer la máquina, produciendo un efecto totalmente contrario al buscado. O, también, puede producir errores de copiado o de lectura de la memoria caché.

Sea cual sea el caso, se puede borrar la memoria caché manualmente, pidiéndole al sistema que libere el espacio alterno y vuelva a llenarlo a medida que sea necesario.

Esta operación no altera en absoluto el contenido de nuestra información en el disco duro, ni mucho menos en nuestras cuentas de correo electrónico o de redes sociales. Se trata de una copia de trabajo, y borrarla nos deja frente al original, idéntico pero en otra ubicación.





Ventajas de borrar la memoria caché


La liberación de la memoria caché cumple con dos propósitos fundamentales, como son:
  • Eliminar datos viejos o innecesarios (puesto que no siempre utilizamos los mismos datos en el sistema), como archivos viejos o procesos que no volveremos a necesitar pero que están allí almacenados “por si acaso” para acelerar su ejecución.
  • Acelerar y agilizar el sistema al brindarle nuevo espacio libre para copiar los datos en uso actual, acortando los tiempos de procesamiento.