Sistema de monitoreo de senales industriales˜ de maquinas ... · de maquinas rotativas basado en...

92
I Sistema de monitoreo de se ˜ nales industriales de m ´ aquinas rotativas basado en FPGA Jos´ e Luis Ordo ˜ nez Revelo Universidad Nacional de Colombia Facultad de Ingenier´ ıa y Arquitectura, Departamento de ingenier´ ıa el´ ectrica y electronica Manizales, Colombia 2015

Transcript of Sistema de monitoreo de senales industriales˜ de maquinas ... · de maquinas rotativas basado en...

I

Sistema de monitoreo de senales industrialesde maquinas rotativas basado en FPGA

Jose Luis Ordonez Revelo

Universidad Nacional de ColombiaFacultad de Ingenierıa y Arquitectura, Departamento de ingenierıa electrica y electronica

Manizales, Colombia2015

Sistema de monitoreo de senales industrialesde maquinas rotativas basado en FPGA

Jose Luis Ordonez Revelo

Tesis o trabajo de grado presentada(o) como requisito parcial para optar al tıtulo de:Magister en Ingenierıa-Automatizacion industrial

Tutor:PhD. German Castellanos Domınguez

Cotutor:MsC. Oscar Cardona Morales

Lınea de investigacion:Automatizacion industrial

Grupo de ivestigacion:Grupo de control y procesamiento digital de senales

Universidad Nacional de Colombia Facultad de ingenierıa y arquitectura,Departamento de ingenierıa electrica, electronica y computacion

Manizales, Colombia2015

Industrial Signal Monitoring System ofRotating Machines Based on FPGA

Jose Luis Ordonez Revelo

Thesis presented as partial requirement to obtain the degree:Master of Engineering

Advisor:German Castellanos Domınguez, PhD.

Co-Advisor:Oscar Cardona Morales, MsC.

Research Line:Industrial Automation Research Group:

Signal Processing and Recognition Group

Universidad Nacional de Colombia Faculty of Architecture and Engineering,Department of Electrical, Electronic and Computer Engineering

Manizales, Colombia2015

Dedicated to all my dear ones whose love and sup-port helped me make it possible.

Agradecimientos

Quiero expresar mis agradecimientos al director de tesis German Castellanos y codirector de tesisOscar Cardona. Al grupo de Control y Procesamiento Digital de Senales, cuyos miembros me brin-daron su apoyo en el proceso de formacion academica. Agradezco a la direccion de laboratorios deingenierıa electrica y electronica de la Universidad Nacional de Colombia - Sede Manizales por losservicios prestados. Al programa jovenes investigadores e innovadores 2014 de COLCIENCIAS,bajo el proyecto ”Plataforma tecnologica para los servicios de teleasistencia, emergencias medi-cas, seguimiento y monitoreo permanente a los pacientes y apoyo a los programas de promociony prevencion - Aplicaciones moviles para el apoyo a la adherencia terapeutica” de la Convoca-toria 645/2014, y al proyecto de investigacion ”Sistema de monitoreo de condicion en turbinasde generacion electrica”, Codigo Hermes 23079 de la convocatoria Fomento de una cultura de lainnovacion en la Universidad Nacional de Colombia 2013-2015-sede Manizales.

IX

Resumen

El monitoreo de condicion en maquinas rotativas se utiliza para aumentar la disponibilidad y elrendimiento de las maquinas, reduciendo danos e incrementando la vida util de la maquina, evitardanos inesperados y reducir el tiempo de inactividad de produccion. El analisis de vibraciones esuna de las tecnicas mas importantes que se han desarrollado para la deteccion de fallas y diagnosti-co de maquinas rotativas. La necesidad de implementar un analizador de vibraciones multicanalpara el diagnostico de fallas en maquinas rotativas es inminente. Para ello se ha planteado unanovedosa solucion que esta basada en FPGAs, que son dispositivos de alto rendimiento y recon-figurables de acuerdo a los requerimientos del usuario, permitiendo el desarrollo de arquitecturasparalelas para un analisis multicanal sin tener que reconfigurar el hardware. La novedad de este tra-bajo es el desarrollo de un analizador de vibraciones de arquitectura paralela basado en una FPGApara analisis multicanal, sin la necesidad de reconfigurar el hardware, que sea capaz de visualizarlos datos adquiridos tanto en tiempo como en frecuencia. Para ello fue necesario la implementa-cion de una GUI llamada Datafuz desarrollada bajo la herramienta Qt Creator IDE C++, disenadopara satisfacer los requerimientos para la deteccion temprana de fallas en maquinas rotativas. Paraverificar el correcto funcionamiento del analizador de vibraciones propuesto, se realizaron pruebaspara la deteccion de fallos en maquinas rotativas, cuyo estado de la maquina fue en buen estadoy desbalanceo. Para tener una medida de referencia y verificar la confiabilidad del equipo, fuenecesario adquirir senales en el banco de pruebas (Laboratorio de vibraciones de la UniversidadNacional de Colombia sede Manizales)con el analizador de vibraciones propuesto y un equipo deadquisicion de datos de proposito general National Instruments, con una frecuencia de muestreo de51 KSPS. Los resultados obtenidos demuestran la eficacia, eficiencia, ası como el funcionamientogeneral del analizador de vibraciones basado en FPGA.

Palabras claves - FPGA, multicanal, GUI, Qt Creator IDE C++, KSPS, National Instruments

X

Abstract

The condition monitoring in rotating machines is used to increase the availability and machi-nes performance, reducing consequential damage, increasing machine life and reduce productiondowntime. Analysis vibration is one of the most important techniques that have been developedfor fault detection and diagnosis of rotating machines. The necessity of hardware implementationof multichannel data acquisition system for fault detection in rotating machines in the frequencydomain is imminent. FPGAs are distinguished by being very fast and highly reconfigurable devi-ce, allowing of the development of scalable parallel architectures for multichannel analysis withoutchanging the internal hardware. The novelty of this work is the development of a vibration analyzerparallel architecture based on FPGA for multichannel analysis, without the need to reconfigure thehardware that is capable of displaying the acquired data in both time and frequency. This requiredthe implementation of a GUI application called Datafuz developed under the Qt Creator IDE C++ tool designed to meet the requirements for early detection of faults in rotating machinery. Toverify the correct operation of the proposed analyzer vibration, tests for the fault detection in rota-ting machinery were made, whose state machine was in good condition and unbalance. To have areference measure and verify the reliability of the equipment, it was necessary to acquire signals inthe test (Lab vibrations of the Universidad Nacional de Colombia sede Manizales) with vibrationanalyzer based on FPGA and a general purpose data acquisition system developed by NationalInstruments, with a sampling rate of 51 KSPS. The results show the effectiveness, efficiency andoverall performance vibration analyzer based on FPGA.

Index Terms - FPGA, Multichannel, GUI, Qt Creator IDE C++, KSPS, National Instruments

Contenido

Agradecimientos VII

Resumen IX

1. Introduccion 21.1. Justificacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.2. Planteamiento del problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.3. Estado del arte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.4. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.4.1. Objetivo general . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.4.2. Objetivos especıficos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.5. Presupuesto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61.6. Hardware y Software a utilizar . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1.6.1. Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61.6.2. Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1.7. Organizacion de la tesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

2. Desarrollo del Hardware 82.1. Tarjeta de desarrollo y diagrama de flujo del sistema . . . . . . . . . . . . . . . . . 8

2.1.1. FPGA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.1.2. Diagrama de flujo del Sistema embebido QSYS . . . . . . . . . . . . . . . 9

2.2. Logica de usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.3. Sistema Nios II . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2.3.1. Procesador Nios II . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142.3.2. JTAG UART . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202.3.3. Clock-Crossing-Bridge . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.3.4. PIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232.3.5. VIC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242.3.6. DMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262.3.7. SPI Maestro-Esclavo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272.3.8. Sistema ID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292.3.9. Memoria SD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302.3.10. Timer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

Contenido 1

2.4. Sistema de adquisicion VDAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312.4.1. Acelerometro Piezoelectrico DYTRAN . . . . . . . . . . . . . . . . . . . 32

3. Desarrollo del Software 343.1. BSP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343.2. Librerıas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353.3. Aplicacion Nios II . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

3.3.1. Controlador SPI Maestro/Esclavo . . . . . . . . . . . . . . . . . . . . . . 363.3.2. Controlador RS232 UART . . . . . . . . . . . . . . . . . . . . . . . . . . 383.3.3. Controlador USB modo esclavo . . . . . . . . . . . . . . . . . . . . . . . 403.3.4. Controlador memoria SD . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

3.4. Interfaz Grafica de Usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

4. Simulaciones y pruebas 464.1. Simulacion protocolo SPI Maestro-Esclavo . . . . . . . . . . . . . . . . . . . . . 464.2. Barrido de frecuencias con generador de senales . . . . . . . . . . . . . . . . . . . 474.3. Descripcion del banco de pruebas . . . . . . . . . . . . . . . . . . . . . . . . . . 51

5. Conclusiones y trabajo futuro 605.1. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605.2. Trabajo futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

A. Anexo: Nios II EDS 62

B. VHDL 63

C. NIOS II EDS (LENGUAJE C) 67

Bibliografıa 79

1. Introduccion

La deteccion temprana de fallos en maquinas rotativas se ha convertido en uno de los puntos a tra-tar con mayor severidad en entornos industriales. La implementacion de tecnicas para la detecciontemprana de fallas en maquinas rotativas, ha disminuido el margen de error en cuanto al funcio-namiento de las maquinas, aumentando la productividad y disminuyendo el riesgo en la lınea deproduccion.

El analisis de vibraciones es la tecnica mas comun para el diagnostico de fallas en maquinas rota-tivas, debido a que casi el 100% de las fallas en maquinas rotativas es relacionado con un cambioen la dinamica [34] debido a las oscilaciones estructurales que hacen presencia como armonicosindeseados [31]. Entre las fallas mas comunes en maquinas rotativas se encuentran: Desbalanceo,desalineacion, y fallas generadas por problemas en el suministro electrico a motores, tales co-mo: Fractura en el eje del motor y cortocircuitos que pueden inducir vibraciones indeseadas en lamaquina [19].

Hay varias aplicaciones industriales que requieren el monitoreo simultaneo de multiples canalespara el analisis [26] de vibraciones en maquinas rotativas, pero la mayoria de equipos disponiblesen el mercado no son apropiados para este tipo de tareas. Ademas, los analizadores de espectrosde proposito general son equipos costosos, y carecen de arquitectura paralela para el analisis demultiples canales.El sistema de deteccion de fallos en maquinas rotativas cuenta con un sistema de adquisicionVDAS multicanal, basado en un conversor analogo digital llamado ADS1271, cuya frecuencia demuestreo es de 52734 SPS y una resolucion de 24 bits. Cada uno de los canales de la tarjeta deadquisicion VDAS cuentan con un protocolo de comunicacion SPI independiente configuradosen modo esclavo, es decir que no comparten lineas de comunicacion entre canales. El procesadorNios II es quien da la senal de control para ejecutar las operaciones de adquisicion y procesa-miento. Una vez efectuada la adquisicion de las senales de vibraciones mecanicas, los datos sonalmacenados directamente en la memoria DDR2-SDRAM, mediante una tecnica de transferenciade datos DMA, que evita que se sobrecargue al procesador. Los datos almacenados en la memoriaDDR2-SDRAM son descargados en una memoria SD o transferidos a un computador medianteRS232 para porsteriormente ser analizados mediante la interfaz grafica de usuario Datafuz.

La GUI debe de ser capaz de procesar la informacion almacenada de cada uno de los canales, paraluego ser procesada. Dicha informacion debe de ser almacenada en un archivo de texto, donde el

1.1 Justificacion 3

usuario puede hacer post-procesamiento y ası poder hacer un diagnostico del estado de la maquina.

1.1. Justificacion

En el entorno industrial, los componentes rotativos de una maquina pueden sufrir algun tipo dedefecto que probablemente conllevan a una falla, debido a que este conjunto de piezas estaninterconectadas entre sı, sometidas a un continuo desgaste. Esto ocasiona que la maquina sufraconsecuencias como desalineacion, desbalanceo, soltura mecanica, desprendimiento de partıculas,causando un aumento en las vibraciones de la maquina. La vida util de una maquina rotativa estarelacionada directamente con las vibraciones mecanicas. Si las vibraciones son muy bajas quie-re decir que la maquina tiene un buen rendimiento, sin embargo un aumento en las vibracionesmecanicas significa que la maquina esta encaminada a sufrir algun fallo, que pueden causar quela lınea de produccion se detenga por completo y producir perdidas para la empresa. Este tipode situaciones nos permitio disenar e implementar un analizador de vibraciones que sea capaz dediagnosticar fallos en maquinas rotativas.

1.2. Planteamiento del problema

La firma de vibracion de una maquina en operacion suministra mayor informacion acerca delfuncionamiento interno de la maquina que cualquier otra clase de prueba no destructiva. Un roda-miento con un pequeno defecto, provocara un cambio en la vibracion de la maquina que va desdela persepcion del oıdo humano hasta el rango de frecuencias que van hasta los KHz, causando quela maquina sufra consecuencias como desalineacion, desbalanceo, u otra falla. Para la deteccion defallas en maquinas rotativas es muy util que el analizador de vibraciones cuente con multiples ca-nales con el fin de obtener datos de vibraciones de cada punto de medicion en sus tres ejes (x, y, z),y su elevada frecuencia de muestreo permite capturar una gran variedad de anomalıas mecanicas.Los analizadores de vibraciones para la deteccion temprana de fallas basados en FPGAs disponende multiples canales con una baja frecuencia de muestro, o carecen de multiplicidad de canales.En el trabajo [13], el autor propone un analizador de vibraciones para el monitoreo de condicion enmaquinas rotativas. Este trabajo cuenta con un sistema de adquisicion DAS-8 [27], cuya frecuenciade muestreo es de 20 Khz, ocho entradas analogas multiplexadas con 12 bits de resolucion yun ancho de banda de 10 Khz. Una interfaz grafica de usuario desarrollada en lenguaje C, es laencargada de mostrar el espectro de la frecuencia para cada uno de los canales a analizar. Laprincipal contribucion es el sistema de adquisicion multicanal.El analizador de vibraciones propuesto en [16], emplea una tarjeta DPCC40 que internamente secompone de dos DSPs (TMS320C40) de 32 bits de resolusion, 40 Mhz) y una tarjeta de adquisicionde datos soportada con dos conversores analogo-digital Delta-Sigma con una resolusion de 16 bitsy una frecuencia de muestreo de 200 Khz. Su principal contribucion es la reduccion del tiempo decomputo y alta resolucion en el sistema de adquisicion, sin embargo no dispone de multiplicidad

4 1 Introduccion

de canales.Un analizador de vibraciones basado en una tarjeta de adquisicion comercial es propuesto en [18],que se lleva a cabo bajo la herramienta de programacion visual LabVIEW. Este analizador de vibra-ciones opera con una frecuencia de muestreo de 48 Khz y el numero de canales esta determinadopor la tarjeta de adquisicion a seleccionar, teniendo en cuenta que la frecuencia de operacion nosupere la frecuencia de operacion del dispositivo encargado del procesamiento (DSP). La principlacontribucion es la reduccion el tiempo de procesamiento y el costo operacional.En trabajos como [22] [25], se muestra un enfoque diferente para el analisis de vibraciones, esteenfoque se basa en el uso de herramientas de programacion como las FPGAs, que reducen el tiem-po de operacion y ejecutan multiples tareas a la vez. Para estos sistemas de analisis de vibraciones,han basado su sistema de adquisicion en un conversor analogo digital ADS7841 [35] de cuatro ca-nales, con una resolucion de 12 bits y su frecuencia de muestreo es de 200 Khz multiplexados (50Khz por canal aproximadamente). Teniendo en cuenta cada uno de los enfoques mensionados ante-riormente, se puede decir que las principales necesidades para un analizador de vibraciones son lacapacidad de adquisicion y analisis multicanal de alta resolucion, alta velocidad de procesamiento,y sin perdida de datos, estas caracterısticas requieren un dispositivo de arquitectura paralela y quesean reconfigurables, siendo las FPGAs la mejor solucion a las necesidades planteadas, ya que sondispositivos conocidos por ser rapidos, y altamente reconfigurables, permitiendo el desarrollo dearquitecturas paralelas para la adquisicion y analisis sin la necesidad de cambiar el Hardware.

En [33], un analizador de vibraciones mecanicas inalambrico es desarrollado, util para monitoreary analizar las vibraciones de maquinas rotativas, ası como partes inaccesibles de la maquinaria.Sin embargo, el rendimiento y el consumo de energia son los temas que mas les preocupa, espe-cialmente para procesamiento de senales de vibraciones tri-eje en tiempo real y analisis en una altatasa de muestreo. para este proposito, cuatro arquitecturas de hardware han sido implementadascon el fin de evaluarlos en terminos de desempeno, consumo de energıa, costo y la complejidad deldiseno. Una arquitectura basada en FPGA es la que proporsiona el mas alto rendimiento, mientrasque consume menor energıa en comparacion con las otras arquitecturas. En la etapa de adquisicionde las senales de vibraciones, han implementado un conversor analogo digital con una resolusionde 16 bits y una frecuencia de muestreo de 50 Khz.

1.3. Estado del arte

Para mejorar el analizador de vibraciones propuesto, se tuvieron en cuenta varios trabajos con elfin de integrar nuevas caracterısticas como mejorar el desempeno, bajo costo, tiempo real, con elfin de satisfacer los requerimientos planteados en este proyecto. En el trabajo [13] se describe unanalizador de vibraciones donde la principal contribucion es el sistema de adquisicion multica-nal; sin embargo se puede apreciar que la frecuencia de muestreo de cada uno de los canales esde 20KHz. Para este trabajo, se presenta una mejora en [17], donde se muestra un analizador de

1.4 Objetivos 5

espectros, llevado a cabo con una tarjeta comercial con una frecuencia de muestreo de 50KHz, yopera bajo el ambiente de LabView el cual necesita de una licencia para el funcionamiento. En eltrabajo [15] se propone un analizador de espectros para aplicaciones relacionadas con vibraciones,donde toman como referencia el trabajo de [14]. Los resultados muestran diferentes metodos parala deteccion de fallos en maquina rotativas, donde el espectro de las senales son simuladas me-diante un generador de senales. En el trabajo [14] se muestra un analizador de espectros basadosen DSP para el monitoreo de vibraciones, cuyo dispositivo carece de multiples canales para la ad-quisicion de senales de vibraciones, con una resolucion de 16 bits.En cuanto a los sistemas de adquisicion en tiempo real, se revizaron trabajos como en [32], quees un sistema de adquisicion y procesamiento basado en una FPGA NI FlexRIO, que cuenta conmodulos de E/S de alto desempeno y una FPGA Xilinx, que puede adquirir datos de alta velocidady procesamiento de datos en tiempo real. En los trabajo [23][21], el sistema de adquisicion usamodulos de digitalizacion reconfigurables con FPGA, conocidos en la literatura por las capaci-dades de tiempo real, permitiendo la implementacion de algoritmos de procesamiento en tiemporeal.

1.4. Objetivos

1.4.1. Objetivo general

Desarrollar un analizador de vibraciones de arquitectura paralela para multiples canales de altaresolucion basado en FPGA, que permita la deteccion temprana de fallas en maquinas rotativas.

1.4.2. Objetivos especıficos

Disenar e implementar una metodologıa Software-Hardware para procesamiento de datos enparalelo, que soporte la adquisicion de multiples canales de alta resolusion, implementadoen un sistema reconfigurable FPGA.

Disenar e implementar una metodologıa para la transferencia de datos de multiples canalesde manera exitosa y sin perdida de paquetes de datos, optimizando el envıo de tramas entreel dispositivo maestro y esclavo.

Validar la metodologıa implementada para la adquisicion multicanal de senales de vibracio-nes mecanicas de alta resolusioon, mediante la comparacion de un dispositivo DAQ modularbajo un protocolo de pruebas empleando senales de laboratorio.

6 1 Introduccion

1.5. Presupuesto

En la tabla 1-1 se muestra los gastos del proyecto han sido financiados totalmente por la Univer-sidad Nacional de Colombia sede Manizales. Se debe de tener en cuenta que tanto los recursoshumanos no se tuvieron en cuenta en el presupuesto.

Rubros Cantidad Precio Unitario $ Sub-total $ Total Rubro $Recursos Hardware 18′763,300

FPGA Stratix IV GX 1 7′680,000 7′680,000

Computador portatilAsus Intel Core i7, 8GB RAM

1 1′700,000 1′700,000

Tarjeta de adquisicion 3CH

2 3′300,000 6′600,000

Tarjeta de adquisicion 2CH

1 2′200,000 2′200,000

Memoria DDR2SDRAM 4 GB

1 583,300 583,300

Sevicios 1′400,000

Material bibliograficos y fotocopias 200,000

Recursos varios e imprevistos 1′200,000

Total 20′163,000

Tabla 1-1.: Presupuesto analizador de vibraciones basado en FPGA

1.6. Hardware y Software a utilizar

1.6.1. Hardware

Tarjeta de desarrollo Stratix IV GX - Altera

Sensores piezoelectricos Dytran.

Tarjeta de adquisicion basada en el conversor analogo-digital ADS1271.

Equipo de adquisicion de senales National Instruments.

1.6.2. Software

Quartus II 13.1

Nios II SBT

Analizador logico ZEROPLUS.

1.7 Organizacion de la tesis 7

1.7. Organizacion de la tesis

