Vous êtes sur la page 1sur 4

UPM-DIE

II Jornadas sobre Electrnica

Voltmetro conectado con el bus USB


Celso Villasante Se pretende dar los primeros pasos en la comunicacin a travs del bus USB (Universal Serial Bus). Para ello se esta desarrollando una aplicacin consistente en un voltmetro que funcionara sobre plataforma Windows. Fijndonos sobre todo en las especificaciones y protocolo del USB. 1. Introduccin La llegada del bus USB al mercado viene a simplificar la conexin de perifricos a los PCs de nuestra casa (Aunque no se descarta para plataformas ms serias). Esta actividad de aadir un perifrico anteriormente lenta y costosa, se ve simplificada por las mejoras que introduce el USB respecto al puerto serie convencional. Esta aparicin ha motivado nuestro acercamiento a esta tecnologa de transmisin de datos, para conocer su utilidad, profundizar en sus especificaciones y ver que se puede desarrollar sobre ella. La aparicin del USB sustituye al tradicional puerto serie de nuestro PC. Sus principales ventajas residen en la capacidad de soportar un verdadero Plug&Play de los perifricos conectados al PC, no haciendo falta su configuracin para que funcionen correctamente. Adems soportan la conexin y desconexin en caliente, sin necesidad de reiniciar el PC cada vez que lo enchufamos. Esto permite que usando un solo puerto USB no tengamos ningn problema en cambiar un perifrico en ese puerto y usar el nuevo. Adems, mediante la conexin a travs de USB Hubs podemos conectar a nuestro sistema hasta 127 perifricos siempre que no sobrepasen el ancho de banda de transmisin, que en USB anda por los 12 Mb/s en transmisin a alta velocidad. Esto termina con las limitaciones de puertos que nos impona el anterior puerto paralelo ( del que las placas base solan disponer dos). Depende de lo que consuman los perifricos pueden alimentarse a travs del propio bus no siendo necesario un enchufe para darles alimentacin. Siendo as ms simple su integracin en el rea de trabajo. Adems la aceptacin del bus USB ha sido masiva. Se puede decir que casi todos los fabricantes de placas base incorporan un USBHost controller con sus puertos. A pesar de que ya han aparecido multitud de perifricos que se conectan con USB, estos todava son ms caros que los dispositivos que se conectan al puesto serie comn. Las especificaciones de USB siguen cambiando, y los miembros del USB van por la revisin 2.0 de las especificaciones, en la cual entre otras nuevas caractersticas permite la transmisin de datos a una velocidad cuatro veces mayor que la que era estndar hasta ahora. Gracias a estas caractersticas vemos que USB es muy conveniente para muchos tipos de dispositivos. Entre los que podemos destacar: Joysticks, ratones, teclados, cmaras, scanners, faxes, modems, altavoces, micrfonos, telfonos, impresoras, floppys, CD-ROMs, discos duros,... Hasta este momento tenemos una idea general de lo que es el USB y para que se usa y se usar en un futuro no muy lejano.

Diciembre 1999

87

UPM-DIE 2. Cmo trabaja el bus USB?

II Jornadas sobre Electrnica

Vamos a hacer una primera descripcin de cmo trabaja el bus USB. 2.1 Topologa del bus USB USB tiene una topologa de "Tiered Star". El nico host del sistema lo conectamos al "Root Hub" (Hub principal o raz), que normalmente se encuentra en la placa base del sistema. El Host es el responsable de todo el trfico de datos a travs del bus. Esto quiere decir que todas las transacciones de datos las inicia el bus y lo hace a travs de una poltica de "polling", en la que el Host pregunta a los perifricos si quieren mandar o recibir datos. Todos los otros perifricos deben esperar a que se les d acceso al bus, no pueden iniciar la transmisin por ellos mismos. Esto evita las posibles colisiones de acceso al bus.
HOST
Root Hub

HUB

