FPGA para Aplicacio Domotica
FPGA para Aplicacio Domotica
FPGA para Aplicacio Domotica
MANUEL D. CRUZ DAZ1, JUAN A. ORTEGA RAMREZ1, NGEL BARRIGA BARROS2 Y ALEJANDRO FERNNDEZ-MONTES GONZLEZ1 1 Departamento de Lenguajes y Sistemas Informticos. Escuela Tcnica Superior de Ingeniera Informtica. Universidad de Sevilla. Espaa. 2 Departamento de Electrnica y Electromagnetismo. Escuela Tcnica Superior de Ingeniera Informtica. IMSE-CNM, CSIC - Universidad de Sevilla. Espaa. [email protected] Esta comunicacin propone una arquitectura y un software bsicos para la elaboracin de un entorno de desarrollo que nos permita crear un controlador para la interfaz CM11A de la tecnologa, orientada al mundo de la domtica, X10, sobre la tarjeta de desarrollo Spartan-3 de Xilinx. Con este controlador un usuario final ser capaz de controlar y gestionar un conjunto de dispositivos repartidos por un espacio domotizado y que estn intercomunicados a travs de una red de dicha tecnologa. Se trata de un entorno de desarrollo, pues se han dispuesto los elementos necesarios (tanto hardware como software) que nos servirn como base para poder implementar futuras funcionalidades adicionales.
1. Introduccin
Con objeto de encontrar soluciones tecnolgicas econmicas, poco intrusivas y de fcil manejo para el usuario final en el mundo de la domtica e inmtica, el uso de sistemas empotrados sobre FPGA (Field Programmable Gate Array) llegar a ser, al cumplir con todas estas premisas, una de las vas de desarrollo ms importantes y a tener en cuenta en los prximos aos en ese mbito [1, 2, 3]. Los trminos domtica e inmtica se definen como la aplicacin de tecnologas de automatizacin y control en casas o edificios de viviendas, o en edificios de uso terciarios o industriales (oficinas, naves industriales, etc.), respectivamente. Estas tecnologas de automatizacin para edificios inteligentes se basan en dispositivos de control, sensores y actuadores comunicados entre s empleando para ello diferentes esquemas (buses especficos, comunicacin inalmbrica, red de alimentacin elctrica). Desde finales de la dcada de los noventa han visto la luz diferentes estndares de comunicacin, algunos tan importantes como CEBus, LonWorks, KNX [4, 5]. El uso de la red de alimentacin elctrica facilita la instalacin de estas tecnologas en los edificios ya que no se requiere de ninguna infraestructura de comunicacin adicional. En este sentido se han desarrollado dispositivos y protocolos de comunicaciones adecuados a este medio [6, 7]. Uno de los ms extendidos es el protocolo X10 [7, 8]. ste fue desarrollado en 1978 por ingenieros de la empresa Pico Electronics Ltd. en Glenrothes, Escocia. Desde entonces las tecnologas basadas en la utilizacin de la red elctrica conocida por Power Line Carrier (PLC) se han ido extendiendo, apareciendo una gran variedad de productos comerciales y estndares [9], aunque no de uso muy extendido en Espaa. En el mbito de las aplicaciones domticas enfocadas a la enseanza, los sistemas empotrados sobre FPGA abren un ancho campo de posibilidades [10]. La presente comunicacin sintetiza el proceso de construccin de un controlador capaz de comunicarse con todos los dispositivos conectados a una red X10 y distribuidos por el espacio domotizado. En particular el sistema desarrollado se centra en una aplicacin
para el control de la iluminacin dando pie a un incremento en el confort y el ahorro energtico de los usuarios de la vivienda.
2. El protocolo X10
El protocolo de comunicaciones X10 permite controlar dispositivos de manera remota haciendo uso del tendido elctrico y de los mdulos receptores a los que estn conectados. Las seales de control se basan en la transmisin de rfagas de pulsos de 120 kHz. Las transmisiones se sincronizan con el paso por el cero de la corriente alterna. Un 1 binario se representa por un pulso de 120 KHz. durante 1 milisegundo mientras que un 0 binario se representa por la ausencia de ese pulso de 120 KHz. El protocolo [11] consta de bits de direcciones y de comandos. En una red de comunicaciones X10 pueden coexistir hasta 256 mdulos distintos interconectados. La forma de identificarlos es gracias a un cdigo (housecode) compuesto por una letra (de la A a la P) y por un nmero (del 1 al 16). Estos mdulos podrn llegar a aceptar (dependiendo de las caractersticas del mismo) hasta 16 cdigos de operacin distintos (operationcode). El protocolo X10 emplea estos dos tipos de cdigos combinndolos para llevar a cabo las transmisiones entre la interfaz y el controlador. Una transmisin de un cdigo de operacin desde la placa de desarrollo hasta el interfaz X10 consiste en dos pasos. En primer lugar la placa direcciona el dispositivo con el que quiere comunicarse y en segundo lugar enva el cdigo de operacin interpretable por dicho dispositivo. La secuencia de la transmisin puede ser observada con ms detalle en la figura 1. En ella podemos ver qu significa cada uno de los bytes enviados. Este formato es siempre el mismo con independencia de si lo que se enva es la
3: ACK ( 1 byte )
direccin o el comando. En primer lugar la placa de desarrollo transmite la cabecera seguida de la direccin o el comando a la interfaz X10. A continuacin la interfaz X10 recibe las dos tramas y crea una suma de comprobacin, transmitindola a la Spartan 3. La placa comprueba la suma recibida y si es correcta responde con una trama de acuerdo (ACK). Finalmente la interfaz recibe la trama ACK y comunica su disposicin a continuar con la comunicacin. Podemos ver un ejemplo de cdigo de esta transmisin en la figura 7, seccin 4.2. X10 posee una gama de productos bastante extensa, dividindose en las siguientes categoras: controladores, mdulos y complementos. En el sistema que se presenta en este artculo se ha empleado un programador PC modelo CM11A (perteneciente a la categora de los controladores) y un mdulo lmpara (que recibe comandos desde la red elctrica y acta sobre el encendido de una lmpara).
Spartan
RS23
Display 7segmento
Pulsadores
Figura 2. Tarjeta de desarrollo Spartan-3 de Xilinx
2. Transmitir a interfaz
(comandos light on/off)
1. Pulsar botones
La tarjeta FPGA controla cualquier mdulo receptor de X10 instalado en el espacio domotizado a travs de la interfaz CM11A de dicha tecnologa (figura 3). Dicha interfaz se enchufa a la red elctrica y se conecta con la placa por medio de un cable serie conectado a su puerto RS232. El modulo lmpara es usado para controlar la lmpara que est enchufada a l. Es gestionado por el mdulo CM11A, el cual ir indicando los cambios de estado por los que deber ir pasando la lmpara en cuestin (encendido, apagado, intensidad).
funcionalidades. La arquitectura, que se muestra en la figura 4, se basa en la utilizacin del procesador MicroBlaze de Xilinx. Dicho procesador es un soft-core con arquitectura RISC de 32 bits que puede ser integrado sobre los FPGA de Xilinx, como un mdulo IP. MicroBlaze tiene arquitectura Harvard lo que significa que tiene buses de datos e instrucciones separados. De todas las estructuras de buses de las que dispone se han empleado el LMB (Local Memory BUS) y el OPB (Peripheral On-chip Bus) estndar de IBM. El bus LMB permite acceder a la memoria interna del FPGA en tan solo un ciclo de reloj. La funcin del bus OPB la veremos un poco ms adelante. El sistema lo constituyen dos tipos de elementos: los componentes hardware que conforman el circuito programado en la FPGA, y la aplicacin software que es ejecutada en el hardware y es almacenada en memoria. Esta divisin de la funcionalidad del sistema en componentes hardware y software ha sido realizada teniendo en cuenta la ya mencionada arquitectura abierta y flexible. El procesador se comunica con los dispositivos perifricos a travs del bus OPB. Los perifricos son mapeados en el espacio de direcciones de la memoria. Esto significa que la inclusin de cualquier tipo de dispositivo consiste en conectarlo a dicho bus e incluirlo dentro del espacio de direcciones. En la aplicacin que se presenta en esta comunicacin solo se han necesitado los tres dispositivos perifricos mostrados en la figura 4. Estos se corresponden con un puerto paralelo (gpio), un puerto serie (uart) y un controlador de memoria (emc). El puerto paralelo recibe datos de los pulsadores de la placa y genera las seales a los displays 7-segmentos. El puerto serie permite realizar la transmisin de informacin hacia el mdulo X10. El controlador de memoria externa facilita la transferencia de datos con la memoria SRAM de la placa que contiene el software de la aplicacin. En la figura 4 tambin puede observarse como en el sistema se dispone de dos bloques de memorias RAM: BRAM y SRAM. La BRAM es la memoria RAM interna de la FPGA mientras que la SRAM es el mdulo de memoria externa a la FPGA. El empleo de las dos memorias se justifica debido a que el tamao de la aplicacin software requiere el uso de los dos recursos de memorias RAM. El mdulo BRAM tiene mejores tiempos de acceso (un ciclo de reloj), sin embargo su tamao est muy limitado. El bloque de SRAM puede ser ampliado basado en los requerimientos del sistema. Hay tres conectores de expansin en la placa de desarrollo para adaptar cualquier dispositivo adicional, como pueda ser por ejemplo un mdulo de memoria.
Controlador: en esta capa se lleva a cabo el procesado de la informacin recibida y la transmisin de la informacin lista para ser usada por alguna de las otras dos capas. Por ejemplo, se recibe la informacin de que ha sido pulsado un botn, se procesa y se transmiten las rdenes deseadas a la
//next transmission, we send the address A1 outputBuffer = _HEADER_;//header while (!XUartLite_Send (&uart, &outputBuffer, 1)); outputBuffer = _DEVICE_ADDRESS;//device address while (!XUartLite_Send (&uart, &outputBuffer, 1)); while (!XUartLite_Recv (&uart, &inputBuffer, 1)); //check the checksum if (inputBuffer == ((_HEADER_ + _DEVICE_ADDRESS)&0xff)) { //checksum ok //transmit ACK to the board outputBuffer = _OK_; while (!XUartLite_Send (&uart, &outputBuffer, 1)); while (!XUartLite_Recv (&uart, &inputBuffer, 1)); for (j=0; j<20000000; j++);//wait for synchronize if (inputBuffer == 0x55) { //interface ready for the next transmission
capa del modelo, la cual se encargar de transmitir el comando al dispositivo indicado a travs del puerto serie. o X10Client: esta clase funciona a modo de adaptador, restando responsabilidad a las clases de las otras dos capas y mejorando el modelado del sistema. As se consigue una mayor independencia entre todas las clases facilitando modificaciones posteriores.
Modelo: capa en la que se lleva a cabo toda la lgica de la aplicacin. Es la que se encarga de establecer la comunicacin con los dispositivos a travs del puerto serie. o X10Logic: es la clase que aloja todo el conjunto de mtodos necesarios para establecer la comunicacin con la interfaz X10 a travs del puerto serie, es decir, es, entre otras cosas, dnde podemos encontrar implementado el protocolo de comunicaciones de dicha tecnologa. La figura 6 muestra el cdigo de una interaccin comn entre la placa de desarrollo y la interfaz X10. En el caso en que quisiramos ampliar el controlador para que fuese capaz de comunicarse con otras interfaces de la misma tecnologa slo tendramos que modificar esta clase.
5. Conclusiones
Se ha descrito un sistema capaz de controlar los dispositivos de tecnologa X10 repartidos por un espacio domotizado empleando para ello una tarjeta de desarrollo Spartan-3 de Xilinx. Uno de los
objetivos alcanzados ha sido conseguir que el sistema sea ampliable y modificable, de manera que podamos en un futuro ir aadiendo nuevas funcionalidades y servicios al usuario final. La posibilidad de incorporar nuevos dispositivos externos (como puedan ser teclados numricos, pantallas lcds, pantallas tctiles, etc.) permite incrementar la funcionalidad y mejorar la interfaz de usuario. El sistema permite disponer de un entorno de desarrollo de aplicaciones enfocadas a buscar soluciones econmicas y de fcil manejo en el mundo de la domtica y el hogar digital.
Referencias
[1] Renato Nunes, Implementing Tiny Embedded Systems with Networking Capabilities, IADIS International Conference on Applied Computing 2005, Algarve, Portugal, February 2005. [2] German Dario Baron Chacon, Diego Alexander Tibaduiza Burgos. Diseo y construccin de un sistema de seguridad para un recinto cerrado implementando FPGA. Tesis de grado. 2006 [3] Darrell Wilburn, Dan Hafeman, Al Rogers, Helen Yu. Using Spartan-3 FPGAs as low-cost controllers for remote digital cameras. Xilinx, wp200 (v1.1). 2003. [4] LonWorks (ANSI/EIA 709.1-A), http://www.echelon.com. [5] KNX, http://www.knx.org/. [6] HomePlug, http://www.homeplug.org/home. [7] R. N. Bucceri, The Latest Technology in Automated Home Control - Book System Design Manual Using X-10 & Hardwired Protocols, Silent Servant, Inc, 2003. [8] Home Systems, http://www.homesystems.es/ [9] Universal Powerline Bus, http://www.pcslighting.com/upb/overview.html. [10] Felipe Mateos, Vctor M Gonzlez , Reyes Poo, Marta Garca, Rosana Olaiz, Design and Development of an Automatic Small-Scale House for Teaching Domotics, 31st ASEE/IEEE Frontiers in Education Conference, Reno, NV-USA, (2001) [11] X10, CM11A Interface Communication Protocol, ftp://ftp.x10.com/pub/manuals/cm11a_protocol.txt