Esta tesis esta estructurada de la siguiente manera: En el capıtulo 1 se enlistan los objetivos deltrabajo y los problemas que se quieren resolver. En el capıtulo 2 se muestra el estado del arte,teniendo en cuenta cada uno de estos trabajos. El capıtulo 3 hace referencia a la tarjeta de desarro-llo Stratix IV GX mediante un diagrama de flujo, el cual esta formado por dos partes: Diagramade flujo del hardware y diagrama de flujo del software. Ademas, se hace una descripcion de lasherramientas de desarrollo Quartus II y Nios II EDS. Posterior a ello se discutira el desarrollo delhardware mediante la herramienta de desarrollo Quartus II y la herramienta QSYS. El diseno yfuncion de cada uno de los modulos seran descrıtos en detalle.

El capıtulo 4 ilustrara el desarrollo del software mediante la herramienta de desarrollo Nios II EDS.Los resultados de la evaluacion experimental de la implementacion del sistema de adquisicionmulticanal de senales de vibraciones mecanicas se describen y discuten en el capıtulo 5.El capituo 6 se concluye a partir de los resultados obtenidos, donde se analizan las posibles mejoraspara un trabajo futuro.

2. Desarrollo del Hardware

En este capıtulo se detalla el desarrollo del hardware del sistema segun los requerimientos delsistema de monitoreo de senales industriales. El diseno del hardware del sistema embebido Qsysse divide en dos partes principales: Logica de usuario (Verilog HDL) y el sistema Nios II (Herra-mienta QSYS). Esto se lleva a cabo mediante la herramienta de desarrollo de hardware QuartusII version 13.1. En la figura 2-4 se muestra el diagrama de flujo del desarrollo del hardware. Ladescripcion de cada uno de los modulos y funcion es dada a continuacion.

2.1. Tarjeta de desarrollo y diagrama de flujo delsistema

En esta seccion se hace referencia a la tarjeta de desarrollo Stratix IV GX desarrollada por Alteray a cada uno de los componentes que la conforman y ademas se examina el diagrama de flujo delsistema embebido QSYS.

2.1.1. FPGA

Un dispositivo compuesto por una serie de bloques logicos (puertas, registros, memorias, flip/flops,etc) programables, es decir la interconexion entre estos bloques logicos y su funcionalidad noviene predefinida sino que el usuario la puede reprogramar. Estos dispositivos se componen decierto numero de modulos logicos, que determinan la capacidad del dispositivo. Los modulos sonindependientes entre sı y pueden interconectarse para formar un modulo mas robusto. Dependiendodel fabricante, estos modulos pueden ser configurables, tal como sucede con las FPGAs de Altera oXilinx. Los modulos en una FPGA se interconectan a traves de canales configurables (figura 2-1).Al proceso de interconexion se le conoce como enrutamiento, que consiste en determinar la mejorruta para interconectar los modulos, ya sea de forma manual o haciendo uso de herramientas dediseno, como puede ser herramientas de diseno EDA.Una de las ventajas de trabajar con estos dispositivos radica en que todo el desarrollo se lleva acabo en un solo ambiente de trabajo. El usuario plantea la funcion logica a implementar, con basea metodos de descripcion define los parametros del problema. Los bloques logicos y los canales deruteo son reconfigurados mediante un lenguaje de programacion, que puede ser un lenguaje HDL,o a traves de un diagrama esquematico de conexiones.

2.1 Tarjeta de desarrollo y diagrama de flujo del sistema 9

Una vez delimitado el problema, el siguiente paso es optimizar la representacion logica mediantemetodos de minimizacion (sıntesis logica) para luego proceder con una simulacion logica. Estepaso es muy importante puesto que se aproxima al comportamiento real del dispositivo. Si todosestos pasos se han llevado a cabo satisfactoriamente, el siguiente paso es seleccionar la tarjeta dedesarrollo que mejor se adapte a las condiciones de nuestro problema segun criterios de capacidad,consumo de energıa, desempeno, y finalmente se procede con la programacion de la tarjeta dedesarrollo.

Macrocelda deEntrada / Salida

Bloque lógicoconfigurable

Canales de ruteoconfigurables parainterconexión

Figura 2-1.: Arquitectura de FPGAs[7]

Las FPGAs son ampliamente utilizados en el desarrollo de proyectos industriales, ya que estastoman la mejor parte de los circuitos integrados ASICs y de los sistemas embebidos, facilitando elproceso de depurar y modificar el diseno, y ası reducir el riesgo de implementar funciones que nose adapten en la tarjeta de desarrollo. Se puede concluir que la FPGAs como una herramienta dedesarrollo es optima para propositos de investigacion y desarrollo de aplicaciones industriales querequieren flexibilidad al momento de disenar, programar, y que sea de bajo costo [22].

FPGA STRATIX IV GX

La tarjeta de desarrollo Stratix IV provee una plataforma hardware para el diseno de prototiposy aplicaciones que requieren de una alternativa de bajo costo, alto desempeno y diseno de logicaintensiva. La FPGA esta equipada con un gran numero de perifericos e interfaces de memorias,que permiten disenar un sin numero de aplicaciones industriales, medicas, y de tipo academico.En la figura 2-2 se encuentra los componentes hardware implementados en la tarjeta de desarrolloStratix IV GX [1].

2.1.2. Diagrama de flujo del Sistema embebido QSYS

Para este proyecto, el diseno del sistema embebido QSYS consiste en el desarrollo del hardwarey diseno de software. El hardware se implemento mediante el software de desarrollo Quartus II,

10 2 Desarrollo del Hardware

Figura 2-2.: Hardware FPGA Stratix IV GX[1]

y para el caso del software se implemento mediante la herramienta de desarrollo Nios II EDS.Para desarrollar aplicaciones en la tarjeta de desarrollo Stratix IV, se debe trabajar con la version9.1 o posteriores. En este proyecto se ha seleccionado la version 13.1 como nuestra plataforma dedesarrollo. En la figura 2-3 podemos observar el diagrama del flujo del sistema embebido QSYS.

Diagrama de flujo del hardware

El diagrama de flujo del hardware descrito en este documento consiste en cinco procedimientosprincipales tales como, diseno, sıntesis, ajuste y enrutamiento, integracion del sistema y fabrica-cion. Dentro de cada uno de los pasos anteriormente mencionados, con la excepcion del proceso defabricacion, hay un proceso de verificacion en el cual los componentes son desarrollados y luegosimulados para asegurarse de un correcto funcionamiento antes de continuar con el siguiente paso.A continuacion se describe con detalle cada uno de estos procesos.

1. Diseno: Quartus II es una herramienta que incluye todos los archivos de diseno, archivosfuente de software, y otros archivos necesarios para la implementacion de un diseno en undispositivo logico programable. El disenador puede hacer uso de herramientas tales comoQuartus II BLock Editor, Block Editor, MegaWizard Plug-In y EDA para crear archivos dediseno que incluye funciones LPM y funciones IP.

2. Diseno HDL (VHDL, Verilog): Describe la funcionalidad del diseno mediante editores es-quematicos o mediante el uso de lenguajes de descripcion HDL tales como Verilog y VHDL.

3. Analisis y sintesis: Este modulo esta disenado para analizar los archvos de diseno y crearla base de datos. Para sintetizar los archivos de diseno VHDL o HDL, Quartus II empleaherramientas como EDA.

4. Ubicacion de la celda logica de enrutamiento y sincronizacion: Se hace uso de la base dedatos que ha sido creada anteriormente en Analisis y sintesis, y se asigna a cada funcion

2.1 Tarjeta de desarrollo y diagrama de flujo del sistema 11

logica la mejor ubicacion de la celda logica para el enrutamiento y seleccion de la ruta deinterconexion optima y asignacion de pines.

5. Analisis de tiempo y optimizacion del diseno: El analizador de tiempos TimeQuest de Quar-tus II, permite analizar las caracterısticas del diseno. Se puede usar la informacion generadapor el analizador de tiempos para analizar, depurar, y validar el manejo de tiempos en eldiseno.

6. Configuracion y programacion: Una vez se ha compilado un proyecto de manera exitosa conla herramienta Quartus II, se procede a configurar o programar la tarjeta de desarrollo StratixIV de Altera.

7. Depuracion: Para depurar el sistema, existen herramientas tales como el analizador logi-co SignalTap, SignalProbe, In-System, y editor e pruebas que permiten analizar los nodosinternos del dispositivo.

Diagrama de flujo-software

La parte derecha de la figura 2-3 representa el flujo del diseno del software. La herramienta NiosII EDS de Altera, provee un robusto entorno de desarrollo de software que funciona para todoslos sistemas que incorporan un procesador Nios II, permitiendo el desarrollo de programas queinteractuan directamente con un sistema de procesado Nios II. Esto se lleva a cabo mediante unmodulo de depuracion llamado JTAG, haciendo a la vez de mediador entre la herramienta dedesarrollo Nios II EDS y la FPGA. El Nios II EDS provee el siguiente flujo del desarrollo para lacreacion de programas: La lınea de comandos del Nios II SBT y el Nios II SBT de Eclipse.

Lınea de comandos Nios II SBT: En el flujo del desarrollo de la lınea de comandos del NiosII SBT, el usuario puede crear, modificar, compilar, y ejecutar programas con la lınea decomandos disponibles en el Nios II SBT, y son ejecutados a traves de la interfaz de usuariode comandos de Nios II.

Nios II SBT de Eclipse: Esta basado en el framework de Eclipse y la herramienta de desarro-llo Eclipse C/C++. El Nios II SBT de Eclipse dispone de una plataforma de desarrollo quetrabaja para todos los sistemas basados en el procesador Nios II. Dentro de la herramientaEclipse se puede llevar a cabo todas las tareas para el desarrollo de software, tales comocrear, compilar, editar, ejecutar, depurar programas. El usuario de programas puede importary depurar proyectos que han sido creados desde el shell de comandos.

Un proyecto de software esta basado en dos partes principales: Aplicaciones de usuario y el BSP(Board Support Package). El primero es el programa de usuario que incluye controladores de losperifericos de entrada/salida y funciones de alto nivel, y el segundo son codigos de soporte para laconfiguracion del procesaro Nios II. Cabe resaltar que el BSP esta basado en la informacion delarchivo .QSYS que ha sido generado con la herramienta Qsys tools. Los archivos generados por el

12 2 Desarrollo del Hardware

programa de usuario y el BSP, son enlazados para formar un archivo de imagen .elf que luego seradescargado en la memoria principal del sistema Nios II [30].

Lógica deUsuario (HDL)

Desarrollo deHardware

MegafuncionesSoftware

Nios II

HerramientaQsys

Archivo.sopcinfo

Editor BSP

Librería BSP

NIOS II EDS

Archivo .elf

Programar

FPGA Stratix IVGX

Prueba yDepuración

Archivo.sof

Quartus IISE

Código HDL(Top-Level)

Programar

Software/Hardware

Desarrollo deSoftware

Manejo dedrivers

Manejo defunciones

Aplicación deusuario en C

Figura 2-3.: Diagrama de flujo del Sistema embebido Qsys (Software y Hardware)

2.2. Logica de usuario

En el recuadro rojo en la figura 2-4 se encuentra cada uno de los componentes que interactuande manera indirecta con el procesador, por lo cual han sido separados del sistema Nios II (off-chip). Una descripcion de la captura de datos, almacenamiento, y transmision de datos es dada acontinuacion.Una vez los acelerometros DYTRAN se han dispuesto de manera correcta en el sistema de adqui-sicion y conectados a la tarjeta de adquisicion VDAS, se procede con la adquisicion de senalesde vibraciones. Una senal de sincronizacion es enviada desde el dispositivo host hacia la tarjetade adquisicion para que empiece con la captura de senales de vibraciones mecanicas. La tarjetaVDAS dispone de siete canales (en paralelo) para la adquisicion de senales, que adquiere a unafrecuencia de operacion de 27 MHZ a una tasa de muestreo de 52734 SPS. Una vez se haya efec-tuado la adquisicion de las senales de vibracion, estos datos son almacenados de manera temporalen la memoria DDR2-SDRAM actuando como un buffer. Finalmente, los datos son enviados a unamemoria SD al host para posteriormente ser procesados. Para ello fue necesario la implementacion

2.2 Logica de usuario 13

de una GUI llamada Datafuz desarrollada bajo la herramienta Qt Creator IDE C++, disenado parasatisfacer los requerimientos para la deteccion temprana de fallas en maquinas rotativas.

Rs232

PC

USB OTGDDR2 SDRAMProtocolo SPIMaestro/Esclavo

Sistema de adquisiciónVDAS

Sensores piezoeléctricosDYTRAN

ControladorPIO

ControladorDDR2

ControladorUSB

ControladorRS232

Bus de interconexiones Avalon

PLLMemoria

RAMTimer

Módulo dedepuración

JTAG

ProcesadorNios II / f

ProgramaNios II

FPGA STRATIX IV

SD CARD

ControladorSD CARD

ControladorPIO IRQ

ControladorVIC

ControladorPIO IRQ

IRQ IRQ

Interrupcionesexternas

Figura 2-4.: Diagrama de bloques de la estructura del Hardware

PLL

El objetivo de este modulo es generar una frecuencia de reloj que permita interconectar modulosa diferentes frecuencias y fases. Esto se lleva a cabo mediante el uso de la interfaz MegaWizarddonde se instancia el modulo ALTPLL (Phase Locked Loop) provisto por Altera. Los PLLs in-ternos de la tarjeta de desarrollo DE4 se pueden generar y caracterizar mediante la herramientaMegaWizard Plug-in Manager de Quartus II. En la figura 2-5 se muestra la instanciacion del PLLen el diseno.

Figura 2-5.: Instanciacion del componente PLL [8].

En la figura anterior, la entrada inclk0 es conectada a una de las tres entradas de reloj de 50 MHZde la tarjeta de desarrollo DE4. Para nuestro diseno es necesario implementar tres salidas de fre-cuencia de reloj generadas por el PLL: c0 (200 MHZ) es la frecuencia de reloj usada para elcontrolador del protocolo de comunicacion SPI; c1 (100 MHZ) es la frecuencia de reloj usada parael controlador de la memoria SDRAM; c2 es la frecuencia de reloj para componentes tales comoJTAG UART, USB, Timer, memoria RAM, etc. Otras caracterısticas de configuracion en la interfazMegaWizard incluyen velocidad del dispositivo, tipo y modo de operacion del PLL.

14 2 Desarrollo del Hardware

DDR2 SDRAM