D e v ic e

D e v ic e

D e v ic e

HUB

D e v ic e

D e v ic e

D e v ic e

Figura 1: Esquema de la topologa del bus USB

Como se puede apreciar en la figura uso los HUBs USB para conectar ms perifricos, pues no nos vemos limitados por los puertos que nos da el "Root Hub". 2.2 Tipos de transacciones de datos. Las transacciones de datos se realizan en el bus USB de diferentes maneras. Vamos a ver los tipos principales y una pequea explicacin de cada uno de ellos. Control: Es la principal, a travs de ella el host manda todas las peticiones y controla el trafico en el bus. Es una transmisin bidireccional (A travs de este modo de comunicacin los paquetes salen del host y entran al host) . Hay comprobacin de errores y reenvo del paquete en caso de encontrar un error. Esta se usa siempre pues es bsica para el control del bus. Interrupt: Con este tipo de transaccin de datos el host recibe datos cuando el perifrico est dispuesto a mandarlos. (El perifrico no interrumpe al host, sino que es el host el que al hacer polling pregunta si le van a interrumpir). Es una transaccin slo de entrada al host. Hay comprobacin de errores y reintentos. Es adecuada para perifricos que tienen un flujo de datos pequeo, y hay momentos en que el flujo es nulo (ratn, Joystick,..) Isochronous: Se usa para transmitir datos en los que el tiempo es lo ms importante. Se garantiza un ancho de banda para estas transmisiones. Su uso es para audio o vdeo. Ej: los altavoces deben sonar continuamente. Y no se hace una comprobacin de errores en esta transmisin. (Es rpida y no segura). Es unidireccional. Bulk: Es la usada para la transmisin de datos en los que el tiempo no es importante. Si hay otra cosa ms importante se esperan, no hay un ancho de banda asegurado para este

Diciembre 1999

88

UPM-DIE

II Jornadas sobre Electrnica

tipo de transmisin. Pero aqu si se hace una comprobacin de que los datos son correctos. Y es bidireccional. Adecuada para perifricos como impresoras, en las cuales es ms importante que lo que se imprima sea correcto que qu se imprima rpidamente. 2.3 Self powered y Bus powered Los perifricos que tienen una conexin a una fuente de tensin externa se conocen como self powered. Estos usan la fuente externa para drenar toda la corriente que necesite el perifrico. Los perifricos que no tienen una conexin a fuente externa de corriente son conocidos como bus powered. Estos drenan toda la potencia del cable de USB. La mxima corriente que un dispositivo puede drenar para enchufarse a la alimentacin del cable son 500 mA (luego como mucho pueden consumir 2,5 W). Esto es posible si el HUB al que nos conectamos es capaz de dar esa corriente mxima (depende de los perifricos que tenga conectados). Para ellos al conectarnos no debemos drenar ms de 100mA (Empezar en un modo de "low power") y negociar con el HUB si nos va a poder entregar toda la corriente que necesitamos. 2.4 High speed y low speed La diferencia entre los dispositivos de alta y lenta velocidad est en la velocidad de transmisin de datos a travs del bus. Los perifricos de alta velocidad transmiten a 12 Mb/s y los de baja velocidad transmiten a 1,5 Mb/s. 3. Aplicacin particular. Voltmetro USB Para poner en prctica una comunicacin en USB nos planteamos realizar un voltmetro que se comunicase con el PC a travs del bus USB. Las transmisiones de un voltmetro no tienen porque ser de alta velocidad, adems los interfaces de desarrollo para perifricos de alta velocidad son muy caros todava, por eso nos decidimos por hacerlos de baja velocidad.
ADC FPGA CY7C63

USB

Procesador

Figura 2: Esquema de la aplicacin.

