Metodologías de diseño de redes neuronales sobre dispositivos digitales programables para el procesado de señales en tiempo real
Abstract
Programa de doctorado: Cibernética y Telecomunicación
Full text
METODOLOGÍAS DE DISEÑO DE REDES NEURONALES SOBRE DISPOSITIVOS DIGITALES PROGRAMABLES PARA PROCESADO DE SEÑALES EN TIEMPO REAL Santiago Tomás Pérez Suárez TESIS DOCTORAL UNIVERSIDAD DE LAS PALMAS DE GRAN CANARIA DEPARTAMENTO DE SEÑALES Y COMUNICACIONES METODOLOGÍAS DE DISEÑO DE REDES NEURONALES SOBRE DISPOSITIVOS DIGITALES PROGRAMABLES PARA PROCESADO DE SEÑALES EN TIEMPO REAL Santiago Tomás Pérez Suárez Directores: Dr. Carlos Manuel Travieso González Dr. Jesús Bernardino Alonso Hernández Las Palmas de Gran Canaria, de 2015agosto
t+34928451265 e‐mail[email protected]lpgc.esEdificiodeElectrónicayTelecomunicaciones f+34928451279 www.dsc.ulpgc.es CampusdeTafira 35017LasPalmasdeGranCanaria Anexo I DON PEDRO JOSE QUINTANA MORALES SECRETARIO DEL DEPARTAMENTO DE SEÑALES Y COMUNICACIONES DE LA UNIVERSIDAD DE LAS PALMAS DE GRAN CANARIA, CERTIFICA, Que la Comisión de Investigación del Departamento (que tiene delegadas las competencias en materia de doctorado), en su sesión de fecha diecisiete de julio de dos mil quince, tomó el acuerdo de dar el consentimiento para su tramitación, a la tesis doctoral titulada “METODOLOGÍAS DE DISEÑO DE REDES NEURONALES SOBRE DISPOSITIVOS DIGITALES PROGRAMABLES PARA PROCESADO DE SEÑALES EN TIEMPO REAL” presentada por el doctorando Don Santiago Tomás Pérez Suárez y dirigida por los Doctores Don Carlos Manuel Travieso González y Don Jesús Bernardino Alonso Hernández. Y para que así conste, y a efectos de lo previsto en el Artº 6 del Reglamento para la elaboración, defensa, tribunal y evaluación de tesis doctorales de la Universidad de Las Palmas de Gran Canaria, firmo la presente en Las Palmas de Gran Canaria a, diecisiete de julio de dos mil quince. PÁGINA 1 / 1 FIRMADO POR FECHA FIRMA ID. FIRMA 17/07/2015 11:37:03 Documento firmado digitalmente. Para verificar la validez de la firma copie el ID del documento y acceda a / Digitally signed document. To verify the validity of the signature copy the document ID and access to https://sede.ulpgc.es:8443/VerificadorFirmas/ulpgc/VerificacionAction.action
UNIVERSIDAD DE LAS PALMAS DE GRAN CANARIA DEPARTAMENTO DE SEÑALES Y COMUNICACIONES PROGRAMA DE DOCTORADO CIBERNÉTICA Y TELECOMUNICACIÓN TESIS DOCTORAL Metodologías de diseño de redes neuronales sobre dispositivos digitales programables para procesado de señales en tiempo real AUTOR: Santiago Tomás Pérez Suárez DIRECTORES: Dr. D. Carlos Manuel Travieso González Dr. D. Jesús Bernardino Alonso Hernández El Director El Codirector El Doctorando Las Palmas de Gran Canaria, a 31 de agosto de 2015
A Gloria y Mary Paz por llenar nuestras vidas. A Mame por convertirse en indispensable compañera de esta travesía. A abuelo Paco, que ya está descansando. A abuela Carmen. A toda mi familia. A todos mis amigos.
Metodologías de diseño de redes neuronales sobre dispositivos digitales programables para procesado de señales en tiempo real Universidad de Las Palmas de Gran Canaria xv 4.4.1 Modelado en punto flotante ............................................................ 132 4.4.2 Diseño en punto fijo ......................................................................... 135 4.4.2.1 Diseño con System Generator ....................................................... 135 4.4.2.2 Implementación con Integrated System Environment ................. 140 4.5 El ecualizador para señal binaria .............................................................. 144 4.5.1 Modelado en punto flotante ............................................................ 144 4.5.2 Diseño en punto fijo ......................................................................... 144 4.5.2.1 Diseño con System Generator ....................................................... 144 4.5.2.2 Implementación con Integrated System Environment ................. 149 4.6 Comparación con el estado del arte ......................................................... 152 5. CONCLUSIONES Y LÍNEAS FUTURAS ......................................................... 155 5.1 Conclusiones ............................................................................................. 156 5.2 Líneas futuras ........................................................................................... 158 ANEXO. Modelado en punto flotante del ecualizador ....................................... 161 A.1 Introducción ................................................................................................. 161 A.2 Modelado en punto flotante de la TDNN ecualizadora .............................. 162 BIBLIOGRAFÍA .................................................................................................. 181
Metodologías de diseño de redes neuronales sobre dispositivos digitales programables para procesado de señales en tiempo real Universidad de Las Palmas de Gran Canaria xvii ÍNDICE DE FIGURAS Figura 1.1. Apariciones por año en el Web of Science de: a)“filter”, b) “neural network”, c) “filter” and (“design” or “implementation” or “hardware”), d) “neural network” and (“design” or “implementation” or “hardware”). .............................. 4 Figura 1.2. Modelado del sistema en punto flotante. ................................................... 18 Figura 1.3. Modelado del sistema en punto fijo. ........................................................... 19 Figura 1.4. Total de aportaciones anuales. .................................................................... 20 Figura 2.1. Estructura de una neurona nerviosa. ........................................................... 28 Figura 2.2. Estructura de una neurona artificial. ............................................................ 29 Figura 2.3. Red neuronal con R entradas conectadas a una capa de S neuronas. ......... 31 Figura 2.4. Red neuronal con R1 entradas, una capa intermedia de S1 neuronas y una capa de salida de S2 neuronas. ............................................................................... 31 Figura 2.5. Red neuronal realimentada o recurrente..................................................... 32 Figura 2.6. Obtención del algoritmo en punto fijo a partir del algoritmo en punto flotante. .................................................................................................................. 37 Figura 2.7. Arquitectura de una FPGA. ........................................................................... 38 Figura 2.8. Prestaciones frente al coste económico para las diferentes tecnologías en el desarrollo de un prototipo. .................................................................................... 41 Figura 2.9. Representación en semiejes del área, potencia y retardo. .......................... 58 Figura 2.10. Representación en un prisma del área, potencia y retardo. ...................... 59 Figura 2.11. Representación en un diagrama en tela de araña del área, potencia y retardo. ................................................................................................................... 59 Figura 2.12. Las herejías metodológicas y el proceso apropiado. .................................. 61 Figura 3.1. Esquema general de la metodología experimental. ..................................... 65 Figura 3.2. Confluencia de conceptos en la metodología experimental. ....................... 66
Tesis Doctoral Universidad de Las Palmas de Gran Canaria x viii Figura 3.3. Tipos de pulso elegidos para la detección. ................................................... 69 Figura 3.4. Temperatura de la primera semana de la base de datos y su valor medio. 71 Figura 3.5. a) Señal binaria original, b) señal con una relación señal a ruido de +10 dB. ................................................................................................................................ 72 Figura 3.6. Modelado detallado de la NN en punto flotante. ........................................ 75 Figura 3.7. Modelado detallado de la NN en punto fijo. ................................................ 77 Figura 3.8. Flujo de diseño para la FPGA. ....................................................................... 79 Figura 3.9. El escenario de diseño de Xilinx para System Generator. ............................ 84 Figura 3.10. Interacción entre System Generator, Simulink, Matlab y el ISE de Xilinx. . 86 Figura 3.11. El escenario de diseño de Altera para DSP Builder. ................................... 87 Figura 4.1. Ventana obtenida al finalizar el entrenamiento de la NN para pejibaye. .... 91 Figura 4.2. Matriz de confusión obtenida en la etapa de testeo de la NN para pejibaye. ................................................................................................................................ 92 Figura 4.3. Etapa de entrada de la NN para pejibaye. .................................................... 93 Figura 4.4. Ventana de configuración de un Gateway In. .............................................. 94 Figura 4.5. Capa intermedia de la NN para pejibaye. ..................................................... 95 Figura 4.6. Primera fase de la primera neurona de la capa oculta para pejibaye. ........ 96 Figura 4.7. Implementación de la función de transferencia logsig mediante una ROM.97 Figura 4.8. a) Función logsig, b) salida de la función implementada, c) error y d) error relativo. ................................................................................................................... 98 Figura 4.9. Capa de salida de la NN para pejibaye. ........................................................ 99 Figura 4.10. Primera fase de la primera neurona de la capa de salida para pejibaye. 100 Figura 4.11. Bloque decodificador de las neuronas de salida para pejibaye. .............. 100 Figura 4.12. Conexión de las salidas del decodificador a los registros de salida y a los pines de salida de la FPGA para pejibaye. ............................................................ 101 Figura 4.13. Diseño en Simulink del sistema final para pejibaye. ................................ 102
Metodologías de diseño de redes neuronales sobre dispositivos digitales programables para procesado de señales en tiempo real Universidad de Las Palmas de Gran Canaria xix Figura 4.14. Señales de entrada en la NN para pejibaye.............................................. 103 Figura 4.15. Señales de salida en la NN para pejibaye. ................................................ 103 Figura 4.16. Bloque System Generator y su ventana de configuración. ...................... 104 Figura 4.17. Ventana que se muestra al finalizar la compilación con System Generator. .............................................................................................................................. 104 Figura 4.18. Simulación de la implementación para pejibaye en la FPGA, 8% de error y 4 palabras en las ROM. ............................................................................................ 106 Figura 4.19. Etapa de entrada de la NN para ECG. ....................................................... 113 Figura 4.20. Capa intermedia de la NN para ECG. ........................................................ 115 Figura 4.21. Agrupación de diez neuronas en la capa oculta de la NN para ECG. ....... 116 Figura 4.22. Primera fase de la primera neurona de la capa oculta para ECG. ............ 117 Figura 4.23. Implementación de la función de transferencia tansig mediante una ROM. .............................................................................................................................. 118 Figura 4.24. a) Función tansig, b) salida de la función implementada, c) error y d) error relativo. ................................................................................................................. 118 Figura 4.25. Capa de salida de la NN para ECG. ........................................................... 119 Figura 4.26. Primera fase de la primera neurona de la capa de salida para ECG. ....... 120 Figura 4.27. Primer agrupamiento de diez multiplicadores de la primera neurona de la capa de salida para ECG. ....................................................................................... 121 Figura 4.28. Bloque decodificador de las neuronas de salida para ECG. ..................... 122 Figura 4.29. Conexión de las salidas del decodificador a los registros de salida y a los pines de salida de la FPGA para ECG. ................................................................... 122 Figura 4.30. Diseño en Simulink del sistema final para ECG. ....................................... 123 Figura 4.31. Señales de entrada en la NN para ECG. .................................................... 124 Figura 4.32. Señales de salida en la NN para ECG. ....................................................... 125
Tesis Doctoral Universidad de Las Palmas de Gran Canaria x x Figura 4.33. Simulación para la fase final de la implementación en la FPGA para 4,2% de error y 64 palabras en la ROM para ECG. ........................................................ 127 Figura 4.34. Detalle de los primeros 2.500 ns de la simulación en la FPGA para 4,2% de error y 64 palabras en la ROM para ECG. ............................................................. 128 Figura 4.35. Red neuronal con línea de retardo. .......................................................... 133 Figura 4.36. Ventana obtenida en el entrenamiento con el Neural Network Time Series Tool. ...................................................................................................................... 134 Figura 4.37. Implementación de la TDNN para predicción de la temperatura en la FPGA. .............................................................................................................................. 136 Figura 4.38. Neurona de salida en el predictor de temperatura con resolución completa. .............................................................................................................. 137 Figura 4.39. Neurona de salida en el predictor de temperatura con resolución ajustada de forma manual. ................................................................................................. 138 Figura 4.40. Simulación de los siete primeros días de 2009 con System Generator en el predictor de temperatura: muestras en la entrada (azul), estimación en la salida (rojo) y señal de error (negro). ............................................................................. 139 Figura 4.41. Simulación del predictor de temperatura después del colocado y conexionado de los componentes en la FPGA para 0,52% de error y 1024 palabras en la ROM. ............................................................................................................ 140 Figura 4.42. Simulación del predictor de temperatura después del colocado y conexionado de los componentes en la FPGA para 0,56% de error y 2048 palabras en la ROM. ............................................................................................................ 142 Figura 4.43. Ecualizador diseñado con System Generator. .......................................... 145 Figura 4.44. Diseño de la función satlin con el uso de un multiplexor. ....................... 146 Figura 4.45. Formas de onda de Simulink en el ecualizador para los primeros 40 bits: a) señal de datos original, b) entrada en la FPGA, c) salida de la FPGA. .................. 149 Figura 4.46. Formas de onda de las primeras quince muestras en el ecualizador después del colocado y conexionado de los componentes en la FPGA. .............. 149
Metodologías de diseño de redes neuronales sobre dispositivos digitales programables para procesado de señales en tiempo real Universidad de Las Palmas de Gran Canaria xxi Figura A.1. Modelo propuesto para el ecualizador. ..................................................... 163 Figura A.2. Señal de datos original binaria (a) y señal con ruido muestreada (b)....... 163 Figura A.3. Señal de datos original (a), la señal con ruido muestreada (b) y la salida de la TDNN (c). ........................................................................................................... 164 Figura A.4. Curva de SNR en la salida de la TDNN frente a la SNR en la entrada para el entrenamiento con +10 dB. .................................................................................. 165 Figura A.5. Efecto del número de neuronas en la capa intermedia para el ecualizador. .............................................................................................................................. 166 Figura A.6. Ventana de entrenamiento en Matlab para el ecualizador. ...................... 169 Figura A.7. Ventana de entrenamiento en Matlab, con el algoritmo de entrenamiento finalmente usado, para el ecualizador. ................................................................ 173 Figura A.8. Efecto del tamaño de la ventana de observación en el ecualizador. ........ 173 Figura A.9. Efecto de la SNR en el entrenamiento del ecualizador (de -5 dB a +20 dB). .............................................................................................................................. 174 Figura A.10. Efecto de la SNR en el entrenamiento del ecualizador (de +6 dB a +10 dB). .............................................................................................................................. 176 Figura A.11. Testeo de la SNR de salida frente a la SNR de entrada para una SNR de entrenamiento de +7 dB. ...................................................................................... 177 Figura A.12. Curvas de entrenamientos existosos (a), curva promedio y límites de la banda de estabilidad (b). ...................................................................................... 179
Metodologías de diseño de redes neuronales sobre dispositivos digitales programables para procesado de señales en tiempo real Universidad de Las Palmas de Gran Canaria xxiii ÍNDICE DE TABLAS Tabla 1.1. Cantidad de resultados obtenidos en una búsqueda en Web of Science de “filter”, “neural network” y “equalizer”. .................................................................. 3 Tabla 1.2. Cantidad de resultados obtenidos en una búsqueda en Web of Science de “filter”, “neural network” y “equalizer”; añadiendo “design or implementation or hardware”. ................................................................................................................ 4 Tabla 1.3. Contribuciones alcanzadas durante el desarrollo de esta tesis.................... 20 Tabla 1.4. Participación en Proyectos de Investigación. ............................................... 23 Tabla 1.5. Trabajos Fin de Título desarrollados. ............................................................ 24 Tabla 2.1. Funciones de transferencia típicas. .............................................................. 30 Tabla 3.1. Estructura de la base de datos para la palmera pejibaye. ............................ 67 Tabla 3.2. Matriz de confusión obtenida en el testeo de punto flotante para ECG. .... 70 Tabla 3.3. Características de las bases de datos. ........................................................... 72 Tabla 3.4. Uso del preprocesado y parametrización en los distintos escenarios. ........ 73 Tabla 3.5. Forma de operar la NN y de evaluar la funcionalidad. ................................. 76 Tabla 4.1. Funcionalidad del sistema frente al error en la representación y el número de palabras en las ROM para pejibaye………………………………………………………………105 Tabla 4.2. Recursos hardware para 8% de error y 4 palabras en la ROM, aplicado a pejibaye y compilado en VHDL. ............................................................................ 106 Tabla 4.3. Potencias para 8% de error y 4 palabras en la ROM, aplicado a pejibaye y compilado en VHDL. ............................................................................................. 107 Tabla 4.4. Recursos hardware para 8% de error y 4 palabras en la ROM, aplicado a pejibaye y compilado en Verilog. ......................................................................... 107 Tabla 4.5. Potencias para 8% de error y 4 palabras en la ROM, aplicado a pejibaye y compilado en Verilog. ........................................................................................... 108
Tesis Doctoral Universidad de Las Palmas de Gran Canaria x xiv Tabla 4.6. Recursos hardware necesarios para 12% de error y 8 palabras en la ROM, aplicado a pejibaye y compilado en VHDL. .......................................................... 108 Tabla 4.7. Potencias para 12% de error y 8 palabras en la ROM, aplicado a pejibaye y compilado en VHDL. ............................................................................................. 108 Tabla 4.8. Recursos hardware necesarios para 12% de error y 8 palabras en la ROM, aplicado a pejibaye y compilado en Verilog. ........................................................ 109 Tabla 4.9. Potencias para 12% de error y 8 palabras en la ROM, aplicado a pejibaye y compilado en Verilog. ........................................................................................... 109 Tabla 4.10. Recursos hardware necesarios para 13% de error y 128 palabras en la ROM, aplicado a pejibaye y compilado en VHDL. .......................................................... 109 Tabla 4.11. Potencias para 12% de error y 8 palabras en la ROM, aplicado a pejibaye y compilado en VHDL. ............................................................................................. 110 Tabla 4.12. Recursos hardware necesarios para 13% de error y 128 palabras en la ROM, aplicado a pejibaye y compilado en Verilog. ........................................................ 110 Tabla 4.13. Potencias para 13% de error y 128 palabras en la ROM, aplicado a pejibaye y compilado en Verilog. ........................................................................................ 111 Tabla 4.14. Resumen de los casos estudiados para pejibaye. ...................................... 111 Tabla 4.15. Comparación en velocidad entre un ordenador personal y la FPGA para pejibaye. ............................................................................................................... 112 Tabla 4.16. Matriz de confusión obtenida en el modelo en punto fijo para 4,2% de error y 64 palabras en las ROM para ECG. .................................................................... 125 Tabla 4.17. Funcionalidad del sistema frente al error en la representación y el número de palabras en la ROM para ECG. ......................................................................... 126 Tabla 4.18. Recursos hardware necesarios para 4,2% de error y 64 palabras en la ROM, aplicado a ECG y compilado en VHDL. .................................................................. 128 Tabla 4.19. Potencias para 4,2% de error y 64 palabras en la ROM, aplicado a ECG y compilado en VHDL. ............................................................................................. 129
Metodologías de diseño de redes neuronales sobre dispositivos digitales programables para procesado de señales en tiempo real Universidad de Las Palmas de Gran Canaria 1 CAPÍTULO 1 1. INTRODUCCIÓN “Yo tengo un sueño …” Martin Luther King En este capítulo se justifican los motivos para la realización de esta tesis. En ella también se describen los antecedentes que existen del tema a tratar. Posteriormente se plantean los objetivos, el teorema propuesto, la metodología usada, y las contribuciones y resultados obtenidos. Finalmente, se expone la estructura de la memoria.
Tesis Doctoral Universidad de Las Palmas de Gran Canaria 2 1.1 Motivación y justificación La sociedad actual ha vivido en los últimos años la revolución tecnológica. En el año 1969 el hombre llegó a la Luna, este se ha convertido en un hito único en la historia. Este evento se basó en los avances tecnológicos desarrollados durante la Segunda Guerra Mundial y en el pulso mantenido por las potencias involucradas en la Guerra Fría. La nave Apollo 11 llevaba un computador a bordo con ocho operadores de cálculo y 64 kbytes de memoria. Su frecuencia de reloj era de unos 2 MHz, consumía 55 W, pesaba casi 32 kgr y ocupaba 33 dm3. Casi cincuenta años después los computadores han mejorado enormemente sus prestaciones de cálculo, memoria, velocidad, potencia y dimensiones físicas. Además, no solo se han convertido en un electrodoméstico más del hogar, sino que han pasado a ser dispositivos portátiles y personales con multitud de funciones. En esta línea los dispositivos deben disminuir su volumen y peso, tanto de su circuitería como de su batería. Además deben mejorar su potencia y velocidad de cálculo para tratar eventos en tiempo real. Finalmente deben minimizar el consumo de potencia, para que la misma batería otorgue más autonomía; o que para la misma autonomía se pueda usar una batería de menor tamaño. En resumen, es clara y necesaria la mejora de las prestaciones físicas de área, velocidad y potencia. La presente tesis pretende hacer aportaciones a las metodologías de diseño de redes neuronales (NN, Neural Network) para dispositivos digitales programables. Estas mejoras permitirán desarrollar NN capaces de operar en tiempo real para procesado digital de la señal. Los métodos de diseño permitirán la descripción rápida y flexible de estos sistemas. Del sistema final se extraerán sus prestaciones físicas: área, potencia y velocidad. Los dispositivos óptimos, para la realización de prototipos, son las matrices de puertas programables por el diseñador (FPGA, Field Programmable Gate Array). El ahorro de área y potencia consumida mejorará la portabilidad física del prototipo final. Esta tesis se apoya en tres conceptos: las redes neuronales artificiales (ANN, Artificial Neural Network), los dispositivos digitales programables (PLD, Programmable Logic Devices) y el procesado de señal en tiempo real. El concepto “metodología de diseño” es el punto de unión para que converjan y se facilite la realización de prototipos. El concepto PLD incluye dispositivos antiguos, con pocos recursos
Metodologías de diseño de redes neuronales sobre dispositivos digitales programables para procesado de señales en tiempo real Universidad de Las Palmas de Gran Canaria 3 hardware; los actuales dispositivos han pasado a denominarse matrices de puertas digitales programables por el diseñador (FPGA, Field Programmable Gate Array). En el resto del documento, por simplificación, a las ANN se les llamará redes neuronales (NN, Neural Networks). Antes de entrar en cuestiones técnicas y metodológicas, conviene resaltar un fenómeno observado en la base de datos del Web of Science [Web of Science, 2014]. Si se buscan por título los conceptos de la columna izquierda de la tabla 1.1, se obtienen las cantidades que indica la columna de la derecha. Esta búsqueda se realizó en los títulos de las aportaciones en las bases de datos relacionadas con las tecnologías de la electrónica, la computación y las comunicaciones. Los conceptos “filter” y “equalizer” son bloques ampliamente usados en procesado y comunicaciones. Solo el concepto “filter” supera ampliamente a “neural network”, no debe olvidarse que los filtros son bloques de uso obligado en casi todos los sistemas. Esto pone de manifiesto la importancia relativa que el concepto de red neuronal tiene para la comunidad científica. Tabla 1.1. Cantidad de resultados obtenidos en una búsqueda en Web of Science de “filter”, “neural network” y “equalizer”. Filter 138.939 Neural Network 84.868 Equalizer 3.419 Si a la búsqueda se añade las palabras “design”, “implementation” y “hardware” se obtienen los valores de la tabla 1.2. En proporción se ha estudiado y consolidado mucho más el diseño de filtros y ecualizadores que de redes neuronales. Por ejemplo, para el diseño de filtros se han desarrollado extensamente metodologías y herramientas de diseño. Esto no sucede para las redes neuronales por las características intrínsecas de estos sistemas, que se describirán posteriormente.
Tesis Doctoral Universidad de Las Palmas de Gran Canaria 4 Tabla 1.2. Cantidad de resultados obtenidos en una búsqueda en Web of Science de “filter”, “neural network” y “equalizer”; añadiendo “design or implementation or hardware”. Filter an d (design or implementation or hardware) 13.999 10,1% Neural network an d (design or implementation or hardware) 3.937 4,6% Equalizer an d (design or implementation or hardware) 457 13,4% En la figura 1.1 (izquierda) se muestra el número de apariciones en la búsqueda del Web of Science en función del año, para “filter” (a) y “neural network” (b); con trazo fino y grueso respectivamente. En ella se observa que los estudios sobre redes neuronales aparecen mucho más tarde que para los filtros. Además, justo antes de 1990 se produce el inicio de los estudios para redes neuronales, y alcanzan en 10 años similares niveles de producción. En la figura 1.1 (derecha) se observan los resultados de la búsqueda cuando se añaden las palabras “design”, “implementation” y “hardware”; para “filter” con trazo fino (c), y para “neural network” con trazo grueso (d). En esta figura se observa que el concepto de diseño e implementación de redes neuronales arranca justo antes de 1990 pero no alcanza los niveles de los diseños de filtros. Figura 1.1. Apariciones por año en el Web of Science de: a)“filter”, b) “neural network”, c) “filter” and (“design” or “implementation” or “hardware”), d) “neural network” and (“design” or “implementation” or “hardware”). Se puede llegar a la conclusión, observando los datos de las búsquedas anteriores, de que existe un retraso en la implementación de las redes neuronales frente al diseño de filtros. Esto puede deberse a la escasa necesidad de altas prestaciones físicas en la 1900 1920 1940 1960 1980 2000 2020 0 1000 2000 3000 4000 5000 6000 7000 8000 1920 1930 1940 1950 1960 1970 1980 1990 2000 2010 2020 0 100 200 300 400 500 600 700 800 a ) b ) c ) d )
Metodologías de diseño de redes neuronales sobre dispositivos digitales programables para procesado de señales en tiempo real Universidad de Las Palmas de Gran Canaria 5 operación de las NN, a la dificultad intrínseca de las NN y a la improvisación al realizar estos diseños sin el uso de métodos apropiados. La necesidad de mejorar las prestaciones depende del escenario de la aplicación; y de las restricciones de velocidad, consumo de potencia y de tamaño en la implementación. La dificultad intrínseca de las NN y su variabilidad debe ser analizada por el diseñador, quien debe tomar las decisiones apropiadas. Estas decisiones se basan en la experiencia del diseñador o en un proceso de prueba y error. Por último, debe resaltarse que los métodos existentes son múltiples y con diferentes características. El diseñador elegirá el método apropiado en función de sus características. Todo lo anterior se analizará en capítulos posteriores. 1.2 Antecedentes y estado del arte Es preciso por tanto analizar el estado actual de las implementaciones de las NN desde diferentes puntos de vista. Para ello se describen las aportaciones más significativas, desde la más antigua hasta la más reciente. Los diseños pueden no incluir el entrenamiento, que se hace previamente, normalmente en una computadora usando aritmética de punto flotante; se dicen que tienen un entrenamiento offline. Cuando los circuitos incluyen las estructuras de entrenamiento se dicen que es de tipo online, estos últimos se reentrenan cada cierto tiempo y reconfiguran, adaptándose a circunstancias cambiantes. Se entenderá, por defecto, que las aportaciones son de tipo offline; cuando sean de tipo online se indicará expresamente. En los casos descritos a continuación los desarrollos se llevaron a cabo para FPGA, en caso contrario se indica la tecnología que se usó. Como regla general, si no se especifica otra cosa, la función de transferencia usada es de tipo sigmoidea, que es la usada habitualmente como función de transferencia en las neuronas artificiales. Como se observa en la figura 1.1 (d), existen diseños de NN sobre dispositivos electrónicos desde justo antes de 1990. En [Myers y Hutchinson, 1989] se plantea un método de síntesis para la función sigmoidea. Estos autores usan una aproximación lineal por tramos y plantean la posibilidad de diseñarla como un sistema digital con muy alta escala de integración (VLSI, Very Large Scale Integration). Se usó aritmética
Tesis Doctoral Universidad de Las Palmas de Gran Canaria 6 en punto fijo de complemento a dos y se diseñó usando circuitos esquemáticos. El sistema fijó 16 bits de entrada y 8 bits de salida, pero no se estudió el efecto de este número de bits sobre la cantidad de hardware requerido. Los autores no muestran tampoco estimación de velocidad ni de potencia consumida. En [Satyanarayana et al., 1992] se diseñó una NN de tres capas en un sistema VLSI analógico. El sistema se diseñó en forma de esquemático y los autores presentan el hardware estimado y la velocidad, pero no la estimación de potencia consumida. En agosto del año 1994 se desclasifica el informe [Tebbe, 1994], que se realizó entre septiembre de 1992 y mayo de 1994. Este informe fue realizado por Harris Corporation para el Government Communications Systems Division de los Estados Unidos; trata de las NN para procesado de señal en comunicaciones, en particular para la ecualización y demodulación de señales digitales. En [Costa et al., 1999] se diseñó una NN con tecnología VLSI analógica. Se describió en forma de esquemático, se da la estimación de área y potencia; pero no la de velocidad. En el trabajo de [Vassiliadis et al., 2000] se proponen varios métodos para la implementación de funciones no lineales, se incluyen las funciones sigmoideas. La aritmética usada es en punto fijo en complemento a uno y complemento a dos. Los métodos usados son por tramos lineales y por tramos de segundo orden. Este estudio se centra en el valor medio del error en valor absoluto y el error máximo de la representación; considera que los valores máximos deben ser 10-3 y 10-2 respectivamente. A partir de estas referencias compara el área necesaria y el retardo en ciclos de reloj. No se da estimación de potencia. El número de bits es fijo, cuatro para la parte entera y diez para la parte decimal. Las soluciones propuestas no se implementaron; solo se bosquejó el área y los ciclos de reloj necesarios. Obviamente, esto impide la estimación de potencia y la máxima frecuencia de funcionamiento. Además, se propuso la arquitectura para la derivada primera de la función de transferencia, con el objeto de poder realizar un entrenamiento online de la NN. En [Krips, 2002] se diseñó una NN con una sola capa intermedia, se implementó sobre una FPGA para seguimiento de la imagen de una mano en tiempo real. La
Metodologías de diseño de redes neuronales sobre dispositivos digitales programables para procesado de señales en tiempo real Universidad de Las Palmas de Gran Canaria 7 aritmética usada es de punto fijo y como función de transferencia se usó la tangente hiperbólica, que se implementó almacenando 15 niveles de cuantificación en una memoria usada como tabla de búsqueda (LUT, Lookup-Table). Se diseñó usando el lenguaje muy rápido de descripción hardware para circuitos integrados (VHDL, Very High Speed Integrated Circuit Hardware Description Language). Los autores indican la tasa de acierto obtenida, la velocidad y el área necesaria; pero no la potencia consumida. En [Lee y Burgess, 2003] se aproxima la función de transferencia usando la serie de Taylor sobre una FPGA. Se empleó aritmética de punto fijo y se describió con VHDL. Los autores presentan el efecto del número de bits sobre el área ocupada y el retardo; pero no presentan el efecto sobre la potencia consumida. Otros autores, como [Manjunath y Gurumurthy, 2003], plantean el diseño de una NN sobre una matriz analógica programable por el diseñador (FPAA, Field Programmable Analog Array). Para la función de transferencia se propone un circuito con amplificador operacional. Este trabajo no presenta estimaciones de área, velocidad o consumo de potencia. En [Tommiska, 2003] se estudian implementaciones eficientes de la función de transferencia sigmoidea usando aritmética de punto fijo. El autor diseñó diferentes formas de la aproximación lineal por tramos, aproximación por tramos con polinomios de segundo orden, usando circuitos combinacionales y LUT. Los diseños se describieron con VHDL. En esta aportación se estima el área y la velocidad de los diferentes diseños, pero no se estimó la potencia. La funcionalidad de las implementaciones se analizó con el error máximo y el valor medio del error absoluto. El autor propuso la fórmula 1.1 como factor de calidad, en ella se mezcla la funcionalidad con las prestaciones físicas. Este factor de calidad, aunque válido, compara sistemas con diferente error en la representación; además no incluye la potencia. Sería mejor comparar las prestaciones físicas (área, velocidad y potencia) en sistemas de similar funcionalidad. Q= f max Área·Errormáximo·Errormedio (1.1)
Tesis Doctoral Universidad de Las Palmas de Gran Canaria 8 En [Zhu y Sutton, 2003] se hace una revisión de la última década en el diseño de NN sobre FPGA. En este trabajo los autores inciden que en el futuro se debe optimizar la precisión binaria; además, deberá usarse métodos de diseños apropiados para comparar diferentes implementaciones. Se aproximó la función sigmoidea y su primera derivada en [Basterretxea et al., 2004]. Esto se hizo con una aproximación por tramos lineales y un algoritmo iterativo. Se implementó con VHDL en aritmética de punto fijo. Los autores dan el error del sistema en función de los parámetros del algoritmo usado; pero no dan las prestaciones físicas de área, velocidad o potencia. Los autores [Dias et al., 2004] revisaron los circuitos integrados específicos que se vendían hasta ese año como NN. Estos tenían una utilidad restringida por las limitaciones en su arquitectura. Por un lado, aparece limitado el número de neuronas, de entradas, y de salidas; por otro, la resolución binaria usada es fija. En [Oh y Jung, 2004] se implementó una NN sobre una Unidad de Procesamiento Gráfico (GPU, Graphics Processing Unit). Los autores hacen uso de las operaciones con matrices, principalmente la multiplicación. En este desarrollo se compara la velocidad obtenida con la GPU frente a una unidad central de procesamiento (CPU, Central Processing Unit), el diseño en la GPU resultó ser unas 20 veces más rápido. Conviene recordar que las GPU son dispositivos que usan aritmética en punto flotante. El diseño de un ecualizador sobre FPGA se expone en [Yen et al., 2004]. Se probaron dos arquitecturas: una sola neurona y una configuración con solo las capas de entrada y salida. Se diseñó para una señal digital modulada en fase de cuatro símbolos. Los autores analizaron la tasa de error de símbolo frente a la relación señal a ruido (SNR, Signal to Noise Relation), y frente al número de bits usado. Se usó aritmética de punto fijo y las funciones de transferencia se diseñaron usando una LUT. El sistema se describió usando el lenguaje de descripción hardware Verilog. Los autores muestran estimaciones de área y retardo; pero no de potencia consumida. Los circuitos incluyen el entrenamiento online. En el trabajo fin de grado de [Lange, 2005] se bosquejan diferentes arquitecturas para las NN según el nivel de secuenciamiento en el cálculo. Se plantea: la NN
Metodologías de diseño de redes neuronales sobre dispositivos digitales programables para procesado de señales en tiempo real Universidad de Las Palmas de Gran Canaria 9 totalmente paralelizada, una NN donde para cada neurona se dedica un multiplicadoracumulador (MAC, Multiplier-Accumulator), un MAC por capa y un solo MAC para toda la NN. El autor finalmente elige la solución de un MAC por capa. Se usó aritmética de punto fijo; pero no se estudió el efecto del número de bits, se estableció el número de bits siguiendo una estrategia conservadora. Las funciones de transferencia se diseñaron mediante LUT. Para el diseño se usó una herramienta automática que genera el código VHDL. El autor da estimaciones de área y velocidad; pero no de potencia consumida. En [Chen et al., 2006] se propone el diseño de la función sigmoidea usando el algoritmo CORDIC (Coordinate Rotation Digital Computer). Se usó aritmética de punto flotante con 32 bits de entrada y 64 de salida. Para el diseño se usó VHDL. Los autores estimaron la velocidad, pero no el área ni la potencia consumida. Una NN se diseñó en [Dong et al., 2006] usando varias FPAA. La función de transferencia se aproximó por tramos lineales. Los autores estimaron la velocidad y el área ocupada, pero no la potencia consumida. Los autores en [Larkin et .al, 2006] generaron la función de activación usando aproximaciones polinómicas por tramos usando aritmética en punto fijo. Como formato de la entrada se usó cuatro bits para la parte entera y diez para la parte decimal. Igualmente para la salida se usaron dos bits para la parte entera y diez para la parte decimal. Se diseñó la propuesta usando Verilog, y se compiló el diseño para un circuito integrado de aplicación específica (ASIC, Application Specific Integrated Circuit) y una FPGA. Los autores extrajeron las prestaciones en área, velocidad y potencia consumida. En [Ferreira et al., 2007] se presentó un método de diseño para una NN en aritmética de punto flotante usando VHDL. Las funciones de transferencia se aproximaron por tramos lineales. Los autores dan el área ocupada, pero no la potencia ni la máxima velocidad del circuito. En la aportación de [Himavathi et al., 2007] se diseñó la capa de mayor tamaño de una NN; es decir, la que tenía el mayor número de neuronas. Esta capa se usa recursivamente para computar las salidas de todas las capas. Se usó aritmética de
Tesis Doctoral Universidad de Las Palmas de Gran Canaria 10 punto fijo, no se estudió el efecto del número de bits porque se usaron cantidades prefijadas. Las funciones de transferencia se implementaron usando LUT. El sistema se diseñó con el lenguaje Verilog. Los autores estimaron el área ocupada y la velocidad, pero no la potencia. En [Mishra et al., 2007] se diseñó una neurona en aritmética de punto fijo, pero no se estudió el efecto del número de bits. La función de transferencia se aproximó por tramos lineales. El sistema se describió usando VHDL. Los autores no muestran estimación de área, potencia o velocidad. Se implementó una NN para reconocimiento de posturas de la mano en [Oniga et al., 2007]. Se diseñó con System Generator de Xilinx usando aritmética de punto fijo. En este caso el diseño de las funciones de transferencia es trivial, se usaron funciones identidad y competitiva. Los autores no dan estimaciones de área, velocidad ni potencia. En [Savich et al., 2007] se comparan implementaciones de NN usando punto fijo y punto flotante. Los autores llegan a la conclusión, de que para la misma funcionalidad, el diseño en punto fijo mejora las prestaciones de área y velocidad. La función de transferencia se aproximó por tramos lineales. Los diseños se realizaron usando VHDL. No se da estimaciones de la potencia consumida. Se implementó una NN para procesado de imagen en [Ho et al., 2008] usando una GPU. La función de transferencia usada era lineal en el tramo central y saturada en los extremos. Se usó el lenguaje C++ para su diseño. El diseño en la GPU es entre 8 y 17 veces más rápido que el de una CPU. Los autores [Lin y Wang, 2008] diseñaron por tramos lineales la función tangente hiperbólica. Se diseñó en forma de esquemático con aritmética de punto fijo. Se hicieron estimaciones de área y velocidad, pero no de potencia. En [Ogrenci, 2008] se plantea una metodología de diseño para una NN. Se diseñó en punto fijo con VHDL. El autor da estimación de área y velocidad, pero no de potencia. Una NN, de una o dos capas, se diseñó en [Oniga et al., 2008]. Los autores no indican cuál es la función de transferencia usada. Se diseñó con System Generator de
Metodologías de diseño de redes neuronales sobre dispositivos digitales programables para procesado de señales en tiempo real Universidad de Las Palmas de Gran Canaria 1 7 porque algunas incluyen actualmente varios miles de multiplicadores. En esta tesis se hará énfasis en las NN totalmente paralelizadas. La parte crítica de la implementación de las NN lo constituye la función de transferencia, típicamente no lineal. Estas funciones suelen incluir exponentes y divisiones, operaciones de costosa realización; por ello se suele recurrir a una implementación aproximada. Existen para esto diferentes técnicas. La estrategia con menor retardo es almacenar muestras de la función en una memoria; o sea, el uso de LUT. Por eso en la arquitectura planteada se usarán LUT, aunque como inconveniente cabe destacar que tiene una alta ocupación de recursos hardware. No obstante, en ocasiones se recurrirá a funciones de transferencia lineales por tramos; si con estas funciones se alcanzan la funcionalidad, entonces se permite mejorar el área, la velocidad y el consumo de potencia. Tras un estudio de las diferentes herramientas de diseño se optó por un método sobre Simulink de Matlab. Esto permitirá una descripción rápida y flexible. Además facilitará la simulación del sistema; hasta el punto de comprobar su total funcionalidad. Finalmente se indicarán las prestaciones físicas conseguidas en los diseños: área, velocidad y potencia. Para probar el método se diseñarán NN que funcionarán sobre diferentes escenarios. Un escenario es la clasificación de la palmera pejibaye atendiendo a marcadores moleculares de ácido desoxirribonucleico (DNA, Deoxyribonucleic acid). Esta base de datos proviene de Costa Rica. También se usará una NN para clasificar pulsos de electrocardiograma (ECG, Electrocardiogram), la base de datos está tomada del Hospital Beth Israel del Instituto Tecnológico de Massachusetts (MIT-BIH, Massachusetts Institute of Technology-Beth Israel Hospital). En una tercera situación se usó una NN para predecir temperatura. La base de datos disponible en este caso proviene también de Costa Rica. Finalmente, se presenta una metodología de diseño para una NN funcionando como ecualizador de una señal digital binaria unipolar en presencia de ruido. En este caso la base de datos es sintética. Para cada escenario, en una primera fase, se realiza el entrenamiento y testeo, como indica la figura 1.2. Esto constituye el modelado del sistema en punto flotante. En esta etapa se fija la arquitectura de la NN. Si no se obtiene la funcionalidad
Tesis Doctoral Universidad de Las Palmas de Gran Canaria 18 requerida de reentrena el sistema o se cambia la arquitectura. Cuando se alcanza la funcionalidad necesaria se obtiene la regla de oro. La regla de oro consiste en la arquitectura de la NN y los valores de los coeficientes obtenidos en el entrenamiento. Figura 1.2. Modelado del sistema en punto flotante. Una vez obtenida la regla de oro la NN está totalmente especificada. El objetivo de la segunda etapa es conseguir el diseño del circuito en punto fijo. Para ello, según la figura 1.3, se usa un entorno gráfico sobre Simulink de Matlab. Los bloques de Simulink quedan especificados con nombres de variables, entre ellos los nombres de los coeficientes de la NN. Con un programa de Matlab se fija el número de bits para la representación de los coeficientes; esto se hace teniendo como entrada los valores en punto flotante de la regla de oro y un error máximo permitido en la representación. El objetivo es determinar el mínimo número de bits que mantiene la funcionalidad de la NN; lo que minimiza el área y el consumo de potencia, y maximiza la velocidad. Una vez que se ha fijado el número de bits es posible comprobar la completa funcionalidad de la NN. Los bloques circuitales usados en Simulink tienen un bajo nivel de detalle, esto permite simulaciones muy rápidas; por contra, la estimación de área es
Metodologías de diseño de redes neuronales sobre dispositivos digitales programables para procesado de señales en tiempo real Universidad de Las Palmas de Gran Canaria 19 aproximada, y no se obtiene estimaciones de velocidad ni de potencia consumida. Una vez garantizada la funcionalidad se compila el diseño, obteniendo la descripción en un HDL para la herramienta estándar de la FPGA. En este último entorno se tiene un alto nivel de detalle de los circuitos. Esto permite hacer estimaciones precisas de área, velocidad y potencia. Estas simulaciones son lentas, e imposibilitan comprobar la total funcionalidad, a menos que el diseño sea sencillo. Figura 1.3. Modelado del sistema en punto fijo. 1.5 Contribuciones y resultados Durante el desarrollo de la presente tesis se han conseguido diferentes contribuciones que se exponen en la tabla 1.3. Se puede afirmar que se han realizado aportaciones metodológicas para el diseño de NN sobre dispositivos digitales
Tesis Doctoral Universidad de Las Palmas de Gran Canaria 20 programables; todo esto para diferentes escenarios con bases de datos de distinta naturaleza. En la figura 1.4 se observa las aportaciones anuales. Tabla 1.3. Contribuciones alcanzadas durante el desarrollo de esta tesis. Publicaciones Cantidad Referencias Con JCR 2 [Pérez et al., 2013] [Vásquez et al., 2013] Sin JCR 2 [Pérez et al., 2009a] [Travieso et al., 2013a] Capítulos de libros 2 [Pérez et al., 2011b] [del Pozo et al., 2012] Congresos internacionales 9 [Pérez et al., 2009b] [Pérez et al., 2011c] [Pérez et al., 2011d] [Ticay et al., 2011] [Vásquez et al., 2012] [Vázquez et al., 2012] [Travieso et al., 2013b] [Pérez et al., 2014a] [Pérez et al., 2014b] Congresos nacionales 3 [Pérez et al., 2009c] [Pérez et al., 2011a] [Alonso et al., 2013] Figura 1.4. Total de aportaciones anuales. A continuación se describen las principales aportaciones siguiendo la evolución temporal. En [Pérez et al., 2011c] los autores diseñaron un NN para clasificar especies de la palmera Pejibaye en función de marcadores moleculares. Se usó aritmética de punto fijo y la función de transferencia se diseñó usando una LUT. El sistema se describió sobre Simulink de Matlab, usando System Generator de Xilinx. Los autores estimaron el área, la potencia y la velocidad del sistema. 2007 2008 2009 2010 2011 2012 2013 2014 2015 0 1 2 3 4 5 6
Metodologías de diseño de redes neuronales sobre dispositivos digitales programables para procesado de señales en tiempo real Universidad de Las Palmas de Gran Canaria 21 Una NN se usó en [Vázquez et al., 2012; Travieso et al., 2013a; Travieso et al., 2013b] para discriminar pulsos de electrocardiograma y detectar este tipo de patologías. Básicamente el método y el diseño de la NN coincide con [Pérez et al., 2011c], con la salvedad de que se hace un preprocesamiento previo usando la transformada discreta Wavelet (DWT, Discrete Wavelet Transform) y los datos son normalizados. Una NN se usó en [Pérez et al., 2011d; Vásquez et al., 2012; Vásquez et al., 2013] para predicción de temperatura, en la entrada se incluyó una red de células de retardo en cascada; constituyendo una red neuronal con línea de retardo (TDNN, Time Delay Neural Network). En este trabajo se expusieron las prestaciones físicas logradas. Para alcanzar la funcionalidad se tuvo en cuenta el valor medio del error en valor absoluto. Los autores en [Pérez et al., 2013] exponen una metodología de diseño de un ecualizador para una señal binaria unipolar sin retorno a cero (NRZ, Non Return to Zero) en presencia de ruido Gaussiano blanco aditivo (AWGN, Additive White Gaussian Noise). Para ello se usó una TDNN empleando aritmética de punto fijo y optimizando el número de bits en los diferentes puntos del sistema. El diseño de las funciones de transferencia se simplificó, las prestaciones se alcanzaron con la función identidad y la función lineal en el tramo central con saturación en los extremos. Para el diseño se usó System Generator de Xilinx sobre Simulink de Matlab. Se hicieron estimaciones de área, potencia consumida y de la máxima tasa de muestras soportable en la entrada. En [Pérez et al., 2014a] se presentó el método de diseño de NN sobre System Generator comprobado en los cuatro escenarios mencionados anteriormente: palmera pejibaye, pulsos electrocardiográficos, predicción de temperatura y ecualizador para señal binaria. En todos se usó aritmética de punto fijo. En los dos últimos escenarios se añade una línea de retardo para crear una TDNN; esta nueva arquitectura actúa como un predictor. En los tres primeros casos se usaron funciones sigmoides aproximadas con LUT. En el ecualizador se consiguió simplificar la implementación de las funciones al usar la función identidad y la función lineal en el tramo central con saturación en los extremos. En todos los casos se realizó entrenamiento offline y se obtuvieron las prestaciones de área, velocidad y potencia consumida.
Tesis Doctoral Universidad de Las Palmas de Gran Canaria 22 Los métodos de diseño para dispositivos digitales programables por el diseñador se repasaron en [Pérez et al., 2014b] y se expusieron en un congreso sobre innovación educativa; además, en ese trabajo se hicieron propuestas al Grado en Ingeniería en Tecnologías de la Telecomunicación y al Máster Universitario en Ingeniería de Telecomunicación de la Universidad de Las Palmas de Gran Canaria. A continuación se muestras otros méritos obtenidos durante el desarrollo de esta línea de trabajo. • Participación en Proyectos de Investigación, se muestran en la tabla 1.4. • Concesión de un sexenio de investigación para los años evaluados: 2004, 2005, 2006, 2011, 2012 y 2013. Concedido por la Comisión Nacional Evaluadora de la Actividad Investigadora. • Charla invitada: “CARDIODETECT. Detección y clasificación de arritmias en tiempo real” en las “Jornadas de Innovación de Atención Sanitaria con las TIC”. Celebradas en el año 2010 en Santa Cruz de Tenerife y organizadas por la Cátedra de Telefónica de la Universidad de Las Palmas de Gran Canaria. • Colaboración en congresos internacionales: Revisor en la International Conference on ReConfigurable and FPGAs (Reconfig 2011), Cancún, México. Moderador y miembro del comité organizador en la International Conference on NoLinear Speech Processing (NoLISP 2011), Las Palmas de Gran Canaria, España. Miembro del comité organizador en el 2 nd Workshop on Bioinspired Intelligence (WOBI 2012), San José, Costa Rica. Miembro del comité organizador en el 3 rd International Conference and Workshop on Bioinspired Intelligence (IWOBI 2014), Liberia, Costa Rica. Miembro del comité organizador en las I Jornadas Iberoamericanas de Innovación Educativa en el ámbito de las TIC (InnoEducaTIC 2014), Las Palmas de Gran Canaria, España. Miembro del comité organizador en el 4th International Work Conference on Bioinspired Intelligence (IWOBI 2015), San Sebastián, España.
Metodologías de diseño de redes neuronales sobre dispositivos digitales programables para procesado de señales en tiempo real Universidad de Las Palmas de Gran Canaria 23 Miembro del comité organizador en las II Jornadas Iberoamericanas de Innovación Educativa en el ámbito de las TIC (InnoEducaTIC 2015), Las Palmas de Gran Canaria, España. Tabla 1.4. Participación en Proyectos de Investigación. NOMBRE Investigación, desarrollo e innovación en imágenes en el infrarrojo cercano y lejano (de 900 nm a 1700 nm) vinculadas a aplicaciones en biometría Investigador Principal Carlos M. Travieso González Cuantía 15.245,93 € Entidad financiadora Gobierno Autónomo de Canarias Entidades participantes Universidad de Las Palmas de Gran Canaria Inicio 2007 Duración 1 año NOMBRE Laboratorio de Sistemas y Autómatas Inteligentes en Biodiversida d Referencia D/027406/09, anualidad 2010; D/033858/10, anualidad 2011; A1/039531/11, anualidad 2012 Investigador Principal Carlos M. Travieso González Cuantía 515.372 € Entidad financiadora Agencia Española para la Cooperación Internacional y el desarrollo de l Ministerio de Asuntos Exteriores y Cooperación del Gobierno de España Entidades participantes Universidad de Las Palmas de Gran Canaria, Universidad de Costa Rica Inicio 201 0 Duración 3 años NOMBRE Metodología de la evaluación acústica del sistema fonador Investigador Principal Jesús B. Alonso Hernández Cuantía 6.000 € Entidad financiadora Innova Canarias 2020, Grupo Sedicana y Clubes de Leones de Gran Canaria Entidades participantes Universidad de Las Palmas de Gran Canaria Inicio 201 0 Duración 1 año NOMBRE e-VOICE : S istema de Evaluación Remota del Sistema Fonador Investigador Principal Jesús B. Alonso Hernández Cuantía 10.100 € Entidad financiadora Cátedra Telefónica Entidades participantes Universidad de Las Palmas de Gran Canaria Inicio 2012 Duración 1 año NOMBRE S íntesis de muestras biométricas para aplicaciones de salud y segurida d Referencia TEC2012-38630-C04-02 Investigador Principal Miguel Á. Ferrer Ballester Cuantía 65.988 € Entidad financiadora Ministerio de Ciencia y Competitividad del Gobierno de España Entidades participantes Universidad de Las Palmas de Gran Canaria Inicio 2013 Duración 3 años
Tesis Doctoral Universidad de Las Palmas de Gran Canaria 24 • Colaboración en congresos nacionales. Revisor y moderador en las XI Jornadas de Computación Reconfigurable y Aplicaciones (JCRA 2011), San Cristóbal de La Laguna. Miembro del comité organizador en las VI Jornadas de Reconocimiento Biométrico de Personas (JRBP 2012), Las Palmas de Gran Canaria. Miembro del comité organizador en las I Jornadas Multidisciplinares de Usuarios de la Voz, el Habla y el Canto (JVHC 2013), Las Palmas de Gran Canaria. • Revisor en la revista internacional Advances in Research (ISSN: 2348-0394), de SCIENCEDOMAIN international en el año 2014. • Estancia en la Escuela de Ciencias de la Computación e Informática de la Universidad de Costa Rica, del 3 al 19 de junio de 2010, con cargo al proyecto financiado por la Agencia Española de Cooperación Internacional titulado “Laboratorio de Sistemas y Autómatas Inteligentes en Biodiversidad”. • Se citó la aportación [Pérez et al., 2009a] en la tesis doctoral Synchronization Algorithms and Architectures for Wireless OFDM Systems de la Universidad de Newcastle, Reino Unido, [Younis, 2012]. • Se han desarrollado los Trabajos Fin de Título de la tabla 1.5. Tabla 1.5. Trabajos Fin de Título desarrollados. Trabajos Fin de Título Cantidad Referencias Proyectos Final de Carrera 2 [Vázquez, 2011] [Tarapuez, 2015] Trabajos Fin de Master 2 [Chadnani, 2014] [Osorio, 2014] 1.6 Estructura de la memoria La memoria de esta tesis se estructura en cinco capítulos con los contenidos que se indican a continuación. Además se incluye una lista de figuras, una lista de tablas, una lista de acrónimos y las referencias bibliográficas. En el capítulo 1 se realiza la introducción de la tesis. En este capítulo se expone la motivación y justificación para su realización. Igualmente se detallan los antecedentes y el estado del arte del tema a tratar. Posteriormente se indican los objetivos de esta
Metodologías de diseño de redes neuronales sobre dispositivos digitales programables para procesado de señales en tiempo real Universidad de Las Palmas de Gran Canaria 25 tesis y la metodología para alcanzarlos. Por último, se muestran las contribuciones y resultados alcanzados durante su realización. El capítulo 2 analiza el problema de la implementación de NN para funcionar en tiempo real. En principio se analizan los tipos posibles de aritmética binaria y se define el concepto de regla de oro. Posteriormente se exponen las tecnologías disponibles y los métodos de diseño para FPGA. Además, se analizan los parámetros de los diferentes métodos de diseño y se introduce el concepto de factor de calidad de un diseño. Finalmente se exponen herejías metodológicas; o dicho de otra forma, como no debe llevarse a cabo el proceso. En el capítulo 3 se trata el esquema general de la metodología experimental, se exponen los escenarios y las bases de datos usadas. También se describen los problemas del modelado en punto flotante y en punto fijo. Además, se describe el flujo de diseño estándar para FPGA y las cualidades que debe tener la herramienta elegida y el flujo de diseño usado. Finalmente, se exponen de forma resumida las herramientas de Xilinx y Altera que funcionan sobre Simulink de Matlab. El capítulo 4, para cada uno de escenarios descritos en el capítulo 3, muestra los experimentos realizados y los resultados obtenidos. Esto consiste en la revisión del modelado en punto flotante, la descripción de la regla de oro, y la implementación en punto fijo en la FPGA con las herramientas elegidas; en cada escenario se analizan los resultados. Finalmente se realiza una comparación con el estado del arte. Finalmente, en el capítulo 5 se exponen las conclusiones y las posibles líneas futuras. En el anexo se expone en detalle el modelado en punto fijo del último escenario. El documento finaliza con la bibliografía.
Metodologías de diseño de redes neuronales sobre dispositivos digitales programables para procesado de señales en tiempo real Universidad de Las Palmas de Gran Canaria 33 entrena, se obtiene un conjunto distinto de valores de los coeficientes, se debe elegir uno que cumpla con las prestaciones del clasificador; por ejemplo la tasa de acierto. Una vez que ha finalizado el entrenamiento se realizada el testeo de la NN. Esto consiste en introducir un conjunto de datos no usados en el entrenamiento para comprobar el valor de las salidas. En general las NN con tres capas consiguen alcanzar la funcionalidad necesaria en la mayoría de las aplicaciones. En resumen, debe disponerse de una base de datos, de la que una parte se usa para el entrenamiento y otra para el testeo. En este caso se dice que el entrenamiento es supervisado, porque para cada combinación en la entrada se indica la salida deseada. En esta tesis se usa este tipo de entrenamiento. También las NN pueden usarse para agrupamiento (clustering) de los patrones de entrada [Duda et al., 2001]. En este caso el entrenamiento es no supervisado, no se indica la salida para cada entrada. Es la NN la encargada de agrupar y diferenciar las entradas. Además las NN se usan para: predicción de series temporales (predicción climática, ecualización de señales, etc.) [Connor et al., 1994], aproximación de funciones [Wu y Er, 2000], optimización [Narendra y Parthasarathy, 1991], como memoria asociativa [Cao, 2003] y en control de procesos [Rivals y Personnaz, 2000]. 2.2 La variabilidad en el diseño de las redes neuronales Cuando se pretende usar una NN para solucionar un problema, han de tomarse muchas decisiones. Estas decisiones se basan en la experiencia del diseñador o en un proceso de prueba y error. Antes que nada, debe elegirse el tipo de NN: sin realimentación, recurrente, etc. Fijada la arquitectura, supóngase el tipo perceptrón multicapa, debe fijarse el número de capas y el número de neuronas en cada capa. El número de entradas viene dado por las condiciones del problema o fijadas tras el proceso de parametrización, pero diferentes parametrizaciones pueden tener distintas prestaciones sobre distintas arquitecturas. Estas prestaciones se refieren a la cantidad de cálculo requerido y a la tasa de acierto. El número de salidas viene dado por el problema que se quiere solucionar. Para el caso de un clasificador, se puede activar una salida por clase o
Tesis Doctoral Universidad de Las Palmas de Gran Canaria 34 asignar a cada clase una codificación de las salidas; lo último vuelve a tener efecto sobre las prestaciones del clasificador. Todavía queda elegir el tipo de función de transferencia para cada capa, supuesta igual para todas las neuronas de una misma capa. El tipo de función tiene igualmente efecto en las prestaciones del clasificador. Si la NN fuese recurrente cabe decidir qué señales se realimentan y a qué neuronas, esto vuelve a afectar a las prestaciones. En cuanto a la base de datos faltaría decidir qué parte se usa para el entrenamiento y cuál para testeo. Además, debe elegirse el algoritmo de entrenamiento y sus parámetros: valores iniciales, error, criterio de parada, etc. El tipo de entrenamiento interactúa, y se comporta de forma distinta, dependiendo de la arquitectura elegida. En resumen, aparecen una serie de decisiones que a un profano en el tema le puede hacer desistir de solucionar el problema mediante una NN. Suponiendo que se ha conseguido dar con una solución satisfactoria, que no necesariamente óptima, todavía pueden quedar serios inconvenientes que se describen en los apartados siguientes. 2.3 Los tipos de aritmética binaria Para calcular las salidas de la figura 2.4 se precisan realizar R1·S1+S1·S2 multiplicaciones y sumas, además hay que añadir el coste computacional de las funciones de transferencia. El cálculo requerido para las funciones de transferencia puede ser muy elevado, dependiendo de la forma de implementación. Si la tasa de eventos que procesa la NN es suficientemente pequeña entonces el cálculo puede residir en un ordenador personal o sistema microprocesador. Pero si la tasa es alta, entonces la velocidad de respuesta puede ser lenta, habiendo que recurrir a plataformas más rápidas. También se puede recurrir a otros métodos de implementación, que no sea sobre un ordenador personal, si se quiere disminuir el volumen del prototipo o el consumo de energía. Las NN pueden diseñarse con cualquier lenguaje de alto nivel, donde los algoritmos se desarrollan en aritmética de punto flotante. Por ejemplo, se usa extensamente el entorno Matlab [Raida, 2002; Strik et al., 2005]. El lenguaje de alto
Metodologías de diseño de redes neuronales sobre dispositivos digitales programables para procesado de señales en tiempo real Universidad de Las Palmas de Gran Canaria 35 nivel puede ser interpretado, que no necesita tiempo de compilación, pero presenta un retardo relativamente grande en la ejecución. Por otro lado puede ser compilado y traducido al lenguaje ensamblador del microprocesador, lo que supone una mejora en el tiempo de ejecución. En la aritmética de punto flotante, el rango y la precisión se pueden ajustar con el número de bits del exponente y la mantisa. Es posible obtener un amplio rango y gran precisión en este tipo de representación [Gokhale y Graham, 2005]. Pero las operaciones con punto flotante necesitan muchos recursos hardware y son muy costosas computacionalmente; además, gastan gran cantidad de potencia y necesitan un número elevado número de ciclos de reloj [Belanovic y Leeser, 2002; Belanovic, 2002]. Por otro lado, la aritmética en punto fijo necesita menos recursos hardware, pero el rango y la precisión solo pueden mejorarse a consta de aumentar el número de bits; si se mantiene constante el número de bits la mejora de uno de ellos hace que el otro empeore [Hauck y Dehon, 2008]. Es posible usar en la mayoría de las aplicaciones la aritmética de punto fijo, cuando se conoce a priori el rango en amplitud de las señales o puede determinarse por métodos estadísticos [Hauck y Dehon, 2008]. Dada la complejidad de implementar operaciones de punto flotante es habitual recurrir a la aritmética de punto fijo. En particular la aritmética usada será de punto fijo en complemento a dos, esto se debe a la mejora que presenta en las operaciones frente al complemento a uno. Dicho de otra forma, antes de optar por la implementación en punto flotante en un dispositivo electrónico, es conveniente evaluar las prestaciones de la solución en punto fijo. El número de bits usado en punto fijo en cada punto del flujo de datos dependerá de rango y la resolución requerida. Si el número de bits es excesivo se está aumentando los recursos lógicos, la potencia consumida y el retardo, sin que el sistema aumente de forma significativa su calidad. Por el contrario, si se disminuye el número de bits, el comportamiento del sistema se puede deteriorar por el aumento del error de cuantificación. El Instituto de Ingenieros Eléctricos y Electrónicos (IEEE, Institute of Electrical and Electronics Engineers) define un estándar para punto flotante [IEEE Std 754, 2008]. Este estándar define el formato binario con representaciones de 32, 64, y 128 bits; es decir, 4, 8 y 16 octetos respectivamente. Esta cantidad de bits es enorme, la mayoría
Tesis Doctoral Universidad de Las Palmas de Gran Canaria 36 de las aplicaciones pueden operar en punto fijo con muchos menos bits, con el ahorro que esto supone. Este estándar también define el formato decimal, está pensado para la ejecución en procesadores en punto flotante; de hecho está patrocinado por el Microprocessor Standards Committee. Este estándar define: los formatos de representación, atributos y redondeos, las operaciones, los números no calculables (NaN, Not a Number), el cero, el infinito, etc. Puede usarse un formato no estándar para punto flotante [Belanovic, 2002], pero esto obliga a definir un estándar propio, cosa que es muy costosa. 2.3.1 Paso del modelo de punto flotante a punto fijo: la regla de oro La elección del número de bits es un parámetro que debe optimizarse comparando la funcionalidad del sistema de punto fijo con el sistema de punto flotante. Por tanto, es conveniente diseñar previamente el sistema en punto flotante con un lenguaje de alto nivel. Una vez que se tenga el algoritmo definido en punto flotante se dice que se tiene la “regla de oro”, lo que Xilinx llama golden rule [AccelDSP, 2008] y otros autores golden reference [Meeus et al., 2012]. La regla de oro incluye la arquitectura, el valor de los coeficientes y la funcionalidad del algoritmo. Por ejemplo si se tratase de un filtro incluye su arquitectura, el valor de los coeficientes y la respuesta en frecuencia. Si se trata de una NN incluye: el tipo y arquitectura de la NN, el valor de los coeficientes, el tipo de función de transferencia usada en cada neurona y el resultado del testeo obtenido. Al desarrollar la implementación en punto fijo debe tomarse como referencia la regla de oro (figura 2.6). En la implementación en punto fijo debe mantenerse la arquitectura y los valores de los coeficientes. En el flujo de datos se debe buscar el mínimo número de bits en punto fijo que permite alcanzar la funcionalidad de la regla de oro.
Univ e F 2.4 D reali z impl e aplic deb e esca s Com tiem no r prot o P Proc e ele m emb a de l o es fi j Meto e rsidad de Las F igura 2.6. O Las tecn o D espués d e z ar la impl e mentació n ación espe e n ser envi a s a área oc u o inconven po de acce s r ecurrente. o tipos. P or otro la d e ssor) [Oni m entos ASI C argo, la ta s o s datos es j o. Todo e s dologías de diseño Palmas de G r O btención d o logías di e elegido e ementació n n de una N cífica (ASI C a dos a la fá u pada, bajo ientes pres s o al merc a Esto lo d o, se pued e ga et al., C . Los DSP s a de datos limitado; e s to viene i m de redes neuronal e r an Canaria d el algoritm sponible s e l tipo de a n . Hay vari N. Una de C , A pplicati o brica para l consumo d entan: alto do, no per m hace nor m e n usar pro 2010; Wa n alcanzan m que pued e l tamaño y m puesto po e s sobre dispositivo s m o en punto flotante. s aritmética as alterna t las posibili o n Specific l a creación d e potencia precio, difi m ite la rep r m almente d cesadores d n g y Ma, 2 m ayores f r e n procesa r formato d e r la arquit e s digitales program fijo a parti r la cuestió n t ivas al us o dades es u Integrate d del disposi y alta velo c cultosa de p r ogramació n d esaconsej a d igitales de 2 001], que ecuencias r se ve limi t e los datos e ctura fija d a bles para procesa d r del algori t n es sobre o de un or d sar circuit o d Circui t ). L t ivo; como c idad [Cha n p uración y v n y gran co s a ble en e señales (D S son más b d e reloj q u t ada por q u es restring i d e los DSP. d o de señales en ti e t mo en pun t qué disp o d enador p a o s integrad o L os diseños ventajas ti e n drasetty, 2 v erificación , s te de inge l desarroll S P, Digital S baratos q u u e los ASI C u e el paral e ido; y el pi p También p e mpo rea l 3 7 t o o sitivo a ra la o s de ASIC e nen: 2 011]. , gran n iería o de S ignal u e los C . Sin lismo p eline p uede
Tesis Doctoral Universidad de Las Palmas de Gran Canaria 38 usarse una unidad de procesamiento gráfico (GPU, Graphics Processing Unit), que es un coprocesador que usa aritmética en coma flotante especializado en el procesamiento de imágenes [Ho et al., 2008; Oh y Jung, 2004]. Las GPU tienen mayor capacidad de procesamiento que las CPU, esto se debe a que cuenta con multitud de unidades aritméticas y lógicas. Finalmente, se pueden usar matrices de puertas digitales programables por el diseñador (FPGA, Field Programmable Gate Array). Un esquema típico de FPGA se muestra en la figura 2.7. Las FPGA constan de bloques de circuitos lógicos, líneas de conexión, matrices de interruptores y pines de entrada-salida. Los bloques de circuitos lógicos reciben diferentes nombres según el fabricante, en ellos se concentra la capacidad de computación de la FPGA. La arquitectura interna de los bloques lógicos depende del fabricante y del dispositivo. Las líneas de conexión son las encargadas de conectar los diferentes bloques y los pines; son largos conductores que atraviesan el integrado. Puede haber líneas específicas dedicadas, por ejemplo a señales de reloj o reinicio del sistema, que se extiende por toda la FPGA. Las matrices de interruptores conectan las líneas de conexión, es un sistema importante para el funcionamiento de la FPGA y en sí mismo es un tema de investigación [Schmit y Chandra, 2005]. La mayor parte de los pines son de entrada-salida de señal, pero también los hay exclusivos para alimentación, relojes, reinicio y programación de la FPGA. Figura 2.7. Arquitectura de una FPGA.
Metodologías de diseño de redes neuronales sobre dispositivos digitales programables para procesado de señales en tiempo real Universidad de Las Palmas de Gran Canaria 39 Las FPGA se pueden clasificar atendiendo a diferentes criterios. Uno de ellos es la forma en que se programan. Algunas FPGA no guardan su configuración, esta se almacena en una memoria externa, y cada vez que se inicia el sistema se carga la configuración en la FPGA. Por otro lado, las hay que son capaces de almacenar internamente su configuración, aún desconectadas de la alimentación. Entre las que almacenan su configuración cabe diferenciar; las que solo se pueden programar una sola vez (OTP, One-time Programmable), sin posibilidad de reprogramación; y las reprogramables. Una FPGA puede quedarse limitada para un diseño por no tener suficientes circuitos lógicos, suficiente número de pines de entrada-salida o por agotamiento del conexionado interno. Por este motivo algunos fabricantes dan la posibilidad a las herramientas de enviar a su servidor la información estadística de los recursos usados en los diseño. Esta información se usa para dimensionar los recursos de las nuevas familias de FPGA a los sistemas generados por los diseñadores. La gran ventaja de las FPGA frente a los ASIC es que son programables por el diseñador, sin necesidad de ser enviadas a una fábrica. Las FPGA presentan como ventajas: que no existe ingeniería no recurrente, mínimo tiempo de desarrollo, facilidad de depuración y verificación, menor tiempo de acceso al mercado, alto paralelismo de datos, tamaño y formato de datos flexible, y pipelined flexible [Cofer y Harding, 2006; Maxfield, 2004]. Aunque la frecuencia de reloj en las FPGA no es tan elevada como en los DSP, con las características anteriores se consigue procesar un mayor flujo de datos. Para pocas unidades, el precio de las FPGA es menor que los elementos ASIC, pero mayor que los microprocesadores. En general, el consumo de potencia en las FPGA es mayor que el caso de los ASIC, pero menor que los microprocesadores. Por todo lo anterior las FPGA son apropiadas para el desarrollo de prototipos cuando el flujo de datos a procesar es elevado, como es el caso del procesado digital de señales. Por otro lado muchas empresas ofrecen placas de circuito impreso que incluyen la FPGA y dispositivos externos. Estas placas contienen: convertidores analógicos-digitales y digitales-analógicos, memorias, dispositivos para entrada-salida de audio y video, puertos de comunicaciones, etc. El uso de estas placas
Tesis Doctoral Universidad de Las Palmas de Gran Canaria 40 evita la tediosa tarea de su diseño y fabricación; y lo más importante, permiten la creación de sistemas completos. Cabe destacar la aparición, a principio de este siglo, de las matrices analógicas programables por el diseñador (FPAA, Field Programmable Analog Array). Obviamente, estos dispositivos analógicos programables aparecen mucho más tarde que sus homólogos digitales por razones tecnológicas [Dong et al., 2006]. Muchos de estos dispositivos se han desarrollado con el propósito específico de solucionar ciertos problemas, otros se han desarrollado con carácter general. Entre estos últimos cabe destacar el fabricante Anadigm, [Anadigm, 2015]. Los fabricantes de FPAA ofrecen en sus herramientas de diseño librerías de sistemas analógicos que se pueden configurar e interconectar. Existen dos tipos de FPAA, las que funcionan como sistemas de tiempo discreto y las de tiempo continuo. Las primeras se basan en técnicas de capacidades conmutadas, las señales son muestreadas de acuerdo a un reloj, pero siguen siendo sistemas analógicos dado que las muestras no sufren cuantificación. En general, las FPAA pueden usarse para el diseño de una NN porque permiten hacer multiplicaciones por constantes y sumas; además, incluyen bloques que son funciones de transferencia configurables. El principal inconveniente que presentan es el coste de área; es decir, solo pueden implementarse NN pequeñas por que disponen de recursos muy limitados. Por otro lado, los sistemas FPAA presentan mucha menor velocidad y mayor consumo de potencia que las FPGA. El rango y resolución de ganancias de los sistemas en las FPAA es mucho más limitado que en las FPGA; por ejemplo, en el caso de amplificadores que operan como multiplicadores por una constante. Es decir, los sistemas en las FPGA consiguen ganancias mucho más pequeñas, o más grandes, que en las FPAA, y además con mayor resolución numérica. Finalmente el rango dinámico de la amplitud de las señales en las FPGA es mucho mayor que en las FPAA. En este sentido [Selow et al., 2009] analiza las prestaciones de una FPAA frente a una FPGA para algunas aplicaciones típicas de procesado de señal. De todas formas, a pesar de los inconvenientes, conviene no descartar el uso de las FPAA para el diseño de NN. El motivo es que es una solución integrada, reconfigurable y económica; sobre todo si se desean integrar en sistemas analógicos ya existentes.
Univ e P cent r dife r el v o man t los d Fig u 2.5 U deb e circ u del d FPG A desc 2.5. 1 E esqu usan con e Meto e rsidad de Las P or los mot r a en las F P r entes tecn o o lumen de p t eniéndose iseños real i u ra 2.8. Pre s Los mé t U na vez el e e elegirse e u ito en una d ispositivo. A , ni las c a riben los di f 1 Edición d e E l método u emáticos. C do puert a e ctándolos. dologías de diseño Palmas de G r ivos expre s P GA. Como o logías fre n p roducción las presta c i zados para s taciones f r e t odos de d e gida la te c l método d FPGA, en t o Es decir, el a racterístic a f erentes m é e esquemá t más int u C on este m a s lógicas, Esto se lla m de redes neuronal e r an Canaria s ados en lo s resumen, s n te a su co s aumenta p a c iones. Ad e FPGA a dis e nte al cos t desarr o d iseño pa r nología pa r d e diseño. E o dos ellos s e diseñador n a s de los c é todos dis p t icos u itivo, usa m étodo el d registros, m a “captur a e s sobre dispositivo s s párrafos a e muestra e s te econó m a ra disposi t e más, bajo s positivos A t e económi c o llo de un p r r a FPGA r a desarrol E xisten dif e e diseña d e n o tiene qu c ircuitos s e p onibles pa r do desde d iseñador d flip-flops, a de esque m s digitales program a nteriores e e n la figura m ico para u n t ivos ASIC, s ciertas co n SIC. c o para las d r ototipo. l ar los pro t e rentes mé t e forma ind e e conocer l e miconduct o r a este tipo hace de c ibuja y de s etc; bá s m áticos” y e a bles para procesa d e l desarroll o 2.8, las pr e n prototipo s u coste un i diciones, e d iferentes t otipos, en t odos de d e e pendiente a arquitect o res. En e s de diseño. c enios, es cribe los si icamente e n el proce s d o de señales en ti e o de esta t e e staciones d . Obviame n i tario dismi e s posible m t ecnologías este caso F e scripción d de la tecn o ura interna s te aparta d la edició i stemas di g colocándo l so se descr e mpo rea l 41 e sis se d e las n te, si nuye, m igrar en el F PGA, d e un o logía de la d o se n de g itales os y ibe el
Tesis Doctoral Universidad de Las Palmas de Gran Canaria 42 sistema completo, pudiendo usarse niveles de jerarquía o sistemas ya creados. Obviamente, para evitar el dibujo manual de los sistemas, pronto se hizo necesario entornos de diseño gráfico sobre computador. Este método puede usarse para sistemas pequeños o bien conocidos por el diseñador, donde se pueden describir rápidamente y son fácilmente modificables. Para esta técnica se deben elaborar, con o sin ayuda de herramientas auxiliares, las tablas de Karnaugh de los sistemas combinacionales y secuenciales [Floyd, 2006]. Cuando los sistemas aumentan en tamaño la elaboración de estas tablas y circuitos puede llegar a ser inviable. En este caso esta técnica deja de ser aconsejable. Por otro lado, existe un formato estándar de intercambio de diseño electrónico (EDIF, Electronic Design Interchange Format) independiente de los fabricantes [EDIF, 2000]. El formato EDIF puede usarse para el intercambio de esquemáticos, pero los sistemas están descritos en modo de texto. Tanto Xilinx como Altera permiten introducir diseños en formato EDIF. Altera genera el formato EDIF desde otras formas de descripción de su propio entorno. En cambio, Xilinx solo genera el formato propio NGC (Native Generic Database); esto es así para mejora el rendimiento del flujo de diseño y optimizar el uso de sus circuitos. El formato estándar EDIF es de uso limitado en el intercambio de esquemáticos, y Xilinx obliga a diseñar los esquemáticos con su propio editor de circuitos. Esto hace que un circuito esquemático editado sobre una herramienta de diseño de un fabricante de FPGA no sea exportable a la herramienta de otro fabricante; a menos que se genere el formato EDIF, que no siempre es posible. En ese caso, si se cambiase de fabricante de FPGA se debe rediseñar el sistema en la nueva herramienta. Finalmente, pueden usarse herramientas de diseño de empresas, que no son fabricantes de FPGA. Estas desarrollan entornos que soportan la edición de esquemáticos para diversos fabricantes de FPGA; pero estas herramientas no son gratuitas [Active-HDL, 2014; Synplify Pro, 2014]. 2.5.2 Los lenguajes de descripción hardware En la década de los años ochenta, aparecen los lenguajes de descripción hardware (HDL, Hardware Description Language). Estos lenguajes permiten describir sistemas digitales usando texto, cosa que facilita su diseño y modificación. Por medio de una
Metodologías de diseño de redes neuronales sobre dispositivos digitales programables para procesado de señales en tiempo real Universidad de Las Palmas de Gran Canaria 49 En cuanto a las herramientas de diseño estándar de Xilinx y Altera se puede hacer una comparación cualitativa. La herramienta de diseño de Xilinx es tradicionalmente más compleja y difícil de manejar, pero más versátil y potente; tiene tiempos de compilación mayores y dispone de utilidades que permiten una precisa estimación del consumo de potencia. Por otro lado, su equivalente de Altera es más fácil de manejar y de uso intuitivo, pero menos potente y flexible. Cualquier proyecto puede realizarse con cualquiera de los dos principales fabricantes, pero se puede afirmar que Altera es más apropiado para el uso docente o académico; mientras que Xilinx es preferido en tareas de desarrollo e investigación. 2.5.6 Otras empresas y entornos académicos Existen compañías que crean software no gratuito que puede usarse para diseñar en FPGA para diferentes fabricantes. La empresa Synopsys ofrece la utilidad Synplify en diferentes modalidades [Synplify, 2014]. Este entorno de diseño permite elegir entre los fabricantes de FPGA: Xilinx, Altera, Lattice, Atmel, Microsemi y Achronix. Para usar esta herramienta se necesita pagar un canon, aunque puede ser usada en forma de evaluación. Este sistema, aunque más caro, permite la portabilidad del diseño para los fabricantes que tiene habilitado. Como se puede compilar el diseño para cada uno de los fabricantes es posible comparar las prestaciones; sin necesidad de usar el entorno de cada fabricante por separado. La compañía National Instruments ha desarrollado LabView (Laboratory Virtual Instrumentation Engineering Workbench) que es un entorno donde se diseña de forma visual y gráfica [LabView, 2015]. Para su uso hay que pagar una licencia, aunque se puede solicitar su evaluación. Se emplea para diseñar sistemas de instrumentación, control, procesado de señal y comunicaciones; admite gran cantidad de equipamiento externo y puertos de entrada-salida. Esta herramienta sobrepasa el diseño para FPGA porque cubre una gran cantidad de equipamiento de las áreas anteriores. Solo soporta las FPGA de Xilinx. Los diseños se pueden introducir usando VHDL, Verilog y de forma esquemática. Este fabricante muestra como una ventaja el evitar el uso de lenguajes tipo HDL en modo de texto; esto no es necesariamente una ventaja, más bien puede ser un inconveniente. La descripción gráfica de un circuito puede ser más difícil de
Tesis Doctoral Universidad de Las Palmas de Gran Canaria 50 crear y modificar que su equivalente en código HDL. Si bien el profano debe aprender el HDL elegido, también debe aprender a describir de forma gráfica los circuitos en LabView. Se debe insistir en que la descripción gráfica para LabView no coincide con la edición del esquemático, aunque se parece. Además el código HDL es estándar y portable a otros fabricantes, mientras que la descripción gráfica es particular para National Instruments, y solo válida para los dispositivos de Xilinx que soporte LabView. Entonces puede ser conveniente usar el software de Xilinx, que puede llegar a ser gratis, tanto su herramienta estándar de diseño, como su entorno gráfico de diseño System Generator sobre Simulink. El uso de LabView puede justificarse si el diseño de la FPGA se integra en un sistema mayor e interdisciplinar que aprovecha las ventajas globales de LabView. Una particularidad de LabView al compilar el diseño de la FPGA es poder usar un compilador: tipo local, tipo servidor o en la “nube” a través de la red. En cualquier caso el compilador no hace otra cosa que usar el propio de Xilinx, en la última forma se evita tener que tener actualizado el compilador de Xilinx, pero una compilación a través de la red puede ser muy lenta por la transferencia de los ficheros; un diseño mediano puede generar tras la compilación varios cientos de Megabytes. Se han desarrollado muchas otras herramientas de ayuda para el diseño en FPGA, algunas gratuitas y otras de pago. Las primeras provienen de entornos académicos o grupos de investigación, las segundas han sido generadas por empresas. Entre las gratuitas cabe destacar Floating-Point to Fixed-Point Toolbox para Matlab [flpfxptoolbox, 2006], que permite el paso de código de punto flotante a punto fijo, y analiza las prestaciones del sistema frente a un error establecido para la representación de punto fijo. Este Toolbox es un ejemplo de herramienta pionera en este campo, aunque ya está en desuso y ha sido ampliamente superado. Su página web no se actualiza desde 2006. 2.5.7 Matlab para FPGA El entorno Matlab se ha convertido en un estándar de hecho, tanto para la comunidad académica y científica, como para la industria. Si bien no es gratuita, en la práctica los diseñadores disponen de ella, entre otros motivos, por el uso de licencias institucionales. Es un entorno habitual para el área de procesado digital de la señal.
Metodologías de diseño de redes neuronales sobre dispositivos digitales programables para procesado de señales en tiempo real Universidad de Las Palmas de Gran Canaria 51 Primeramente cabe destacar Filter Design HDL Coder de Matlab que tiene la capacidad de generar el hardware necesario para el diseño de filtros [Filter Design HDL Coder, 2014]. Permite obtener la descripción del filtro en VHDL o Verilog en punto fijo, este código es portable a todos los fabricantes de FPGA. También genera las señales necesarias de entrada para la simulación y verificación del filtro. La utilidad Fixed-Point Designer de Matlab permite manejar tipos de datos y herramientas para el desarrollo de algoritmos en punto fijo, usando código de Matlab, modelos de Simulink o el editor de diagramas de flujo Stateflow [Fixed-Point Designer, 2014]. Esta herramienta propone automáticamente el número de bits y el método de redondeo, que también se pueden especificar manualmente. Las simulaciones permiten observar el efecto del rango y la precisión. En Matlab cabe destacar la utilidad HDL Coder donde los sistemas se describen usando funciones de Matlab, modelos de Simulink o el editor de diagramas de flujo Stateflow [HDL Coder, 2014]. El código generado puede ser en VHDL o Verilog, y es totalmente portable y sintetizable; además tiene un flujo de trabajo integrado con Altera y Xilinx, tanto para diseños en FPGA como en ASIC. Esta herramienta automatiza y facilita el flujo del diseño, permite control de la arquitectura y de los retardos críticos; además, da una estimación de los recursos hardware necesarios. Permite también comparar la respuesta del código HDL generado con el modelo inicial de Simulink. La herramienta HDL Coder es relativamente nueva, la primera versión data de marzo de 2012. Finalmente Matlab ofrece un verificador del diseño realizado en VHDL o Verilog [HDL Verifier, 2014]. Este sistema permite comunicar las señales de Matlab con la placa que contiene la FPGA de Altera o Xilinx, hace funcionar la FPGA en tiempo real y compara las señales obtenidas con las del modelo de Matlab. En resumen, con HDL Coder y HDL Verifier se facilita el diseño de sistemas en FPGA o ASIC; acortando el tiempo de la descripción, simulación y verificación del sistema. Esto se puede hacer generando un código portable a cualquier fabricante; o generando un código optimizado para dispositivos de Altera o Xilinx. En este último caso se puede programar los dispositivos desde Matlab y realizar la verificación del diseño.
Tesis Doctoral Universidad de Las Palmas de Gran Canaria 52 En esta tesis se usa System Generator, que es la herramienta de Xilinx que funciona sobre Simulink. Finalizado el diseño con System Generator se usó el Integrated System Environment de Xilinx, que es la herramienta estándar para FPGA. Se eligieron estas herramientas por la donación de licencias que hace Xilinx a los entornos académicos, por ser herramientas que permiten el diseño rápido y flexible, por aprovechar las ventajas de Matlab y Simulink, por la continuidad de estas herramientas en la página web del fabricante en sus diferentes versiones; y finalmente, por el asesoramiento y gestión de errores que facilita a los diseñadores a través de su página web. Igualmente se podían haber usado las herramientas equivalentes de Altera, pero inicialmente se descartaron por una serie de errores al ejecutar los tutoriales de este fabricante. 2.6 Parámetros de los métodos de diseño Ya a mediados de los años noventa existían multitud de herramientas de diseño, “Otra fuente de confusión es la plétora de herramientas disponibles hoy en día” [Oldfield y Dorf, 1995]. Esto pone de manifiesto la importancia de las herramientas y métodos de diseño para los dispositivos programables. Esta multiplicidad de herramientas se debe a la complejidad de los diseños, y la dificultad para comprobar totalmente su funcionalidad y prestaciones. De hecho, si no se usa la herramienta apropiada, comprobar la funcionalidad de un sistema puede ser más complicado para el diseñador que el propio diseño del sistema. Entonces caben varias preguntas: ¿cuál es el mejor método de diseño?, ¿cómo se pueden medir las prestaciones de un método de diseño? y ¿cómo se pueden comparar las prestaciones de diferentes métodos de diseño? Todos los métodos de diseño pueden caracterizarse por los parámetros que se describen a continuación. Estos pueden servir para contestar a las preguntas anteriores. El coste económico. La herramienta puede tener un coste económico o ser totalmente gratuita. A veces, aun siendo la herramienta de pago, puede conseguirse la
Metodologías de diseño de redes neuronales sobre dispositivos digitales programables para procesado de señales en tiempo real Universidad de Las Palmas de Gran Canaria 53 herramienta como versión de demostración; durante un periodo de tiempo limitado o con prestaciones limitadas. El periodo de aprendizaje del diseñador. Debe considerarse si el diseñador, o equipo de diseño, necesitan un periodo para aprender el entorno; o por el contrario ya lo conocen y pueden empezar el diseño de forma inmediata. El soporte de las herramientas. Se trata de determinar si el entorno de diseño está bien documentado. Para esto deben existir manuales y estar bien ordenados, ser claros y de fácil localización. También es deseable una herramienta de ayuda insertada en la propia herramienta. La actualización del sistema. El entorno debe actualizarse periódicamente: ajustes con el sistema operativo, soporte, documentación, funcionalidades, fabricantes y dispositivos soportados. Si una herramienta de diseño no actualiza las FPGA que soporta pronto quedará con dispositivos antiguos y caerá en desuso. Los sistemas operativos sobre los que funciona. Los sistemas operativos habituales en estos casos son Windows, Linux y Mac. Puede ser que la misma herramienta esté disponible para varios de ellos. Los continuos cambios y versiones de un sistema operativo obligan a la actualización de la herramienta, o puede caer igualmente en desuso. La ayuda ante errores. Esto es especialmente importante ante errores inesperados, que el diseñador no sea capaz de solventar con la documentación existente. Por ejemplo, Altera y Xilinx tienen un sistema de ayuda en línea en sus páginas web. En este caso el diseñador describe y documenta la incidencia convenientemente, en el plazo de uno o dos días recibe una respuesta personal, y se abre una comunicación entre el diseñador y un asistente, hasta la resolución del problema. Al final el diseñador contesta una encuesta de satisfacción. También existen foros o listas de preguntas frecuentes, donde quizás pueda solventarse el error de forma rápida. La portabilidad entre fabricantes y dispositivos. La máxima portabilidad se refiere a que el diseño puede llevarse a cualquier dispositivo de cualquier fabricante. Por el contrario puede estar restringido para uno o varios dispositivos de un único fabricante,
Tesis Doctoral Universidad de Las Palmas de Gran Canaria 54 tratando de aprovechar sus peculiaridades. La portabilidad permite comparar las prestaciones del diseño para diferentes FPGA. La flexibilidad del diseño. Un diseño es flexible si cuando se cambia alguno de sus parámetros o especificaciones se puede rediseñar fácilmente. El tiempo de diseño. Se refiere a la facilidad para describir el diseño, realizando diferentes modificaciones, hasta conseguir el sistema final. El tiempo de compilación. Se trata de evaluar si las diferentes compilaciones son rápidas, y si cuando se modifica solo una parte del diseño la recompilación es parcial y no del sistema completo. El tiempo de simulación. Se trata de evaluar la existencia y prestaciones de diferentes tipos de simuladores, su facilidad de uso, rapidez y visualización de las formas de onda. Básicamente, la etapa de simulación debe comprobar la funcionalidad total del sistema y verificar la máxima velocidad de funcionamiento del diseño. El tipo de reconfiguración del sistema. Una vez que se ha realizado la programación de la FPGA y se procede a cambiar una parte del diseño, la reconfiguración de la FPGA puede ser total o parcial. En el caso de reprogramación parcial la parte del diseño que no ha sufrido cambio puede seguir funcionando mientras se configura la parte modificada. Obviamente, está técnica está íntimamente ligada al tipo de dispositivo. La seguridad y privacidad del diseño. Una vez que se ha programado la FPGA se trata de que su configuración no pueda ser leída y por tanto el diseño no pueda ser copiado. Las diferentes tecnologías permiten diferentes técnicas para proteger el diseño [Cofer y Harding, 2006; Maxfield, 2004]. Interactuación con otras herramientas. Se trata de determinar si la herramienta puede comunicarse con otros programas, por ejemplo: simuladores, editores de forma de onda, programas matemáticos, etc. Esto supone una facilidad para evaluar las prestaciones y funcionalidad del sistema. En definitiva, es el diseñador o el equipo de diseño el que debe elegir la herramienta conveniente; en función de las características anteriores, de su experiencia previa y de las necesidades del diseño. Los parámetros enumerados
Metodologías de diseño de redes neuronales sobre dispositivos digitales programables para procesado de señales en tiempo real Universidad de Las Palmas de Gran Canaria 55 anteriormente se refieren a características que existen durante la realización del diseño, hasta justo el momento en el que entra en funcionamiento. 2.7 Factor de calidad de un diseño: área, velocidad y potencia Una vez se ha finalizado el diseño, pueden proponerse parámetros que permitan evaluar la calidad del sistema. Estos parámetros también permiten compararlo con otras implementaciones, realizadas con diferentes métodos o diferentes dispositivos. Estos parámetros son las prestaciones físicas del diseño: - el área, - la potencia consumida, - y la velocidad del sistema. El concepto de área se refiere a la cantidad de recursos ocupados. Esto da idea del tamaño físico del diseño y del tamaño mínimo requerido para la FPGA. Un diseño será tanto mejor cuantos menos recursos hardware necesite, y así puede usarse una FPGA más pequeña y barata. Si el tipo de FPGA viene dado por otros factores, entonces el ahorro de área dejará recursos disponibles para otras funciones o futuras ampliaciones. Cuando se esté usando una determinada FPGA la comparación de área entre diferentes diseños es una tarea clara de realizar. El problema aparece cuando se quiere comparar diseños de fabricantes diferentes, donde las unidades de circuitos lógicos son distintas y reciben nombres distintos. En este caso, la comparación de área se puede reducir al coste económico de la compra de esos circuitos, si se usan distintas tecnologías. Para la misma tecnología la comparación de área se podría hacer estimando el número de transistores o de puertas equivalentes, pero este dato casi nunca está disponible, de hecho las utilidades que lo calculan han sido eliminadas de las herramientas en años recientes. Esta eliminación puede deberse a que en la industria no tiene interés su cálculo; y aunque puede tener interés científico y académico su estimación no es fácil. Algunos autores estiman y comparan el coste de los recursos de conexión necesarios; es decir, cableado interno de la FPGA, pero las conexiones físicas no tienen coste computacional. El aumento del número de conexiones se traduce en un aumento
Tesis Doctoral Universidad de Las Palmas de Gran Canaria 56 de la potencia, al tener que conectar las señales a más líneas conductoras y otros bloques de lógica. Por otro lado, se traduce en un aumento de los retardos del circuito. En resumen, el aumento del cableado interno se traduce en un aumento de la potencia y del retardo, claramente las otras dos prestaciones físicas. Otro elemento del área, no típicamente usado, es el uso de pines de entradasalida. Igual que los recursos de interconexión su uso se traduce en consumo de potencia y retardo, sin carga computacional. El número de pines de entrada-salida del sistema viene dada por la resolución numérica necesaria en el diseño, y su aumento se traduce en una mayor necesidad de recursos hardware para la computación. Un diseño en una FPGA puede colapsarse por falta de lógica programable, de recursos de conexión o falta de pines de entradas-salida. Un concepto ligado al uso del área es el concepto de granularidad. La granularidad se refiere al tamaño de los circuitos lógicos de la FPGA. Así las FPGA pueden tener granularidad fina, media o gruesa. Una FPGA de grano fino tiene elementos lógicos pequeños; una de grano grueso tiene elementos lógicos grandes, con mayor número de bits de entrada-salida en sus operadores. A modo de ejemplo, puede pensarse en sumadores, de pocos o muchos bits respectivamente. En el primer caso si se quiere realizar una suma de muchos bits se usarán varios sumadores conectados convenientemente; en el segundo caso se puede realizar con solo un sumador. Las prestaciones de retardo y consumo en el segundo caso son mejores que en el primero. La primera solución es más flexible y solo ocupa los recursos estrictamente necesarios, los elementos sobrantes quedan libres para otros usos. En el segundo caso el sumador usado puede tener más bits de los necesarios, y quedan entradas-salidas sin usar; no se aprovecha toda la funcionalidad del sumador, y la parte no usada no puede ser reutilizada. Entonces dos diseños distintos de un mismo operador, y diferente número de bits, pueden ocupar la misma área si la granularidad de la FPGA es gruesa. Solo se puede comparar el área ocupada sobre las FPGA que tengan la misma granularidad. Si tienen granularidad distinta la comparación es difícil y hay que tener en cuenta el tamaño de los bloques. En conclusión, comparar el área es trivial si diferentes versiones de un diseño se compilan sobre el mismo dispositivo; cambiar de fabricante o de dispositivo complica la comparación en términos de área.
Metodologías de diseño de redes neuronales sobre dispositivos digitales programables para procesado de señales en tiempo real Universidad de Las Palmas de Gran Canaria 57 El segundo parámetro es la potencia consumida. Básicamente hay dos tipos de potencia, la de corriente continua o estática, y la dinámica. La primera se produce por el solo hecho de conectar la FPGA a las fuentes de alimentación, se debe a las corrientes de fuga a través de la FPGA; esta potencia depende de la tecnología de la FPGA. En cuanto se conectan las señales de entrada aparece la componente dinámica, también depende de la tecnología, alguna tecnologías solo producen consumo de corriente cuando las señales cambian; es decir, en el flanco de subida o bajada. En este último caso la potencia dinámica depende directamente de la frecuencia de operación. Las herramientas de los principales fabricantes incluyen estimadores de potencia. Estos analizadores de potencia también estiman la temperatura de funcionamiento de la FPGA; pero para ello debe establecerse la temperatura del ambiente, y el tipo de disipación de que dispone la FPGA. La estimación de potencia es detallada para cada bloque del diseño y para los pines de entrada-salida; también se indica para cada valor de alimentación de la FPGA. Un diseño será tanto mejor cuanto menor sea la potencia consumida. La potencia se invierte en el propio funcionamiento de la FPGA y en pérdidas en forma de calor. Una disminución de la potencia consumida se traduce en una mayor autonomía si la FPGA se alimenta con baterías. Dicho de otra forma, si se disminuye la potencia consumida, para una determinada autonomía, se puede disminuir las dimensiones de la batería; esto hace disminuir el peso y mejora la portabilidad física. El tercer parámetro físico es la velocidad a la que puede funcionar el diseño. Por ejemplo, si se trata de un filtro, sería la tasa máxima de muestras que puede soportar en la entrada (muestras por segundo), y vendría dada por el máximo valor de la frecuencia de reloj asociado. Normalmente la velocidad del diseño se indica con el valor de su frecuencia máxima, casi todos los diseños son sistemas secuenciales. También la velocidad se podría indicar por el periodo de la frecuencia máxima, que sería un valor mínimo. Si el sistema es totalmente combinacional; es decir, no existe frecuencia de reloj, la velocidad vendría dada por el retardo máximo entre las entradas-salidas; es deseable que este retardo sea lo más pequeño posible. En el caso de sistemas secuenciales puede proponerse para medir la velocidad el periodo mínimo. Entonces ambos casos, secuenciales y combinacionales, pueden compararse directamente por ser tiempos que se expresan en segundos.
Tesis Doctoral Universidad de Las Palmas de Gran Canaria 58 En la etapa de diseño puede haber restricciones de área, potencia y velocidad. El diseño debe cumplir estas restricciones; y el diseñador debe procurar minimizar tanto las que estén restringidas, como las que no. La cuestión es cómo comparar dos diseños con la misma funcionalidad; que incluso pueden haber sido realizados con métodos distintos. Un primer método puede ser una representación cartesiana con tres semiejes positivos como en la figura 2.9, donde el mejor diseño será el que tenga la menor distancia al origen. Este tipo de representación puede dar una idea intuitiva de las prestaciones de diferentes diseños. Figura 2.9. Representación en semiejes del área, potencia y retardo. Otro método para comparar diseños podría ser mediante una expresión matemática, cómo la fórmula 2.1; el resultado es un factor de calidad que será tanto mayor cuanto mejor sea el diseño. Otra representación de los parámetros del diseño puede ser mediante un prisma triangular truncado como en la figura 2.10, donde con cada arista vertical se representa el valor de un parámetro. El diseño será tanto mejor cuanto menor sea el volumen de la figura o la altura de su punto medio. Otra forma de comparar prestaciones sería mediante el uso de un diagrama en tela de araña, como muestra la figura 2.11. C= 1 Área·Potencia·Retardo (2.1) 0 1 2 3 40 1 2 3 4 0 1 2 3 4 Área Potencia Retardo
Metodologías de diseño de redes neuronales sobre dispositivos digitales programables para procesado de señales en tiempo real Universidad de Las Palmas de Gran Canaria 65 coeficientes de la NN en formato de punto flotante. La NN queda especificada según la funcionalidad requerida. - Modelado en punto fijo de la NN. La arquitectura y los coeficientes obtenidos anteriormente constituyen la llamada “regla de oro”, junto a la funcionalidad de la NN. A partir de este momento se precisa pasar la aritmética de punto flotante a punto fijo. Esto es así por la idoneidad del formato de punto fijo para ser implementado en dispositivos digitales. La cuestión es buscar el mínimo número de bits que mantenga la funcionalidad de la NN. La disminución del número de bits, aparte de minimizar el área ocupada, disminuye la potencia consumida y aumenta la velocidad de respuesta. En este punto es importante la elección de la herramienta y del método de diseño. El método debe permitir comprobar la total funcionalidad de la NN mediante su simulación. - Implementación en la FPGA. En la última fase se implementa el diseño en el dispositivo digital programable elegido. Las herramientas de diseño permiten obtener las prestaciones físicas de área, potencia y velocidad. Finalmente se puede configurar la FPGA elegida y comprobar su funcionamiento. Figura 3.1. Esquema general de la metodología experimental.
Tesis Doctoral Universidad de Las Palmas de Gran Canaria 66 La tesis se centra sobre los últimos tres bloques, que aparecen sombreados en la figura 3.1. Esto se debe a que estas etapas son las que tratan expresamente la implementación de las NN sobre una FPGA. Dicho de otra forma, una vez determinadas las entradas de la NN y la funcionalidad deseada, estas etapas son las que consiguen trasladar el diseño a un circuito digital. El preprocesado y la parametrización son opcionales, su uso depende del escenario y de las características de la base de datos usada. Como resumen, puede observarse la figura 3.2, donde confluyen los diferentes conceptos sobre la metodología propuesta. Figura 3.2. Confluencia de conceptos en la metodología experimental. 3.2 Las bases de datos Para el modelado de una NN se precisa de una base de datos que cumpla una serie de condiciones; entre ellas cabe destacar que debe componerse de un conjunto representativo de elementos, debe estar convenientemente etiquetada y ser accesible mediante programas informáticos. Por otro lado, pueden ser gratuitas o libre difusión, o de pago. En esta tesis se usan bases de datos gratuitas, bien por ser de libre difusión, fruto de colaboraciones con otras instituciones o ser generadas de forma sintética. En los apartados posteriores se describen las bases de datos usadas, una para cada escenario. Las hay naturales y sintéticas, en cualquier caso etiquetadas por el especialista correspondiente. Algunas proceden de señales biológicas; otra de parámetros físicos de la atmósfera terrestre; y una de ellas de señales usadas por el hombre. Los cuatro escenarios usados son: - clasificación de la palmera pejibaye atendiendo a sus marcadores moleculares,
Metodologías de diseño de redes neuronales sobre dispositivos digitales programables para procesado de señales en tiempo real Universidad de Las Palmas de Gran Canaria 6 7 - clasificación de pulsos de electrocardiograma, - predicción de temperatura, - y ecualizador para señal binaria con ruido. 3.2.1 La palmera pejibaye La palmera pejibaye (Bactris gasipaes Kunth) es una especia nativa de la América tropical. Sus frutos y brotes tiernos se usan como alimento humano y para cebar al ganado; además, el tronco de la palmera adulta se usa como madera. La base de datos usada procede del Banco de Germoplasma de la Universidad de Costa Rica, que está constituida por los marcadores moleculares de amplificación aleatoria del ácido desoxirribonucleico polimórfico (RAPD, Random Amplification of Polymorphic Deoxyribonucleic acid). Las muestras están clasificadas en seis razas primitivas: utilitis, tuira, pará, yurimagua, putumayo y tembé. Se desarrolló un sistema previo de reconocimiento automático para esta base de datos en [Travieso et al., 2008]. Los objetivos de este sistema fueron dos; por un lado, comprobar la viabilidad de la clasificación usando marcadores moleculares; y por otro, determinar el patrón con el mínimo número de atributos para poder clasificar las razas de pejibaye. La estructura de la base de datos se detalla en la tabla 3.1. Esta consta de las seis razas primitivas, con 13 elementos de cada una de ellas; por tanto hay 78 elementos convenientemente etiquetados con un código. Cada elemento dispone de 10 parámetros, que son los marcadores empleados para la clasificación. Durante la fase de testeo de la NN se obtuvo un 100% de acierto para cada clase. Tabla 3.1. Estructura de la base de datos para la palmera pejibaye. Clase Denominación Código Número de elemento Clase 1 Costa rica - utilitis c 01-13 Clase 2 Tuira t 14-26 Clase 3 Pará p 27-39 Clase 4 Yurimagua y 40-52 Clase 5 Putumayo u 53-65 Clase 6 Bolivia – tembé b 66-78
Tesis Doctoral Universidad de Las Palmas de Gran Canaria 68 3.2.2 Pulsos electrocardiográficos Tras el proceso de búsqueda de una base de datos electrocardiográfica se optó por la MIT-BIH (Massachusetts Institute of Technology-Beth Israel Hospital) Arrhythmia Database. Esta base de datos de arritmias está compuesta por 48 registros de electrocardiograma (ECG, Electrocardiogram) de 30 minutos cada uno, y contiene una amplia representación de tipos de cardiopatías [MIT-BIH Arrhythmia Database, 2014]. Esta base de datos se encuentra dentro de un conjunto más amplio disponible en el MIT-BIH Database Distribution [MIT-BIH Database Distribution, 2014]. La MIT-BIH Arrhythmia Database dispone de 19 tipos de cardiopatías diferentes, aparte de los pulsos normales; además, incluye 15 tipos de ritmos cardiacos convenientemente etiquetados. Estas anotaciones permiten la correcta identificación de pulsos y ritmos cardiacos. Los registros de esta base de datos fueron obtenidos entre los años 1975 y 1979; corresponden a 47 personas, 25 varones entre 32 y 89 años, y 22 mujeres entre 23 y 89 años. Los registros fueron tomados a 360 muestras por segundo. Se realizó una conversión analógica a digital con 11 bits, el rango de la señal estaba entre ±5 mV. Los valores de las muestras, por tanto, se codificaron con los valores de 0 a 2047 inclusive, donde el valor 1024 corresponde a 0 voltios. Se determinó la detección de los 7 tipos de pulsos más frecuentes [Chadnani, 2011], que se muestran en la figura 3.3. Los pulsos usados son: Latido Normal (N), Bloqueo de Rama Izquierda (L), Bloqueo de Rama Derecha (R), Latido Auricular Prematuro (A), Contracción Ventricular Prematuro (V), Fusión de Latido Ventricular y Normal (F) y Latido Lento (/).
Metodologías de diseño de redes neuronales sobre dispositivos digitales programables para procesado de señales en tiempo real Universidad de Las Palmas de Gran Canaria 69 Latido Normal (N) Bloqueo de Rama Izquierda (L) Bloqueo de Rama Derecha (R) Latido Auricular Prematuro (A) Contracción Ventricular Prematuro (V) Fusión de Latido Ventricular y Normal (F) Latido Lento (/) Figura 3.3. Tipos de pulso elegidos para la detección. Inicialmente se realiza un preprocesado. Esta fase tiene como objetivo la reducción del ruido, de la interferencia de la red eléctrica y de las variaciones de la línea de base. Para ello se realiza un filtrado usando la transformada Wavelet discreta y un filtrado clásico. La transformada Wavelet es útil principalmente en la reducción del ruido y la interferencia de la red; por otro lado, el filtrado clásico es usado para eliminar las variaciones de la línea de base. La familia Wavelet utilizada en esta fase es la daubechies3, con un nivel 3. 050 100 150 200 250 300 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 050 100 150 200 250 300 -0.4 -0.3 -0.2 -0.1 0 0.1 0.2 0.3 0.4 050 100 150 200 250 300 -0.6 -0.5 -0.4 -0.3 -0.2 -0.1 0 0.1 0.2 0.3 0.4 050 100 150 200 250 300 -0.5 -0.4 -0.3 -0.2 -0.1 0 0.1 0.2 0.3 0.4 0.5 050 100 150 200 250 300 -1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 050 100 150 200 250 300 -0.3 -0.2 -0.1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 050 100 150 200 250 300 -1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4
Tesis Doctoral Universidad de Las Palmas de Gran Canaria 70 De cada uno de los 7 tipos de pulso se tomaron 800 de la base de datos, teniendo en total 5.600 pulsos. Esto se realizó con herramientas de detección del complejo QRS, que permitieron localizar los pulsos cardiacos. Una vez localizados, se extrajeron y catalogaron, aprovechando el etiquetado de la base de datos. Tras el preprocesado se tienen 5.600 pulsos caracterizados por 77 parámetros. Se dispuso la mitad de los pulsos para entrenamiento de la NN y la mitad para el testeo; es decir, 400 pulsos para cada fase. Seguidamente se realiza un procesado con la intención de reducir el número de parámetros por pulso, ya que una NN de 77 entradas es relativamente grande. La reducción del número de parámetros se realizó con el análisis de componentes independientes (ICA, Independent Components Analisys). De esta forma se consiguió reducir el número de parámetros hasta 15. Finalmente se realizó la normalización de estos parámetros y las entradas quedaron restringidas al intervalo [-1,+1]. En el testeo en punto flotante se alcanzó una tasa de acierto del 97,21% con 30 neuronas en la capa oculta. O sea, la NN tiene 15 entradas, 30 neuronas en la capa oculta y 7 salidas; se podría denotar como 15-30-7. Las funciones usadas fueron tipo tansig en la capa intermedia y purelin en la salida. Conviene resaltar que se tienen 400 pulsos de cada tipo para entrenar y 400 para testear, con 15 parámetros para cada pulso. La matriz de confusión obtenida en este testeo es la mostrada en la tabla 3.2. De esta forma ya se tiene la regla de oro para este caso, los valores de los coeficientes de la NN obtenida en el entrenamiento se guardan para la implementación en la FPGA. Tabla 3.2. Matriz de confusión obtenida en el testeo de punto flotante para ECG. N L R A V F / Éxito(%) N 400 000000 100 L 0 40000000 100 R 1 0 394 3 2 0 0 98,50 A 4 0 6 375 3 12 0 93,75 V 0 1 0 10 380 7 2 95 F 0 0 0 9 15 374 2 93,50 / 0 00001399 99,75 Total 97,21
Metodologías de diseño de redes neuronales sobre dispositivos digitales programables para procesado de señales en tiempo real Universidad de Las Palmas de Gran Canaria 71 Conviene resaltar que el sistema usado es de tipo balanceado; o sea, tiene el mismo número de pulsos para cada caso. Esto quiere decir que en el entrenamiento se usaron 400 pulsos normales, y 400 para cada tipo de los seis patológicos. Estas cantidades se van a repetir en el testeo. 3.2.3 Temperatura La tercera base de datos usada corresponde con la temperatura de una estación meteorológica. Esta se encuentra en la ciudad de Turrialba y pertenece a la Universidad de Costa Rica. Se dispuso de la temperatura desde mediados del año 2007 hasta mediados de 2010, tomada a intervalos de media hora. En ese intervalo de tiempo la temperatura fluctuó entre 11,9 y 31,8 0C, con un valor medio de 21,6 0C. En la figura 3.4 se observan las muestras de la primera semana de la base de datos; además se marca la temperatura media del periodo de tiempo de la base de datos. El objetivo fue implementar un predictor de temperatura mediante una NN. Para entrenar la NN se usó el año 2008 y se testeó con el año 2009. Se consiguió predecir la señal con un valor medio del error en valor absoluto de 0,317 0C. Figura 3.4. Temperatura de la primera semana de la base de datos y su valor medio. 3.2.4 Señal binaria con ruido La última base de datos es sintética [Pérez et al., 2013]. Para ello se usó una señal binaria unipolar tipo NRZ, inicialmente de 1 kilobit por segundo. A esta señal se le sumó ruido blanco gaussiano aditivo. Para procesar la señal se consideraba muestreada con 10 kHz, lo que daba 10 muestras por bit. La relación señal a ruido 050 100 150 200 250 300 18 20 22 24 26 28
Tesis Doctoral Universidad de Las Palmas de Gran Canaria 72 inicial era de +10 dB. La señal usada era de 2.000 bits generada de forma aleatoria. Finalmente, para comprobar las prestaciones de la NN, se testeó con una relación señal a ruido entre -5 y +20 dB. En la figura 3.5 se representan 20 bits de la base de datos citada, para una relación señal a ruido de +10 dB. En la señal superior se representa la señal binaria original, y en la inferior la señal afectada por el ruido. Figura 3.5. a) Señal binaria original, b) señal con una relación señal a ruido de +10 dB. El objetivo en este escenario fue diseñar un ecualizador mediante una NN que disminuyera el ruido en la salida. Dado que el proceso de entrenamiento fue realizado en su totalidad por el autor de esta tesis, y dada su relativa complejidad, se describe en el apéndice de este documento. 3.2.5 Características de las bases de datos En la tabla 3.3 se muestran las principales características de las bases de datos descritas anteriormente. Tabla 3.3. Características de las bases de datos. Pejibaye ECG Temperatura Señal binaria con ruido Tipo numérico Real Real Real Real Dimensionalidad Multidimensional Unidimensional Unidimensional Unidimensional Origen Natural Natural Natural Sintética Aleatoriedad Aletoria Pseudoperiódica Pseudoperiódica Aletoria Nivel de ruido Fijo Variable Fijo Variable Etiquetado Especialista externo Especialista externo No etiquetada Etiquetado propio Coste Gratuito Gratuito Gratuito Gratuito a) b)
Metodologías de diseño de redes neuronales sobre dispositivos digitales programables para procesado de señales en tiempo real Universidad de Las Palmas de Gran Canaria 73 3.3 Preprocesado y parametrización El preprocesado consiste en la reducción de ruido y distorsión de la señal, normalmente se realiza por filtrado. En resumen, se trata de extraer la componente de señal útil y rechazar las aportaciones indeseadas de que disponga la señal. La parte indeseada de señal puede generarse en el momento de su captación o generación, al almacenarse o realizar un tratamiento posterior. La etapa de preprocesado será de uso obligado u opcional, según el caso. De la parametrización de la señal, una vez preprocesada la base de datos, se puede decir que es una etapa igualmente opcional. A veces las propias muestras de la base de datos son apropiadas para ser la entrada de la NN; en otras ocasiones, la señal no es apropiada y debe sufrir una transformación. Dicho de otra forma, es necesaria cuando los resultados iniciales son muy pobres o se consiguen sustanciales mejoras en la NN. En general, la existencia de preprocesado y parametrización, dependerá del escenario, de la base de datos, y de la función que se espera que realice la NN. En la tabla 3.4 se indica la existencia de estos procesos en las cuatro bases de datos usadas. Tabla 3.4. Uso del preprocesado y parametrización en los distintos escenarios. Pejibaye ECG Temperatura Señal binaria con ruido Preprocesado No Sí No No Parametrización No Sí No No 3.4 Modelado en punto flotante Debe destacarse, que llegados a este punto, ya no importa la naturaleza de la base de datos, ni el preprocesado y parametrización previas; dicho de otra forma, en adelante se tratarán números y el diseñador puede abstraerse de su significado físico. Una vez determinada la señal de entrada en la NN y la funcionalidad deseada, el siguiente paso es determinar la arquitectura de la NN. Para esto hay que fijar una serie de parámetros de la arquitectura, que se describen a continuación. - Número de entradas. Vendrá dado por el número de parámetros si se trata de una clasificación, o del número de muestras de entrada si opera como un predictor.
Tesis Doctoral Universidad de Las Palmas de Gran Canaria 74 - Número de salidas. Viene especificado por la naturaleza del problema. - Número de capas. Al menos es necesaria una sola capa intermedia, también llamada oculta. Se puede comprobar las prestaciones de la NN en función del número de capas. En la mayoría de las aplicaciones es suficiente con una sola capa intermedia; es decir, una configuración de tres capas. - Número de neuronas en cada capa. En la capa de salida el número de neuronas es igual al número de salidas. El número de entradas y salidas viene dada por el problema a resolver. Donde es posible variar el número de neuronas es en la capa (o capas) intermedias, lo que puede afectar a las prestaciones de la NN. - Función de transferencia usada. Normalmente se usa una de las indicadas en la tabla 2.1. Puede usarse el mismo tipo de función en todas las neuronas; es decir, para todas las capas; aunque a veces, la naturaleza del problema sugiere formas distintas para la capa de salida. Lo normal es usar el mismo tipo de función para todas las neuronas de una misma capa. El diseñador debe probar diferentes configuraciones. Mediante el proceso de entrenamiento y testeo se determina el valor de los coeficientes de la NN. En esta tesis se usa el Neural Network Toolbox [Neural Network Toolbox, 2014] y el Neural Network Time Series Tool [ntstool, 2015], ambos de Matlab. El motivo es que Matlab se ha convertido en un estándar, y todo el diseño de la NN para la FPGA opera sobre Matlab, en gran parte sobre su entorno de diseño gráfico Simulink. La etapa de modelado de punto flotante, de forma detallada, se muestra en la figura 3.6.
Metodologías de diseño de redes neuronales sobre dispositivos digitales programables para procesado de señales en tiempo real Universidad de Las Palmas de Gran Canaria 81 programación. Este fichero es el que describe el conexionado interno en la FPGA, para que realice la función del diseño. - Programación de la FPGA. La configuración o programación de la FPGA se hace conectado el ordenador a la FPGA, y ejecutando el proceso de programación. La FPGA está en una placa de circuito impreso donde existe un conector para la programación, este está conectado a los pines específicos de programación. Actualmente es habitual el uso del Bus Universal Serie (USB, Universal Serial Bus). - Comprobación del funcionamiento. La FPGA está en condiciones de realizar su operación. Antes de ponerla a funcionar es recomendable comprobar su funcionamiento en un laboratorio mediante el uso de la correcta alimentación e instrumentos electrónicos apropiados: generadores de señal, osciloscopios, analizadores lógicos, analizadores de espectro, etc. Debe ponerse de relieve que a las entradas en las simulaciones en el flujo de diseño de la FPGA se les llama testbench (banco de pruebas). Para el de la NN, el testbench debe generarse con los datos obtenidos de la base de datos, o después del preprocesado y parametrización si se hicieron. Por otro lado, durante todo el flujo, las herramientas generan ficheros de tipo report, donde se informa de las características y estado del diseño. 3.7 Herramienta y flujo de diseño Al llegar a este punto, se han especificados los escenarios sobre los que se va a probar la metodología y sus bases de datos asociadas. Igualmente, se ha planteado la metodología de forma global, en lo que respeta a la aritmética de punto flotante y punto fijo. Por último, se ha fijado el uso de las FPGA como tecnología. Queda por determinar los programas de diseño y su flujo de diseño; es decir, el método de diseño sobre la FPGA. En general, el método de diseño elegido, debe garantizar algunos de los parámetros descritos en el capítulo segundo. A continuación se vuelven a enumerar, comentándolos convenientemente.
Tesis Doctoral Universidad de Las Palmas de Gran Canaria 82 El coste económico. Dado que la tesis se centra en un entorno académico las herramientas deben ser gratuitas o poder conseguirse mediante donación. Esto se justifica por la escasez de fondos y abrir la posibilidad a que cualquier miembro de la institución, sobre todo alumnos, lo puedan usar de forma gratuita. El periodo de aprendizaje del diseñador. Si se consiguen ventajas sustanciales por usar un método de diseño, se justifica un periodo de aprendizaje por parte del diseñador. Dicho de otra forma, el tiempo invertido en el aprendizaje se ahorra posteriormente en la fase de diseño; más aún, pueden conseguirse grandes mejoras. Estas mejoras pueden consitir en la comparación de diferentes arquitecturas, la comprobación total de la funcionalidad, el tiempo total del diseño, etc. El soporte de las herramientas. Los programas usados, dado que pueden ser novedosos, deben estar documentados con ficheros de referencia rápida, manual de usuario y tutoriales de aprendizaje. La actualización del sistema. El entorno de diseño debe tener constante actualización. Los sistemas operativos sobre los que funciona. Los programas deben funcionar sobre Windows o Linux, al ser los más habituales. La ayuda ante errores. Cuando aparezcan errores debe haber mecanismos de consulta a los desarrolladores de las herramientas. La portabilidad entre fabricantes y dispositivos. Es deseable, aunque no imprescindible, el poder cambiar de suministrador de FPGA durante el diseño. Lo que sí será posible es el cambio de dispositivos dentro del mismo suministrador, siempre que la FPGA se ajuste a las restricciones del diseño. La flexibilidad del diseño. Este parámetro es especialmente interesante y deseable. Implica poder rediseñarlo fácil y rápidamente, si se cambia alguno de los parámetros del diseño. En este sentido, se permitiría la comprobación de diferentes arquitecturas. El tiempo de diseño y compilación. Deben ser de duración razonable, y que no aumenten excesivamente el tiempo de diseño. Obviamente, debe obtenerse el área ocupada finalmente.
Metodologías de diseño de redes neuronales sobre dispositivos digitales programables para procesado de señales en tiempo real Universidad de Las Palmas de Gran Canaria 83 El tiempo de simulación. Este tiempo debe ser igualmente razonable. Las simulaciones deben permitir comprobar la total funcionalidad del sistema, este punto es especialmente importante. De forma especial, debe generar automáticamente los testbench necesarios para ser usados como señales de entrada. Por otro lado, debe extraerse la velocidad del diseño y la potencia consumida. El tipo de reconfiguración del sistema. Este punto no es crítico en esta tesis, no importa si la FPGA se reconfigura total o parcialmente, dado que no es un objetivo reprogramarla durante su funcionamiento. La seguridad y privacidad del diseño. Este punto no es crítico, aunque las herramientas y los dispositivos disponen de mecanismos para evitar la copia de los diseños. Interactuación con otras herramientas. Es deseable un entorno de diseño compacto, que interactúe con fidelidad con simuladores y los entornos de punto flotante donde se tiene la regla de oro. Tras un periodo de búsqueda y estudio, de diferentes métodos de diseño, se optó por los entornos que los principales suministradores tienen disponibles sobre Simulink de Matlab. Estos programas cumplen con los requisitos enunciados anteriormente y sus características serán expuestas en apartados posteriores. Ambos entornos, de Altera y Xilinx, son muy similares e igualmente recomendables; pero se optó finalmente por usar el de Xilinx. Esto solo se debió a una serie de errores que aparecieron en la fase de estudio de las herramientas de Altera; y a que la documentación y tutoriales de Xilinx resultó ser más clara. De todas formas, debe resaltarse, que ya ambos fabricantes disponen de la documentación convenientemente estructurada en su página web. Ambos entornos aprovechan las características de Simulink, que deben resaltarse. Por un lado, está totalmente integrado en Matlab; esto hace que acceda a su espacio de variables, tanto para la toma de señales de entrada, como para analizar y estudiar las salidas. En Simulink se diseña usando diagrama de bloques de forma gráfica, cada bloque se configura mediante su ventana de diálogo. En Simulink existen multitud de conjuntos de bloques, llamados Blocksets; entre las que cabe destacar, las fuentes de
Tesis Doctoral Universidad de Las Palmas de Gran Canaria 84 señal (Sources), las utilidades para interconectar (Signal Routing) y los elementos para evaluar las salidas (Sinks). Obviamente, para usar este tipo de herramientas, se precisa conocer el uso de Matlab y Simulink. Por otro lado, es aconsejable pero no obligatorio, tener conocimientos de VHDL y Verilog. Esto se debe a que desde Simulink se generará el diseño completo descrito en uno de esos HDL, y normalmente no es necesaria su modificación. Conviene resaltar que la búsqueda, puesta a punto, y uso de estas herramientas puede llevar meses si se parte de un total desconocimiento. Pero, si existe asesoramiento previo suficiente, el tiempo de estudio y uso puede reducirse a semanas; en cualquier caso, depende de la experiencia y habilidad del individuo. Es decir, con suficiente asesoramiento, este periodo de tiempo puede aproximarse al del uso de un HDL estándar. Si se involuciona; por ejemplo, se diseñase usando esquemáticos, el inicio es casi instantáneo; pero como se indicó en temas anteriores, se dificulta la edición, modificación y portabilidad de los diseños. 3.8 El entorno de diseño de Xilinx Ya se introdujo el entorno de Xilinx en el segundo capítulo. Como se observa en la figura 3.9, está conformado por dos grandes herramientas. Por un lado System Generator, que opera sobre Simulink de Matlab; y por otro, la herramienta estándar ISE (Integrated System Environment). Como alternativa a ISE, a partir del año 2012 aparece la nueva versión llamada Vivado, a la que se pueden migrar los diseños. Figura 3.9. El escenario de diseño de Xilinx para System Generator.
Metodologías de diseño de redes neuronales sobre dispositivos digitales programables para procesado de señales en tiempo real Universidad de Las Palmas de Gran Canaria 85 3.8.1 System Generator Como se acaba de indicar, el entorno de diseño de Xilinx sobre Simulink se llama System Generator. Este software requiere de la correcta versión de Matlab, y por tanto de Simulink; a la vez que de la correcta versión de ISE, o Vivado si fuera el caso. Cuando se instala System Generator en Simulink aparecen los Blocksets propios de Xilinx. A partir de ese momento se puede diseñar un sistema usando diagrama de bloques, que se configuran mediante sus ventanas de diálogo. El diseño, normalmente en punto fijo, queda especificado entre los buses de entrada y salida. Fuera de los límites del diseño pueden colocarse el resto de bloques de Simulink, normalmente sistemas de punto flotante. En el interior del diseño pueden usarse bloques de Signal Routing de Simulink, dado que son bloques de conexionado. Los bloques de System Generator tienen acceso al espacio de variables de Matlab, lo que es una gran ventaja. Por otro lado, el sistema se diseña con las misma filosofía que en el propio Simulink; es decir, diagramas de bloque configurables mediante sus ventanas de diálogo. Esto hace que el diseño sea rápido. El cambio de los parámetros en las ventanas de diálogo; por ejemplo el número de bits, permite un diseño flexible, porque se pueden probar diferentes arquitecturas de forma rápida. El acceso al espacio de variables de Matlab hace posible tomar las entradas de la base de datos; o después de la parametrización, si fuera el caso. Este mismo acceso hace posible guardar las salidas de la simulación, para ser analizadas o representadas. Las simulaciones de los diseños de System Generator son muy rápidas, porque se usa un bajo nivel de detalle de los circuitos. Todo lo anterior hace posible comprobar la total funcionalidad del sistema; es decir, simular el sistema para todas las entradas posibles. En este caso, la estimación de área es aproximada; y no se tiene estimación de velocidad ni de potencia. Una vez comprobada la funcionalidad del sistema, se procede a su compilación; donde se obtiene la descripción estructural en un lenguaje HDL estándar; Verilog o VHDL según se elija. En esta compilación, entre otras cosas, puede generarse el testbench; que es la señal de entrada que será usada en las simulaciones de la herramienta posterior. La generación automática del testbench es importante; porque generarla de forma manual es muy costoso. Esto puede deberse a la cantidad de datos
Tesis Doctoral Universidad de Las Palmas de Gran Canaria 86 que se quiere simular; y también, al posible cambio de formato de la señal de entrada. La interacción descrita entre System Generator, Simulink, Matlab y el ISE de Xilinx queda reflejada en la figura 3.10. Figura 3.10. Interacción entre System Generator, Simulink, Matlab y el ISE de Xilinx. Llegados a este punto, conviene resaltar, que con las herramientas elegidas, el preprocesado y parametrización se realiza con Matlab en formato de punto flotante. El modelado de la NN en punto flotante, igualmente se realiza con Matlab. El paso del modelo de punto flotante a punto fijo se hace mediante System Generator. El flujo final del diseño para la FPGA, que se corresponde con el apartado 3.6 y figura 3.8, se realiza con el Integrated System Environment de Xilinx. 3.8.2 Integrated System Environment Como se acaba de exponer, el flujo final del diseño para la FPGA, se realiza con el Integrated System Environment de Xilinx, como muestra la figura 3.10. Su diagrama de flujo se corresponde con la figura 3.8. Como ya se ha indicado, las simulaciones son
Metodologías de diseño de redes neuronales sobre dispositivos digitales programables para procesado de señales en tiempo real Universidad de Las Palmas de Gran Canaria 8 7 ahora muy lentas por el alto nivel de detalle de los circuitos usados; esto permite una precisa estimación de área, velocidad y potencia. Normalmente, con ISE, no es posible comprobar la total funcionalidad; lo que no tiene importancia, porque con las herramientas propuestas puede comprobarse con System Generator con anterioridad. Conviene destacar que del paquete que incluye System Generator e ISE se usaron las versiones 10.1 y 13.1, con los sistemas operativos y versiones de Matlab que se muestran a continuación. - System Generator for DSP and AccelDSP 10.1 o Integrated System Environment 10.1 o Windows XP (32 bits) o Matlab R2007a - System Generator for DSP 13.1 o Integrated System Environment 13.1 o Windows XP (32 bits) y Windows 7 (64 bits) o Matlab R2010a y R2010b 3.9 El entorno de diseño de Altera De Altera, segundo suministrador de FGPA a nivel mundial, conviene destacar que dispone de DSP Builder, que es la herramienta sobre Simulink para el diseño de FPGA. De ella se puede decir que tiene las mismas características que su equivalente de Xilinx, su escenario se muestra en la figura 3.11. También dispone de Quartus II, que es el entorno estándar, igualmente equivalente a su homólogo de Xilinx. Figura 3.11. El escenario de diseño de Altera para DSP Builder.
Metodologías de diseño de redes neuronales sobre dispositivos digitales programables para procesado de señales en tiempo real Universidad de Las Palmas de Gran Canaria 89 CAPÍTULO 4 4. EXPERIMENTOS Y RESULTADOS “Esto no es el final, ni siquiera es el principio del final, pero quizás sea el final del principio”. Winston Churchill Este capítulo es, con pocas dudas, el núcleo de esta tesis. Después de todas las descripciones previas, hasta llegar a elegir el entorno de diseño para las FPGA, se procede a realizar los diseños de las NN para los diferentes escenarios; esto se hace con el fin de demostrar la hipótesis de esta tesis doctoral.
Tesis Doctoral Universidad de Las Palmas de Gran Canaria 90 4.1 Introducción Para cada base de datos se realiza la elección de la arquitectura de la NN y se entrena en punto flotante usando Matlab. Con un entrenamiento apropiado se obtiene la regla de oro del diseño; es decir, la arquitectura final de la NN, los coeficientes y los tipos de función de transferencia usadas. Durante el entrenamiento y el testeo debe comprobarse la funcionalidad requerida de la NN. Con la regla de oro obtenida se diseña el sistema con System Generator en aritmética de punto fijo, donde se comprueba la funcionalidad mediante simulaciones. Finalmente, con el Integrated System Environment se finaliza el flujo de diseño para la FPGA elegida y se extraen las prestaciones físicas. 4.2 La clasificación de la palmera pejibaye Como se indicó en el capítulo anterior, donde se describió esta base de datos, finalmente es posible la clasificación con solo diez parámetros en la entrada. Se tomaron los diez marcadores moleculares que permiten la clasificación, sin realizar ningún preprocesado. Entonces, la NN elegida, debe tener diez entradas y seis salidas, pues son seis las razas de pejibaye a clasificar. 4.2.1 Modelado en punto flotante Como se ha indicado repetidamente, el entrenamiento se realizó con el Neural Network Toolbox de Matlab. Igualmente, como se explicó previamente, se usará una NN artificial tipo perceptrón multicapa. Debe recordarse que de cada raza existen 13 individuos en la base de datos, de cada clase se usaron para el entrenamiento 4 individuos (30% aproximadamente), y los 9 restantes para el testeo (70% aproximadamente). Para el entrenamiento se escogieron las muestras de forma aleatoria. Las clases están etiquetadas, luego el entrenamiento es supervisado. En la fase de entrenamiento se varió el número de capas intermedia, y el número de neuronas en esas capas. Finalmente se determinó que se consigue una clasificación del 100% con una sola capa intermedia de 8 neuronas. Podría decirse entonces, que la NN
Metodologías de diseño de redes neuronales sobre dispositivos digitales programables para procesado de señales en tiempo real Universidad de Las Palmas de Gran Canaria 9 7 representa con un valor mínimo (próximo a cero) y no se supera el error máximo especificado. Este error inicialmente fue del 1%. De la misma forma, la constante Constant2 establece el límite de la abscisa, por encima de la que se representa con un valor máximo (próximo a uno) y no se supera el error máximo especificado. Los comparadores de la figura 4.7, Relational1 y Relational2, determinan si el valor de la entrada es menor o mayor que esas constantes. El concatenador Concat, a cuyas entradas llegan las salidas de los comparadores, determina si la entrada es menor que Constant1, si es mayor que Constant2, o si se encuentra entre ellos; esta información se tiene codificada con sus dos bits de salida. Los dos bits de salida del concatenador controlan un multiplexor, que deja pasar Constant1, el valor de la entrada o Constant2; dependiendo de si la entrada era menor que Constant1, si se encuentra entre Constant1 y Constant2, o es mayor que Constant2, respectivamente. Con los bloques entre la salida del multiplexor y la entrada de la memoria de solo lectura (ROM, Read Only Memory), se produce una conversión entre el valor de la abscisa y la posición de memoria donde se encuentra almacenado el valor de la función en la ROM. En esta memoria se almacena un número de muestras de la función de transferencia, que es potencia de dos, para aprovechar la capacidad del bus de direcciones de la entrada. Existen por tanto dos parámetros a configurar en la ROM: el número de muestras almacenadas y el error de la representación en esas muestras. En el sistema mostrado se almacenaron 16 palabras con un error del 1%. Figura 4.7. Implementación de la función de transferencia logsig mediante una ROM. En la figura 4.8 se tiene la representación de la función logsig (a) y las muestras que la aproximan con la función de transferencia implementada (b). Además se
Tesis Doctoral Universidad de Las Palmas de Gran Canaria 98 representa el error en (c) y el error relativo en (d). Debe tenerse en cuenta que el error en (c), se representa como la salida de la función en punto fijo implementada menos el valor en punto flotante que toma la función logsig, sin tomar el valor absoluto. De la misma forma, para el error relativo, no se toma el valor absoluto. Figura 4.8. a) Función logsig, b) salida de la función implementada, c) error y d) error relativo. Las ocho neuronas diseñadas con las arquitecturas de las dos etapas anteriores (figura 4.6 y figura 4.7), y conectadas como indica la figura 4.5, forman la capa oculta. Las ocho salidas de estas neuronas se agrupan con un bloque Goto para conectarla a la capa de salida. La capa de salida se muestra en la figura 4.9. a) b) c) d)
Metodologías de diseño de redes neuronales sobre dispositivos digitales programables para procesado de señales en tiempo real Universidad de Las Palmas de Gran Canaria 99 Figura 4.9. Capa de salida de la NN para pejibaye. Las neuronas de la capa de salida se diseñaron con dos etapas como en la capa oculta. La primera etapa de la primera neurona se muestra en la figura 4.10, que dispone de 8 entradas. La función de transferencia es igual que las de la capa oculta.
Tesis Doctoral Universidad de Las Palmas de Gran Canaria 100 Figura 4.10. Primera fase de la primera neurona de la capa de salida para pejibaye. La capa de salida se conectó a un bloque decodificador, llamado DECODER, que se muestra en la figura 4.11. Este bloque es el encargado de detectar cuál de las neuronas de salida tiene mayor amplitud, poniendo un “1” en la salida correspondiente y un “0” en las 5 restantes. Así se indica la clase a la que pertenece las muestras de la entrada. Este bloque está formado por comparadores, multiplexores y funciones lógicas. Obviamente sus entradas son sin signo y sus seis salidas booleanas. Figura 4.11. Bloque decodificador de las neuronas de salida para pejibaye.
Metodologías de diseño de redes neuronales sobre dispositivos digitales programables para procesado de señales en tiempo real Universidad de Las Palmas de Gran Canaria 101 El bloque DECODER se agrupa en un subsistema de Simulink como muestra la figura 4.12. Los seis bits de salida del decodificador se registrar con bloques Delay por los mismos motivos que se registró las entradas. Finalmente, las salidas de los bloques Delay se conectan a los pines de la salida de la FPGA mediante bloques Gateway Out, como indica la figura 4.12. Figura 4.12. Conexión de las salidas del decodificador a los registros de salida y a los pines de salida de la FPGA para pejibaye. El sistema final diseñado tiene el aspecto de la figura 4.13. Entre los buses de entrada Gateway In, y los bits de salida Gateway Out, se localiza el sistema de punto fijo diseñado para la FPGA. Además, en el modelo de Simulink, se observan algunos bloques auxiliares. Unos son los bloques Scope, que permiten la visualización de las formas de ondas en Simulink. Por otro lado, el bloque System Generator, es de obligado uso, permite elegir el tipo de FPGA y compilar el diseño.
Tesis Doctoral Universidad de Las Palmas de Gran Canaria 102 Figura 4.13. Diseño en Simulink del sistema final para pejibaye. Descrito el modelo de Simulink, se puede realizar la simulación funcional. Las diez entradas se muestran en la figura 4.14 y las salidas en la figura 4.15. Las salidas se retrasan dos periodos de reloj respecto a las entradas por la existencia de los elementos de retardo en las entradas y salidas. Se introdujeron los 9 elementos de cada clase usados en el testeo, esto se hizo de forma secuencial. La tasa de acierto fue del 100% y se obtuvo la matriz de confusión de la figura 4.2. Es posible enviar los datos de salida al espacio de variables de Matlab, con el bloque To Workspace, lo que permitió elaborar la matriz de confusión de forma automática. Debe ponerse de relieve que esta simulación solo tarda unos minutos y permite comprobar la funcionalidad del diseño en punto fijo. Debe destacarse que se puede visualizar el reloj de entrada, que no se muestra por simplificación, y será mostrado en las simulaciones de la herramienta posterior. Este reloj de entrada se puede mostrar como señal de salida con el bloque Clock Probe que envía el reloj a un pin de salida.
Metodologías de diseño de redes neuronales sobre dispositivos digitales programables para procesado de señales en tiempo real Universidad de Las Palmas de Gran Canaria 103 Figura 4.14. Señales de entrada en la NN para pejibaye. Figura 4.15. Señales de salida en la NN para pejibaye. El bloque System Generator y su ventana de configuración se muestran en la figura 4.16, con este bloque se realiza la compilación del diseño. En el bloque System Generator primeramente se puede elegir el tipo de compilación. En segundo lugar se puede elegir el dispositivo FPGA. En la opción herramienta de síntesis se especifica la que se elige para sintetizar el circuito: Synplify, Synplify Pro o Xilinx Synthesis Tool
Tesis Doctoral Universidad de Las Palmas de Gran Canaria 104 (XST). En la opción del lenguaje de descripción hardware el diseñador puede elegir entre VHDL o Verilog. Al activar la opción Create testbench se genera el fichero en el HDL con las señales de entrada para el Integrated System Environment, que de otra forma tendrían que ser generadas de forma manual. Con el directorio de destino se define donde se van a escribir los ficheros en HDL para el proyecto en Integrated System Environment. Al activar la opción Create interface document se genera un fichero HTM (Hypertext Markup Language) con las principales características del diseño. En las opciones de reloj (Clocking) se define su periodo, su pin de entrada, el modo de implementación en el caso de multitasa; y el periodo en el sistema de Simulink, que es el máximo común divisor de los periodos de las tasas que aparecen en el sistema. Finalmente, en General se especifica el tipo de información que se muestra en el icono de bloque. Figura 4.16. Bloque System Generator y su ventana de configuración. Una vez configurado el bloque System Generator se puede proceder a la compilación del diseño, que se inicia al iniciar Generate. Al finalizar la compilación se obtiene una ventana como la de la figura 4.17. Figura 4.17. Ventana que se muestra al finalizar la compilación con System Generator.
Metodologías de diseño de redes neuronales sobre dispositivos digitales programables para procesado de señales en tiempo real Universidad de Las Palmas de Gran Canaria 105 Inicialmente, se usó para la representación de los coeficientes un error del 1%. Igualmente se usaron 16 posiciones de memoria, con un error del 1%, para la representación de las muestras de las funciones de transferencia almacenadas en la ROM. Con estos valores se alcanzó la funcionalidad deseada. Cabe preguntarse si se puede aumentar el error, lo que disminuye el número de bits, a la vez que se mantiene la funcionalidad. Igualmente, cabe preguntarse si se puede disminuir el número de palabras en la ROM y mantener la funcionalidad. Obviamente, la variación de estos parámetros a partir de ciertos valores hace que se pierda la funcionalidad. En la tabla 4.1 se muestra la funcionalidad del sistema en función de estos parámetros. En las simulaciones se comprobó que con un error del 14% no se conseguía la funcionalidad por mucho que se aumentara el número de palabras en la ROM. En el mismo sentido, con memorias ROM de 2 palabras, no se alzanza la funcionalidad por mucho que se disminuya el error. Tabla 4.1. Funcionalidad del sistema frente al error en la representación y el número de palabras en las ROM para pejibaye. Error en la representación (%) 1 2 3 4 5 6 7 8 9 1 0 11 12 13 14 Número de palabras en las ROM 1024 SI SI SI SI SI SI SI SI SI SI SI SI SI NO 512 SI SI SI SI SI SI SI SI SI SI SI SI SI NO 25 6 SI SI SI SI SI SI SI SI SI SI SI SI SI NO 12 8 SI SI SI SI SI SI SI SI SI SI SI SI SI NO 64 SI SI SI SI SI SI SI SI SI SI SI SI NO NO 32 SI SI SI SI SI SI SI SI SI SI SI SI NO NO 1 6 SI SI SI SI SI SI SI SI SI SI SI SI NO NO 8 SI SI SI SI SI SI SI SI SI SI SI SI NO NO 4 SI SI SI SI SI SI SI SI NO NO NO NO NO NO 2 NO NO NO NO NO NO NO NO NO NO NO NO NO NO 4.2.2.2 Implementación con Integrated System Environment Claramente interesa comparar los casos de 8% de error y 4 palabras en la ROM, 12% de error y 8 palabras en la ROM; y 13% de error y 128 palabras en la ROM. Entre estos casos, se produce para un parámetro un aumento de recursos hardware, y para el otro una disminución. Los tres casos se compilaron con la intención de comparar el área ocupada, la potencia y la velocidad.
Tesis Doctoral Universidad de Las Palmas de Gran Canaria 106 Resultado para 8% de error y 4 palabras en la ROM. Lenguaje VHDL. La compilación se realizó con System Generator para obtener la descripción en VHDL. En el proyecto obtenido para Integrated System Environment se realizó la simulación para la fase final de la implementación en la FPGA (Post Place and Route Simulation). Como simulador se usó ISim (ISE Simulator), integrado en la herramienta. Se obtuvieron las formas de onda de la figura 4.18; donde cabe destacar la existencia del reloj de entrada de 5 MHz. La compilación se realizó para un dispositivo Spartan3E, tipo xc3s1200e, grado de velocidad -5, tipo de encapsulado ft y 256 pines; de forma compacta se denota como Spartan3E xc3s1200e-5ft256. Figura 4.18. Simulación de la implementación para pejibaye en la FPGA, 8% de error y 4 palabras en las ROM. Los recursos hardware necesarios se resumen en la tabla 4.2; estos datos se tienen en Design Summary. Los SLICES son los bloques de lógica internos en los que se divide la FPGA; los LUT son tablas de búsqueda (Lookup-Table). Debe resaltarse el número de SLICES necesarios, porque los LUT están incluidos dentro de los SLICES. El segundo parámetro importante es el número de pines de entrada-salida necesarios. Tabla 4.2. Recursos hardware para 8% de error y 4 palabras en la ROM, aplicado a pejibaye y compilado en VHDL. Entidad Usados Disponibles Tasa de uso SLICE S 2.750 8.672 31% LUT de 4 entradas 5.149 17.344 29% Bloques de E/ S 80 190 42%
Metodologías de diseño de redes neuronales sobre dispositivos digitales programables para procesado de señales en tiempo real Universidad de Las Palmas de Gran Canaria 113 4.3.2 Diseño en punto fijo Igual que en primer escenario se realizará en una primera etapa con System Generator, y posteriormente usando el Integrated System Environment. Estas dos fases del diseño se describen convenientemente en los siguientes apartados. 4.3.2.1 Diseño con System Generator Una vez obtenida la regla de oro en formato de punto flotante, el siguiente paso es diseñar el sistema en aritmética de punto fijo, para ello se usó System Generator de Xilinx sobre Simulink de Matlab. La etapa de entrada de la NN se muestra en la figura 4.19. Con ciertas diferencias, el diseño sigue el mismo método que el escenario anterior. La NN mostrada obedece al máximo error del 4,2% y 64 posiciones en las ROM. Figura 4.19. Etapa de entrada de la NN para ECG.
Tesis Doctoral Universidad de Las Palmas de Gran Canaria 114 En la parte izquierda de la figura 4.19 se tienen las señales de entrada en formato de punto flotante (tipo double), que proceden del espacio de trabajo de Matlab. Se dispone de 15 entradas, por ser 15 los parámetros para la clasificación. A continuación se observan los puertos de entrada a la FPGA (Gateway In), donde se realiza una conversión a punto fijo. Estos puerto se configuran de la misma forma que en el escenario anterior. Por último, se fija un periodo de reloj, para marcar la velocidad con la que son tomados los parámetros en la entrada; este valor en este caso es arbitrario, y se fijó para una frecuencia de 5 MHz. Obviamente, este tasa de entrada es mucho más rápida que si proveniese de pulsos cardiacos, se elevó para comprobar cuál es el alcance en frecuencia de la NN. Por otro lado, el sistema para ECG no está pensado para operar en tiempo real; en ese caso el sistema de [Chadnani, 2011] debe rediseñarse usando memorias intermedias de almacenamiento que permitan conectarlo a una señal de ECG. Los puertos de entrada se configuran con el mismo método del apartado anterior. Estos 15 buses deben conectarse a las 30 neuronas de la capa intermedia, para facilitar la edición de este cableado los buses se agrupan en un bloque Goto. En la figura 4.20 se tiene la capa intermedia de la NN, que consta de 30 neuronas, agrupadas en grupos de 10. En la figura 4.21 se muestra la primera agrupación de 10 neuronas. Las señales que provienen de la capa de entrada se conectan a esta capa mediante un bloque From. Cada neurona consta de dos etapas; una primera, donde se multiplican las entradas por los coeficientes y se suma la polarización; y una segunda, que conforma la función de transferencia.
Metodologías de diseño de redes neuronales sobre dispositivos digitales programables para procesado de señales en tiempo real Universidad de Las Palmas de Gran Canaria 115 Figura 4.20. Capa intermedia de la NN para ECG.
Tesis Doctoral Universidad de Las Palmas de Gran Canaria 116 Figura 4.21. Agrupación de diez neuronas en la capa oculta de la NN para ECG.
Metodologías de diseño de redes neuronales sobre dispositivos digitales programables para procesado de señales en tiempo real Universidad de Las Palmas de Gran Canaria 11 7 En la figura 4.22 se tiene la primera fase de la primera neurona de la capa oculta. La configuración de esta etapa se realizó con el mismo método que el escenario anterior. Figura 4.22. Primera fase de la primera neurona de la capa oculta para ECG. La segunda etapa de las neuronas de la capa oculta se muestra en la figura 4.23. Esta consiste en la implementación de la función de transferencia, en este caso se optó por la función tansig para todas las neuronas de la capa oculta. Su diseño es análogo al caso de la función logsig del escenario anterior; la única diferencia es que los valores en la ROM se almacenan como Fix; es decir, complemento a dos con signo, dado que la función tansig es bipolar.
Tesis Doctoral Universidad de Las Palmas de Gran Canaria 118 Figura 4.23. Implementación de la función de transferencia tansig mediante una ROM. En la figura 4.24 se tiene la representación de la función tansig (a) y el valor de las muestras almacenadas en la ROM (b), la figura se muestra para 64 posiciones de memoria. Además se representa el error en (c) y el error relativo en (d). Debe tenerse en cuenta que el error en (c), se representa como la salida de la función en punto fijo implementada menos el valor en punto flotante que toma la función tansig, sin tomar el valor absoluto. De la misma forma, para el error relativo, no se toma el valor absoluto. Figura 4.24. a) Función tansig, b) salida de la función implementada, c) error y d) error relativo. Las treinta neuronas diseñadas con las dos etapas anteriores (figuras 4.22 y 4.23), y conectadas como indican las figuras 4.20 y 4.21, forman la capa oculta. Las treinta -1.5 -1 -0.5 00.5 11.5 -1 0 1 -1.5 -1 -0.5 00.5 11.5 -1 0 1 -1.5 -1 -0.5 00.5 11.5 -0.04 -0.02 0 0.02 0.04 -1.5 -1 -0.5 00.5 11.5 -50 0 50 a) b) c) d)
Metodologías de diseño de redes neuronales sobre dispositivos digitales programables para procesado de señales en tiempo real Universidad de Las Palmas de Gran Canaria 119 salidas de estas neuronas se agrupan con un bloque Goto para conectarla a la capa de salida. La capa de salida se muestra en la figura 4.25. Las funciones de transferencia de estas neuronas son purelin; es decir, la función identidad, donde la salida es igual a la entrada. El diseño de estas funciones es trivial, mediante un cortocircuito, se deja un bloque que guarda esta conexión para recordar el tipo de función usada. Figura 4.25. Capa de salida de la NN para ECG.
Tesis Doctoral Universidad de Las Palmas de Gran Canaria 120 Las neuronas de la capa de salida se diseñaron con dos etapas como en la capa oculta. La primera etapa de la primera neurona se muestra en la figura 4.26, que dispone de 30 entradas. Abajo y a la derecha de esta figura se muestra el multiplicador que introduce el valor de polarización. Los multiplicadores por los pesos se agruparon en grupos de 10, el primer agrupamiento de la primera neurona se muestra en la figura 4.27. Figura 4.26. Primera fase de la primera neurona de la capa de salida para ECG.
Metodologías de diseño de redes neuronales sobre dispositivos digitales programables para procesado de señales en tiempo real Universidad de Las Palmas de Gran Canaria 121 Figura 4.27. Primer agrupamiento de diez multiplicadores de la primera neurona de la capa de salida para ECG. La capa de salida se conectó a un bloque decodificador, llamado DECODER, que se muestra en la figura 4.28. Este bloque es el encargado de detectar cuál de las neuronas de salida tiene mayor amplitud, poniendo un “1” en la salida correspondiente y un “0” en las 6 restantes. Así se indica la clase a la que pertenece las muestras de la entrada. Este bloque está formado por comparadores, multiplexores y funciones lógicas. Obviamente sus entradas son con signo y sus siete salidas booleanas.
Tesis Doctoral Universidad de Las Palmas de Gran Canaria 122 Figura 4.28. Bloque decodificador de las neuronas de salida para ECG. El bloque DECODER se agrupa en un subsistema de Simulink como muestra la figura 4.29. Los siete bits de salida del decodificador se registran con bloques Delay por los mismos motivos que se registró las entradas. Finalmente, las salidas de los bloques Delay se conectan a los pines de la salida de la FPGA mediante bloques Gateway Out, como indica la figura 4.29. El sistema final diseñado tiene el aspecto de la figura 4.30. Figura 4.29. Conexión de las salidas del decodificador a los registros de salida y a los pines de salida de la FPGA para ECG.