La memoria externa DDR2 SDRAM [28] usa una arquitectura de doble velocidad para transmisionde datos, logrando altas velocidades de operacion. Esta arquitectura es en esencia una arquitectura4n-prefetch (internamente la memoria opera a la mitad de la frecuencia de la interfaz), con unainterfaz de memoria disenada para transferir dos palabras de datos por ciclo de reloj en la Entra-da/Salida. Tan solo una operacion de escritura o lectura para la DDR2 SDRAM consiste de unalongitud de 4n bits, transferencia de datos en dos ciclos de reloj en la DRAM interna y cuatrocorrespondientes n bits de longitud, transferencia de datos en medio ciclo de reloj a traves de losperifericos de Entrada/Salida.Para la captura de datos en el dispositivo receptor, un bit de datos bidireccional (DQS, DQS#) estransmitido junto a los datos. DQS se transmite por la memoria DDR2 SDRAM durante READs ypor el controlador de la memoria durante WRITEs. DQS es alineados al borde de la trama del datopara READs, y alineados al centro de la trama del dato para WRITEs.La memoria DDR2 SDRAM opera a partir de un reloj diferencial (CK y CK#), cuando el crucede CK va a estado HIGH y CK# va a estado LOW, se conoce como flanco positivo de CK. Lasdirecciones y senales de control son registrados en los flanco positivo de CK, el dato de entrada esregistrado en los flancos de subida y bajada de DQS, y el dato de salida es referenciado a flancosde subida y bajada de DQS y CK.En la figura 2-6 se muestra el diagrama de flujo de los comandos basicos para el manejo de lamemoria DDR2-SDRAM.

2.3. Sistema Nios II

El procesador Nios II puede interactuar con una variedad de componentes de tipo estandar for-mando un sistema de proposito especıfico, satisfaciendo las necesidades del usuario. La tarjeta dedesarrollo Stratix IV cuenta con componentes embebidos que pueden ser integrados en un sistemaNios II.

2.3.1. Procesador Nios II

Nios II es un procesador de proposito general tipo RISC de 32 bits basado en una arquitecturatipo hardvard (bus de datos y bus de instrucciones), que cuenta con las siguientes caracterısticasprincipales, tal como se muestra en la figura 2-7:

Conjunto de instrucciones para la transferencia de datos y direcciones de 32 bits.

32 registros de proposito general.

32 fuentes de interrupcion externa.

2.3 Sistema Nios II 15

Figura 2-6.: Diagrama de estados simplificado DDR2-SDRAM[28]

Interfaz de interrupciones externas para fuentes adicionales.

Instrucciones dedicadas para multiplicaciones de 64 y 128 bits.

Instrucciones para operaciones de coma flotante en precision simple.

Operaciones de multiplicacion y division de 32 bits.

Acceso a perifericos integrados para el manejo de memorias y perifericos externos.

Un MMU opcional para soportar sistemas operativos que lo requieran.

Un MPU opcional.

Plataforma de desarrollo de software basado en la herramienta GNU/C++.

Para el caso de la FPGA DE4 [12], hay tres versiones diferentes del procesador Nios II que sedescriben a continuacion:

Nios II/f ’Fast’: Disenado especıficamente para tareas de alto rendimiento. Con un desem-peno mayor a los 300 MIPS, es optimo para aplicaciones de rendimiento critico ası comoaplicaciones con codigos de programas extensos y buffers para el almacenamiento de datos.Este tipo de procesador es muy eficiente, ya que permite correr un sistema operativo contodas sus caracterısticas en funcionamiento sin ningun tipo de problemas.

16 2 Desarrollo del Hardware

Figura 2-7.: Diagrama de bloques-procesador Nios II

El procesador Nios II/f es soportado por el software de desarrollo Nios II EDS, incluyendoel entorno de desarrollo integrado Eclipse Nios II IDE.

Nios II/e “Economy”: Disenado especıficamente para utilizar la menor cantidad de recursoscomo la logica y memoria de la FPGA DE4, no requiere de licencia para su programacionen la herramienta de desarrollo Quartus II. El procesador Nios II/e tiene un alto desempenoen cuanto a la hora de realizar tareas, pero tiene el mismo costo que un procesador de arqui-tectura 8051 tıpica.El procesador Nios II/e es optimo para aplicaciones de bajo costo, como las encontradas enla industria, automotriz y supermercados.

Nios II/s ’Standard’: Disenado para implementar un procesador pequeno sin alguna relevan-cia en el desarrollo del software. El procesador Nios II/s es optimo para aplicaciones querequieren de un desempeno intermedio y como alternativa de bajo costo, optimo para apli-caciones que requieren de un rendimiento intermedio, gran numero de lıneas de codigo y unbuffers de gran tamano para el almacenamiento de datos.

Manejo de excepciones e interrupciones

El procesador Nios II incluye hardware para el manejo de excepciones. Este tipo de interrupcionespueden ser generadas internamente (interrupciones por hardware) o a traves de interrupciones EIC.La arquitectura del procesador Nios II esta equipado de un controlador de excepciones simplepara el manejo de cada una de ellas. Cada excepcion, incluyendo las interrupciones por hardware(internas), causa que el procesador transfiera la ejecucion mediante una direccion de excepciones.En tal direccion, un controlador de excepciones determina la causa de la excepcion y ejecuta unarutina apropiada de excepciones.

2.3 Sistema Nios II 17

El procesador Nios II cuenta con dos tipos de interrupciones:

Interrupciones externas: Para cada interrupcion externa, el controlador de interrupciones ex-ternas presenta un nivel de interrupcion. El procesador Nios II hace uso del nivel de inte-rrupcion para determinar cuando hacer uso de la interrupcion.

Interrupciones internas: El procesador Nios II soporta 32 entradas para interrupciones inter-nas (IRQ 0 a IRQ 31), donde el mayor nivel de prioridad esta en la interrupcion IRQ 0. Laprioridad de cada interrupcion es determinado por software.

Para generar una interrupcion por hardware, las condiciones que se mencionan a continuaciondeben de ser verdaderas:

El bit PIE del registro de estado (status) debe estar activado.

Debe de producirse una peticion de llamado a una de las interrupciones (IRQ ).

El bit correspondiente (bit n) del registro Enable debe estar activado.

Memoria y perifericos de entrada/salida

Puerto maestro de instrucciones y datos: Un puerto maestro de tipo Avalon Memory-Mapedque se conecta a la memoria de intrucciones y datos a traves del sistema de interconexionque trae por defecto para sitemas Nios II.

Memoria cache de instrucciones y datos: Memoria cache de rapido acceso para sistemasNios II.

Puerto de la memoria de datos: Conexion directa a bloques de memoria externas con elprocesador Nios II.

La arquitectura del procesador Nios II oculta detalles de la arquitectura del hardware al progra-mador, lo que le permite desarrollar aplicaciones en el sistema Nios II sin tener conocimientoespecıfico de la implementacion del hardware.

Bus de datos e instrucciones

La arquitectura del procesador Nios II proporciona buses para el intercambio de instruccionesy datos (tipo Harvard). Ambos buses estan implementados bajo las especificaciones del sistemaAvalon-MM. Los puertos maestro de datos se conectan tanto a las memorias como a los perifericos,mientras que el bus de instrucciones se conecta unicamente a las memorias.En el procesador Nios II, el bus de instrucciones esta configurado como un puerto maestro de 32bits del tipo Avalon-MM, Este puerto cumple la funcion de recolectar las funciones que van a serejecutadas por el procesador. El bus de instrucciones no ejecuta ningun tipo de operaciones deescritura.

18 2 Desarrollo del Hardware

Figura 2-8.: Memoria y perifericos de entrada/salida

Este puerto maestro es del tipo pipelined Avalon-MM. Esta configuracion minimiza el impacto detransferencia sincrona de memoria e incrementa la frecuencia maxima general de todo el sistema.Este puerto puede emitir peticiones de lectura sucesivas antes que el dato haya sido registrado.El bus de datos del procesador Nios II esta implementado como un puerto maestro de 32 bits deltipo Avalon-MM. Este puerto maestro realiza dos funciones importantes:

Lectura de datos dsde la memoria o desde un periferico de entrada/salida cuando el procesa-dor ejecuta una instruccion de carga de datos.

Escritura de datos a memoria o periferico de entrada/salida cuando el procesador ejecuta unainstruccion de almacenamiento de datos.

La senal Byte-Enable en el dispositivo maestro especifıca cual de los cuatro Bytes que conformanel valor total del dato deben de ser utilizados durante la transferencia de escritura. La arquitec-tura del procesador Nios II soporta memoria cache para mejorar el rendimiento promedio de latransferencia de datos cuando se accede a la memoria mas lenta.Usualmente la memoria cache de instrucciones y la cache de datos comparten una sola memoriaque contiene tanto las intrucciones como los datos. Mientras el procesador tenga separado el busde datos e instrucciones, en general el procesador Nios II puede presentar un solo bus.La arquitectura del procesador Nios II soporta memoria una cache tanto para datos como parainstrucciones. Esta memoria reside en el nucleo del procesador Nios II como parte integral delsistema. Este tipo de memorias permite la mejora del tiempo de acceso para los sistemas basadosen procesadores Nios II que usan memorias externas, tales como las memorias SDRAM usadaspara el almacenamiento de datos y programas.La memoria cache de datos e instrucciones esta habilitada de manera permanente durante la eje-cucion del programa, proporcionando metodos para el software con el objetivo de evitar que los

2.3 Sistema Nios II 19

accesos a perifericos no devuelvan datos a la memoria cache. La gestion de la memoria cache y elcorrecto funcionamiento son manejados por software.El procesador Nios II puede incluir una, las dos, o ninguna de las memorias cache. Y en casode ser usadas, el usuario es quien tiene acceso a la configuracion. El uso de las memorias noafecta el desempeno de los programas cargados, sin embargo puede afectar la velocidad a la que elprocesador ejecuta las instrucciones y la lectura/escritura de datos.La efectividad de la memoria cache (para mejorar el rendimiento) se basa en las siguientes premi-sas:

Comunmente las memorias cache son componentes externos (off-chip), sin embargo estasmemorias vienen integradas con el procesador Nios II logrando una gran ventaja al momentode ser accesadas.

El ciclo de instrucciones de desempeno es menor que las instrucciones de la memoria cache.

El bloque de datos de desempeno critico es menor que la memoria cache de datos

La arquitectura del procesador Nios cuenta con dos metodos para derivacion de la memoria cache:

Instrucciones de carga y almacenamiento de datos para perifericos de entrada/salida: Instruc-ciones tales como idio o stio derivan la memoria cache de datos y fuerzan una transferenciade datos a una direccion especifıca.

Metodo de derivacion cache del bit-31: Este procedimiento usa el bit 31 de la direccion comouna bandera para indicar si el procesador deberıa transferir datos desde/hacia una memoriacache, o derivarlos. Esta es una conveniencia para el software, que puede ser que necesitepara almacenar en la memoria cache determinadas direcciones y derivar otras. En el soft-ware se puede pasar direcciones como parametros entre funciones, sin tener que especificarinformacion adicional acerca de si los datos direccionados estan en la memoria cache o no.

El mapeo de direcciones para memorias y perifericos en el procesador Nios II esta disenado demanera dependiente. El usuario puede especificar el mapeo de direcciones en la herramienta Qsys.Hay tres direcciones que forman parte del procesador y deben ser mencionados:

Direccion de reset.

Direccion de excepciones.

Direccion de ruptura del controlador.

La MMU opcional presente en los disenos basados en el procesador Nios Ii proporciona, entreotras cosas, las siguientes funcionalidades:

20 2 Desarrollo del Hardware

Mapeado virtual para direcciones fisicas.

Proteccion de memoria.

Direcciones virtuales y fisicas de 32 bits.

Un espacio de 512 MB de direcciones fisicas disponibles para accesos directos.

Hardware TLBs, que permiten la aceleracion de la decodificacion de las direcciones:

1. TLBs separados para accesos a instrucciones y datos.

2. Lectura, escritura y ejecucion de permisos controlados por seccion.

3. Configuracion de tamano de TLB en el editor de parametros del procesador Nios II.

Formato de tablas de seccion (escritura de datos equivalente) determinado por software

El usuario puede incluir el MMU cuando haya instanciado el procesador Nios II en su sistema dediseno de hardware del Nios II. El MMU esta siempre habilitado, y la memoria cache de datos einstrucciones son virtualmente indexados y etiquetados. La MPU (Memory Protection Unit) op-cional cuenta con las siguientes caracterısticas y funcionalidades:

Proteccion de memoria.

32 regiones para instrucciones y 32 para datos.

Tamano de variables locales para datos e instrucciones.

Acceso a lectura y escritura para las regiones de datos.

Acceso a lectura y escritura para las regiones de instrucciones.

Regiones de solapamientos.

Los sistemas basados en Nios II pueden incluir un MPU o un MMU, pero no pueden ser incluidoslos dos en un mismo procesador Nios II.

2.3.2. JTAG UART

La arquitectura del Nios II proporciona un modulo JTAG (figura 2-9) que facilita funcionalidadesemuladas para controlar el procesador de manera remota desde un host. Algunas de las caracterısti-cas de este modulo se mencionan a continuacion:

Programas que son descargados en la memoria.

Inicio y parada de ejecucion.

2.3 Sistema Nios II 21

Establecimiento de breakpoints y watchpoints.

Analisis de registro y memoria.

Recoleccion de taza de datos de ejecucion en tiempo real.

Los sistemas de depuracion pueden acceder al procesador a traves de la interfaz JTAG estandar enlas FPGA. En el lado del procesador, el modulo de depuracion se conecta a las seales internas delnucleo del procesador. Este modulo tiene un control no enmascarable sobre el propio procesador,y no requiere codigo adicional de software relacionado con la aplicacion que se esta sometiendo aprueba.El modulo de depuracion obtiene el control del procesador, mediante la activacion de la senal dehardware break, o bien mediante la escritura de instrucciones tipo break dentro del programa a serejecutado. En ambos casos, el procesador transfiere la ejecucion a la rutina localizada en la direc-cion de ruptura. La direccion del break es designada con el editor de parametros del procesadorNios II a traves de la herramienta Qsys.

Figura 2-9.: Diagrama de bloques del modulo JTAG UART

El soporte del software para el JTAG UART es generado por Altera. Para el procesador Nios II, loscontroladores del dispositivo son generados en las rutinas de acceso al hardware HAL. Permitiendotener acceso al nucleo del procesador mediante las funciones de la librerıa ANSI C. Tales comogetchar() y printf() [6]. Para el caso de un host, Altera proporciona un JTAG terminal pertenecienteal software Nios EDS que permite interactuar con un host. La conexion entre un host y un sistemaNios II incluyendo el sistema de depuracion JTAG UART es mostrado en la figura 2-10.

2.3.3. Clock-Crossing-Bridge

El Avalon-MM Clock-Crossing-Bridge permite conectar un dispositivo maestro tipo Avalon-MMy varios dispositivos esclavos que operan en diferentes rangos de frecuencias. Sin un componenteClock-Crossing-Bridge, la herramienta Qsys genera automaaticamente un CDC generico en el busde interconexion avalon, sin tener un buen desempeno para aplicaciones que lo requieran. Esto se

22 2 Desarrollo del Hardware

Figura 2-10.: Interfaz de comunicacion entre un host y la tarjeta de desarrollo DE4[1]

debe a que el Clock-Crossing-Bridge incluye un mecanismo de almacenamiento temporal llamadobuffer.Un par de buffers tipo FIFO en el Clock-Crossing-Bridge son los encargados de transportar datosy senales de control en la frecuencia que opera el reloj del sistema. Uno de los FIFO captura losdatos y senales de control que viajan en la direccion que va desde el dispositivo maestro al esclavo,y el otro FIFO captura datos en la direccion opuesta.Las senales que van desde el dispositivo maestro hacia el esclavo a traves del buffer FIFO son:

writedata

address

read

write

ByteEnable

burstcount, cuando se habilita la senal.

Las senales que van desde el dispositivo esclavo hacia el maestro traves del buffer FIFO son:

readdata

readdatavalid

El usuario puede configurar el tamano del buffer FIFO, puesto que hay mas senales viajando enla direccion de maestro a esclavo que viceversa, lo que genera un gran impacto en el manejo dela memoria del Clock-Crossing-Bridge. En la figura 2-11 se hace uso de un Avalon-MM Clock-Crossing-Bridge para separar componentes en dos grupos. En el lado izquierdo de la figura seencuentran los componentes de bajo rendimiento conectados en un solo puerto del Clock-Crossing-Bridge que opera a baja velocidad. En el lado derecho de la figura se encuentran los componentesde alto rendimiento conectados a un segundo Clock-Crossing-Bridge a una alta velocidad.

2.3 Sistema Nios II 23

Figura 2-11.: Sistema con Avalon-MM Clock-Crossing-Bridge[12]

2.3.4. PIO

El componente PIO (Parallel Input/Output) con interfaz Avalon provee una interfaz de mapeo dememoria entre un puerto esclavo Avalon-MM y puertos de proposito general Entrada/Salida. Lospuertos de Entrada/Salida se conectan ya sea la logica de usuario de dispositivos embebidos, o aperifericos de Entrada/Salida de dispositivos externos conectados a la FPGA.Cada PIO puede generar hasta 32 puertos de Entrada/Salida. Un dispositivo configurado como hostcontrola los puertos PIO para leer y escribir el registro de mapeo de la interfaz Avalon-MM. Bajocontrol del host, los PIO capturan los datos en los puertos de entrada y manejan los datos hacia lospuertos de salida. Los puertos de entrada/salida del PIO pueden ser conectados ya sea para sistemasembebidos o para sistemas off-chip. El core puede ser configurado con solo entradas, solo salidas,o entradas y salidas. Si el core es usado para controlar pines de Entrada/Salida bidireccional enel dispositivo, el core dispone de un modo bidireccional con control de tri-estado. La logica delhardware es separada para leer y escribir el registro de data. Al leer el registro data retorna el valorpresente en el puerto de entrada. Al escribir el registro data afecta el valor llevado al puerto desalida. Estos puertos son independientes.El PIO puede ser configurado para capturar flancos (subida, bajada, o ambos) en el puerto deentrada. Cuando una entrada detecta un flanco, la condicion se indica en el registro edgecapture.Cuando el PIO es configurado para generar una interrpucion IRQ en ciertas condiciones de entrada.La interrupcion IRQ puede ser:

Level-sensitive: El hardware del pin de proposito general PIO puede detectar un nivel en altoo en bajo, solo depende de la configuracion.

24 2 Desarrollo del Hardware

Edge-sensitive: La captura del flanco ya sea de subida o de bajada del pin de propositogeneral PIO determina cual tipo de flanco causo una interrupcion IRQ.

En la figura 2-12 muestra un diagrama de bloques de un PIO configurado con puertos de entrada ysalida.

Figura 2-12.: Diagrama de bloques de un PIO configurado con puertos de entrada y salida, ysoporte para interrupciones IRQ [10]

2.3.5. VIC

El controlador VIC esta disenado para manejar un gran numero de interrupciones, con gran eficien-cia sin la necesidad de sobrecargar al procesador. El controlador VIC puede generar interrupcionesentre cuatro a cinco veces mas rapido que las interrupciones que vienen por defecto con el pro-cesador Nios II (IIC). Virtualmente el numero de interrupciones es ilimitado, ya que los VICs sepueden conectar en serie. Sin embargo, la rutina de acceso al hardware HAL del Nios II requiereque las EIC sean de la misma clase, lo que significa que son soportados por el mismo controlador[5]. Se puede instanciar un componente VIC en el diseno del hardware, teniendo en cuenta lassiguientes necesidades:

Reducir el tiempo de respuesta de una o mas interrupciones.

Necesidad de tiempo real para el rendimiento de interrupciones.

Se requiere que las interrupciones no sean enmascaradas.

Necesidad de habilitar mas de 32 interrupciones (valor maximo soportado por el procesadorNios II).

Descripcion funcional

A continuacion se describe cada uno de los perifericos que componen al vector de interrupcionesVIC.

2.3 Sistema Nios II 25

clk:Esta senal va conectada al reloj del sistema. Para ello es necesario conectar tanto la senalclk y reset n.

irq input: Para el manejo interrupciones, la interfaz irq input comprende 32 posiciones,que son controladoas por nivel de sensibilidad, es decir que la interrupcion cero es la massensible.

interrupt controller out: Es una interfaz de salida tipo Avalon-ST. Esta interfaz va conec-tada hacia el procesador o bien a la interfaz interrupt controller in de otro vector de interrup-ciones VIC.

interrupt controller in: Esta interfaz es necesaria, siempre y cuando el usuario desee co-nectar mas de un vector de interrupciones VIC, configurados en cadena.

Bloques funcionales:

En la figura 2-13 se muestra el diagrama de bloques del vector de interrupciones VIC. A continua-cion se hace una descripcion general de cada uno de los bloques funcionales que comprenden elVIC:

Manejo de interrupciones: Este bloque controla las interrupciones de entrada, proporcio-nando funcionalidad como configurar el nivel de la interrupcion. El usuario puede configurarel numero de interrupciones necesarias.

Procesamiento de interrupciones por prioridad: En este bloque se seleccionan las inte-rrupciones de mayor prioridad. En el procesamiento de interrupciones por prioridad se reciveinformacion para cada interrupcion desde el bloque de manejo de interrupciones y pasa lainformacion de la interrupcion de mas alta prioridad al bloque de generacion de vectores.

Generacion de vectores: Recibe la informacion con las interrupciones de mayor prioridaddesde el bloque de procesamiento de interrupciones por prioridad. Este bloque usa el iden-tificador de puerto pasado por el bloque de procesamiento de interrupciones por prioridadjunto con la direccion del vector.

Consideraciones de latencia en tiempo real

En esta seccion se hace una descripcion general de latencia de interrupcion, y que elementos secombinan para determinarla, y cuales metodos para medirla. Los siguientes elementos comprendenla latencia de interrupcion:

Latencia Pipeline: Esta definida como el numero de ciclos de reloj entre una senal de inte-rrupcion (momento en que la afirmo la interrupcion) y la ejecucion de la primera instruccionen el vector de excepciones.

26 2 Desarrollo del Hardware

Registros de control Status

( optionalAvalon-STEntradaVIC daisy chain)

clk( )Reloj

irq_input Manejo deinterrupciones

Procesamiento deinterrupciones por

prioridadEntrada interrupciones

externas

Controlador de interrupciones

Generación devectores

interrupt_controller_out

(Conectado al procesadorvia Avalon-ST, o bien haciaotro interrupt_controller_in de otro VIC)

csr_acces(Entrada Avalon-MM esclavo

desde el procesador)

Figura 2-13.: Diagrama de bloques del VIC

Latencia de causa: Es el tiempo que le toma al procesador en identificar una excepcion talcomo una interrupcion de hardware. Con un EIC, tal como un VIC, la latencia de causa escero ya que cada interrupcion de hardware tiene una direccion fija al vector de interrupciones.

Latencia de seleccion: Es el tiempo que se toma el sistema para transferir control al vectorde interrupciones correcto, dependiendo de la interrupcion que la causo.

Latencia de embudo: Es el tiempo requerido para la interrupcion de embudo para cambiarde contexto. Puede incluir el almacenamiento y reestablecimiento de los registros.

Latencia generada por el compilador: Normalmente tiene un efecto mınimo en el ren-dimiento general de las interrupciones externas. El usuario tiene dos opciones acerca de lalatencia del compilador:

• Activar la optimizacion en el compilador, y simplificar el ISR, reduciendo al mınimolas variables locales.

• Escribir el ISR en lenguaje ensamblador.

2.3.6. DMA

Es un mecanismo que permite que dos o mas dispositivos puedan transferir datos de manera directa,sin la necesidad de hacer uso del procesador para la transferencia de datos, permitiendo acelerarla velocidad de transferencia de datos entre dispositivos y ası evitar sobrecargar al procesador.El controlador DMA transfiere datos tan eficiente como sea posible, leyendo y escribiendo datosa la maxima frecuencia permitida por la fuente o destino. Este controlador es capaz de realizartransferencias Avalon con control de flujo, lo que permite transferir automaticamente los datoshacia o desde un periferico de baja velocidad con control de flujo (por ejemplo, una UART) [4]. Elcontrolador DMA tiene dos puertos maestros Avalon-MM. Un puerto maestro de lectura, puertomaestro de escritura y un puerto Avalon-MM para controlar el DMA, tal como se muestra en lafigura 2-14.

2.3 Sistema Nios II 27

Figura 2-14.: Diagrama de bloques del controlador DMA

Configuracion DMA para transferencia de datos

Un periferico configurado como maestro de tipo Avalon-MM configura e inicia operaciones DMAescribiendo a los registros por medio del puerto de control. El dispositivo maestro configura lassiguientes opciones para que se lleve a cabo una transaccion:

Leer la ubicacion de la direccion (fuente).

Escribir la ubicacion de la direccion (destino).

Tamano de la transferencia: Byte (8 bits), media palabra (16 bits), palabra (32 bits), doblepalabra (64 bits) o cuatro palabras (128 bits).

Habilitar la interrupcion al final de la transaccion.

Habilitar un origen o destino para finalizar la transaccion DMA con la senal de fin de paque-tes.

Especificar si el origen o destino son memorias o perifericos.

2.3.7. SPI Maestro-Esclavo

El SPI (Serial Peripheral Interface) es una interfaz serial sincrona util para la comunicacion deperifericos externos y otros dispositivos; tales como memorias externas EEPROM, controladoresLCD, ADCs, DACs, codificadores de audio, etc. Con esta interfaz, se tiene un dispositivo maestroel cual inicializa y controla la comunicacion , y uno o mas dispositivos esclavos quienes reciben ytransmiten hacia el dispositivo maestro [24]. En la figura 2-15 se muestra la configuracion llevadaa cabo en este proyecto.

Descripcion de las lıneas de control y datos

Las cuatro senales del protocolo de comunicacion SPI (SCLK, MISO, DRDY, y SYNC) son dis-cutidas en el siguiente parrafo. Cada senal es descrita para el modo de operacion maestro-esclavo;donde el maestro es ejecutado por la tarjeta de desarrollo DE4 y los esclavos son las tarjetas deadquisicion de las senales de vibraciones mecanicas.

28 2 Desarrollo del Hardware

Figura 2-15.: Protocolo de comunicacion SPI Maestro-Esclavo

MISO: La lınea de comunicacion MISO es configurada como una entrada hacia un disposi-tivo maestro (tarjeta de desarrollo DE4) y como una salida en un dispositivo esclavo (tarjetade adquisicion de las senales de vibraciones mecanica). Esta lınea de comunicacion permitela transferencia de datos de manera unidireccional con un tamano en el bus de datos de 24bits, siendo los bits mas significativos enviados en los primeros ciclos de reloj.

SCLK: La lınea de comunicacion SCLK es usada para sincronizar el movimiento de losdatos dentro y fuera del dispositivo a traves de la lınea de comunicacion MISO. tanto elmaestro como el esclavo son capaces de intercambiar un Byte de informacion durante unasecuencia de ocho ciclos de reloj. La senal de reloj es generada por el maestro, esta lınea decomunicacion se convierte en una entrada para cada uno de los dispositivos esclavos.

DRDY: La lınea de comunicacion DRDY es una senal de salida generada por el dispositivoesclavo. El objetivo de esta senal es generar un pulso muy corto que le indica al maestro queuna conversion de datos analogo-digital fue realizada y el dispositivo maestro debe de sercapaz de recibir la transaccion de datos mediante la lınea de comunicacion MISO.

SYNC: Esta lınea de comunicacion llamada SYNC tiene como funcion sincronizar el iniciode una conversion de datos y si la senal de SYNC se mantiene en bajo por mas de 219 ci-clos de reloj (tiempo de sincronizacion), la tarjeta de adquisicion de senales de vibracionesmecanicas es colocada en modo de bajo consumo. Para nuestro proposito, esta lınea de sin-cronizacion ha sido configurada en uno logico para adquisicion de datos en modo continuo.

Polaridad y fase del reloj

El protocolo de comunicacion SPI tiene cuatro combinaciones de reloj, que la senal SCLK puedeoperar cuando CPHA y CPOL son habilitadas. El parametro CPOL controla si la senal SCLKpuede comenzar en nivel alto o bajo cuando la transmision de datos va a ser inicializada. Si CPOL= 0, la senal de SCLK comienza en nivel bajo y el primer flanco de la senal de SCLK es un flancode subida o bajada despues de que la senal SYNC es configurada. Si CPOL = 1, la senal de SCLK

2.3 Sistema Nios II 29

comienza en nivel alto, y el primer flanco de la senal de SCLK es un flanco de bajada. El parametroCPHA controla si el dato es corrido a la derecha o izquierda en el primer flanco de subida o bajadade la senal de SCLK. Si CPHA = 0, los datos se muestrean en el primer flanco de la senal de SCLK.Si CPHA = 1, los datos son muestreados en el segundo flanco de la senal de SCLK. Recuerde queel primer flanco puede ser subida o bajada dependiendo del parametro CPOL. En este proyecto losparametros CPHA y CPOL han sido configurados en cero.

Figura 2-16.: Diagrama de tiempos del protocolo de comunicacion SPI Maestro-Esclavo

Cuando el dispositivo maestro del protocolo de comunicacion SPI quiere iniciar la transferenciade datos, la senal DRDY debe ser llevada a nivel alto para modo de adquisicion continuo. Unavez se haya llevado a cabo este paso, cada dispositivo esclavo es habilitado para transferencia dedatos con el dispositivo maestro. En ese momento la senal DRDY es llevada a nivel alto tan prontocomo la senal SYNC es llevada a bajo. Este proceso sucede en un tiempo llamado tdelay, comose muestra en la figura 2-16. Despues que la senal SYNC retorna a nivel alto, la senal DRDYpermanece en alto mientras el dispositivo esclavo realiza la conversion (analogo a digital), una vezel nuevo dato esta listo la senal DRDY es llevada a nivel bajo y el dispositivo maestro debe estarlisto para la captura del dato (24 bits). Este proceso es conocido como sincronizacion (t0 a t1). Enel momento en que la senal DRDY es llevada a nivel bajo, el dispositivo maestro genera 24 pulsosde reloj para sincronizar los datos, y el contenido del registro del dispositivo esclavo es transferidoal registro del dispositivo maestro. El dispositivo maestro tiene un tiempo tconv para capturar elpaquete de datos a traves de la senal MISO.

2.3.8. Sistema ID

El sistema ID con interfaz Avalon es un dispositivo de solo lectura que permite crear sistemasQsys con un identificador unico. El procesador Nios II hace uso del sistema ID para verificar queel programa que se diseno fue compilado correctamente y que la imagen del hardware que va a serdescargado en la tarjeta de desarrollo se haya configurado correctamente; de no ser ası, el softwareno sera ejecutado correctamente. El sistema ID cuenta con una interfaz de mapeo de memoriaesclavo Avalon-MM, esta interfaz tiene dos registros de 32 bits, tal como se muestra en la tabla2-1. El valor de cada registro se determina en el tiempo de generacion del sistema. Siempre retornaun valor constante.

30 2 Desarrollo del Hardware

Offset Nombre delregistro

R/W Descripcion

0 id R

Registro de 32 bits, basado en el contenido del siste-ma Qsys. El id es similar a un valor del Check-sum.El registro id toma diferentes valores cuando en el sis-tema Qsys se ha hecho uso de diferentes componentesy varias configuraciones.

1 timestamp R

Registro de 32 bits que esta basado en el tiempo de ge-neracion del sistema. El valor es equivalente al nume-ro de segundos que han transcurrido despues de la fe-cha: Enero 1 de 1970.

Tabla 2-1.: Registros del sistema ID

2.3.9. Memoria SD

Una memoria SD es un dispositivo de almacenamiento, usada frecuentemente en camaras digitalespara el almacenamiento de videos e imagenes. Este dispositivo de almacenamiento es portable y demanejo, que permite almacenamiento de datos y ser transferidos a otro dispositivo. La FPGA DE4cuenta con un puerto SD que para este diseno ha sido instanciada con el fin de transferir los datosque han sido almacenados de manera temporal en un buffer y ser transferidos a la memoria SD.El desarrollo del hardware de la memoria SD ha sido implementado bajo el sistema Qsys, dondeel usuario bajo un simple modelo de programa puede acceder a los datos almacenados en la SD, osimplemente escribir datos.

2.3.10. Timer

El Timer con interfaz Avalon es un temporizador para sistemas de proceso como el procesadorNios II. Este componente provee las siguientes caracterısticas:

Contador de 32 a 64 bits

Controles para iniciar, parar y resetear el Timer.

Dos modos de cuenta: regresiva una vez y continua regresiva.

Habilitar o deshabilitar el IRQ cuando el Timer llegue a cero

Compatible con procesadores de 32 bits y 64 bits.

El controlador del Timer es generado por la biblioteca del sistema HAL para el procesador NiosII.

2.4 Sistema de adquisicion VDAS 31

Descripcion funcional

El Timer tiene dos caracterısticas visibles al usuario:

La interfaz Avalon-MM tiene acceso a seis registros de 16 bits.

Una salida de pulsos que puede ser configurada como un generador de pulsos periodico

Todos los registros son de 16 bits, lo que significa que son compatibles con el procesador de 16 bits,como el procesador de 32 bits. Ciertos registros solo existen en el hardware para una configuraciondada. Por ejemplo, si el Timer es configurado con un periodo constante, los registros del periodono existen en el hardware. En la figura 2-17 se muestra el diagrama de bloques del Timer.

Figura 2-17.: Diagrama de bloques del Timer [9]

2.4. Sistema de adquisicion VDAS

La tarjeta de adquisicion VDAS [20] consta de siete canales para la conexion de siete acelerome-tros axiales o triaxiales. Los conectores para cada uno de los canales, son conectores BNC, quebrindan una conexion segura ya sea para los sensores o bien para calibrar el sistema mediante ungenerador de senales. El conversor ADC delta-sigma ADS1271 [36] es el encargado de realizar laconversion de la senal analogica proveniente del acelerometro. El conversor tiene una resolucionde 24 bits a una frecuencia de muestreo de 52734 SPS, y un rango de voltaje maximo de 5 Vpp.Este conversor ADC cuenta con tres modos de operacion (High-Speed, High-Resolution y Low-Power) para optimizar velocidad, resolucion y consumo de energia, tal como se muestra en la tabla2-2. Para nuestro proposito se ha configurado el ADC en modo High-Resolution.

Modo deoperacion

Frecuencia demuestreo (SPS)

Pasa banda(Hz)

SNR(dB)

Ruido(uVRMS)

Consumo deenergia (mW)

High-Speed

105,469 47,777 106 9.0 92

High-Resolution

52,734 23,889 109 6.5 90

Low-Power 52,734 23,889 106 9.0 35

Tabla 2-2.: Modo de operacion ADS1271 [36]

32 2 Desarrollo del Hardware

Esta tarjeta cuenta con siete canales de conversion y un bus de datos independiente para inter-comunicarse con el dispositivo maestro. El protocolo de comunicacion SPI es el que permite elintercambio de informacion entre maestro-esclavo. En la figura 2-18 se muestran tres de los sietecanales de la tarjeta de adquisicion VDAS, ya que son similares (mismos componentes).

Figura 2-18.: Tarjeta de adquisicion VDAS [20]

En la figura 2-19 se observa el diagrama circuital del acondicionamiento de la senal implementadoen las tarjetas de adquisicion de senales de vibraciones VDAS. Se puede observar una etapa deamplificacion con una ganancia aproximada de 0.5 V/V que transforma la amplitud maxima delsensor de 10 Vpp, a la amplitud maxima permitida por el ADC de 5 Vpp.

1kHz

V2-1/1V

2.5V

OP262

C50.1uF

C40.1uF

C30.1uF

C20.1uF

C110uF

OP262OPA2227 R10

150R9150

R8150

R7150

R650

R5300

R44.9k

R310k

R210k

R14.9k

Figura 2-19.: Diagrama circuital de acondicionamiento de la senal de entrada

Estas tarjetas cuenta con filtros pasa bajas tipo Salen Key de cuarto orden aplicados a cada uno delos canales para la adquisicion de senales de vibracion, cuya frecuencia de corte es de 10 KHz quees la frecuencia maxima a la que trabajan los acelerometros Dytran. En la figura 2-20 se muestra larespuesta en frecuencia de la parte analoga de la tarjeta de adquisicion, donde la ganancia maximadel sistema es de 0.5 V/V y una disminucion de ganancia del sistema a medida que se aumenta lafrecuencia en la senal de entrada de la tarjeta de adquisicion VDAS.

2.4.1. Acelerometro Piezoelectrico DYTRAN

Un acelerometro es un dispositivo que convierte una aceleracion en una senal electrica. Es unode los transductores mas versatiles, siendo el mas comun el piezoelectrico por compresion. Estese basa en que, cuando se comprime un retıculo cristalino piezoelectrico, se produce una cargaelectrica proporcional a la fuerza aplicada.

2.4 Sistema de adquisicion VDAS 33

2.5 5 7.5 10 12.5

500

450

400

350

300

250

200

150

100

50

0V

olt

aje

(mV

)0

Frecuencia (KHz)

Figura 2-20.: Respuesta del filtro pasa bajas para una senal de entrada

Este dispositivo junto con los circuitos electricos asociados se puede usar para la medida de velo-cidad y desplazamiento ademas de la determinacion de formas de onda y frecuencia. Una de lasventajas principales de este tipo de transductor es que se puede hacer tan pequeno que su influen-cia sea despreciable sobre el dispositivo vibrador. El intervalo de frecuencia tıpica es de 2 Hz a10 KHz. Su uso es comun en mantenimiento predictivo, donde se emplea para detectar defectosen maquinas rotativas y alternativas, detectando por ejemplo, el mal estado de un rodamiento ocojinete en una etapa temprana antes de que se llegue a la averıa. En este proyeto se trabajo consensores DYTRAN uniaxiales y un sensor triaxial, tal como se describe a continuacion:El acelerometro DYTRAN (figura 2-21)uniaxial es un acelerometro tipo IEPE (Integrated Elec-tronic Piezoelectric) que incorpora un preamplificador, cuya sensibilidad es de 100mV/g y unarespuesta en frecuencia de 1 a 10 Khz.El acelerometro DYTRAN triaxial es un acelerometro tipo IEPE que incorpora un preamplificadorpor cada uno de los ejes, cuya sensibilidad se encuentra en el rango de los 10 mV/g y una respuestaen frecuencia de 1 a 10 Khz.

(a) (b)

Figura 2-21.: Acelerometros piezoelectricos DYTRAN. (a) Tri-axial (b) Uni-axial.

3. Desarrollo del Software

El software del sistema embebido Qsys es desarrollado mediante la herramienta Nios II EDS,conformado por tres partes: Aplicacion de usuario, archivos de librerıa y BSP, tal como se muestraen la figura 3-1. En este capıtulo se describe en detalle cada uno de los componentes que hacenparte del proyecto de software Nios II.

HOSTFPGA-STRATIX IV

Función main()

-CotroladorRs232

-ControladorSD CARD

Interfaz gráfica deusuario Qt C++

RS232

RS232

BSP

Sistema deadquisición

de datosVDAS

Acelerómetro 1

Acelerómetro 2

Acelerómetro n

Controlador SPIMaestro-Esclavo

...

...

Función main()Visual Studio

-Controladormemoria SD

-ControladorRs232

SD

CARD

SD

CARD

Nios II

Base de datos

Figura 3-1.: Diagrama de bloques del Software

3.1. BSP

Un BSP esta basado en el entorno de desarrollo del hardware generado por el sistema Nios II. Cadaproyecto de software en Nios II necesita una descripcion del sistema (configuracion de perifericosde Entrada/Salida) del correspondiente sistema de hardware Nios II. Para el caso del Nios II SBTde Eclipse, esta descripcion del sistema esta contenida en el archivo .QSYS info. En el procesode inicializar el proyecto de software, el BSP Editor en Nios II SBT GUI examina el archivo.QSYS info y genera un archivo de librerıa BSP que soporta las aplicaciones de usuario. El archivode librerıa BSP esta conformada por tres directorios (controlador, HAL y obj) y un conjunto dearchivos del sistema, que son necesarios para el desarrolo del proyecto software.Un BSP esta conformado por los siguientes elementos:

Capa de abstraccion de hardware (HAL): Es un elemento del sistema operativo que funcionacomo una interfaz entre el software y el hardware del sistema, proporcionando una plata-forma de hardware robusta para implementar algun tipo de aplicaciones. Las aplicaciones

3.2 Librerıas 35

desarrolladas no acceden directamente al hardware, sino que lo hacen a la capa abstractaprovista por las rutinas de acceso al hardware HAL.

Archivos de librerıa estandar newlib de C: Es una implementacion de la biblioteca estandarde C destinada a su uso en sistemas embebidos. Es un conglomerado de varias partes dearchivos de las librerias, que operan bajo licencias open source siendo accesible y utilizableen sistemas embebidos.

Controladores: Los Controladores del dispositivo manejan cada una de las partes hardware.Por defecto las rutinas de acceso al hardware HAL son quien inicializan un Controlador deldispositivo para cada componente en el sistema hardware. En el entorno de desarrollo desoftware Nios II, los Controladores cuentan con las siguientes propiedades:

• Un Controlador esta ligado con un componente hardware especıfico.

• Un Controlador puede tener ajustes que afectan directamente el proceso de compilado,para ello el usuario puede hacerlos desde la configuracion del BSP.

Software opcional: Un paquete de software hace parte de codigos fuente, donde el usuariopuede adicionar en el proyecto BSP para aumentar el numero de funcionalidades en un sis-tema. Un ejemplo de paquete de software es el NicheStack TCP/IP.En el entorno de desarrollo de software Nios II, un paquete de software cuenta con las si-guientes propiedades:

• Un paquete de software no esta asociado con un componente hardware especıfico.

• Un paquete de software no puede tener ajustes que pueden afectar el proceso de com-pilado. Estos ajustes hacen parte de la configuracion del BSP

3.2. Librerıas

Una librerıa es una coleccion de codigos fuente que han sido compilados para crear un solo archivode librerıa. Los archivos de librerıa generalmente contienen funciones reutilizables, o simplementefunciones de proposito general que pueden ser compartidas en varios proyectos. Un ejemplo de unarchivo de librerıa es un conjunto de funciones aritmeticas. Los archivos de librerıa se caracterizanpor no tener una funcion principal main().

3.3. Aplicacion Nios II

Un proyecto Nios II C/C++ consiste de un conjunto de codigos fuente, y un archivo de instruccio-nes makefile que compila el codigo fuente y lo enlaza con un BSP y uno o mas archivos de librerıa,creando un archivo llamado .elf. La caracterıstica principal de una aplicacion de usuario es que uno

36 3 Desarrollo del Software

de los archivos fuente contiene la funcion main(). Una aplicacion incluye codigos que hacen el lla-mado a funciones en los archivos de librerıa y el BSP. En nuestro diseno, la aplicacion de usuariorealiza los requerimientos funcionales de proposito especıfico como lo es la lectura de los datosde la memoria SDRAM, obteniendo los datos de aceleracion de los acelerometros axiales, paraluego ser enviados al dispositivo HOST encargado del procesamiento de las senles. Este procesose lleva a cabo mediante protocolo de transmision USB o RS232. Los Controladores, tales comoel SPI son un conjunto de rutinas basadas en transacciones de Entrada/salida de bajo nivel paracontrolar operaciones basicas como transmision de datos (USB o RS232) y recepcion de datos delos acelerometros.En la funcion main() se encuentran un conjunto de funciones de alto nivel y manejo de perifericosque se adaptan a las necesidades de la aplicacion a desarrollar.

3.3.1. Controlador SPI Maestro/Esclavo

En la siguiente seccion se describe es software del protocolo de comunicacion SPI, incluyendo elmapa de registro y software para el acceso al hardware. Altera provee un archivo de rutinas deacceso al hardware HAL que define los registros del SPI. Para tener acceso al hardware, Alteraproporciona una funcion especifıca para el nucleo SPI. Esta rutina ha sido modificada de acuerdoa las necesidades requeridas por nuestro sistema.

Rutinas de acceso al hardware

La rutina de acceso al hardware alt avalon spi command(), es una rutina de proposito general queproporciona acceso a un dispositivo con protocolo de comunicacion SPI, configurado como undispositivo maestro (FPGA).

Funcion: int alt_avalon_spi_command(alt_u32 base,

alt_u32 read_length,

alt_u32 read_data,

alt_u32 flags)

Archivo de librer\’{i}a: <altera_avalon_spi.h>

La funcion alt avalon spi command() realiza una secuencia de control en el protocolo de comuni-cacion SPI. Esta rutina ha sido disenada para ser implementada en la tarjeta de desarrollo StratixIV GX, actuando como un dispositivo maestro en el intercambio de informacion entre maestroy esclavo. El tamano del bus de datos de la lınea de datos MISO es de 24 bits, sin embargo elusuario puede modificar el bus de datos hasta llegar a un tamano de 8 bits. Esta funcion no soportadispositivos hardware con protocolo de comunicacion SPI que superen el tamano del bus a 24 bits.Cuando el usuario hace un llamado a esta funcion, se lee una cantidad arbitraria de datos desde elpuerto MISO del dispositivo maestro.

3.3 Aplicacion Nios II 37

Registros del protocolo SPI Maestro

En la figura 3-2 se muestra la comunicacion entre el Avalon-MM maestro y el protocolo de comu-nicacion lo hacen a traves de los 6 registros cada uno con un tamano del bus de 16 bits.

Nombre delRegistro

rxdata (1)

txdata (1)

status (2)

control

Reservado

RXDATA(n-1..0)

TXDATA(n-1..0)

E RRDY TRDY

IRRDY ITRDY

TOE ROE

IROEITOE

TMT

IE

NOTA:Los bits 15 al 0 son indefinidos cuando n es menor que 16.(1)Una operación de escritura al registro resetea los bits ystatus ROE, TOE E.(2)

Mapa de registros SPI Maestro

Figura 3-2.: Mapa de registros SPI Maestro [24]

Registro rxdata: Un dispositivo maestro es el encargado de leer los datos recibidos del regis-tro rxdata. Cuando el shift-register (Maestro) recibe n-bits (sin perdida de bits) del dato, elbit rrdy del registro status es puesto en 1 logico, y el dato es transferido en el registro rxdata.Cuando se hace lectura del registro rxdata, el bit rrdy es puesto en cero logico. Cuando unnuevo dato llega a la lınea de dato MISO, se almacena en el registro rxdata, sin importar silos datos anteriores al dato sean recuperados. Si el bit rrdy es puesto a uno cuando el datoes transferido al registro rxdata (El dato anterior no fue recuperado), se produce un errorReceive-Overrun y el bit roe del registro status es puesto a uno. En este caso se puede decirque el contenido del registro rxdata es indefinido.

Registro status: El registro status esta formado por un conjunto de bits que muestran elestado del protocolo SPI. Cada bit esta asociado con un correspondiente Interrupt-Enable enel registro control. El dispositivo maestro puede leer el estado del registro status las vecesque sean necesarias sin cambiar el valor de los bits.

El registro status esta conformado por los siguientes bits:

• ROE (Receive-Overrun Error): Este bit es puesto en estado de 1 logico, si un nuevodato es recibido mientras el registro rxdata esta ocupado, (significa que el bit RRDY seencuentra en estado logico 1). En este caso, el nuevo dato sobrescribe al anterior datocapturado.

• TMT (Transmitter shift-register empty): Cuando el protocolo SPI ha sido configuradoen modo maestro, el bit TMT es puesto en cero logico cuando una transaccion esta enprogreso, y puesto en estado de uno logico cuando el shift-register este vacıo.

38 3 Desarrollo del Software

• RRDY (Receiver Ready): El bit RRDY es puesto a uno logico cuando el registro rxdataeste vacıo.

• E (Error): El bit E es una respuesta a una OR logica entre el bit TOE y ROE. Estabandera ayuda al usuario a detectar condiciones de error.

Registro control: Esta formado por un conjunto de bits que controlan el funcionamiento delprotocolo SPI. El dispositivo maestro puede leer el estado del registro control las veces quesean necesarias sin cambiar el valor de los bits.

• IROE: Cuando el bit IROE ha sido puesto en estado logico de uno, habilita las inte-rrupciones para errores de Receive-Overrun.

• IRRDY: Cuando el bit IRRDY es puesto en estado logico de uno, habilita las interrup-ciones para la condicion Receiver-Ready.

• IE: Cuando el bit IE es puesto en estado logico de uno, habilita las interrupciones parala condicion Error.

Cuando se hace un reset al sistema, todos los bits del registro control son puestos a cero logico, ylas interrupciones son deshabilitadas.

3.3.2. Controlador RS232 UART

El protocolo de comunicacion serial RS232 UART cuenta con una interfaz simple de mapeoRegister-Mapped Avalon. El procesador Nios II se comunica con el core del RS232 UART, ylo hace escribiendo y leyendo los registros de control y data [2].

Registros RS232 UART

En la figura 3-3 se muestra los registros que hacen parte del protocolo de comunicacion RS232UART. Cuando un dispositivo se ha configurado como maestro, este puede tener el control y lacomunicacion con el puerto serial RS232 UART mediante dos registros de 32 bits que han sidoasignados en memoria, tal como se muestran en la siguiente figura.

RS232 UART Core register map

Offset RegisterR/W

Bit description

in bytes Name 31. . . 24 23. . . 16 15 14 . . . 11 10 9 8 7 6 . . . 2 1 0

0 data RW (1) RAVAIL RVALID (1) PE (2) (2) DATA

4 control RW (1) WSPACE (1) WI RI (1) WE RE

Notes:

(1) Reserved. Read values are undefined. Write zero.

(2) These bits may or may not exist, depending on the specified Data Width.

If they do not exist, they read zero and writing has no effect.

Figura 3-3.: Mapa de registros RS232 UART [11]

3.3 Aplicacion Nios II 39

Registro Data: El registro Data es quien puede acceder e inicializar los buffer FIFO delectura y escritura. En la tabla 3-1 se muestra la disposicion de los bits que conforman elregistro Data.

Numero de Bits Nombre del Bit Lectura/Escritura Descripcion8...0 DATA Lectura/Escritura Cuando se quiere transferir

un dato desde/hacia el puertoRS232, se deben de contem-plar dos alternativas:

• Cuando se va a escribirun dato desde el puertoRS232 hacia un disposi-tivo externo, el dato estransferido desde el bitDATA hacia el buffer deescritura.

• Cuando se va a leer undato desde un dispositi-vo externo hacia el puer-to RS232, se transfiereel dato desde el bufferde lectura hacia el bitDATA.

9 PE Lectura Bandera que indica si el bitData tuvo un error de paridad

15 RVALID Lectura Bandera que indica si los bitsDATA y PE contienen datosvalidos.

23...16 RAVAIL Lectura Indica el numero de caracte-res que quedan en el buffer delectura.

Tabla 3-1.: Bits del registro Data

Registro Control: El manejo de interrupciones y la informacion del estado de lectura soncontrolados por el registro de Control. En la tabla 3-2 se describe la funcion de cada uno delos bits que hacen parte del registro Control.

Cuando se hace una lectura al registro de control, este retorna el estado de los buffers de lectura yescritura (FIFOs). Si el usuario desea hacer uso de las interrupciones, debe de tener en cuenta talregistro.Los bits RE y WE habilitan las interrupciones para la lectura y escritura de los FIFOs, respectiva-mente. Los bits WI y RI son banderas que indican el estado de la fuente que genera las interrup-ciones, estos bits pueden ser examinados para determinar que condicion genera la peticion de lainterrupcion.

40 3 Desarrollo del Software

Numero de Bits Nombre del Bit Lectura/Escritura Descripcion0 RE Lectura/Escritura Este bit se habilita para la lec-

tura de interrupciones.1 WE Lectura/Escritura Este bit se habilita para la es-

critura de interrupciones.8 RI Lectura Indica que la interrupcion de

lectura esta pendiente.9 WI Lectura Indica que la interrupcion de

escritura esta pendiente.23...16 WSPACE Lectura Numero de posiciones dispo-

nibles en el buffer de escritu-ra.

Tabla 3-2.: Bits del registro Control

3.3.3. Controlador USB modo esclavo

El controlador USB soporta transferencias de datos de hasta 480 Mbps, cuenta con un mecanismopara la transferencia de datos entre dispositivos USB, o para ser configurado como host.Para el desarrollo del controlador USB, se cuenta con el chip ISP1761 [29] desarrollado por Philipsy que ha sido embebido en la FPGA para el desarrollo de aplicaciones de proposito general. ElISP1761 tiene tres puertos USB que soportan tres modos de operacion. El puerto 1 puede serconfigurado para que funcione como un puerto de lectura de datos, escritura de datos o como unpuerto OTG; los puertos 2 y 3 estan configurados para lectura de datos. Cuando este dispositivo esconfigurado como OTG, puede actuar como un dispositivo maestro o esclavo dependiendo de lasnecesidades del usuario.

Caracterısticas del controlador USB

Soporta USB 2.0 modo esclavo o maestro, configurado para transferencia de datos a altasvelocidades (480 Mbps)

Incluye un controlador DMA esclavo que soporta multiples configuraciones.

Cotrolador USB de alto desempeno con comunicacion serial SIE y una memoria tipo FIFOpara transmision y recepcion de datos.

Puede ser configurado en modo de alta velocidad.

Memoria integrada de 8 KB.

PLL configurado a 30 MHz y 60 MHz.

3.4 Interfaz Grafica de Usuario 41

3.3.4. Controlador memoria SD

En la figura 3-4 se muestra un diagrama de bloques del SD Card IP Core. El modulo FSM es elencargado de generar peticiones de comandos y datos por medio del bus de datos Avalon hacia elprocesador Nios II. La interfaz de la memoria SD se encarga de procesar el tipo de peticion gene-rada para comunicar con la memoria SD de forma serial. El resultado de la peticion es retornado ala interfaz FSM, para luego ser enviado al procesador Nios II.

Rutinas de acceso al hardware: HAL

El controlador disenado para el SD Card IP Core es una manera simple de acceder a los datosalmacenados en la memoria SD. El controlador funciona como una tabla de asignacion de archivospara la lectura y escritura, permitiendo a los usuarios acceder a los datos en la memoria SD quehan sido almacenados con el tipo de formato FAT16. Existen varias versiones de FAT, incluyendoFAT12, FAT16 y FAT32, sin embargo la version actual de este controlador solo soporta FAT16 [3].En la figura 3-4 se muestra el diagrama de bloques del componente SD Card IP Core.

Interfaz

Avalon

FSM

Interfaz

memoria

SD

Figura 3-4.: Diagrama de bloques SD Card IP Core

3.4. Interfaz Grafica de Usuario

El software disenado y ejecutado en el PC interactua de manera directa o indirecta con el hardware,lo que significa que si los datos han sido almacenados en la memoria SD, la aplicacion debe deajustarse a parametros como el tiempo de adquisicion, frecuencia de muestreo, pero la transferenciade datos desde la memoria DDR2 SDRAM hacia la memoria SD es muy rapido. Sin embargo elusuario puede cambiar el protocolo de comunicacion entre el hardware y el software Datafuz dememoria SD a protocolo serial RS232.El software Datafuz desarrollado bajo la herramienta Qt Creator IDE C++, disenado para satisfacerlos requerimientos para la deteccion temprana de fallas en maquinas rotativas. La aplicacion seejecuta bajo el sistema operativo windows 10 ya sea 64 bits o 32 bits.En la figura 3-5 se muestra la ventana principal del software Datafuz, donde se puede observar quela unica opcion de configuracion es Load File, que permite cargar un archivo ya sea en formato.bin o .txt.

42 3 Desarrollo del Software

Figura 3-5.: Ventana principal Datafuz: Carga de archivo

Una vez cargado el archivo en la aplicacion Datafuz, una ventana emergente pregunta por el nume-ro de canales registrados en el archivo (.bin o .txt), tal como se muestra en la figura 3-6.

Figura 3-6.: Ventana principal Datafuz: Numero de canales almacenados en el archivo .bin

Confirmado el numero de canales, la aplicacion pregunta por el numero de segundos que se hanregistrado durante el proceso de la adquisicion de senales de vibraciones mecanicas, tal comose muestra en la figura 3-7. Tanto en la configuracion de canales y segundos, el usuario puedeconfigurar menor numero de canales y menor numero de segundos a visualizar y procesar.Cuando se ha finalizado con la configuracion de canales y tiempo de adquisicion, la aplicacionDatafuz muestra una ventana emergente (figura 3-8) con parametros de configuracion tales como:frecuencia de muestreo, la resolucion del conversor ADS1271, voltaje maximo de entrada en elconversor ADC y sensibilidad de los sensores (acelerometros). El usuario debe tener en cuenta quelos sensores uniaxiales tienen una sensibilidad de 100 mV/g, y el sensor triaxial cuenta con unasensibilidad de 10 mV/g.En la figura 3-9 se muestra una ventana de configuracion de parametros como el numero de ca-nales a visualizar, senal representada en la frecuencia, y visualizar la informacion de un punto enespecıfico, ya sea en el eje x o y (mediante el puntero). Terminada esta ultima configuracion, elusuario puede actualizar la pantalla mediante el boton update de la aplicacion Datafuz, y ası poder

3.4 Interfaz Grafica de Usuario 43

Figura 3-7.: Ventana principal Datafuz: Numero de segundos almacenados en el archivo .bin

Figura 3-8.: Ventana principal Datafuz: Configuracion de parametros

44 3 Desarrollo del Software

observar las graficas de cada uno de los canales en tiempo y frecuencia.

Figura 3-9.: Ventana principal Datafuz: Configuracion de parametros para visualizacion de cana-les en tiempo y frecuencia

En la figura 3-10 se muestra una senal senoidal a una frecuencia de 100 HZ, generada con ungenerador de funciones. En la parte izquierda de la figura se muestra la forma de onda de la senalsenoidal y en la parte derecha se muestra el espectro de la senal senoidal, cuya frecuencia es100.264 Hz.

Figura 3-10.: Representacion en tiempo y frecuencia de una senal senoidal a una frecuencia 100Hz

En la figura 3-11 se muestra una senal tomada en el banco de pruebas que se describe mas adelanteen el capitulo 4. Para esta prueba, hemos conectado un sensor uniaxial de sensibilidad 100mV/g enel canal 4 del sistema de adquisicion de senales basado en FPGA. En la parte derecha se observala senal representada en el dominio del tiempo, mientras que en la derecha se observa el espectrode la senal.

3.4 Interfaz Grafica de Usuario 45

Figura 3-11.: Representacion en tiempo y frecuencia de una senal tomada en una maquina rotativa

4. Simulaciones y pruebas

En este capıtulo se muestra los resultados llevados a cabo para comprobar el funcionamiento delanalizador de vibraciones basado en FPGA.

4.1. Simulacion protocolo SPI Maestro-Esclavo

El protocolo de comunicacion SPI Maestro-Esclavo implementado en este proyecto, ha sido si-mulado mediante un analizador logico [37], cuya herramienta permite monitoreo en tiempo real yverificar el correcto funcionamiento del protocolo SPI Maestro-Esclavo. El resultado simulado sonmostrados en la figura 4-1.

17.83us 18.125us 17.805us 18.18us 17.92us 18.32us 17.92us 18.18us 17.76us

18.17us 18.5us 18.1us 18.48us 18.22us 18.7us 18.26us 18.52us 18.14us

10.455us 17.32us 17.515us 17.42us 17.64us 17.485us 17.585us 17.29us 17.395us 17.235us

1.31ms

18.12us 19.8us 16.18us 18.005us 17.945us 18.165us 18.125us 17.91us 17.96us 18.635us

18.38us 20.065us 16.445us 18.265us 18.245us 18.425us 18.385us 18.285us 18.3us 18.895us

16.715us 16.78us 15.005us 16.845us 16.87us 16.945us 16.81us 16.71us 16.83us 16.895us

1.31ms

18.035us 17.93us 18us 17.935us 18.175us 18.125us 17.845us 17.97us 18.26us

18.295us 18.195us 18.275us 18.47us 18.385us 18.145us 18.43us 18.555us

14.04us 17.91us 17.895us 17.995us 18.02us 18.105us 1 17.965us 17.87us 18.05us 18.105us

1.31ms

17.985us 18.1us 17.86us 18.185us 17.925us 18.065us 18.125us 18.025us 17.965us

18.28us 18.36us 18.2us 18.445us 18.185us 18.325us 18.625us 18.285us 18.225us

7.375 18.145us 18.185us 18.11us 18.27us 18.115us 18.22us 18.18us 18.085us 18.085us

1.31ms

17.855us 19.53us 16.68us 18.035us 17.945us 17.915us 18.13us 18.175us 17.95us 18.09us

18.15us 19.79us 16.94us 18.38us 18.29us 18.175us 18.47us 18.52us 18.29us 18.35us

17.985us 18.165us 16.66us 18.01us 18us 18.08us 18.19us 18.09us 17.935us 18.01us

1.31ms

3.950182ms 3.968205ms 3.986227ms 4.00425ms 4.022272ms 4.040294ms 4.058317ms 4.076339ms 4.094362msBus eñal/S

--SCLK_1

--MISO_1

--DRDY_1

--SYNC_1

--SCLK_2

--MISO_2

--DRDY_2

--SYNC_2

--SCLK_3

--MISO_3

--DRDY_3

--SYNC_3

--SCLK_4

--MISO_4

--DRDY_4

--SYNC_4

--SCLK_5

--MISO_5

--DRDY_5

--SYNC_5

4.094362ms

Figura 4-1.: Simulacion de la transferencia de datos SPI Maestro-Esclavo para 5 canales en para-lelo.

La figura 4-1 muestra el resultado de la simulacion de 5 de 7 de los canales del protocolo decomunicacion SPI Maestro-Esclavo adquiridos en paralelo, donde cada canal SPI es representadopor 4 lineas de comunicacion que han sido registradas. El dispositivo maestro es quıen configura lafrecuencia de operacion del protocolo de comunicacion SPI Maestro-Esclavo, a traves de la lineade comunicacion SCLK, que se ha configurado a una frecuencia de 27 MHZ. En el recuadro rojoen la figura 4-1se hace un acercamiento de la transferencia de datos desde el dispositivo esclavohacia el maestro.

4.2 Barrido de frecuencias con generador de senales 47

4.2. Barrido de frecuencias con generador de senales

Para este tipo de pruebas se ha seleccionado un generador de senales que nos permite hacer unbarrido de frecuencias llevando al analizador de vibraciones basado en FPGA al punto maximopara adquirir una senal (10 KHz), cuyo rango de frecuencias son caracterısticas en espectros demaquinas rotativas con algun tipo de falla.Como prueba inicial se configura el generador de senales con una senal sinusoidal de amplitud 50mVpp, haciendo un barrido de frecuencias desde 10Hz hasta los 10 KHz. Una vez configurado elgenerador se conecta a cada uno de los canales del sistema VDAS, ası todos los canales del sistemaadquieren la misma senal de referencia. El tiempo de adquisicion fue configurado por 10s a unafrecuencia de muestreo de 52734 SPS, generando un registro de 10 segundos y siete canales deadquisicion, repitiendo el proceso hasta completar 10 registros.En las figuras 4-2 a 4-8 se muestran los resultados obtenidos con el sistema de adquisicion basadoen FPGA tanto en el dominio del tiempo como de la frecuencia, se tomo uno de los diez registrosadquiridos con el analizador de vibraciones basado en FPGA, y se llevo a cabo el procesamientode las senales (siete canales) tanto en el tiempo como en la frecuencia mediante la herramientaMatlab. Para cuestiones visuales se ajustaron las escalas en el eje tiempo, de no ser ası no se podrıavisualizar la forma de onda de la senal sinusoidal.En las figuras 4-3 a 4-9 se muestra la media y la desviacion estandar de la correlacion entre los 10registros, por cada una de las frecuencias seleccionadas. La media de la correlacion determina lasimilitud entre cada uno de los canales y la media de las desviacion estandar determina la variacionde correlacion entre registros.

Frecuencia: 10Hz

En la figura 4-2 se muestra la representacion de la senal en el dominio del tiempo y la frecuencia.La representacion en el tiempo muestra los siete canales adquiridos en paralelo por el sistemade adquisicion basado en FPGA, y han sido superpuestos para ver si hay algun tipo de desfaseo cambio de amplitud. En el dominio de la frecuencia se observa la componente principal de lafrecuencia de 10 Hz.

Tiempo [S]

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

Am

pli

tud [

mV

]

-20

-10

0

T

Frecuencia [Hz]

0 2 4 6 8 10 12 14 16 18 20

× 10-3

0

1

2

3

4

Figura 4-2.: Representacion en el dominio del tiempo (parte superior), y en el dominio de la fre-cuencia (parte inferior) de la senal sinusoidal a una frecuenciade 10 Hz

En las figura 4-3 se observa que la media y la desviacion estandar de la correlacion entre los 10

48 4 Simulaciones y pruebas

registros a la frecuencia de 10 Hz es aproximadamente de 0,9722 ± 0,0296. Lo que significa queLa similaridad entre canales tiende a uno (siendo uno el valor maximo) y la variacion entre canalestiende a cero. Esto se debe a que la tarjeta de adquisicion toma 5273,4 SPS por cada 0.1s, pararepresentar un periodo de la senal sinusoidal de periodo 0.1s.

Numero de canales

0 1 2 3 4 5 6 7 8

Gra

do d

e s

imil

ari

dad

0.94

0.95

0.96

0.97

0.98

0.99

1

Figura 4-3.: Media y desviacion estandar de la correlacion entre los 10 registros adquiridos a unafrecuencia de 10 Hz

Frecuencia: 100Hz

En la figura 4-4 se muestra la representacion de la senal en el dominio del tiempo y la frecuencia.La representacion en el tiempo muestra los siete canales adquiridos en paralelo por el sistemade adquisicion basado en FPGA, y han sido superpuestos para ver si hay algun tipo de desfaseo cambio de amplitud. En el dominio de la frecuencia se observa la componente principal de lafrecuencia de 100 Hz.

Tiempo [mS]

0 10 20 30 40 50 60 70 80 90 100

Am

pli

tud

[m

V]

-30

-20

-10

0

10

20

30

T

Frecuencia [Hz]

0 20 40 60 80 100 120 140 160 180 200

× 10-3

0

1

2

3

4

5

6

Figura 4-4.: Representacion en el dominio del tiempo (parte superior), y en el dominio de la fre-cuencia (parte inferior) de la senal sinusoidal a una frecuenciade 100 Hz

En las figura 4-5 se observa que la media y la desviacion estandar de la correlacion entre los 10registros a la frecuencia de 100 Hz es aproximadamente de 0,9996± 4,016x10−4, Lo que significaque la similaridad entre canales tiende a uno (siendo uno el valor maximo) y que la variacion entrecanales es aproximadamente cero. El generador de senales se ha configurado a la frecuencia de 100Hz, que significa que el periodo de esta senal es de 10 ms. A esta frecuencia la tarjeta VDAS delanalizador de vibraciones adquiere 527,34 SPS para representar un periodo de la senal sinusoidal.

Frecuencia: 1kHz

En la figura 4-6 se muestra la representacion de la senal en el dominio del tiempo y la frecuencia.La representacion en el tiempo muestra los siete canales adquiridos en paralelo por el sistema

4.2 Barrido de frecuencias con generador de senales 49

Numero de canales0 1 2 3 4 5 6 7 8

Gra

do d

e si

mila

rida

d

0.9992

0.9994

0.9996

0.9998

1

Figura 4-5.: Media y desviacion estandar de la correlacion entre los 10 registros adquiridos a unafrecuencia de 100 Hz

de adquisicion basado en FPGA, y han sido superpuestos para ver si hay algun tipo de desfaseo cambio de amplitud. En el dominio de la frecuencia se observa la componente principal de lafrecuencia de 1 KHz. Se observa que el sistema de adquisicion basado en FPGA tiene un buencomportamiento para esta frecuencia.

Tiempo [mS]

0 1 2 3 4 5 6 7 8 9 10

Am

pli

tud

[m

V]

-30

-20

-10

0

10

20

30

T

Frecuencia [KHz]

0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2

× 10-3

0

1

2

3

4

5

Figura 4-6.: Representacion en el dominio del tiempo (parte superior), y en el dominio de la fre-cuencia (parte inferior) de la senal sinusoidal a una frecuenciade 1 KHz

El generador de senales se ha configurado a la frecuencia de 1kHz, que significa que el periodo deesta senal es de 1 ms. A esta frecuencia la tarjeta VDAS del analizador de vibraciones adquiere52,734 SPS para representar un periodo de la senal sinusoidal. Se debe tener en cuenta que lafrecuencia de la senal sinusoidal comienza a acercarse a la frecuencia de corte del filtro anti-aliasing, causando que haya un mınimo desfase entre canales. En las figura 4-7 se observa que lamedia y la desviacion estandar de la correlacion entre los 10 registros a la frecuencia de 1 KHz esaproximadamente de 0,8966± 0,1298.

Numero de canales0 1 2 3 4 5 6 7 8

Gra

do d

e si

mila

rida

d

0.75

0.8

0.85

0.9

0.95

1

Figura 4-7.: Media y desviacion estandar de la correlacion entre los 10 registros adquiridos a unafrecuencia de 1 KHz

50 4 Simulaciones y pruebas

Frecuencia: 10kHz

En la figura 4-8 se muestra la representacion de la senal en el dominio del tiempo y la frecuencia.La representacion en el tiempo muestra los siete canales adquiridos en paralelo por el sistemade adquisicion basado en FPGA, y han sido superpuestos para ver si hay algun tipo de desfase ocambio de amplitud. Se observa que a esta frecuencia el sistema tiene un comportamiento inestable,ya que el filtro pasa bajos del sistema de adquisicion tiene como frecuencia de corte 10 KHz,afectando la amplitud de la senales. En el dominio del tiempo tambien se puede apreciar que laforma de onda de la senal sinusoidal se ha degenerado, y esto se debe a que la frecuencia demuestreo del analizador de vibraciones es de 52734 SPS, representando la senal sinusoidal con5 muestras por periodo. En el dominio de la frecuencia se observa la componente principal de lafrecuencia de 10 KHz.

Tiempo [mS]

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

Am

pli

tud [

mV

]

-10

-8

-6

-4

-2

T

Frecuencia [KHz]

0 2 4 6 8 10 12 14 16 18 20

× 10-3

0

0.5

1

1.5

2

Figura 4-8.: Representacion en el dominio del tiempo (parte superior), y en el dominio de la fre-cuencia (parte inferior) de la senal sinusoidal a una frecuencia de 10 KHz

En las figura 4-9 se observa que la media y la desviacion estandar de la correlacion entre los 10registros a la frecuencia de 10 KHz es aproximadamente de 0,4465 ± 0,3346. Esto se debe a quelas senales senoidales adquiridas con el analizador de vibraciones presentan desfase y variacion enla amplitud. La razon se debe a que el filtro Sallen key de cuarto orden presenta una frecuencia decorte de 10 KHz, la misma frecuencia de la senal sinusoidal adquirida.

Numero de canales0 1 2 3 4 5 6 7 8

Gra

do d

e si

mila

rida

d

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

Figura 4-9.: Media y desviacion estandar de la correlacion entre los 10 registros adquiridos a unafrecuencia de 10 KHz

Como resultado de la prueba, se puede concluir que a pesar de que los canales del analizadorde vibraciones son independientes, muestran la misma informacion en cada uno de ellos. En eldominio del tiempo se puede observar que las senales no presentan desfase o variacion en susamplitudes, y en el dominio de la frecuencias se puede observar que la componente principal decada uno de los canales superpuestos en la grafica convergen a una misma frecuencia.

4.3 Descripcion del banco de pruebas 51

A medida que la frecuencia del fenomeno (10 KHz) se acerca a la frecuencia de corte del filtroanti-aliasing, la fase de la senal se ve afectada en cada uno de los canales.

4.3. Descripcion del banco de pruebas

En la figura 4-10 se muestra el montaje del banco de pruebas de vibraciones mecanicas para ladeteccion de fallas en maquinas rotativas. El banco de pruebas esta conformado por un motorDC cuya potencia no excede los 2 HP y una frecuencia de rotacion de 1800 RPM. El motor seencuentra anclado al soporte del motor, transmitiendo el movimiento al sistema a traves de uneje de transmision, la union entre el motor y el eje se hace por medio de un acople rigido. En eleje de transmision se han montado dos discos perforados para poder adicionar o quitar masas quepuedan balancear o desbalancear la maquina. Dos soportes de rodamiento mantiene fijo al eje detransmision con el sistema. Estos soportes de rodamiento han sido anclados a la base del sistemapor medio de tornillos opresores con la finalidad de alınear y desalınear la maquina.En la figura 4-10 se muestra el montaje del banco de pruebas que ha sido disenado e implementadopara la adquisicion de senales y simulacion de fallos en maquinas rotativas.

Rodamiento 1

Rodamiento 2

Discos perforados

Soporte derodamiento 2

Soporte derodamiento 1

Motor Acople rigido

Sensor triaxial (eje x, y, z)

Sensor axial eje x

Sensor axial eje z

Sensor axial eje y

Soporte de motor

Eje detransmisión

Figura 4-10.: Montaje del banco de pruebas

Para la adquisicion de senales de vibraciones mecanicas en maquinas rotativas, se han dispuesto7 sensores piezoelectricos, donde cuatro sensores son axiales y uno de ellos es triaxial. El sensortriaxial esta ubicado en el soporte de rodamiento 1, y tres de los sensores axiales estan ubicadosen el soporte de rodamiento 2; uno de los sensor axiales esta ubicado en la base del motor comoreferencia del sistema. La ubicacion de los sensores debe de ser en superficies planas y cercanas alas partes moviles (rodamientos, eje, soportes de rodamiento, etc.) del sistema, donde se produceuna mayor vibracion, que facilita detectar una fallas tanto en rodamientos, desbalanceo, como unadesalineacion en la maquina.En la tabla 4-1 se presenta un listado de las frecuencias comunmente encontradas en espectros devibraciones de maquinas rotativas, junto con las causas probalbles de la falla.Como se aprecia en la tabla 4-1, existen numerosos problemas mecanicos y electricos que puedenoriginar espectros de frecuencia similares. En estos casos es necesario obtener informacion adicio-

52 4 Simulaciones y pruebas

Tabla 4-1.: Frecuencias de vibracion y origen de falla

FRECUENCIA CAUSA PROBABLE DE FALLA1 x RPM Desbalanceo, engranajes o poleas descentradas,

desalıneamiento o eje flexionado, resonancia,problemas electricos.

2 x RPM Huelgos o juegos mecanicos, desalıneamiento,resonancia.

3 x RPM Desalıneamiento, combinacion de huelgosmecanicos axiales excesivos con desalınea-miento.

< a 1 x RPM Remolinos de aceite en cojinetes o rotores.Frec. de lınea Problemas electricos.Armonicas deRPM

Engranajes danados, fuerzas aerodinamicas,fuerzas hidraulicas, huelgos o juegos mecani-cos.

Alta frecuencia(no armonicas)

Cojinetes en mal estado.

nal, ya sea a traves de la medicion de las vibraciones en distintas direcciones, o bien analizando losespectros obtenidos en distintas condiciones de operacion de la maquina. Por ejemplo dos causasmuy comunes de fallas, son el desbalanceo y desalineamiento que producen espectros con picosimportantes en 1 x RPM

Banco de pruebas: Buen estado

Cuando se dice que la maquina se encuentra en buen estado, estamos haciendo referencia a quecada uno de los componentes de la maquina no presenta desgaste, y que la desalineacion y eldesbalanceo son mınimos. En la figuras 4-11 a 4-17 muestran las senales tanto del tiempo comofrecuencia, cuya condicion de la maquina es buen estado.En la figura 4-18 se muestra la media de la correlacion de los 5 registros adquiridos con los dossistemas. El canal 7 presenta mayor media de la correlacion que los demas canales, puesto que esel sensor que se encuentra ubicado en la base del motor (eje x), cuya senal no se ve afectada por eldesalineamiento o desbalanceo. Los canales 1, 2 y 3 presentan mayor media de la correlacion yaque son los sensores ubicados en el rodamiento numero 1, donde la desalineacion o el desbalanceono presentan mayor interferencia en las senales adquiridas. Los canales 4, 5 y 6 son los sensoresubicados en el rodamiento numero 2, punto mas alejado de la fuente generadora del movimiento(motor), lo que significa que es el punto donde se va a ver afectado por la desalineacion o un

4.3 Descripcion del banco de pruebas 53

(a)

Tiempo [s]

0 1 2 3 4 5 6 7 8 9 10

Am

pli

tud

[V

]

-0.3

-0.2

-0.1

0

0.1

0.2

0.3

(b)

Tiempo [s]

0 1 2 3 4 5 6 7 8 9 10

Am

pli

tud

[V

]

-1.5

-1

-0.5

0

0.5

1

1.5

(c)

Frecuencia [Hz]

0 100 200 300 400 500 600 700 800 900 1000

× 10-3

0

1

2

3

4

5

6

(d)

Frecuencia [Hz]

0 100 200 300 400 500 600 700 800 900 10000

0.005

0.01

0.015

0.02

0.025

0.03

Figura 4-11.: Representacion en el dominio del tiempo ((a), (b)), y en el dominio de la frecuencia((c), (d)) del canal 1

(a)

Tiempo [s]

0 1 2 3 4 5 6 7 8 9 10

Am

pli

tud

[V

]

-0.5

0

0.5

(b)

Tiempo [s]

0 1 2 3 4 5 6 7 8 9 10

Am

pli

tud [

V]

-2

-1

0

1

2

(c)

Frecuencia [Hz]

0 100 200 300 400 500 600 700 800 900 10000

0.002

0.004

0.006

0.008

0.01

0.012

(d)

Frecuencia [Hz]

0 100 200 300 400 500 600 700 800 900 10000

0.01

0.02

0.03

0.04

0.05

0.06

0.07

Figura 4-12.: Representacion en el dominio del tiempo ((a), (b)), y en el dominio de la frecuencia((c), (d)) del canal 2

54 4 Simulaciones y pruebas

(a)

Tiempo [s]

0 1 2 3 4 5 6 7 8 9 10

Am

pli

tud

[V

]

-0.5

0

0.5

(b)

Tiempo [s]

0 1 2 3 4 5 6 7 8 9 10

Am

pli

tud

[V

]

-1.5

-1

-0.5

0

0.5

1

1.5

(c)

Frecuencia [Hz]

0 100 200 300 400 500 600 700 800 900 1000

× 10-3

0

1

2

3

4

5

(d)

Frecuencia [Hz]

0 100 200 300 400 500 600 700 800 900 10000

0.005

0.01

0.015

0.02

0.025

0.03

Figura 4-13.: Representacion en el dominio del tiempo ((a), (b)), y en el dominio de la frecuencia((c), (d)) del canal 3

(a)

Tiempo [s]

0 1 2 3 4 5 6 7 8 9 10

Am

pli

tud

[V

]

-0.5

0

0.5

(b)

Tiempo [s]

0 1 2 3 4 5 6 7 8 9 10

Am

pli

tud

[V

]

-1

-0.5

0

0.5

1

(c)

Frecuencia [Hz]

0 100 200 300 400 500 600 700 800 900 1000

× 10-3

0

1

2

3

4

5

6

(d)

Frecuencia [Hz]

0 100 200 300 400 500 600 700 800 900 10000

0.005

0.01

0.015

0.02

Figura 4-14.: Representacion en el dominio del tiempo ((a), (b)), y en el dominio de la frecuencia((c), (d)) del canal 4

4.3 Descripcion del banco de pruebas 55

(a)

Tiempo [s]

0 1 2 3 4 5 6 7 8 9 10

Am

pli

tud

[V

]

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

(b)

Tiempo [s]

0 1 2 3 4 5 6 7 8 9 10

Am

pli

tud

[V

]

-1.5

-1

-0.5

0

0.5

1

1.5

(c)

Frecuencia [Hz]

0 100 200 300 400 500 600 700 800 900 1000

× 10-3

0

1

2

3

4

5

(d)

Frecuencia [Hz]

0 100 200 300 400 500 600 700 800 900 10000

0.01

0.02

0.03

Figura 4-15.: Representacion en el dominio del tiempo ((a), (b)), y en el dominio de la frecuencia((c), (d)) del canal 5

(a)

Tiempo [s]

0 1 2 3 4 5 6 7 8 9 10

Am

pli

tud

[V

]

-0.2

-0.1

0

0.1

0.2

(b)

Tiempo [s]

0 1 2 3 4 5 6 7 8 9 10

Am

pli

tud

[V

]

-1

-0.5

0

0.5

1

(c)

Frecuencia [Hz]

0 100 200 300 400 500 600 700 800 900 1000

× 10-3

0

1

2

3

4

5

(d)

Frecuencia [Hz]

0 100 200 300 400 500 600 700 800 900 10000

0.005

0.01

0.015

0.02

0.025

0.03

Figura 4-16.: Representacion en el dominio del tiempo ((a), (b)), y en el dominio de la frecuencia((c), (d)) del canal 6

56 4 Simulaciones y pruebas

(a)

Tiempo [s]

0 1 2 3 4 5 6 7 8 9 10

Am

pli

tud

[V

]

-0.4

-0.2

0

0.2

0.4

(b)

Tiempo [s]

0 1 2 3 4 5 6 7 8 9 10

Am

pli

tud

[V

]

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

(c)

Frecuencia [Hz]

0 100 200 300 400 500 600 700 800 900 10000

0.002

0.004

0.006

0.008

0.01

(d)

Frecuencia [Hz]

0 100 200 300 400 500 600 700 800 900 10000

0.005

0.01

0.015

0.02

0.025

0.03

0.035

Figura 4-17.: Representacion en el dominio del tiempo ((a), (b)), y en el dominio de la frecuencia((c), (d)) del canal 7

desbalanceo generado en la maquina.

Numero de canales

0 1 2 3 4 5 6 7 8

Gra

do

de s

imil

ari

dad

0.7

0.75

0.8

0.85

0.9

0.95

Figura 4-18.: Media y desviacion estandar de la correlacion entre los 5 registros adquiridos con elsistema de adquisicion basado en FPGA y National Instruments.

Banco de pruebas: Desbalanceo

El desbalanceo es una de las fallas en maquinas rotativas. Si una maquina no esta correctamentebalanceada, generalmente presenta altos niveles de vibracion, ruido y desgaste que son evidentes.Las fuerzas de vibracion en el desbalance se deben a que el centro de masa del rotor es excentricoal eje de rotacion, por lo tanto, se generan fuerzas centrifugas que actuan sobre la masa del rotor yque deben ser soportadas por rodamientos y soportes de rodamientos.En la figuras 4-19 a 4-25 muestran las senales tanto del tiempo como frecuencia, cuya condicionde la maquina es desbalanceo.En la figura 4-26 se muestra la media de la correlacion de los 5 registros adquiridos con los dossistemas, cuyo estado de la maquina es desbalanceo. El canal 7 presenta mayor media de la co-rrelacion que los demas canales, puesto que es el sensor que se encuentra ubicado en la base delmotor (eje x), cuya senal no se ve afectada a menor escala por el desalineamiento o desbalanceoque en los rodamientos 1 y 2. Los canales 1, 2 y 3 presentan mayor media de la correlacion que

4.3 Descripcion del banco de pruebas 57

Tiempo [s]

0 1 2 3 4 5 6 7 8 9 10

Am

pli

tud

[V

]

-0.3

-0.2

-0.1

0

0.1

0.2

0.3

Tiempo [s]

0 1 2 3 4 5 6 7 8 9 10

Am

pli

tud

[V

]

-1.5

-1

-0.5

0

0.5

1

1.5

Frecuencia [Hz]

0 100 200 300 400 500 600 700 800 900 1000

× 10-3

0

1

2

3

4

5

6

Frecuencia [Hz]

0 100 200 300 400 500 600 700 800 900 10000

0.005

0.01

0.015

0.02

0.025

0.03

Figura 4-19.: Representacion en el dominio del tiempo ((a), (b)), y en el dominio de la frecuencia((c), (d)) del canal 1

Tiempo [s]

0 1 2 3 4 5 6 7 8 9 10

Am

pli

tud

[V

]

-0.5

0

0.5

Tiempo [s]

0 1 2 3 4 5 6 7 8 9 10

Am

pli

tud [

V]

-2

-1

0

1

2

Frecuencia [Hz]

0 100 200 300 400 500 600 700 800 900 10000

0.002

0.004

0.006

0.008

0.01

Frecuencia [Hz]

0 100 200 300 400 500 600 700 800 900 10000

0.01

0.02

0.03

0.04

0.05

0.06

0.07

Figura 4-20.: Representacion en el dominio del tiempo ((a), (b)), y en el dominio de la frecuencia((c), (d)) del canal 2

Tiempo [s]

0 1 2 3 4 5 6 7 8 9 10

Am

pli

tud

[V

]

-0.5

0

0.5

Tiempo [s]

0 1 2 3 4 5 6 7 8 9 10

Am

pli

tud

[V

]

-1.5

-1

-0.5

0

0.5

1

1.5

Frecuencia [Hz]

0 100 200 300 400 500 600 700 800 900 10000

0.002

0.004

0.006

0.008

0.01

0.012

0.014

Frecuencia [Hz]

0 100 200 300 400 500 600 700 800 900 10000

0.005

0.01

0.015

0.02

0.025

0.03

Figura 4-21.: Representacion en el dominio del tiempo ((a), (b)), y en el dominio de la frecuencia((c), (d)) del canal 3

58 4 Simulaciones y pruebas

Tiempo [s]

0 1 2 3 4 5 6 7 8 9 10

Am

pli

tud

[V

]

-0.5

0

0.5

Tiempo [s]

0 1 2 3 4 5 6 7 8 9 10

Am

pli

tud

[V

]

-1

-0.5

0

0.5

1

Frecuencia [Hz]

0 100 200 300 400 500 600 700 800 900 1000

× 10-3

0

1

2

3

4

5

6

Frecuencia [Hz]

0 100 200 300 400 500 600 700 800 900 10000

0.005

0.01

0.015

0.02

Figura 4-22.: Representacion en el dominio del tiempo ((a), (b)), y en el dominio de la frecuencia((c), (d)) del canal 4

Tiempo [s]

0 1 2 3 4 5 6 7 8 9 10

Am

pli

tud

[V

]

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

Tiempo [s]

0 1 2 3 4 5 6 7 8 9 10

Am

pli

tud

[V

]

-1.5

-1

-0.5

0

0.5

1

1.5

Frecuencia [Hz]

0 100 200 300 400 500 600 700 800 900 10000

0.002

0.004

0.006

0.008

0.01

Frecuencia [Hz]

0 100 200 300 400 500 600 700 800 900 10000

0.01

0.02

0.03

0.04

0.05

0.06

Figura 4-23.: Representacion en el dominio del tiempo ((a), (b)), y en el dominio de la frecuencia((c), (d)) del canal 5

Tiempo [s]

0 1 2 3 4 5 6 7 8 9 10

Am

pli

tud

[V

]

-0.2

-0.1

0

0.1

0.2

Tiempo [s]

0 1 2 3 4 5 6 7 8 9 10

Am

pli

tud

[V

]

-1

-0.5

0

0.5

1

Frecuencia [Hz]

0 100 200 300 400 500 600 700 800 900 10000

0.002

0.004

0.006

0.008

0.01

Frecuencia [Hz]

0 100 200 300 400 500 600 700 800 900 10000

0.01

0.02

0.03

0.04

0.05

Figura 4-24.: Representacion en el dominio del tiempo ((a), (b)), y en el dominio de la frecuencia((c), (d)) del canal 6

4.3 Descripcion del banco de pruebas 59

Tiempo [s]

0 1 2 3 4 5 6 7 8 9 10

Am

pli

tud

[V

]

-0.4

-0.2

0

0.2

0.4

Tiempo [s]

0 1 2 3 4 5 6 7 8 9 10

Am

pli

tud

[V

]

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

Frecuencia [Hz]

0 100 200 300 400 500 600 700 800 900 1000

× 10-3

0

1

2

3

4

5

Frecuencia [Hz]

0 100 200 300 400 500 600 700 800 900 10000

0.005

0.01

0.015

0.02

0.025

0.03

0.035

Figura 4-25.: Representacion en el dominio del tiempo ((a), (b)), y en el dominio de la frecuencia((c), (d)) del canal 7

los canales 4,5 y 6, ya que son los sensores ubicados en el rodamiento numero 1, donde la desali-neacion o el desbalanceo no presentan mayor interferencia en las senales adquiridas. Se debe detener en cuenta que la masa para poder desbalancear la maquina fue ubicada en el disco perforadonumero 2, lo que significa que los sensores 4, 5 y 6 van a presentar un desvalanceo evidente en lasseales.

Numero de canales0 1 2 3 4 5 6 7 8

Gra

do d

e si

mila

rida

d

0.65

0.7

0.75

0.8

0.85

Figura 4-26.: Media y desviacion estandar de la correlacion entre los 5 registros adquiridos con elanalizador de vibraciones.

5. Conclusiones y trabajo futuro

5.1. Conclusiones

Se diseno e implemento una metodologıa que soporta la adquisicion de senales de vibracio-nes mecanicas de arquitectura paralela para multiples canales de alta resolucion, basado enFPGA. La metodologıa implementada consiste en el desarrollo de un protocolo de comuni-cacion serial SPI de siete canales independientes, cuyo protocolo esta basado en el manejode interrupciones para la sincronizacion y transferencia de los datos. Para el manejo de in-terrupciones, fue necesario el desarrollo de un sistema VIC (Vectored Interrupt Controller),disenado para manejar un gran numero de interrupciones de manera eficiente y sin la necesi-dad de sobrecargar el procesador. Las senales adquiridas bajo el protocolo de comunicacionSPI son almacenadas en una memoria DDR2 SDRAM de manera temporal, para luego sertransferidos a una memoria SD, o bien pueden ser transmitidos a un PC de manera serial.

Se valido la metodologıa para la adquisicion de senales de vibraciones mecanicas medianteun protocolo de pruebas; para ello se realizaron tres pruebas de validacion: i) La adquisi-cion de senales de un generador de funciones realizando un barrido de frecuencias, ii) Laadquisicion de senales de una maquina rotativa en dos estados (normal y desbalanceo), y iii)La estimacion de la correlacion entre el sistema desarrollado y un sistema de adquisicioncomercial de National Instruments. Los resultados de las pruebas demuestran la estabilidaddel sistema en tiempo y frecuencia, la utilidad del sistema en la identificacion de fallas y lasimilitud con sistemas comerciales.

