693 resultados para Procesadores heterogéneos
Resumo:
Este proyecto consiste en el diseño e implementación de un procesador digital de efectos de audio en tiempo real orientado a instrumentos eléctricos tales como guitarras, bajos, teclados, etc. El procesador está basado en la tarjeta Raspberry Pi B+, ordenador de placa reducida de bajo coste, desarrollado en Reino unido y cuyo lanzamiento tuvo lugar en el año 2012. En primer lugar, ha sido necesario lograr que la tarjeta asuma la funcionalidad de un procesador de audio en tiempo real. Para ello se ha instalado un sistema operativo Linux orientado a Raspberry (Raspbian) y se ha hecho uso de Pure Data (Pd): lenguaje de programación gráfico que fue desarrollado en los años 90 por Miller Puckette con intención de ser enfocado a la creación de eventos multimedia y de música por computador. El papel que desempeña Pd es de capa intermedia entre el hardware y el software ya que se encarga de tomar bloques de N muestras del convertidor analógico/digital y encaminarlas a través del flujo de señal diseñado gráficamente. En segundo lugar, se han implementado diferentes efectos de audio de distintas características. Así pues, se encuentran efectos basados en retardos, filtros digitales y procesadores de dinámica. Concretamente, los efectos implementados son los siguientes: delay, flanger, vibrato, reverberador de Schroeder, filtros (paso bajo, paso alto y paso banda), ecualizador paramétrico y compresor y expansor de dinámica. Estos efectos han sido implementados en lenguaje C de acuerdo con la API de Pd. Con esto se ha conseguido obtener un objeto por cada efecto, el cual es “instanciado” en Pd pudiendo ejecutarlo en tiempo real. En este proyecto se expone la problemática que supone cada paso del diseño proponiendo soluciones válidas. Además se incluye una guía paso a paso para configurar la tarjeta y lograr realizar un bypass de señal y un efecto simple partiendo desde cero. ABSTRACT. This project involves the design and implementation of a digital real-time audio processor for electrical instruments (guitars, basses, keyboards, etc.). The processor is based on the Raspberry Pi B + card: low cost computer, developed in UK in 2012. First, it was necessary to make the cards assume the functionality of a real time audio processor. A Linux operating system called Raspberry (Raspbian) was installed. In this Project is used Pure Data (Pd): a graphical programming language developed in the 90s by Miller Puckette intending to be focused on creating multimedia and computer music events. The role of Pd is an intermediate layer between the hardware and the software. It is responsible for taking blocks of N samples of the analog/digital converter and route it through the signal flow. Secondly, it is necessary to implemented the different audio effects. There are delays based effects, digital filter and dynamics effects. Specifically, the implemented effects are: delay, flanger, vibrato, Schroeder reverb, filters (lowpass, highpass and bandpass), parametric equalizer and compressor and expander dynamics. These effects have been implemented in C language according to the Pd API. As a result, it has been obtained an object for each effect, which is instantiated in Pd. In this Project, the problems of every step are exposed with his corresponding solution. It is inlcuded a step-by-step guide to configure the card and achieve perform a bypass signal process and a simple effect.
Resumo:
Este proyecto fin de grado presenta dos herramientas, Papify y Papify-Viewer, para medir y visualizar, respectivamente, las prestaciones a bajo nivel de especificaciones RVC-CAL basándose en eventos hardware. RVC-CAL es un lenguaje de flujo de datos estandarizado por MPEG y utilizado para definir herramientas relacionadas con la codificación de vídeo. La estructura de los programas descritos en RVC-CAL se basa en unidades funcionales llamadas actores, que a su vez se subdividen en funciones o procedimientos llamados acciones. ORCC (Open RVC-CAL Compiler) es un compilador de código abierto que utiliza como entrada descripciones RVC-CAL y genera a partir de ellas código fuente en un lenguaje dado, como por ejemplo C. Internamente, el compilador ORCC se divide en tres etapas distinguibles: front-end, middle-end y back-end. La implementación de Papify consiste en modificar la etapa del back-end del compilador, encargada de la generación de código, de modo tal que los actores, al ser traducidos a lenguaje C, queden instrumentados con PAPI (Performance Application Programing Interface), una herramienta utilizada como interfaz a los registros contadores de rendimiento (PMC) de los procesadores. Además, también se modifica el front-end para permitir identificar cierto tipo de anotaciones en las descripciones RVC-CAL, utilizadas para que el diseñador pueda indicar qué actores o acciones en particular se desean analizar. Los actores instrumentados, además de conservar su funcionalidad original, generan una serie de ficheros que contienen datos sobre los distintos eventos hardware que suceden a lo largo de su ejecución. Los eventos incluidos en estos ficheros son configurables dentro de las anotaciones previamente mencionadas. La segunda herramienta, Papify-Viewer, utiliza los datos generados por Papify y los procesa, obteniendo una representación visual de la información a dos niveles: por un lado, representa cronológicamente la ejecución de la aplicación, distinguiendo cada uno de los actores a lo largo de la misma. Por otro lado, genera estadísticas sobre la cantidad de eventos disparados por acción, actor o núcleo de ejecución y las representa mediante gráficos de barra. Ambas herramientas pueden ser utilizadas en conjunto para verificar el funcionamiento del programa, balancear la carga de los actores o la distribución por núcleos de los mismos, mejorar el rendimiento y diagnosticar problemas. ABSTRACT. This diploma project presents two tools, Papify and Papify-Viewer, used to measure and visualize the low level performance of RVC-CAL specifications based on hardware events. RVC-CAL is a dataflow language standardized by MPEG which is used to define video codec tools. The structure of the applications described in RVC-CAL is based on functional units called actors, which are in turn divided into smaller procedures called actions. ORCC (Open RVC-CAL Compiler) is an open-source compiler capable of transforming RVC-CAL descriptions into source code in a given language, such as C. Internally, the compiler is divided into three distinguishable stages: front-end, middle-end and back-end. Papify’s implementation consists of modifying the compiler’s back-end stage, which is responsible for generating the final source code, so that translated actors in C code are now instrumented with PAPI (Performance Application Programming Interface), a tool that provides an interface to the microprocessor’s performance monitoring counters (PMC). In addition, the front-end is also modified in such a way that allows identification of a certain type of annotations in the RVC-CAL descriptions, allowing the designer to set the actors or actions to be included in the measurement. Besides preserving their initial behavior, the instrumented actors will also generate a set of files containing data about the different events triggered throughout the program’s execution. The events included in these files can be configured inside the previously mentioned annotations. The second tool, Papify-Viewer, makes use of the files generated by Papify to process them and provide a visual representation of the information in two different ways: on one hand, a chronological representation of the application’s execution where each actor has its own timeline. On the other hand, statistical information is generated about the amount of triggered events per action, actor or core. Both tools can be used together to assert the normal functioning of the program, balance the load between actors or cores, improve performance and identify problems.
Resumo:
El control, o cancelación activa de ruido, consiste en la atenuación del ruido presente en un entorno acústico mediante la emisión de una señal igual y en oposición de fase al ruido que se desea atenuar. La suma de ambas señales en el medio acústico produce una cancelación mutua, de forma que el nivel de ruido resultante es mucho menor al inicial. El funcionamiento de estos sistemas se basa en los principios de comportamiento de los fenómenos ondulatorios descubiertos por Augustin-Jean Fresnel, Christiaan Huygens y Thomas Young entre otros. Desde la década de 1930, se han desarrollado prototipos de sistemas de control activo de ruido, aunque estas primeras ideas eran irrealizables en la práctica o requerían de ajustes manuales cada poco tiempo que hacían inviable su uso. En la década de 1970, el investigador estadounidense Bernard Widrow desarrolla la teoría de procesado adaptativo de señales y el algoritmo de mínimos cuadrados LMS. De este modo, es posible implementar filtros digitales cuya respuesta se adapte de forma dinámica a las condiciones variables del entorno. Con la aparición de los procesadores digitales de señal en la década de 1980 y su evolución posterior, se abre la puerta para el desarrollo de sistemas de cancelación activa de ruido basados en procesado de señal digital adaptativo. Hoy en día, existen sistemas de control activo de ruido implementados en automóviles, aviones, auriculares o racks de equipamiento profesional. El control activo de ruido se basa en el algoritmo fxlms, una versión modificada del algoritmo LMS de filtrado adaptativo que permite compensar la respuesta acústica del entorno. De este modo, se puede filtrar una señal de referencia de ruido de forma dinámica para emitir la señal adecuada que produzca la cancelación. Como el espacio de cancelación acústica está limitado a unas dimensiones de la décima parte de la longitud de onda, sólo es viable la reducción de ruido en baja frecuencia. Generalmente se acepta que el límite está en torno a 500 Hz. En frecuencias medias y altas deben emplearse métodos pasivos de acondicionamiento y aislamiento, que ofrecen muy buenos resultados. Este proyecto tiene como objetivo el desarrollo de un sistema de cancelación activa de ruidos de carácter periódico, empleando para ello electrónica de consumo y un kit de desarrollo DSP basado en un procesador de muy bajo coste. Se han desarrollado una serie de módulos de código para el DSP escritos en lenguaje C, que realizan el procesado de señal adecuado a la referencia de ruido. Esta señal procesada, una vez emitida, produce la cancelación acústica. Empleando el código implementado, se han realizado pruebas que generan la señal de ruido que se desea eliminar dentro del propio DSP. Esta señal se emite mediante un altavoz que simula la fuente de ruido a cancelar, y mediante otro altavoz se emite una versión filtrada de la misma empleando el algoritmo fxlms. Se han realizado pruebas con distintas versiones del algoritmo, y se han obtenido atenuaciones de entre 20 y 35 dB medidas en márgenes de frecuencia estrechos alrededor de la frecuencia del generador, y de entre 8 y 15 dB medidas en banda ancha. ABSTRACT. Active noise control consists on attenuating the noise in an acoustic environment by emitting a signal equal but phase opposed to the undesired noise. The sum of both signals results in mutual cancellation, so that the residual noise is much lower than the original. The operation of these systems is based on the behavior principles of wave phenomena discovered by Augustin-Jean Fresnel, Christiaan Huygens and Thomas Young. Since the 1930’s, active noise control system prototypes have been developed, though these first ideas were practically unrealizable or required manual adjustments very often, therefore they were unusable. In the 1970’s, American researcher Bernard Widrow develops the adaptive signal processing theory and the Least Mean Squares algorithm (LMS). Thereby, implementing digital filters whose response adapts dynamically to the variable environment conditions, becomes possible. With the emergence of digital signal processors in the 1980’s and their later evolution, active noise cancellation systems based on adaptive signal processing are attained. Nowadays active noise control systems have been successfully implemented on automobiles, planes, headphones or racks for professional equipment. Active noise control is based on the fxlms algorithm, which is actually a modified version of the LMS adaptive filtering algorithm that allows compensation for the acoustic response of the environment. Therefore it is possible to dynamically filter a noise reference signal to obtain the appropriate cancelling signal. As the noise cancellation space is limited to approximately one tenth of the wavelength, noise attenuation is only viable for low frequencies. It is commonly accepted the limit of 500 Hz. For mid and high frequencies, conditioning and isolating passive techniques must be used, as they produce very good results. The objective of this project is to develop a noise cancellation system for periodic noise, by using consumer electronics and a DSP development kit based on a very-low-cost processor. Several C coded modules have been developed for the DSP, implementing the appropriate signal processing to the noise reference. This processed signal, once emitted, results in noise cancellation. The developed code has been tested by generating the undesired noise signal in the DSP. This signal is emitted through a speaker simulating the noise source to be removed, and another speaker emits an fxlms filtered version of the same signal. Several versions of the algorithm have been tested, obtaining attenuation levels around 20 – 35 dB measured in a tight bandwidth around the generator frequency, or around 8 – 15 dB measured in broadband.
Resumo:
Una Red de Procesadores Evolutivos o NEP (por sus siglas en ingles), es un modelo computacional inspirado por el modelo evolutivo de las celulas, específicamente por las reglas de multiplicación de las mismas. Esta inspiración hace que el modelo sea una abstracción sintactica de la manipulation de information de las celulas. En particu¬lar, una NEP define una maquina de cómputo teorica capaz de resolver problemas NP completos de manera eficiente en tóerminos de tiempo. En la praóctica, se espera que las NEP simuladas en móaquinas computacionales convencionales puedan resolver prob¬lemas reales complejos (que requieran ser altamente escalables) a cambio de una alta complejidad espacial. En el modelo NEP, las cóelulas estóan representadas por palabras que codifican sus secuencias de ADN. Informalmente, en cualquier momento de cómputo del sistema, su estado evolutivo se describe como un coleccion de palabras, donde cada una de ellas representa una celula. Estos momentos fijos de evolucion se denominan configuraciones. De manera similar al modelo biologico, las palabras (celulas) mutan y se dividen en base a bio-operaciones sencillas, pero solo aquellas palabras aptas (como ocurre de forma parecida en proceso de selection natural) seran conservadas para la siguiente configuracióon. Una NEP como herramienta de computation, define una arquitectura paralela y distribuida de procesamiento simbolico, en otras palabras, una red de procesadores de lenguajes. Desde el momento en que el modelo fue propuesto a la comunidad científica en el año 2001, múltiples variantes se han desarrollado y sus propiedades respecto a la completitud computacional, eficiencia y universalidad han sido ampliamente estudiadas y demostradas. En la actualidad, por tanto, podemos considerar que el modelo teórico NEP se encuentra en el estadio de la madurez. La motivación principal de este Proyecto de Fin de Grado, es proponer una aproxi-mación práctica que permita dar un salto del modelo teórico NEP a una implantación real que permita su ejecucion en plataformas computacionales de alto rendimiento, con el fin de solucionar problemas complejos que demanda la sociedad actual. Hasta el momento, las herramientas desarrolladas para la simulation del modelo NEP, si bien correctas y con resultados satisfactorios, normalmente estón atadas a su entorno de ejecucion, ya sea el uso de hardware específico o implementaciones particulares de un problema. En este contexto, el propósito fundamental de este trabajo es el desarrollo de Nepfix, una herramienta generica y extensible para la ejecucion de cualquier algo¬ritmo de un modelo NEP (o alguna de sus variantes), ya sea de forma local, como una aplicación tradicional, o distribuida utilizando los servicios de la nube. Nepfix es una aplicacion software desarrollada durante 7 meses y que actualmente se encuentra en su segunda iteration, una vez abandonada la fase de prototipo. Nepfix ha sido disenada como una aplicacion modular escrita en Java 8 y autocontenida, es decir, no requiere de un entorno de ejecucion específico (cualquier maquina virtual de Java es un contenedor vólido). Nepfix contiene dos componentes o móodulos. El primer móodulo corresponde a la ejecución de una NEP y es por lo tanto, el simulador. Para su desarrollo, se ha tenido en cuenta el estado actual del modelo, es decir, las definiciones de los procesadores y filtros mas comunes que conforman la familia del modelo NEP. Adicionalmente, este componente ofrece flexibilidad en la ejecucion, pudiendo ampliar las capacidades del simulador sin modificar Nepfix, usando para ello un lenguaje de scripting. Dentro del desarrollo de este componente, tambióen se ha definido un estóandar de representacióon del modelo NEP basado en el formato JSON y se propone una forma de representation y codificación de las palabras, necesaria para la comunicación entre servidores. Adicional-mente, una característica importante de este componente, es que se puede considerar una aplicacion aislada y por tanto, la estrategia de distribution y ejecución son total-mente independientes. El segundo moódulo, corresponde a la distribucióon de Nepfix en la nube. Este de-sarrollo es el resultado de un proceso de i+D, que tiene una componente científica considerable. Vale la pena resaltar el desarrollo de este modulo no solo por los resul-tados prócticos esperados, sino por el proceso de investigation que se se debe abordar con esta nueva perspectiva para la ejecución de sistemas de computación natural. La principal característica de las aplicaciones que se ejecutan en la nube es que son gestionadas por la plataforma y normalmente se encapsulan en un contenedor. En el caso de Nepfix, este contenedor es una aplicacion Spring que utiliza el protocolo HTTP o AMQP para comunicarse con el resto de instancias. Como valor añadido, Nepfix aborda dos perspectivas de implementation distintas (que han sido desarrolladas en dos iteraciones diferentes) del modelo de distribution y ejecucion, que tienen un impacto muy significativo en las capacidades y restricciones del simulador. En concreto, la primera iteration utiliza un modelo de ejecucion asincrono. En esta perspectiva asincrona, los componentes de la red NEP (procesadores y filtros) son considerados como elementos reactivos a la necesidad de procesar una palabra. Esta implementation es una optimization de una topologia comun en el modelo NEP que permite utilizar herramientas de la nube para lograr un escalado transparente (en lo ref¬erente al balance de carga entre procesadores) pero produce efectos no deseados como indeterminacion en el orden de los resultados o imposibilidad de distribuir eficiente-mente redes fuertemente interconectadas. Por otro lado, la segunda iteration corresponde al modelo de ejecucion sincrono. Los elementos de una red NEP siguen un ciclo inicio-computo-sincronizacion hasta que el problema se ha resuelto. Esta perspectiva sincrona representa fielmente al modelo teórico NEP pero el proceso de sincronizacion es costoso y requiere de infraestructura adicional. En concreto, se requiere un servidor de colas de mensajes RabbitMQ. Sin embargo, en esta perspectiva los beneficios para problemas suficientemente grandes superan a los inconvenientes, ya que la distribuciín es inmediata (no hay restricciones), aunque el proceso de escalado no es trivial. En definitiva, el concepto de Nepfix como marco computacional se puede considerar satisfactorio: la tecnología es viable y los primeros resultados confirman que las carac-terísticas que se buscaban originalmente se han conseguido. Muchos frentes quedan abiertos para futuras investigaciones. En este documento se proponen algunas aproxi-maciones a la solucion de los problemas identificados como la recuperacion de errores y la division dinamica de una NEP en diferentes subdominios. Por otra parte, otros prob-lemas, lejos del alcance de este proyecto, quedan abiertos a un futuro desarrollo como por ejemplo, la estandarización de la representación de las palabras y optimizaciones en la ejecucion del modelo síncrono. Finalmente, algunos resultados preliminares de este Proyecto de Fin de Grado han sido presentados recientemente en formato de artículo científico en la "International Work-Conference on Artificial Neural Networks (IWANN)-2015" y publicados en "Ad-vances in Computational Intelligence" volumen 9094 de "Lecture Notes in Computer Science" de Springer International Publishing. Lo anterior, es una confirmation de que este trabajo mas que un Proyecto de Fin de Grado, es solo el inicio de un trabajo que puede tener mayor repercusion en la comunidad científica. Abstract Network of Evolutionary Processors -NEP is a computational model inspired by the evolution of cell populations, which might model some properties of evolving cell communities at the syntactical level. NEP defines theoretical computing devices able to solve NP complete problems in an efficient manner. In this model, cells are represented by words which encode their DNA sequences. Informally, at any moment of time, the evolutionary system is described by a collection of words, where each word represents one cell. Cells belong to species and their community evolves according to mutations and division which are defined by operations on words. Only those cells are accepted as surviving (correct) ones which are represented by a word in a given set of words, called the genotype space of the species. This feature is analogous with the natural process of evolution. Formally, NEP is based on an architecture for parallel and distributed processing, in other words, a network of language processors. Since the date when NEP was pro¬posed, several extensions and variants have appeared engendering a new set of models named Networks of Bio-inspired Processors (NBP). During this time, several works have proved the computational power of NBP. Specifically, their efficiency, universality, and computational completeness have been thoroughly investigated. Therefore, we can say that the NEP model has reached its maturity. The main motivation for this End of Grade project (EOG project in short) is to propose a practical approximation that allows to close the gap between theoretical NEP model and a practical implementation in high performing computational platforms in order to solve some of high the high complexity problems society requires today. Up until now tools developed to simulate NEPs, while correct and successful, are usu¬ally tightly coupled to the execution environment, using specific software frameworks (Hadoop) or direct hardware usage (GPUs). Within this context the main purpose of this work is the development of Nepfix, a generic and extensible tool that aims to execute algorithms based on NEP model and compatible variants in a local way, similar to a traditional application or in a distributed cloud environment. Nepfix as an application was developed during a 7 month cycle and is undergoing its second iteration once the prototype period was abandoned. Nepfix is designed as a modular self-contained application written in Java 8, that is, no additional external dependencies are required and it does not rely on an specific execution environment, any JVM is a valid container. Nepfix is made of two components or modules. The first module corresponds to the NEP execution and therefore simulation. During the development the current state of the theoretical model was used as a reference including most common filters and processors. Additionally extensibility is provided by the use of Python as a scripting language to run custom logic. Along with the simulation a definition language for NEP has been defined based on JSON as well as a mechanisms to represent words and their possible manipulations. NEP simulator is isolated from distribution and as mentioned before different applications that include it as a dependency are possible, the distribution of NEPs is an example of this. The second module corresponds to executing Nepfix in the cloud. The development carried a heavy R&D process since this front was not explored by other research groups until now. It's important to point out that the development of this module is not focused on results at this point in time, instead we focus on feasibility and discovery of this new perspective to execute natural computing systems and NEPs specifically. The main properties of cloud applications is that they are managed by the platform and are encapsulated in a container. For Nepfix a Spring application becomes the container and the HTTP or AMQP protocols are used for communication with the rest of the instances. Different execution perspectives were studied, namely asynchronous and synchronous models were developed for solving different kind of problems using NEPs. Different limitations and restrictions manifest in both models and are explored in detail in the respective chapters. In conclusion we can consider that Nepfix as a computational framework is suc-cessful: Cloud technology is ready for the challenge and the first results reassure that the properties Nepfix project pursued were met. Many investigation branches are left open for future investigations. In this EOG implementation guidelines are proposed for some of them like error recovery or dynamic NEP splitting. On the other hand other interesting problems that were not in the scope of this project were identified during development like word representation standardization or NEP model optimizations. As a confirmation that the results of this work can be useful to the scientific com-munity a preliminary version of this project was published in The International Work- Conference on Artificial Neural Networks (IWANN) in May 2015. Development has not stopped since that point and while Nepfix in it's current state can not be consid¬ered a final product the most relevant ideas, possible problems and solutions that were produced during the seven months development cycle are worthy to be gathered and presented giving a meaning to this EOG work.
Resumo:
En este proyecto, se pretende obtener la solución óptima para el control del hogar digital accesible. Para ello, comenzaremos explicando el funcionamiento básico de un sistema dómotico, enumeraremos los diversos dispositivos que se utilizan en este tipo de automatizaciones, y comentaremos las diferentes posibilidades con respecto a la arquitectura del sistema. Para elegir la opción más adecuada, se realizará un pequeño estudio a acerca de cada una de las tecnologías existentes, protocolos cerrados, y abiertos, así como tecnologías inalámbricas o de bus. Se realizará un estudio con mayor profundidad del estándar KNX, ya que será una de las tecnologías elegidas finalmente para la realización del proyecto. Una vez elegido el estándar, hemos de centrarnos en las necesidades del recinto, para así poder empezar a definir cada uno de los elementos que incluiremos en nuestra instalación, sensores, actuadores, elementos de intercomunicación, procesadores y dispositivos de control. El siguiente paso consistiría en la programación de la vivienda, para ello hemos de tener previamente estructurados y definidos tanto el número de circuitos eléctricos, como la función que estos desempeñan dentro del recinto inteligente, es decir, accionamiento, regulación etc, para así poder asignar cada circuito a la salida correspondiente de su propio actuador. La vivienda se programará a través de ETS, software asociado a la marca KNX. Mediante este protocolo controlaremos, iluminación, motores, climatización y seguridad. Debido a los recursos limitados que ofrece KNX con respecto a la programación lógica de eventos y secuencias de acciones, y la necesidad de visualizar la interfaz gráfica de la vivienda se ha integrado un procesador. Considerando el deseo de integrar el control de un televisor en la vivienda, futuras ampliaciones y otros aspectos, el procesador integrado será de Crestron Electronics, marca correspondiente a un protocolo cerrado de automatización de sistemas, que cuenta con grandes avances en el control multimedia. Por tanto, la segunda parte de la programación se realizará mediante otros dos softwares diferentes, pertenecientes a la marca, Simple Windows se encargará de la programación lógica del sistema, mientras que Vision Tools creará la visualización. Por último, obtendremos las conclusiones necesarias, adjuntaremos un diagrama de conexionado, presupuesto de la instalación, planos y un pequeño manual de usuario. ABSTRACT. The aim of this project is to optimize the environment control of the Accesible Digital Home unit located in ETSIST - UPM, through different essays, valuing the domestic possibilities and the current interfaces. The tests will be carried out comparing different protocols and the possibilities of optimization that they offer to a Digital Home. Aspects such as: ease the communications with other systems, reliability, costs, long term maintenance of the installation, etc. After conducting trials protocol or most appropriate technology for the automation of the enclosure shall be elected. One Chosen the standard, we have to focus on the needs of the enclosure, so, to begin defining each of the elements included in our installation, sensors, actuators, elements intercom, processors and control devices. The next step is the programing of housing, for that we have previously structured and defined both the number of electrical circuits, as the role they play in the intelligent enclosure, that is, switching, dimming etc., in order to assign each circuit to the corresponding output of its own actuator. The house will be scheduled through ETS, software associated with the brand KNX. Through this protocol we will control, lighting, motors, air conditioning and security. Due to the limited resources available in KNX with respect logic programming of events and sequences of actions, and the need to display the graphical interface housing has been integrated processor belonging to the closed protocol or Crestron electronics brand. Finally, when we get the necessary conclusions, enclose a diagram of wiring, installation budget, planes and a small manual.
Resumo:
El objetivo de este trabajo es el de desarrollar un módulo de actividades para la asignatura Procesadores de Lenguajes impartida en la Escuela Técnica Superior de Ingenieros Informáticos (ETSIInf) de la Universidad Politécnica de Madrid (UPM). Este módulo forma parte de una plataforma más grande que pretende mejorar la experiencia de los alumnos y su rendimiento en la asignatura utilizando técnicas de gamificación. Para ello se ha partido de una versión anterior no funcional y se ha aplicado un ciclo de desarrollo completo. Utilizando las recomendaciones de requisitos de IEEE y el lenguaje de modelado IFML se realizó un nuevo diseño que luego fue implementado utilizando HTML, CSS y PHP. Tras completar la implementación se realizaron una serie de pruebas y se obtuvo una versión funcional lista para utilizarse. Se espera que este módulo se convierta en una herramienta que ayuda a en la consecución del objetivo que esta plataforma de gamificación se ha propuesto alcanzar.---ABSTRACT---The objective of this work is to develop an activities module for the subject Procesadores de Lenguajes taught in the Escuela Técnica Superior de Ingenieros Informáticos (ETSIInf) of the Universidad Politécnica de Madrid (UPM). This module is part of a larger platform whose goal is to improve the students’ experience and, performance in the course using gamification techniques. A full development cycle has been applied starting from a previous nonfunctional version. Using the IEEE’s requirements recommendations and the IFML modeling language a new design was made. Then, it was coded using HTML, CSS and PHP. After completing the implementation a series of tests were carried out. At the end of the process a working version ready to be used was obtained. It is expected that this module will become a tool to help in achieving the objective of the gamification platform.
Resumo:
Las desviaciones de tiempo y coste constituyen un fenómeno muy frecuente en la industria de la construcción. Existe un gran número de proyectos que no se terminan en el plazo y el tiempo estipulados, y esto parece que se ha convertido más en la norma que en la excepción. Los proyectos de construcción son heterogéneos por naturaleza y pueden llegar a ser muy complejos, involucrando numerosos procesos y expuestos a infinidad de variables y factores que pueden afectar el cumplimiento de los objetivos de tiempo y coste. Las desviaciones de tiempo y coste no favorecen ni al promotor ni al resto de equipos participantes del proyecto, dando lugar además la mayoría de las veces a situaciones de conflictos y relaciones adversas entre participantes del proyecto. Es por todo ello que surge la necesidad de atender a una estrategia de gestión de riesgos eficaz, como herramienta esencial de la gestión de proyectos para contribuir al éxito de los mismos. Es preciso considerar también que los proyectos de construcción pueden presentar distintas características específicas según el tipo de proyecto de que se traten. El presente trabajo de investigación estudia concretamente los proyectos de edificios de uso hotelero, los cuales pueden presentar estructuras organizativas muy diversas, incluyendo numerosos agentes participantes y procesos que a su vez se desarrollan en un entorno que ya es muy dinámico por su propia naturaleza. En el sector hotelero el cumplimiento de los objetivos de tiempo y coste del proyecto son especialmente importantes ya que cualquier retraso en la fecha de apertura estimada del hotel se traducirá en pérdidas importantes de negocio y cuota de mercado y podrá llevar asociadas también repercusiones importantes en otros aspectos relacionados con la operativa hotelera. Si se conocen las causas que originan tales desviaciones de tiempo y coste, se podrán establecer las correspondientes medidas de actuación para anticiparnos a ellas y que no se produzcan, siendo ésta la base del propósito de esta tesis. Así, la identificación de riesgos supone el primer paso para una gestión de riesgos eficaz, fundamental para contribuir al éxito de un proyecto. El contexto de la investigación delimita como lugar geográfico de estudio España, donde el sector turístico constituye un motor importante de la economía y en el que la eficiencia y competitividad debe estar reflejada también en el proceso del proyecto edificatorio, minimizándose los retrasos y sobrecostes. El presente estudio investiga por tanto los factores de riesgo más críticos que dan lugar a desviaciones de tiempo y coste en proyectos de edificios de uso hotelero en España. A partir del análisis de la literatura existente se genera una propuesta de identificación de factores de riesgo, que se analiza mediante un análisis cualitativo basado en la opinión de expertos y estudio de casos específicos. De los resultados de este análisis se determinan los niveles críticos para cada factor de riesgo, se comparan además las percepciones de niveles de riesgo según distintos tipos de grupos profesionales, y se establece un procedimiento en cuanto a prioridad de acción de respuesta. Así, se desarrolla una propuesta final de identificación y matriz de factores de riesgo con el objetivo de que pueda servir de base a propietarios, empresas gestoras y otros participantes de proyectos hoteleros para diseñar un plan de gestión de riesgos eficaz, contribuyendo de este modo al éxito del proyecto en cuanto a cumplimiento de objetivos de tiempo y coste programados. ABSTRACT Cost and schedule overruns constitute a very frequent phenomenon in the construction industry. A large number of construction projects do not finish on the estimated time and cost, and this scenario seems to be becoming the norm rather than the exception. Construction projects are heterogeneous by nature and they can become very complex as they involve a large number of processes which are subject to many variables and factors that may give rise to time and cost overruns. Time and cost overruns cause dissatisfaction not only to owners but all stakeholders involved in the project, leading most of the times to undesirable situations of conflicts and adversarial relationships between project participants. Hence, it becomes necessary to adopt an effective risk management strategy as an essential part of project management in order to achieve project success. Construction projects may have different characteristics depending on the type of project. This research specifically focuses on hotel construction projects. Hotel projects usually involve complex organizational structures, including many project participants and processes which develop in an environment that is already dynamic by nature. In this type of projects, the achievement of time and cost objectives is particularly important, as any delay of the hotel opening date will result in significant loss of business and market share and may also involve key important implications related to hotel operations. If the risk factors that lead to time and cost overrun are known in advance, preventive actions could be established in order to avoid them, so that time and cost overruns are minimized. This constitutes the aim of this research, being risk identification the first step of any effective risk management strategy for project success. The context of this research is focused on a particular geographical area, being this Spain. Tourism in Spain is a major contributor to the Spanish economy, and efficiency and competiveness should also be reflected in the building processes of the hotel industry, where delays and cost overruns should be kept to the minimum. The aim of this study is to explore the most critical risk factors leading to time and cost overruns in hotel construction projects in Spain. From the analysis of the literature review, a proposal of a risk identification framework is developed, which will be further analyzed by a qualitative assessment based on expert opinions and the study of specific case studies. From the results of this assessment, the levels of risk criticality are determined for the identified factors, a comparison of the perceptions of risk levels among different groups of respondents is also carried out, and a procedure for prioritization of factors in terms of needs of response is established. A final proposal of a risk register matrix framework is then developed in order to assist hotel owners, project management companies or other hotel project stakeholders, and provide them with a base to design their own specific risk management plans, contributing in this way to project success with regards to the achievement of cost and time objectives.
Resumo:
El sistema energético mundial actual es insostenible a largo plazo debido a la fuerte presencia de los combustibles fósiles. Es por ello que se está llevando a cabo gradualmente un proceso de cambio de modelo energético, teniendo como base la incorporación de las energías renovables. Dentro de este tipo de energías la energía solar, tanto fotovoltaica como de concentración, es una de las tecnologías con más crecimiento y potencial en el futuro. Las mejoras en materiales y dispositivos en energía solar permiten la reducción de costes y la mejora de la eficiencia causando un aumento en la competitividad de esta tecnología. El objetivo de este proyecto es el de diseñar y construir un sistema de orientación solar electrónico. Para ello será necesario la utilización de sensores de luminosidad, un controlador y un motor eléctrico. El sistema detectará el punto de mayor intensidad lumínica y orientará la superficie de una placa hacia este punto. El proyecto se desarrollará empleando la plataforma Arduino, una serie de micro procesadores de libre acceso destinados al uso en aplicaciones de electrónica general en el ámbito educativo y de bajo coste. Todo el sistema estará dirigido por un programa que controlará las lecturas de luz y el movimiento del motor.
Resumo:
La evolución de los teléfonos móviles inteligentes, dotados de cámaras digitales, está provocando una creciente demanda de aplicaciones cada vez más complejas que necesitan algoritmos de visión artificial en tiempo real; puesto que el tamaño de las señales de vídeo no hace sino aumentar y en cambio el rendimiento de los procesadores de un solo núcleo se ha estancado, los nuevos algoritmos que se diseñen para visión artificial han de ser paralelos para poder ejecutarse en múltiples procesadores y ser computacionalmente escalables. Una de las clases de procesadores más interesantes en la actualidad se encuentra en las tarjetas gráficas (GPU), que son dispositivos que ofrecen un alto grado de paralelismo, un excelente rendimiento numérico y una creciente versatilidad, lo que los hace interesantes para llevar a cabo computación científica. En esta tesis se exploran dos aplicaciones de visión artificial que revisten una gran complejidad computacional y no pueden ser ejecutadas en tiempo real empleando procesadores tradicionales. En cambio, como se demuestra en esta tesis, la paralelización de las distintas subtareas y su implementación sobre una GPU arrojan los resultados deseados de ejecución con tasas de refresco interactivas. Asimismo, se propone una técnica para la evaluación rápida de funciones de complejidad arbitraria especialmente indicada para su uso en una GPU. En primer lugar se estudia la aplicación de técnicas de síntesis de imágenes virtuales a partir de únicamente dos cámaras lejanas y no paralelas—en contraste con la configuración habitual en TV 3D de cámaras cercanas y paralelas—con información de color y profundidad. Empleando filtros de mediana modificados para la elaboración de un mapa de profundidad virtual y proyecciones inversas, se comprueba que estas técnicas son adecuadas para una libre elección del punto de vista. Además, se demuestra que la codificación de la información de profundidad con respecto a un sistema de referencia global es sumamente perjudicial y debería ser evitada. Por otro lado se propone un sistema de detección de objetos móviles basado en técnicas de estimación de densidad con funciones locales. Este tipo de técnicas es muy adecuada para el modelado de escenas complejas con fondos multimodales, pero ha recibido poco uso debido a su gran complejidad computacional. El sistema propuesto, implementado en tiempo real sobre una GPU, incluye propuestas para la estimación dinámica de los anchos de banda de las funciones locales, actualización selectiva del modelo de fondo, actualización de la posición de las muestras de referencia del modelo de primer plano empleando un filtro de partículas multirregión y selección automática de regiones de interés para reducir el coste computacional. Los resultados, evaluados sobre diversas bases de datos y comparados con otros algoritmos del estado del arte, demuestran la gran versatilidad y calidad de la propuesta. Finalmente se propone un método para la aproximación de funciones arbitrarias empleando funciones continuas lineales a tramos, especialmente indicada para su implementación en una GPU mediante el uso de las unidades de filtraje de texturas, normalmente no utilizadas para cómputo numérico. La propuesta incluye un riguroso análisis matemático del error cometido en la aproximación en función del número de muestras empleadas, así como un método para la obtención de una partición cuasióptima del dominio de la función para minimizar el error. ABSTRACT The evolution of smartphones, all equipped with digital cameras, is driving a growing demand for ever more complex applications that need to rely on real-time computer vision algorithms. However, video signals are only increasing in size, whereas the performance of single-core processors has somewhat stagnated in the past few years. Consequently, new computer vision algorithms will need to be parallel to run on multiple processors and be computationally scalable. One of the most promising classes of processors nowadays can be found in graphics processing units (GPU). These are devices offering a high parallelism degree, excellent numerical performance and increasing versatility, which makes them interesting to run scientific computations. In this thesis, we explore two computer vision applications with a high computational complexity that precludes them from running in real time on traditional uniprocessors. However, we show that by parallelizing subtasks and implementing them on a GPU, both applications attain their goals of running at interactive frame rates. In addition, we propose a technique for fast evaluation of arbitrarily complex functions, specially designed for GPU implementation. First, we explore the application of depth-image–based rendering techniques to the unusual configuration of two convergent, wide baseline cameras, in contrast to the usual configuration used in 3D TV, which are narrow baseline, parallel cameras. By using a backward mapping approach with a depth inpainting scheme based on median filters, we show that these techniques are adequate for free viewpoint video applications. In addition, we show that referring depth information to a global reference system is ill-advised and should be avoided. Then, we propose a background subtraction system based on kernel density estimation techniques. These techniques are very adequate for modelling complex scenes featuring multimodal backgrounds, but have not been so popular due to their huge computational and memory complexity. The proposed system, implemented in real time on a GPU, features novel proposals for dynamic kernel bandwidth estimation for the background model, selective update of the background model, update of the position of reference samples of the foreground model using a multi-region particle filter, and automatic selection of regions of interest to reduce computational cost. The results, evaluated on several databases and compared to other state-of-the-art algorithms, demonstrate the high quality and versatility of our proposal. Finally, we propose a general method for the approximation of arbitrarily complex functions using continuous piecewise linear functions, specially formulated for GPU implementation by leveraging their texture filtering units, normally unused for numerical computation. Our proposal features a rigorous mathematical analysis of the approximation error in function of the number of samples, as well as a method to obtain a suboptimal partition of the domain of the function to minimize approximation error.
Resumo:
Debido al creciente aumento del tamaño de los datos en muchos de los actuales sistemas de información, muchos de los algoritmos de recorrido de estas estructuras pierden rendimento para realizar búsquedas en estos. Debido a que la representacion de estos datos en muchos casos se realiza mediante estructuras nodo-vertice (Grafos), en el año 2009 se creó el reto Graph500. Con anterioridad, otros retos como Top500 servían para medir el rendimiento en base a la capacidad de cálculo de los sistemas, mediante tests LINPACK. En caso de Graph500 la medicion se realiza mediante la ejecución de un algoritmo de recorrido en anchura de grafos (BFS en inglés) aplicada a Grafos. El algoritmo BFS es uno de los pilares de otros muchos algoritmos utilizados en grafos como SSSP, shortest path o Betweeness centrality. Una mejora en este ayudaría a la mejora de los otros que lo utilizan. Analisis del Problema El algoritmos BFS utilizado en los sistemas de computación de alto rendimiento (HPC en ingles) es usualmente una version para sistemas distribuidos del algoritmo secuencial original. En esta versión distribuida se inicia la ejecución realizando un particionado del grafo y posteriormente cada uno de los procesadores distribuidos computará una parte y distribuirá sus resultados a los demás sistemas. Debido a que la diferencia de velocidad entre el procesamiento en cada uno de estos nodos y la transfencia de datos por la red de interconexión es muy alta (estando en desventaja la red de interconexion) han sido bastantes las aproximaciones tomadas para reducir la perdida de rendimiento al realizar transferencias. Respecto al particionado inicial del grafo, el enfoque tradicional (llamado 1D-partitioned graph en ingles) consiste en asignar a cada nodo unos vertices fijos que él procesará. Para disminuir el tráfico de datos se propuso otro particionado (2D) en el cual la distribución se haciá en base a las aristas del grafo, en vez de a los vertices. Este particionado reducía el trafico en la red en una proporcion O(NxM) a O(log(N)). Si bien han habido otros enfoques para reducir la transferecnia como: reordemaniento inicial de los vertices para añadir localidad en los nodos, o particionados dinámicos, el enfoque que se va a proponer en este trabajo va a consistir en aplicar técnicas recientes de compression de grandes sistemas de datos como Bases de datos de alto volume o motores de búsqueda en internet para comprimir los datos de las transferencias entre nodos.---ABSTRACT---The Breadth First Search (BFS) algorithm is the foundation and building block of many higher graph-based operations such as spanning trees, shortest paths and betweenness centrality. The importance of this algorithm increases each day due to it is a key requirement for many data structures which are becoming popular nowadays. These data structures turn out to be internally graph structures. When the BFS algorithm is parallelized and the data is distributed into several processors, some research shows a performance limitation introduced by the interconnection network [31]. Hence, improvements on the area of communications may benefit the global performance in this key algorithm. In this work it is presented an alternative compression mechanism. It differs with current existing methods in that it is aware of characteristics of the data which may benefit the compression. Apart from this, we will perform a other test to see how this algorithm (in a dis- tributed scenario) benefits from traditional instruction-based optimizations. Last, we will review the current supercomputing techniques and the related work being done in the area.
Resumo:
Picobirnavirus (PBV) pertencem à família Picobirnaviridae, divididos em duas espécies Human Picobirnavirus e Rabbit Picobirnavirus. São pequenos vírus constituídos de genoma bissegmentado de cadeia dupla de RNA (dsRNA), não envelopados, com capsídeo de simetria icosaédrica, sendo divididos em dois genogrupos, GI e GII. Já foram detectados em fezes humanas e de uma ampla gama de espécies animais, com ou sem sinais diarreicos, sendo considerados agentes emergentes e oportunistas, e seu potencial zoonótico foi sugerido. Entretanto, os estudos epidemiológicos e moleculares de PBV em bovinos são raros na literatura nacional e internacional. Devido à carência de dados a respeito de PBV em bovinos, o presente estudo foi realizado objetivando-se a detecção e caracterização moleculares de cepas de PVB bovinos dos genogrupos GI e GII em amostras fecais de bovinos com ou sem sintomatologia diarreica de diferentes idades e regiões do Brasil. O estudo foi conduzido a partir de 77 animais, obtendo-se 18 (23,3%) amostras positivas para GI, compreendendo animais provenientes dos estados de São Paulo, Minas Gerais e Goiás. Não foram detectadas amostras positivas para GII. A identidade nucleotídica das amostras obtidas apresentou média de 67,4% quando comparadas uma com as outras e de até 83,77% quando comparadas com amostras de PBV de referência. Na reconstrução filogenética, três amostras agruparam-se em clado de PVB humano e somente uma agrupou-se em clado de PVB bovino. Em síntese, os resultados obtidos indicam, de maneira inédita, a circulação de PVB bovino pertencente ao genogrupo GI em diferentes estados brasileiros, com perfis filogenéticos heterogêneos.
Resumo:
Compreender a correlação entre as características de um catalisador particular e seu desempenho catalítico tem sido um dos principais objetos da pesquisa em catálise heterogênea a fim de usar esse conhecimento para o desenho racional de catalisadores mais ativos, seletivos e estáveis. A seletividade é um dos fatores mais importantes a ser controlado pelo desenho de catalisadores, podendo ser alcançada de diversas maneiras, levando-se em consideração mudanças do tipo estrutural, química, eletrônica, de composição, de cinética e de energia. O trabalho descrito nessa tese de doutorado compreende a síntese e caracterização de catalisadores compostos de nanopartículas de óxido de cobre, paládio e cobre-paládio e seu estudo em reações de hidrogenação e oxidação seletivas de hidrocarbonetos insaturados. Os catalisadores foram preparados através da deposição de nanopartículas dos metais cataliticamente ativos sobre suportes magneticamente recuperáveis compostos de nanopartículas de magnetita revestidas por sílica com superfícies funcionalizada com diferentes grupos orgânicos. A natureza magnética do suporte permitiu a fácil separação do catalisador do meio reacional pela simples aproximação de um ímã na parede do reator. O catalisador pôde ser completamente separado da fase líquida, fazendo com que a utilização de outros métodos de separação como filtração e centrifugação, comumente utilizados em sistemas heterogêneos líquidos, fossem completamente dispensados. Os catalisadores foram inicialmente testados em reações de hidrogenação de alquenos e alquinos. As reações de hidrogenação foram realizadas utilizando hidrogênio molecular como agente redutor, dispensando a utilização de agentes redutores mais agressivos. Os catalisadores compostos de NPs de Pd mostram excelente atividade e capacidade de reutilização na hidrogenação de cicloexeno, podendo ser utilizados em até 15 ciclos sem perda de atividade. Nas reações de hidrogenação de alquinos, os catalisadores que contêm cobre mostraram maior seletividade para a obtenção dos produtos de semi-hidrogenação, com destaque para o catalisador composto de NPs de CuPd, que não apresenta nem traços do produto de hidrogenação completa na amostra final. Esse catalisador bimetálico alia as características do paládio (elevada atividade) e do cobre (elevada seletividade) para fornecer um catalisador ativo e seletivo para a transformação desejada. Além disso, os grupos funcionais presentes na superfície do suporte catalítico mostraram influência na atividade e seletividade para a hidrogenação de alquenos e alquinos. Os catalisadores sintetizados também foram testados na reação de oxidação de cicloexeno e mostraram seletividade para a produção do composto carbonílico α,β-insaturado, cicloex-2-en-1-ona, que é um reagente de partida de grande interesse para a síntese de diversos materiais na indústria química. As reações de oxidação foram realizadas utilizando-se apenas O2 como oxidante primário, dispensando o uso de oxidantes tóxicos como cromatos, permanganatos ou compostos halogenados, que não são recomendados do ponto de vista ambiental. Os catalisadores sintetizados puderam ser reutilizados em sucessivos ciclos de oxidação, mostrando seletividade para a formação dos produtos alílicos em todos os ciclos. Os catalisadores foram estáveis sob as condições reacionais e não apresentaram problemas de lixiviação da espécie ativa para o meio reacional, que é comum na catálise heterogênea. Um estudo cinético mostrou que, mesmo no início da reação, o catalisador tem seletividade para a ocorrência de oxidação alílica em detrimento da reação de oxidação direta que dá origem ao epóxidos correspondente, e se mostrou condizente com o mecanismo proposto na literatura para a reação de oxidação de alquenos via radicalar.
Resumo:
Um dos aspectos regulatórios fundamentais para o mercado imobiliário no Brasil são os limites para obtenção de financiamento no Sistema Financeiro de Habitação. Esses limites podem ser definidos de forma a aumentar ou reduzir a oferta de crédito neste mercado, alterando o comportamento dos seus agentes e, com isso, o preço de mercado dos imóveis. Neste trabalho, propomos um modelo de formação de preços no mercado imobiliário brasileiro com base no comportamento dos agentes que o compõem. Os agentes vendedores têm comportamento heterogêneo e são influenciados pela demanda histórica, enquanto que os agentes compradores têm o seu comportamento determinado pela disponibilidade de crédito. Esta disponibilidade de crédito, por sua vez, é definida pelos limites para concessão de financiamento no Sistema Financeiro de Habitação. Verificamos que o processo markoviano que descreve preço de mercado converge para um sistema dinâmico determinístico quando o número de agentes aumenta, e analisamos o comportamento deste sistema dinâmico. Mostramos qual é a família de variáveis aleatórias que representa o comportamento dos agentes vendedores de forma que o sistema apresente um preço de equilíbrio não trivial, condizente com a realidade. Verificamos ainda que o preço de equilíbrio depende não só das regras de concessão de financiamento no Sistema Financeiro de Habitação, como também do preço de reserva dos compradores e da memória e da sensibilidade dos vendedores a alterações na demanda. A memória e a sensibilidade dos vendedores podem levar a oscilações de preços acima ou abaixo do preço de equilíbrio (típicas de processos de formação de bolhas); ou até mesmo a uma bifurcação de Neimark-Sacker, quando o sistema apresenta dinâmica oscilatória estável.
Resumo:
Esta tesis defiende un enfoque metalingüístico al desarrollo de aplicaciones de procesamiento XML, según el cual estas aplicaciones se conciben como clases particulares de procesadores de lenguaje, se describen utilizando formalismos de especificación de alto nivel orientados a la implementación de lenguajes informáticos, y se generan automáticamente a partir de dichas especificaciones. La tesis comienza realizando un análisis unificado de las propuestas más relevantes al desarrollo dirigido por lenguajes de aplicaciones de procesamiento XML realizadas en el Grupo de Investigación en Ingeniería de Lenguajes Software y Aplicaciones (ILSA) de la Universidad Complutense de Madrid (UCM), tanto aquellas basadas en esquemas de traducción, como aquellas basadas en gramáticas de atributos. Como resultado de este análisis, se identifican las dos principales limitaciones de estas propuestas: (i) no abordar la relación existente entre gramáticas específicas para el procesamiento y gramáticas documentales, y (ii) no abordar adecuadamente la especificación modular de tareas complejas. Una vez identificadas estas limitaciones, la tesis se centra en paliar las mismas...
Resumo:
Hoy día vivimos en la sociedad de la tecnología, en la que la mayoría de las cosas cuentan con uno o varios procesadores y es necesario realizar cómputos para hacer más agradable la vida del ser humano. Esta necesidad nos ha brindado la posibilidad de asistir en la historia a un acontecimiento sin precedentes, en el que la cantidad de transistores era duplicada cada dos años, y con ello, mejorada la velocidad de cómputo (Moore, 1965). Tal acontecimiento nos ha llevado a la situación actual, en la que encontramos placas con la capacidad de los computadores de hace años, consumiendo muchísima menos energía y ocupando muchísimo menos espacio, aunque tales prestaciones quedan un poco escasas para lo que se requiere hoy día. De ahí surge la idea de comunicar placas que se complementan en aspectos en las que ambas se ven limitadas. En nuestro proyecto desarrollaremos una interfaz s oftware/hardware para facilitar la comunicación entre dos placas con distintas prestaciones, a saber, una Raspberry Pi modelo A 2012 y una FPGA Spartan XSA3S1000 con placa extendida XStend Board V3.0. Dicha comunicación se basará en el envío y recepción de bits en serie, y será la Raspberry Pi quien marque las fases de la comunicación. El proyecto se divide en dos partes: La primera parte consiste en el desarrollo de un módulo para el kernel de Linux, que se encarga de gestionar las entradas y salidas de datos de la Raspberry Pi cuando se realizan las pertinentes llamadas de write o read. Mediante el control de los GPIO y la gestión de las distintas señales, se realiza la primera fase de la comunicación. La segunda parte consiste en el desarrollo de un diseño en VHDL para la FPGA, mediante el cual se pueda gestionar la recepción, cómputo y posterior envío de bits, de forma que la Raspberry Pi pueda disponer de los datos una vez hayan sido calculados. Ambas partes han sido desarrolladas bajo licencias libres (GPL) para que estén disponibles a cualquier persona interesada en el desarrollo y que deseen su reutilización.