El trabajo se divide en tres partes: 3.1 Funcionalidad hardware La funcionalidad hardware del dispositivo es la de un ADC (convertidor analgico digital). Y vamos a usar para ello el integrado ADC0808 de National Semiconductors. Este se encargar de coger la seal analgica, convertirla a un valor digital y transmitirla a una FPGA que es la que se encarga del control de conversin. La FPGA est implementada para simplificar el control del ADC, dado que el microcontrolador que podra realizar la misma funcin no dispone de un numero suficiente de puertos E/S. 3.2 Controlador de la transmisin USB El control, tanto de las transmisiones USB como de la lectura de los registros internos de la FPGA lo llevaremos a cabo con un microcontrolador de 8 bits. Vamos a usar el CY7C63001 de la casa Cypress Semiconductors. Diciembre 1999 89

UPM-DIE

II Jornadas sobre Electrnica

Este chip lleva integrado una SIE de USB que es la que se encarga de transmitir los datos por el hilo serie del cable y de ser compatible tanto mecnicamente como elctricamente con las especificaciones. La SIE (Serial Interface Engine) es la encargada de la transformacin de datos de serie a paralelo y viceversa, para su transmisin y recepcin a travs del bus serie. La SIE coge los datos del bus los deserializa y los coloca en una FIFO que es donde el microprocesador accede a ellos. Tambin hace lo contrario, coge los datos de la FIFO y los serializa y los manda al PC a travs del hilo USB. La SIE tambin se encarga de la gestin de errores, bit-stuffing y la codificacin NZRI. Dentro de l programamos las respuestas a todos los request del host, y a las propias funciones definidas por nosotros que soporta nuestro perifrico. El hecho de necesitar un sistema que responda con inteligencia a las peticiones del host, que guarde una memoria ROM con los datos descriptores de si mismo como dispositivo, y que tenga puertos para la comunicacin, hace que sea muy til el uso de un microcontrolador. Adems los principales fabricantes de microprocesadores de 8 bits los estn fabricando con una SIE de USB, lo que permite su uso para la realizacin de perifricos. Estos microprocesadores pequeos son de bajo coste. Los datos que leemos de la FPGA se introducen en paralelo y el propio microprocesador controla su flujo. 3.3 Aplicacin Windows La aplicacin windows se encarga de comunicar con el USBD (USB Driver) a travs de un driver especifico. El driver se encarga de abrir una API para comunicarse con su perifrico. A travs de ella le hace peticiones de funciones propias del perifrico. (Las funciones comunes de USB, como pueden ser enumeracin, lectura de descriptores,... las hace el USBHost por si solo). Un driver es un controlador de un dispositivo hardware. El sistema operativo lo usa para controlar las transacciones con el dispositivo, pues el driver le dice que tipo de transaccin se da y como se debe hacer. El driver lo carga el sistema operativo cada vez que el perifrico es conectado. El descriptor del perifrico, que el host lee le indica que driver debe coger. El Sistema operativo lo busca donde guarda los drivers y lo carga. Si no encuentra el driver el propio sistema operativo nos pide que le demos uno. En el caso de Windows el driver debe ser WDM (Windows Driver Model), y este se sita en una estructura de capas encima de USBD. La aplicacin se sita sobre el driver y todas las transacciones de datos deben pasar a travs de esas capas. La aplicacin windows se encarga de representar en la pantalla la informacin que estamos comunicando a travs de USB. Adems de las opciones especificas de la aplicacin concreta. Siendo bsicamente la interfaz grfica de los datos, adems de permitir la comunicacin del usuario con el perifrico as como el setup de algunas opciones de USB. 4. Conclusiones Como conclusin se podemos decir que el USB se va implantando como bus de comunicacin dominante en el mercado de perifricos para PCs. Lo que es lgico cuando las principales compaas del sector son las que han redactado sus especificaciones, haciendo que se amolde a sus gustos, preferencias, y a la comodidad de un gran publico que al final es el encargado de juzgar si le resulta til y cmodo comprndolo o no comprndolo.

Diciembre 1999

90