Se diseno e implemento una GUI desarrollada bajo la herramienta Qt C++, que le permiteal usuario interactuar con el sistema, visualizando los datos adquiridos durante el modo deoperacion del analizador de vibraciones mecanicas. Mediante la interfaz grafica, el usuariopuede modificar parametros tales como el tiempo de adquisicion, numero de canales y elnumero de canales a visualizar.

5.2. Trabajo futuro

Desarrollar una tarjeta de adquisicion VDAS con protocolo de comunicacion Ethernet oUSB, logrando transmitir datos desde la tarjeta de adquisicion VDAS y la FPGA Stratix IVGX a velocidades de hasta 1.2 Gbps, reduciendo significativamente el tiempo de transmision

5.2 Trabajo futuro 61

de datos entre dispositivos. Con este tipo de avances se logra diagnosticar fallas en maquinasrotativas en tiempo real, con multiples canales de adquisicion.

Las FPGAs son dispositivos que presentan ventajas como soluciones SoC, Arquitectura enparalelo para el monitoreo de multiples canales y son dispositivos reconfigurables. Estasventajas pueden ser aprovechadas para implementar algoritmos de pos-procesamiento conel fin de detectar fallas en maquinas rotativas de manera automatica, y sin la necesidad demodificar el hardware.

A. Anexo: Nios II EDS

la herramienta de desarrollo Nios II EDS provee un robusto entorno de desarrollo de software quefunciona para todos los sistemas que tienen embebido un procesador Nios II.La herramienta de desarrollo Nios II EDS, puede ser accedida mediante la interfaz de lınea decomandos SBT (Software Build Tools), SBT GUI, o por el IDE (Integrated Development Envi-ronment)GUI. donde el SBT GUI es la herramienta seleccionada para el desarrollo de software.El SBT GUI esta basado en Eclipse, que tiene soporte para crear, modificar, compilar y depurarprogramas en lenguaje C dirigido para un sistema Nios II EDS.Un proyecto disenado a traves de la herramienta de desarrollo Nios II EDS posee dos partes princi-pales: La primera es la aplicacion de usuario el cual incluye drivers de usuario tales como periferi-cos de entrada y salida y funciones de alto nivel. El segundo es el BSP (Board Support Package)que es el paquete de codigos para una configuracion especifıca de Nios II EDS. El usuario debe detener en cuenta que el BSP esta basado en la informacion del archivo .sopcinfo que fue generadopor el compilador SOPC. el codigo de estan dos partes es compilado y enlazado dentro de una solaimagen de software (.elf), para luego ser descargada dentro de la memoria principal del sistemaNios II EDS.

Figura A-1.: Ventana principal de Nios II

B. VHDL

Mediante el uso del lenguaje de descripcion de hardware (Verilog HDL), el gestor de componentesMegaWizard y la herramienta de desarrollo QSYS, el usuario puede crear programas de maneraeficiente y segura. El gestor de componentes MegaWizard permite crear funciones que pueden sermodificadas de acuerdo a las necesidades del diseno para luego ser instanciadas. La herramientade desarrollo QSYS ayuda con la implementacion de procesadores Nios II personalizados, porejemplo seleccionar el numero de nucleos deseados, e incorporar perifericos de entrada y salidallamados GPIO. Una vez se hayan instanciado los componentes propios del sistema, QSYS generael archivo HDL y el archivo .sopcinfo que contiene la informacion de la configuracion del sistema.Estos codigos son combinados con otros HDL para formar la descripcion de alto nivel HDL delhardware final. Ademas, las restricciones iniciales de diseno deben especificarse a traves del editorde asignacion y la pestana de configuraciones.

-- PROGRAMACION VHDL VIBRACIONES

library IEEE;use IEEE.std_logic_1164.all;use IEEE.numeric_std.all;

entity VIBRATION_SPI isport (Clock : in std_logic := ’0’; -- clk.clkReset : in std_logic := ’0’; -- reset.reset_nM1_DDR2_a : out std_logic_vector(13 downto 0); -- memory.mem_aM1_DDR2_ba : out std_logic_vector(2 downto 0); -- .mem_baM1_DDR2_ck : out std_logic_vector(1 downto 0); -- .mem_ckM1_DDR2_ck_n : out std_logic_vector(1 downto 0); -- .mem_ck_nM1_DDR2_cke : out std_logic_vector(0 downto 0); -- .mem_ckeM1_DDR2_cs_n : out std_logic_vector(0 downto 0); -- .mem_cs_nM1_DDR2_dm : out std_logic_vector(7 downto 0); -- .mem_dmM1_DDR2_ras_n: out std_logic_vector(0 downto 0); -- .mem_ras_nM1_DDR2_cas_n: out std_logic_vector(0 downto 0); -- .mem_cas_nM1_DDR2_we_n : out std_logic_vector(0 downto 0); -- .mem_we_nM1_DDR2_dq : inout std_logic_vector(63 downto 0) := (others => ’0’); -- .mem_dqM1_DDR2_dqs : inout std_logic_vector(7 downto 0) := (others => ’0’); -- .mem_dqsM1_DDR2_dqs_n: inout std_logic_vector(7 downto 0) := (others => ’0’); -- .mem_dqs_nM1_DDR2_odt : out std_logic_vector(0 downto 0); -- .mem_odtM1_DDR2_oct_rdn : in std_logic := ’0’; -- oct.rdnM1_DDR2_oct_rup : in std_logic := ’0’; -- .rupSYNC_6 : out std_logic; -- sync_6.exportDRDY_6 : in std_logic := ’0’; -- drdy_6.exportMISO_6 : in std_logic := ’0’; -- spi_6.MISOSCLK_6 : out std_logic; -- .SCLKSYNC_5 : out std_logic; -- sync_5.exportDRDY_5 : in std_logic := ’0’; -- drdy_5.exportMISO_5 : in std_logic := ’0’; -- spi_5.MISO

64 B VHDL

SCLK_5 : out std_logic; -- .SCLKSYNC_4 : out std_logic; -- sync_4.exportDRDY_4 : in std_logic := ’0’; -- drdy_4.exportMISO_4 : in std_logic := ’0’; -- spi_4.MISOSCLK_4 : out std_logic; -- .SCLKSYNC_3 : out std_logic; -- sync_3.exportDRDY_3 : in std_logic := ’0’; -- drdy_3.exportMISO_3 : in std_logic := ’0’; -- spi_3.MISOSCLK_3 : out std_logic; -- .SCLKSYNC_2 : out std_logic; -- sync_2.exportDRDY_2 : in std_logic := ’0’; -- drdy_2.exportMISO_2 : in std_logic := ’0’; -- spi_2.MISOSCLK_2 : out std_logic; -- .SCLKSYNC_1 : out std_logic; -- sync_1.exportDRDY_1 : in std_logic := ’0’; -- drdy_1.exportMISO_1 : in std_logic := ’0’; -- spi_1.MISOSCLK_1 : out std_logic; -- .SCLKMISO_7 : in std_logic := ’0’; -- spi_7.MISOSCLK_7 : out std_logic; --.SCLKDRDY_7 : in std_logic := ’0’; -- drdy_7.exportSYNC_7 : out std_logic ; -- sync_7.exportpll_areset : in std_logic := ’0’; -- altpll_areset_conduit.exportstatus_local_init_done : out std_logic; -- ddr2_sdram_status.local_init_donestatus_local_cal_success : out std_logic; -- .local_cal_successstatus_local_cal_fail: out std_logic; -- .local_cal_failRX : in std_logic := ’0’; -- rs232.RXDTX : out std_logic -- .TXD

);end entity VIBRATION_SPI;

architecture ARCH_VIBRATION_SPI of VIBRATION_SPI is

component VIBRATION_SPI_QSYS isport (

clk_clk : in std_logic := ’0’; -- clk.clkmemory_mem_a : out std_logic_vector(13 downto 0);--memory.mem_amemory_mem_ba : out std_logic_vector(2 downto 0); --.mem_bamemory_mem_ck : out std_logic_vector(1 downto 0); --.mem_ckmemory_mem_ck_n : out std_logic_vector(1 downto 0); --.mem_ck_nmemory_mem_cke : out std_logic_vector(0 downto 0); --.mem_ckememory_mem_cs_n : out std_logic_vector(0 downto 0); --.mem_cs_nmemory_mem_dm : out std_logic_vector(7 downto 0); --.mem_dmmemory_mem_ras_n: out std_logic_vector(0 downto 0); --.mem_ras_nmemory_mem_cas_n: out std_logic_vector(0 downto 0); --.mem_cas_nmemory_mem_we_n : out std_logic_vector(0 downto 0); --.mem_we_nmemory_mem_dq : inout std_logic_vector(63 downto 0) := (others => ’0’);memory_mem_dqs : inout std_logic_vector(7 downto 0) := (others => ’0’);memory_mem_dqs_n: inout std_logic_vector(7 downto 0) := (others => ’0’);memory_mem_odt : out std_logic_vector(0 downto 0); --.mem_odtoct_rdn : in std_logic := ’0’; -- oct.rdnoct_rup : in std_logic := ’0’; -- .rupsync_6_export : out std_logic; -- sync_6.exportdrdy_6_export : in std_logic := ’0’; -- drdy_6.exportspi_6_MISO : in std_logic := ’0’;-- spi_6.MISOspi_6_MOSI : out std_logic;--.MOSIspi_6_SCLK : out std_logic;--.SCLKspi_6_SS_n : out std_logic;--.SS_nsync_5_export : out std_logic;-- sync_5.exportdrdy_5_export : in std_logic := ’0’; -- drdy_5.export

65

spi_5_MISO : in std_logic := ’0’; -- spi_5.MISOspi_5_MOSI : out std_logic;--.MOSIspi_5_SCLK : out std_logic;--.SCLKspi_5_SS_n : out std_logic;--.SS_nsync_4_export : out std_logic;-- sync_4.exportdrdy_4_export : in std_logic := ’0’; -- drdy_4.exportspi_4_MISO : in std_logic := ’0’; -- spi_4.MISOspi_4_MOSI : out std_logic;--.MOSIspi_4_SCLK : out std_logic;--.SCLKspi_4_SS_n : out std_logic;--.SS_nsync_3_export : out std_logic;-- sync_3.exportdrdy_3_export : in std_logic := ’0’; -- drdy_3.exportspi_3_MISO : in std_logic := ’0’; -- spi_3.MISOspi_3_MOSI : out std_logic;--.MOSIspi_3_SCLK : out std_logic;--.SCLKspi_3_SS_n : out std_logic;--.SS_nsync_2_export : out std_logic;-- sync_2.exportdrdy_2_export : in std_logic := ’0’; -- drdy_2.exportspi_2_MISO : in std_logic := ’0’; -- spi_2.MISOspi_2_MOSI : out std_logic;--.MOSIspi_2_SCLK : out std_logic;--.SCLKspi_2_SS_n : out std_logic;--.SS_nsync_1_export : out std_logic;-- sync_1.exportdrdy_1_export : in std_logic := ’0’; -- drdy_1.exportspi_1_MISO : in std_logic := ’0’; -- spi_1.MISOspi_1_MOSI : out std_logic; --.MOSIspi_1_SCLK : out std_logic; --.SCLKspi_1_SS_n : out std_logic; --.SS_nddr2_sdram_status_local_init_done : out std_logic; -- ddr2_sdram_status.local_init_doneddr2_sdram_status_local_cal_success : out std_logic; --.local_cal_successddr2_sdram_status_local_cal_fail : out std_logic; --.local_cal_failrs232_RXD : in std_logic := ’0’; -- rs232.RXDrs232_TXD : out std_logic; --.TXDreset_reset_n : in std_logic := ’0’; -- reset.reset_npll_areset_export : in std_logic := ’0’; -- pll_areset.exportpll_locked_export : out std_logic; -- pll_locked.exportpll_phasedone_export : out std_logic; -- pll_phasedone.exportspi_7_MISO : in std_logic := ’0’; -- spi_7.MISOspi_7_MOSI : out std_logic; --.MOSIspi_7_SCLK : out std_logic; --.SCLKspi_7_SS_n : out std_logic; --.SS_ndrdy_7_export : in std_logic := ’0’; -- drdy_7.exportsync_7_export : out std_logic -- sync_7.export);

end component VIBRATION_SPI_QSYS;begin

VIBRATION_SPI_U0 : component VIBRATION_SPI_QSYSport map (

clk_clk => Clock, -- clk.clkreset_reset_n => Reset, -- reset.reset_nmemory_mem_a => M1_DDR2_a, -- memory.mem_amemory_mem_ba => M1_DDR2_ba, -- .mem_bamemory_mem_ck => M1_DDR2_ck, -- .mem_ckmemory_mem_ck_n => M1_DDR2_ck_n, -- .mem_ck_nmemory_mem_cke => M1_DDR2_cke, -- .mem_ckememory_mem_cs_n => M1_DDR2_cs_n, -- .mem_cs_nmemory_mem_dm => M1_DDR2_dm, -- .mem_dmmemory_mem_ras_n => M1_DDR2_ras_n, -- .mem_ras_nmemory_mem_cas_n => M1_DDR2_cas_n, -- .mem_cas_nmemory_mem_we_n => M1_DDR2_we_n, -- .mem_we_n

66 B VHDL

memory_mem_dq => M1_DDR2_dq, -- .mem_dqmemory_mem_dqs => M1_DDR2_dqs, -- .mem_dqsmemory_mem_dqs_n => M1_DDR2_dqs_n, -- .mem_dqs_nmemory_mem_odt => M1_DDR2_odt, -- .mem_odtoct_rdn => M1_DDR2_oct_rdn, -- oct.rdnoct_rup => M1_DDR2_oct_rup, -- .rupsync_7_export => SYNC_7, -- sync_4.exportdrdy_7_export => DRDY_7, -- drdy_4.exportspi_7_MISO => MISO_7, -- spi_4.MISOspi_7_SCLK => SCLK_7, -- .SCLKsync_6_export => SYNC_6, -- sync_6.exportdrdy_6_export => DRDY_6, -- drdy_6.exportspi_6_MISO => MISO_6, -- spi_6.MISOspi_6_SCLK => SCLK_6, -- .SCLKsync_5_export => SYNC_5, -- sync_5.exportdrdy_5_export => DRDY_5, -- drdy_5.exportspi_5_MISO => MISO_5, -- spi_5.MISOspi_5_SCLK => SCLK_5, -- .SCLKsync_4_export => SYNC_4, -- sync_4.exportdrdy_4_export => DRDY_4, -- drdy_4.exportspi_4_MISO => MISO_4, -- spi_4.MISOspi_4_SCLK => SCLK_4, -- .SCLKsync_3_export => SYNC_3, -- sync_3.exportdrdy_3_export => DRDY_3, -- drdy_3.exportspi_3_MISO => MISO_3, -- spi_3.MISOspi_3_SCLK => SCLK_3, -- .SCLKsync_2_export => SYNC_2, -- sync_2.exportdrdy_2_export => DRDY_2, -- drdy_2.exportspi_2_MISO => MISO_2, -- spi_2.MISOspi_2_SCLK => SCLK_2, -- .SCLKsync_1_export => SYNC_1, -- sync_1.exportdrdy_1_export => DRDY_1, -- drdy_1.exportspi_1_MISO => MISO_1, -- spi_1.MISOspi_1_SCLK => SCLK_1, -- .SCLKpll_areset_export => pll_areset,ddr2_sdram_status_local_init_done => status_local_init_done,ddr2_sdram_status_local_cal_success => status_local_cal_success,ddr2_sdram_status_local_cal_fail => status_local_cal_fail,rs232_RXD => RX,rs232_TXD => TX

);end architecture ARCH_VIBRATION_SPI;

C. NIOS II EDS (LENGUAJE C)

Una rutina que permite una transaccion de paquetes entre el dispositivo maestro y el esclavo. Eltamano del bus de datos es de 24 bits. Este driver solo permite recepcion de datos provenientes dela tarjeta de adquisicion VDAS.

#include <stdio.h>#include <io.h>#include "terasic_includes.h"

// Habilitar informacion de depuraci\’{o}n.#define DEBUG_PRINTF_ON

// Variables para comunicacion RS232alt_up_rs232_dev *device_reference = NULL;unsigned char receive = 0;unsigned char parity;

// Adquisicion minimo de 1 canal#define NUMBER_OF_MIN_ADQ_CHANNELS 1

// Adquisicion maximo de 7 canales#define NUMBER_OF_MAX_ADQ_CHANNELS 7

// Tiempo de adquisicion minimo: 1 seg\’{u}ndo#define NUMBER_OF_MIN_ADQ_SECONDS 1

// Tiempo de adquisicion maximo: 600 seg\’{u}ndos equivalente a 10 minutos#define NUMBER_OF_MAX_ADQ_SECONDS 600

#define ADQ_BYTES_PER_SAMPLE 3#define ADQ_SAMPLES_PER_SECOND 52734#define ADQ_MAX_BUFFER_SIZE ADQ_SAMPLES_PER_SECOND * NUMBER_OF_MAX_ADQ_SECONDS

#define APC_FRAME_START 0x23#define APC_FRAME_COMMAND 0x43#define APC_FRAME_RESPONSE 0x52#define APC_FRAME_END 0x2A#define APC_FRAME_HEADER_SIZE 6#define APC_FRAME_FOOTER_SIZE 3#define APC_FRAME_CRC_H_OFFSET 3#define APC_FRAME_CRC_L_OFFSET 2#define APC_FRAME_END_OFFSET 1#define APC_FRAME_MAX_APC_COMMAND_PAYLOAD_SIZE 0xFF#define APC_FRAME_MAX_APC_RESPONSE_PAYLOAD_SIZEADQ_BYTES_PER_SAMPLE*ADQ_SAMPLES_PER_SECOND*NUMBER_OF_MAX_ADQ_CHANNELS#define APC_COMMAND_FRAME_BUFFER_SIZEAPC_FRAME_HEADER_SIZE+APC_FRAME_MAX_APC_COMMAND_PAYLOAD_SIZE+APC_FRAME_FOOTER_SIZE#define APC_RESPONSE_FRAME_BUFFER_SIZEAPC_FRAME_HEADER_SIZE+APC_FRAME_MAX_APC_RESPONSE_PAYLOAD_SIZE+APC_FRAME_FOOTER_SIZE

68 C NIOS II EDS (LENGUAJE C)

----BUFFER PARA LA RECEPCION DE COMANDOS----unsigned char command_buffer[APC_COMMAND_FRAME_BUFFER_SIZE] = {0};

----BUFFER PARA LA TRANSMISION DE RESPUEST\’{A}N HACIA EL DISPOSITIVO MAESTRO-------unsigned char response_buffer[APC_RESPONSE_FRAME_BUFFER_SIZE] = {0};----BUFFER DETERMINADO PARA LA CANTIDAD MAXIMA DE PAQUETES------unsigned char package_buffer[NUMBER_OF_MAX_ADQ_CHANNELS

*ADQ_SAMPLES_PER_SECOND*ADQ_BYTES_PER_SAMPLE] = {0};

-----VARIABLES PARA INICIALIZAR LA ADQUISICION--------unsigned long adq_spi_registers[NUMBER_OF_MAX_ADQ_CHANNELS] ={SPI_1_BASE, SPI_2_BASE, SPI_3_BASE, SPI_4_BASE, SPI_5_BASE, SPI_6_BASE, SPI_7_BASE};unsigned long adq_sync_registers[NUMBER_OF_MAX_ADQ_CHANNELS] ={SYNC_1_BASE, SYNC_2_BASE, SYNC_3_BASE, SYNC_4_BASE, SYNC_5_BASE, SYNC_6_BASE, SYNC_7_BASE};unsigned long adq_drdy_registers[NUMBER_OF_MAX_ADQ_CHANNELS] ={DRDY_1_BASE, DRDY_2_BASE, DRDY_3_BASE, DRDY_4_BASE, DRDY_5_BASE, DRDY_6_BASE, DRDY_7_BASE};

-----BUFFER PARA LA ADQUISICION --------alt_u32 spi_buffer[NUMBER_OF_MAX_ADQ_CHANNELS][ADQ_MAX_BUFFER_SIZE];

// Defines PARA CALCULO DE CRC-CCITT#define POLYNOMIAL 0x1021#define INITIAL_REMAINDER 0xFFFF#define FINAL_XOR_VALUE 0x0000#define WIDTH (8 * sizeof(unsigned short))#define TOPBIT (1 << (WIDTH - 1))

unsigned char communication_ok_response[2] = {0xEE, 0xFF};unsigned char communication_crc_error_response[2] = {0xBB, 0xCC};

typedef enum {_UNKNOWN = 0x00,----- CHEQUEA LA COMUNICACION, DEVUELVE EL NUMERO MAXIMO DE SEG\’{U}NDOS Y CANALES SOPORTADOS-----_CHECK_COMMUNICATION = 0xF1,-----INICIA LA ADQUISICION DE DATOS-----_START_ADQ = 0xF2,-----INFORMA EL ESTADO DE LA ADQUISICION. CHEQUEA SI LA ADQUISICION HA FINALIZADO

E INFORMA EL NUMERO DE PAQUETES OBTENIDOS-----------_CHECK_ADQ = 0xF3,-----CONTIENE LA INFORMACION DE LOS PAQUETES SOLICITADOS_GET_PACKAGE = 0xF4} apc_protocol_t;

typedef enum {_OK = 0x00,_CRC_ERROR = 0x01,_PAYLOAD_OVERFLOW = 0x02,_BUFFER_OVERFLOW = 0x03,_NO_RESPONSE = 0x04} protocol_frame_analyzed_error_code_t;

typedef enum {_NONE = 0x00,_FINISHED = 0xFF} adq_status_t;

typedef enum {_NORMAL = 0x00,_FRAME_START = 0x01,

69

_FRAME_TYPE = 0x02,_CID = 0x03,_PAYLOAD_LENGTH_H = 0x04,_PAYLOAD_LENGTH_M = 0x05,_PAYLOAD_LENGTH_L = 0x06,_PAYLOAD = 0x07,_CRC_H = 0x08,_CRC_L = 0x09,_FRAME_END = 0x0A} apc_response_frame_state_t;

unsigned short calculate_ccitt_crc(unsigned char *frame, unsigned int size) {unsigned short remainder = INITIAL_REMAINDER;unsigned int Byte;unsigned char bit;

for (Byte = 0; Byte < size; ++Byte) {remainder ˆ= (frame[Byte] << (WIDTH - 8));for (bit = 8; bit > 0; --bit) {if (remainder & TOPBIT) {remainder = (remainder << 1) ˆ POLYNOMIAL;} else {remainder = (remainder << 1);}}}return (remainder ˆ FINAL_XOR_VALUE);}

char * get_frame_state_name(apc_response_frame_state_t state) {switch(state) {case _NORMAL:return "_NORMAL";case _FRAME_START:return "_FRAME_START";case _FRAME_TYPE:return "_FRAME_TYPE";case _CID:return "_CID";case _PAYLOAD_LENGTH_H:return "_PAYLOAD_LENGTH_H";case _PAYLOAD_LENGTH_M:return "_PAYLOAD_LENGTH_M";case _PAYLOAD_LENGTH_L:return "_PAYLOAD_LENGTH_L";case _PAYLOAD:return "_PAYLOAD";case _CRC_H:return "_CRC_H";case _CRC_L:return "_CRC_L";case _FRAME_END:return "_FRAME_END";default:return "UNKNOWN";}}

unsigned short apc_command_frame_crc = 0x00;unsigned int apc_response_frame_payload_length = 0x00;unsigned int apc_response_frame_payload_read = 0x00;

70 C NIOS II EDS (LENGUAJE C)

unsigned int protocol_frame_Bytes_analyzed = 0;

apc_response_frame_state_t apc_response_frame_state = _NORMAL;

----CANALES PARA LA ADQUISICION----unsigned char channels_for_adq = 0;

----Seg\’{u}ndos adquiridos, que corresponde al n\’{u}mero de paquetes maximo para leer----unsigned short seconds_for_adq = 0;

----BANDERA QUE MUESTRA SI LA ADQUISICION HA FINALIZADO----adq_status_t adq_status = _NONE;

void init_protocol_frame_analyzer() {apc_response_frame_state = _NORMAL;protocol_frame_Bytes_analyzed = 0;apc_response_frame_payload_length = 0;apc_response_frame_payload_read = 0;apc_command_frame_crc = 0;}

int build_protocol_frame(apc_protocol_t cid, unsigned char* frame_buffer,unsigned char * payload, int payload_length) {

int apc_command_frame_size = 0x00;int i;

----CABECERA----frame_buffer[apc_command_frame_size++] = APC_FRAME_START;frame_buffer[apc_command_frame_size++] = APC_FRAME_RESPONSE;

----CID----frame_buffer[apc_command_frame_size++] = cid;

// TAMANO DEL PAYLOAD----frame_buffer[apc_command_frame_size++] = (unsigned char)(payload_length >> 16);frame_buffer[apc_command_frame_size++] = (unsigned char)(payload_length >> 8);frame_buffer[apc_command_frame_size++] = (unsigned char)(payload_length);

-----PAYLOAD----for(i=0; i<payload_length; i++) {frame_buffer[apc_command_frame_size++] = payload[i];}

----CALCULAR CRC-----unsigned short apc_command_frame_crc = calculate_ccitt_crc((unsigned char *)

frame_buffer, apc_command_frame_size);

frame_buffer[apc_command_frame_size++] = (unsigned char)(apc_command_frame_crc >> 8);frame_buffer[apc_command_frame_size++] = (unsigned char)(apc_command_frame_crc);

----BUILDER FOOTER----frame_buffer[apc_command_frame_size++] = APC_FRAME_END;

return apc_command_frame_size;}

----INICIALIZAR REGISTROS SPI----void init_spi_registers(unsigned char n_channels) {int i;

for(i = 0; i< n_channels; i++) {

71

IOWR_ALTERA_AVALON_SPI_STATUS(adq_spi_registers[i], 0x00000);}}----ENVIAR FLANCO ASCENDENTE PARA SINCRONIZAR FPGA CON TARJETAS DE ADQUISICION-----void send_init_edge(unsigned char n_channels) {int i;

for(i = 0; i< n_channels; i++) {IOWR(adq_sync_registers[i], 0, 0x00);}usleep(1);

for(i = 0; i< n_channels; i++) {IOWR(adq_sync_registers[i], 0, 0x01);}usleep(1);}

int read_adq_channel(alt_u32 base, alt_u32 slave, alt_u32 read_length,alt_u32 * read_data, alt_u32 flags) {

alt_u32 * read_end = read_data + read_length;

alt_u32 write_zeros = read_length;alt_u32 read_ignore = 0;alt_u32 status;

alt_32 credits = 1;

IORD_ALTERA_AVALON_SPI_RXDATA(base);

-----SCLK SIGUE ENVIANDO PULSOS DE RELOJ, HASTA QUE LOS DATOS SE HAYAN CAPTURADO-----.

while (1) {do {status = IORD_ALTERA_AVALON_SPI_STATUS(base);} while (((status & ALTERA_AVALON_SPI_STATUS_TRDY_MSK) == 0|| credits == 0)&& (status & ALTERA_AVALON_SPI_STATUS_RRDY_MSK) == 0);

if ((status & ALTERA_AVALON_SPI_STATUS_TRDY_MSK) != 0 && credits > 0) {credits--;

if (write_zeros > 0) {write_zeros--;IOWR_ALTERA_AVALON_SPI_TXDATA(base, 0);} elsecredits = -1024;};

if ((status & ALTERA_AVALON_SPI_STATUS_RRDY_MSK) != 0) {alt_u32 rxdata = IORD_ALTERA_AVALON_SPI_RXDATA(base);

if (read_ignore > 0)read_ignore--;else*read_data++ = (alt_u32) rxdata;credits++;

if (read_ignore == 0 && read_data == read_end)break;

72 C NIOS II EDS (LENGUAJE C)

}}return read_length;}

void send_response_frame(unsigned char * response_buffer, int response_length) {int i;

for (i = 0; i < response_length; i++) {alt_up_rs232_write_data(device_reference, (alt_u8) response_buffer[i]);#ifdef DEBUG_PRINTF_ON// printf("T%02X\n", response_buffer[i]);#endifusleep(100);}memset(command_buffer, ’\0’, protocol_frame_Bytes_analyzed);memset(response_buffer, ’\0’, response_length);}

void send_adq_data(unsigned char n_channels, unsigned short n_seconds) {int i, j;

for(j=0; j<n_channels; j++) {for(i=0; i<n_seconds*ADQ_SAMPLES_PER_SECOND; i++) {alt_u32 value = spi_buffer[j][i];alt_up_rs232_write_data(device_reference , (alt_u8)(( value >> 16) & 0xff));usleep(100);alt_up_rs232_write_data(device_reference , (alt_u8)(( value >> 8) & 0xff));usleep(100);alt_up_rs232_write_data(device_reference , (alt_u8)( value & 0xff));usleep(100);}#ifdef DEBUG_PRINTF_ONprintf("\nDatos SPI_%d han sido enviados... \n", j+1);#endif}#ifdef DEBUG_PRINTF_ONprintf("\nDatos Enviados...\n");#endif}

void start_adq(unsigned char n_channels, unsigned short n_seconds) {int i, j;int return_code;unsigned char temp = 0;

for(i=0; i<n_seconds*ADQ_SAMPLES_PER_SECOND; i++) {for(j=0; j<n_channels; j++) {if ((IORD(adq_drdy_registers[j], 0)) == 1) {spi_buffer[j][i] = temp;} else if ((IORD(adq_drdy_registers[j], 0)) == 0) {return_code = read_adq_channel(adq_spi_registers[j], 0x00, 1, &spi_buffer[j][i], 0);if (return_code < 0) {#ifdef DEBUG_PRINTF_ONprintf("ERROR SPI_%d RET = %x \n ", j+1, return_code);#endif// Enviar trama de error SPI con codigo de retorno.} else {temp = spi_buffer[j][i];}} else {

73

#ifdef DEBUG_PRINTF_ONprintf("\nPROBLEM RECEIVING DATA AT CHANNEL %d", j+1);#endif// Enviar trama de error de recepcion en canal.spi_buffer[j][i] = 0x00;}}}

#ifdef DEBUG_PRINTF_ONprintf("\nADQUISICION DE DATOS FINALIZADA...");#endif//send_adq_data(n_channels, n_seconds);adq_status = _FINISHED;}-----ENVIAR PAQUETES SOLICITADOS PARA LOS CANALES ADQUIRIDOS------void send_package(unsigned short package_to_read) {int i, j;int Byte_counter = 0;

int start_index = (package_to_read-1)*ADQ_SAMPLES_PER_SECOND;int end_index = start_index + ADQ_SAMPLES_PER_SECOND;

for(j=0; j<channels_for_adq; j++) {for(i=start_index; i<end_index; i++) {alt_u32 value = spi_buffer[j][i];package_buffer[Byte_counter++] = (alt_u8)((value >> 16) & 0xFF);package_buffer[Byte_counter++] = (alt_u8)((value >> 8) & 0xFF);package_buffer[Byte_counter++] = (alt_u8)(value & 0xFF);}}

int response_length = build_protocol_frame(_GET_PACKAGE, response_buffer,package_buffer, channels_for_adq*ADQ_SAMPLES_PER_SECOND

*ADQ_BYTES_PER_SAMPLE);

send_response_frame(response_buffer, response_length);

#ifdef DEBUG_PRINTF_ONprintf("\n Paquete #%03d con longitud %d Bytes...\n", package_to_read, response_length);#endifmemset(package_buffer, ’\0’, channels_for_adq

*ADQ_SAMPLES_PER_SECOND*ADQ_BYTES_PER_SAMPLE);}

void process_command(apc_protocol_t primitive) {int i;int response_length;

// Variables para lectura de paquetesunsigned short package_to_read = 0;

switch(primitive) {case _CHECK_COMMUNICATION:#ifdef DEBUG_PRINTF_ONprintf("\nRecibiendo _CHECK_COMMUNICATION...\n");#endifresponse_length = build_protocol_frame(_CHECK_COMMUNICATION,

response_buffer, communication_ok_response, 2);

send_response_frame(response_buffer, response_length);

74 C NIOS II EDS (LENGUAJE C)

break;case _START_ADQ:#ifdef DEBUG_PRINTF_ONprintf("\nRecibiendo _START_ADQ...\n");#endif

-----SE ALMACENA EL NUMERO DE CANALES A ADQUIRIR-----channels_for_adq = command_buffer[6]; // Leer n\’{u}mero de canales a adquirir.#ifdef DEBUG_PRINTF_ONprintf("\nSOLICITANDO ADQUISICION PARA %d CANALES...\n", channels_for_adq);#endif

-----SE ALMACENA EL NUMERO DE SEG\’{U}NDOS SOLICITADO PARA DEFINIR EL NUMERO DE PAQUETES MAXIMOS-----seconds_for_adq = (command_buffer[7] << 8) + command_buffer[8];

#ifdef DEBUG_PRINTF_ONprintf("\nSOLICITANDO ADQUISICION POR %d SEG\’{U}NDOS...\n", seconds_for_adq);#endifadq_status = _NONE;

-----ENVIAR RESPUESTA DE ADQUISICION INICIADA-----int response_length = build_protocol_frame(_START_ADQ, response_buffer,

communication_ok_response, 2);send_response_frame(response_buffer, response_length);

for(i=0; i<channels_for_adq; i++) {memset(spi_buffer[i], ’\0’, ADQ_MAX_BUFFER_SIZE*sizeof(alt_u32));}

----INICIAR ADQUISICION-----start_adq(channels_for_adq, seconds_for_adq);break;case _CHECK_ADQ:#ifdef DEBUG_PRINTF_ONprintf("\nRecibiendo _CHECK_ADQ...\n");#endifunsigned char adq_response[4] = {0};

adq_response[0] = adq_status;adq_response[1] = channels_for_adq;adq_response[2] = (unsigned char)(seconds_for_adq >> 8);adq_response[3] = (unsigned char)(seconds_for_adq);

response_length = build_protocol_frame(_CHECK_ADQ, response_buffer, adq_response, 4);

send_response_frame(response_buffer, response_length);break;case _GET_PACKAGE:#ifdef DEBUG_PRINTF_ONprintf("\nRecibiendo _GET_PACKAGE...\n");#endif-----LEER NUMERO DE SEG\’{U}NDOS A ADQUIRIR-----package_to_read = (command_buffer[6] << 8) + command_buffer[7];#ifdef DEBUG_PRINTF_ONprintf("\nLectura de paquetes #%03d PARA %d CANALES...\n", package_to_read, channels_for_adq);#endif

if(package_to_read > seconds_for_adq) {-----ENVIAR TRAMA DE ERRROR INFORMANDO NUMERO DE PAQUETE INVALIDO---------#ifdef DEBUG_PRINTF_ON

75

printf("\nNUMERO DE PAQUETE SOLICITADO MAYOR DE LO PERMITIDO...");#endifreturn;}

------INICIAR ADQUISICION DE DATOS (TARJETAS DE ADQUISICION VIBRACIONES)-----send_package(package_to_read);break;default:break;}}

------M\’{A}QUINA DE ESTADOS DE COMUNICACION-----void protocol_frame_analyzer(unsigned char data) {switch(apc_response_frame_state) {case _NORMAL:if(data == APC_FRAME_START) {#ifdef DEBUG_PRINTF_ONprintf("\n%02X", data);printf("\n.S1");#endifapc_response_frame_state = _FRAME_START;command_buffer[protocol_frame_Bytes_analyzed++] = data;}break;case _FRAME_START:if(data == APC_FRAME_COMMAND) {#ifdef DEBUG_PRINTF_ONprintf("\n%02X", data);printf("\n.S2");#endifapc_response_frame_state = _FRAME_TYPE;command_buffer[protocol_frame_Bytes_analyzed++] = data;} else {}break;case _FRAME_TYPE:#ifdef DEBUG_PRINTF_ONprintf("\n%02X", data);printf("\n.S3");#endifapc_response_frame_state = _CID;command_buffer[protocol_frame_Bytes_analyzed++] = data;break;case _CID:#ifdef DEBUG_PRINTF_ONprintf("\n%02X", data);printf("\n.S4");#endif

apc_response_frame_payload_length = ((unsigned short)data) << 16;apc_response_frame_payload_read = 0x00;apc_response_frame_state = _PAYLOAD_LENGTH_H;command_buffer[protocol_frame_Bytes_analyzed++] = data;break;case _PAYLOAD_LENGTH_H:#ifdef DEBUG_PRINTF_ONprintf("\n%02X", data);printf("\n.S5");#endif

76 C NIOS II EDS (LENGUAJE C)

apc_response_frame_payload_length += ((unsigned short)data) << 8;apc_response_frame_state = _PAYLOAD_LENGTH_M;command_buffer[protocol_frame_Bytes_analyzed++] = data;

break;case _PAYLOAD_LENGTH_M:#ifdef DEBUG_PRINTF_ONprintf("\n%02X", data);printf("\n.S6");#endifapc_response_frame_payload_length += (unsigned short)data;

if(apc_response_frame_payload_length == 0x00) {apc_response_frame_state = _PAYLOAD;command_buffer[protocol_frame_Bytes_analyzed++] = data;} else {apc_response_frame_state = _PAYLOAD_LENGTH_L;command_buffer[protocol_frame_Bytes_analyzed++] = data;#ifdef DEBUG_PRINTF_ONprintf("\nP%d", apc_response_frame_payload_read);#endif}break;case _PAYLOAD_LENGTH_L:#ifdef DEBUG_PRINTF_ONprintf("\n%02X", data);printf("\n.S7");#endifapc_response_frame_payload_read++;command_buffer[protocol_frame_Bytes_analyzed++] = data;

if(apc_response_frame_payload_read == apc_response_frame_payload_length) {apc_response_frame_state = _PAYLOAD;} else {#ifdef DEBUG_PRINTF_ONprintf("\nP%d", apc_response_frame_payload_read);#endif}break;case _PAYLOAD:#ifdef DEBUG_PRINTF_ONprintf("\n%02X", data);printf("\n.S8");#endifapc_command_frame_crc = ((unsigned short)data) << 8;apc_response_frame_state = _CRC_H;command_buffer[protocol_frame_Bytes_analyzed++] = data;break;case _CRC_H:#ifdef DEBUG_PRINTF_ONprintf("\n%02X", data);printf("\n.S9");#endifapc_command_frame_crc += (unsigned short)data;apc_response_frame_state = _CRC_L;command_buffer[protocol_frame_Bytes_analyzed++] = data;break;case _CRC_L:#ifdef DEBUG_PRINTF_ONprintf("\n%02X", data);printf("\n.S10");

77

#endifif(data == APC_FRAME_END) {apc_response_frame_state = _NORMAL;command_buffer[protocol_frame_Bytes_analyzed++] = data;

unsigned short received_crc = calculate_ccitt_crc(command_buffer,protocol_frame_Bytes_analyzed-APC_FRAME_FOOTER_SIZE);

-----CRC OK----if(received_crc == apc_command_frame_crc) {process_command(command_buffer[2]);} else { // CRC FAILEDint response_length = build_protocol_frame(_CHECK_COMMUNICATION,

response_buffer, communication_crc_error_response, 2);

send_response_frame(response_buffer, response_length);}protocol_frame_Bytes_analyzed = 0;apc_response_frame_payload_length = 0;apc_response_frame_payload_read = 0;apc_command_frame_crc = 0;}break;default:break;}}

void UART_data_ready(void * context, unsigned int ID_IRQ){unsigned char data;unsigned char parity;#ifdef DEBUG_PRINTF_ONint read_counter = 0;#endif

#ifdef DEBUG_PRINTF_ONprintf("\nI");#endifwhile (alt_up_rs232_get_used_space_in_read_FIFO(device_reference)) {#ifdef DEBUG_PRINTF_ONprintf("\nR%d", read_counter++);#endifalt_up_rs232_read_data(device_reference, &data, &parity);

protocol_frame_analyzer(data);}}

int main() {

init_spi_registers(NUMBER_OF_MAX_ADQ_CHANNELS);

device_reference = alt_up_rs232_open_dev(RS232_NAME);IORD_ALT_UP_RS232_DATA(RS232_BASE);apc_response_frame_state = _NORMAL;

send_init_edge(NUMBER_OF_MAX_ADQ_CHANNELS);alt_up_rs232_disable_read_Interrupt(device_reference);

alt_up_rs232_write_data(device_reference, (alt_u8) ’O’);alt_up_rs232_write_data(device_reference, (alt_u8) ’K’);

78 C NIOS II EDS (LENGUAJE C)

#ifdef DEBUG_PRINTF_ONprintf("\nIniciando aplicacion...\n");#endif

while(TRUE) {

while (alt_up_rs232_get_used_space_in_read_FIFO(device_reference)) {alt_up_rs232_read_data(device_reference, &receive, &parity);protocol_frame_analyzer(receive);}}return 0;}

Bibliografıa

[1]

[2] ALTERA CORPORATION, AC. UART Core. 2007

[3] ALTERA CORPORATION, AC. Altera University Program Security Data Card IP Core. 2009

[4] ALTERA CORPORATION, AC. DMA Controller Core. 2009

[5] ALTERA CORPORATION, AC. Vectored Interrupt Controller Usage and Applications. 2009

[6] ALTERA CORPORATION, AC. HAL API References. 2011

[7] ALTERA CORPORATION, AC. FPGAs a fondo). 2012

[8] ALTERA CORPORATION, AC. ALTPLL (Phase Locked Loop). 2014

[9] ALTERA CORPORATION, AC. Interval Timer Core. 2014

[10] ALTERA CORPORATION, AC. PIO Core. 2014

[11] ALTERA CORPORATION, AC. RS232 UART for Altera DE-series Board. 2014

[12] ALTERA CORPORATION, AC. Nios II Core Implementation Details. 2015

[13] ANSARI, Saleem A. ; BAIG, Rauf: A PC-based vibration analyzer for condition monitoring ofprocess machinery. In: Instrumentation and Measurement, IEEE Transactions on 47 (1998),Nr. 2, S. 378–383

[14] BETTA, G. ; PAOLILLO, A.: A Multi-Application FFT Analyzer Based on a DSP Architec-ture. 55 (1998), S. 1173–1179

[15] BETTA, G. ; PAOLILLO, A.: A DSP-based FFT-analyzer for the fault diagnosis or rotatingmachines based on vibration analysis. 51 (2002), S. 1316–1322

[16] BETTA, Giovanni ; D’APUZZO, Massimo ; LIGUORI, Consolatina ; PIETROSANTO, Antonio:An intelligent FFT-analyzer. In: Instrumentation and Measurement, IEEE Transactions on47 (1998), Nr. 5, S. 1173–1179

[17] BILSKI. ; WINIECKI, W.: Virtual Spectrum Analyzer based on data acquisition card. In: Ind.Eng. Chem. Res. 51 (2002), S. 82–87

80 Bibliografıa

[18] BILSKI, Piotr ; WINIECKI, Wieslaw: Virtual spectrum analyzer based on data acquisitioncard. In: Instrumentation and Measurement, IEEE Transactions on 51 (2002), Nr. 1, S.82–87

[19] BLOCH, H. ; GEITHER, F.: Machinery Failure Analysis and Troubleshoting. Houston, Texas,USA : Gulf Publishing Company, 2012

[20] CARDONA, Bernardo: Desarrollo de un sistema de adquisicion y medicion simultaneo desenales de maquinas rotativas empleando emision acustica, vibraciones mecanicas y veloci-dad, Universidad Nacional de Colombia, Dissertation, 2013

[21] CARDOSO, Joao MP ; NETO, Horacio C: Compilation for FPGA-based reconfigurable hard-ware. In: IEEE Design and Test of Computers 20 (2003), Nr. 2, S. 65–75

[22] CONTRERAS-MEDINA, Luis M. ; DE JESUS ROMERO-TRONCOSO, Rene ; CABAL-YEPEZ,Eduardo ; DE JESUS RANGEL-MAGDALENO, Jose ; MILLAN-ALMARAZ, Jesus R.: FPGA-based multiple-channel vibration analyzer for industrial applications in induction motor fai-lure detection. In: Instrumentation and Measurement, IEEE Transactions on 59 (2010), Nr.1, S. 63–72

[23] FERNANDES, AM ; PEREIRA, RC ; SOUSA, J ; NETO, A ; CARVALHO, P ; BATISTA, AJN ;CARVALHO, BB ; VARANDAS, CAF ; TARDOCCHI, M ; GORINI, G [u. a.]: Parallel proces-sing method for high-speed real time digital pulse processing for gamma-ray spectroscopy.In: Fusion Engineering and Design 85 (2010), Nr. 3, S. 308–312

[24] INC., Microchip T. Serial Peripheral Interface (SPI): Section 20. 2010

[25] DE JESUS RANGEL-MAGDALENO, Jose ; DE JESUS ROMERO-TRONCOSO, Rene ;OSORNIO-RIOS, Roque A. ; CABAL-YEPEZ, Eduardo ; DOMINGUEZ-GONZALEZ, Aure-lio: FPGA-based vibration analyzer for continuous CNC machinery monitoring with fusedFFT-DWT signal processing. In: Instrumentation and Measurement, IEEE Transactions on59 (2010), Nr. 12, S. 3184–3194

[26] LIANG, B. ; IWNICKI, S.: Asymmetrical Stator and Rotor Faulty Detection usin Vibration,phase Current and Transient Speed Analysis.

[27] METRABYTE INC, USA. User Manual CyDAS 8AOH Data Acquisition Board. 2000

[28] MICRON TECNOLOGY, Inc. DDR2 SDRAM SODIMM Features. 2008

[29] PHILLIPS ELECTRONICS, N.V. ISP1761: Hi-Speed Universal Serial Bus On-The-Go Con-troller. 2005

[30] PONG P, C.: Embedded SoPC Design with Nios II Processor and VHDL Examples. Hoboken,New Jersey : Willey, 2011

Bibliografıa 81

[31] ROY, N. ; PURKAIT, P.: Application of Wavelet and Fourier Transform for Vibration Analysisof Motor.

[32] SANZ, D ; RUIZ, M ; CASTRO, R ; VEGA, Jesus ; LOPEZ, JM ; BARRERA, E ; UTZEL, N ;MAKIJARVI, P: Implementation of intelligent data acquisition systems for fusion experimentsusing EPICS and FlexRIO technology. In: Nuclear Science, IEEE Transactions on 60 (2013),Nr. 5, S. 3446–3453

[33] SHAHZAD, Khurram ; CHENG, Peng ; OELMANN, Bengt: Architecture exploration for ahigh-performance and low-power wireless vibration analyzer. In: Sensors Journal, IEEE 13(2013), Nr. 2, S. 670–682

[34] SING, G. ; AHMED, A.: Vibration Signal Analysis Using Wavelet Transform for Isolationand Identification of Electrical Faults In Induction Machines.

[35] TEXAS INSTRUMENTS, Texas. 12-Bit, 4-Channel serial output sampling Analog-to-DigitalConverter. 2001

[36] TEXAS INSTRUMENTS, Texas. 24-Bit, Wide Bandwidth Analog-to-Digital Converter. 2007

[37] ZEROPLUS, Taiwan. lOGIC CUBE PC-BASED LOGIC ANALYZER). 2009