scieee AI-readable full text Open interactive document viewer

Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes

Jiménez Fernández, Ángel Francisco

Abstract

A lo largo del presente trabajo hemos propuesto, diseñado, implementado, simulado, y analizado diversos mecanismos para implementar controles basados en los modelos de las neuronas pulsantes. Para ello, en primer lugar, hemos diseñado e implementado elementos para actuar sobre motores de DC a partir d ... e spikes. Se han implementado elementos basados en dos modulaciones distintas, la modulación PWM y la modulación PFM, siendo esta última coincidente con la usada por los modelos neuronales pulsantes más habituales (tipo AER). Además de diseñar e implementar ambos elementos, los hemos simulado junto con modelos de motores para poder así analizar las respuestas de un motor en diversos escenarios. Gracias a dichas simulaciones hemos podido analizar la interacción entre motores y los elementos implementados. Realizar diversas comparaciones y extrayendo de ellas las fortalezas y debilidades de los mecanismos propuestos. El siguiente paso ha sido la propuesta, diseño, implementación, simulación y análisis de controles en lazo cerrado basados en spikes, comenzando con el diseño de simple controladores P, aumentando su complejidad hasta diseñar controlador PID basados en spikes. Para el desarrollo de controladores P basados en pulsos hemos propuesto dos mecanismos para restar dos señales de spikes, estos elementos han sido el Inter-Spike-Interval Difference & Generate y el Hold & Fire. A partir de estos elementos hemos construido diversos escenarios de simulación combinándolos con el modulador PWM y el Spikes Expansor (PFM), para de esta manera poder analizar comparativamente las cualidades del uso de uno u otro mecanismo. A continuación se han desarrollado un integrador y un derivador, basados ambos en el Integrate & Generate, de spikes. Con estos elementos más el Hold & Fire se han obtenidos controladores PID, que posteriormente se han simulado. A partir de las simulaciones hemos podido analizar las respuestas en cada caso y compararlas entre ellas. Consiguiendo respuestas similares a los sistemas tradicionales de control PID. Una vez simulados todos los elementos necesarios para implementar controladores PID basados en spikes, hemos procedido a llevarlos a la realidad. Como primer paso hemos diseñado y construido la plataforma AER-Robot, la cual da soporte físico a los controles. A Á ngel Fco. Jiménez Fernández Página 252 continuación hemos procedido a adaptar las implementaciones de los controles para llevarlos a la realidad, estableciendo mecanismos de comunicación desde el exterior hasta los controles, e implementando un monitor basado en la representación AER para el monitorizado y posterior análisis de los controles. A continuación hemos construido un pequeño robot móvil, Eddie, como plataforma de demostración. Eddie es un robot diferencial, contiene controles más complejos que simples controles PID, permitiéndole así navegar por el mundo con controles neuro-inspirados en su interior. Para comprobar el correcto funcionamiento de Eddie hemos ampliado el monitor AER y analizado sus respuestas ante diversas señales de excitación. Finalmente, hemos realizado un análisis de los elementos diseñados para el control PID desde el punto de vista del procesamiento de señales, implementando filtros paso baja, de banda y de alta, basados en spikes y equivalentes a los filtros analógicos. Caracterizando los parámetros y ajustes necesarios de dichos filtros, para posteriormente simular y probar sus respuestas. Como aplicación práctica se ha realizado una propuesta de una nueva cóclea artificial utilizando bancos de filtros pulsantes, proponiendo y usando algoritmos genéticos para ajustar adecuadamente los diversos parámetros de los filtros, dado su complicación a nivel paramétrico. Ver más Ver menos arquitectura computadores control diseño Informática neuronales pulsantes señales sistemas tecnología.

Full text

Tesis Doctoral Diseño y evaluación de sistemas de control y procesamiento de señales basadas en modelos neuronales pulsantes Ángel Francisco Jiménez Fernández Directores: Dr. D. Gabriel Jiménez Moreno Dr. D. Alejandro Linares Barranco Sevilla, Marzo de 2010 Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 2 Universidad de Sevilla Escuela Técnica Superior de Ingeniería Informática Departamento de Arquitectura y Tecnología de Computadores Tesis Doctoral Diseño y evaluación de sistemas de control y procesamiento de señales basadas en modelos neuronales pulsantes Memoria presentada para aspirar al grado de doctor por: Ángel Francisco Jiménez Fernández Ingeniero Informático Los profesores ponentes y directores: Dr. D. Gabriel Jiménez Moreno Dr. D. Alejandro Linares Barranco Profesor titular del Departamento de Arquitectura y Tecnología de Computadores Profesor titular del Departamento de Arquitectura y Tecnología de Computadores Sevilla, Marzo de 2010 Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 3 Agradecimientos Este trabajo no hubiese sido posible sin la implicación, colaboración y apoyo de muchas personas, las cuales, en mayor o menor medida han motivado, ayudado y orientado en el desarrollo del trabajo presentado en esta tesis. En especial me gustaría hacer llegar mi más profundo agradecimiento a: Mis padres y mi hermana, por todo su apoyo, cariño y comprensión. A ellos está dedicado este trabajo. Rocío, por estar a mi lado en todo momento. Mis directores Gabriel Jiménez y Alejandro Linares, por sus incontables enseñanzas, sabios consejos y dedicación. Antón Civit, Rafael Paz, Lourdes Miró, Francisco Gómez, Manuel Rivas, y en general a todos los miembros del grupo de investigación de Robótica y Tecnología de Computadores de la Universidad de Sevilla, por la ayuda prestada, por compartir conmigo su sabiduría y ser grandes compañeros. A los nuevos miembros del Departamento de Arquitectura y Tecnología de Computadores, Manuel Domínguez, Pablo Íñigo y Juan Luis Font, por su contagiosa ilusión y ganas de trabajar. A mis amigos más próximos, cuyo apoyo, ánimo y motivación han sido cruciales para la realización de este trabajo. Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 4 Índice Principal 1. Introducción y objetivos ___________________________________ 20 1.1. Los sistemas neuro-inspirados, justificación y antecedentes _________________ 20 1.2. Motivación del presente trabajo _______________________________________ 28 1.3. Objetivos y estructura de la tesis _______________________________________ 30 2. Mecanismos de actuación sobre motores de DC mediante neuronas pulsantes __________________________________________________ 34 2.1. Conversión de una señal pulsante a una señal modulada por anchura pulsos: ___ 35 2.2. Adaptación de una señal pulsante a una modulación por frecuencia de pulsos. __ 39 2.3. Modelos de simulación _______________________________________________ 42 2.3.1. Generación de estímulos del sistema. El generador de spikes exhaustivo bit-wise ____ 44 2.3.2. Simulaciones basadas en PWM ____________________________________________ 50 2.3.3. Simulaciones basadas en PFM _____________________________________________ 56 2.3.4. Comparativa: PWM vs PFM: _______________________________________________ 63 3. Controles en lazo cerrado basados en sistemas pulsantes ________ 66 3.1. Modelo Inter-Spike-Interval Difference & Generate ________________________ 67 3.2. Modelo Hold & Fire. _________________________________________________ 69 3.3. Modelos de simulación _______________________________________________ 71 3.3.1. Simulaciones basadas en Hold & Fire ________________________________________ 75 3.3.1.1. Simulaciones del Hold & Fire y el modulador PWM ____________________________ 78 3.3.1.2. Simulaciones del Hold & Fire con el Spikes Expansor (PFM) ______________________ 81 3.3.2. Fuentes de errores del control proporcional basado en spikes ___________________ 85 3.4. Síntesis de las implementaciones del Hold & Fire __________________________ 90 4. Controladores proporcionales, integrales y derivativos basados en spikes. El modelo Integrate & Generate __________________________ 92 4.1. Modelo Integrate & Generate __________________________________________ 93 4.2. Simulación del modelo Integrate & Generate _____________________________ 96 4.3. Realimentando el Integrate & Generate: el derivador de spikes _____________ 103 4.4. Simulación del derivador de spikes ____________________________________ 105 4.5. Integración del Integrate & Generate y del derivador de spikes al control, el controlador PID basado en spikes. ___________________________________________ 114 4.6. Simulación del controlador PID basado en spikes _________________________ 115 4.7. Consumo hardware y operaciones equivalentes __________________________ 123 Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 5 5. Diseño, implementación y análisis de controles en lazo cerrado basados en spikes sobre sistemas reales ________________________ 126 5.1. La plataforma AER-Robot ____________________________________________ 127 5.2. Implementación real del controlador PID basado en spikes _________________ 129 5.2.1. Arquitectura del controlador _____________________________________________ 130 5.2.2. Realimentando el sistema, midiendo la velocidad del motor ____________________ 130 5.2.3. Gestión externa de los parámetros del controlador ___________________________ 132 5.2.4. Adaptación del Integrate & Generate y del derivador de spikes _________________ 136 5.2.5. Monitorización del control mediante el uso del bus AER _______________________ 137 5.2.6. Resultados de la síntesis del controlador PID basado en spikes __________________ 140 5.2.7. Uso del microcontrolador como gestor del control____________________________ 141 5.3. Monitorización de la información AER: La tarjea USBAERmini2 ______________ 142 5.4. Excitación, monitorización y análisis del control __________________________ 143 5.4.1. Análisis teórico del modelo del motor _____________________________________ 143 5.4.2. Análisis experimental en lazo abierto ______________________________________ 146 5.4.3. Análisis experimental del controlador P basado en spikes ______________________ 150 5.4.4. Análisis experimental del controlador PI basado en spikes _____________________ 155 5.4.5. Análisis experimental del controlador PD basado en spikes _____________________ 160 5.4.6. Análisis experimental del controlador PID basado en spikes ____________________ 162 5.5. Control PID de posición basado en spikes _______________________________ 167 5.6. Integración de los controladores basados en spikes con otros sistemas pulsantes 171 6. Aplicación concreta de los controles en lazo cerrado basados en pulsos: Eddie ______________________________________________ 174 6.1. Definición de las ecuaciones cinemáticas y la arquitectura de control de robots diferenciales _____________________________________________________________ 174 6.2. Control basado en spikes para robots diferenciales _______________________ 176 6.2.1. Mapa de direcciones internas de Eddie _____________________________________ 178 6.2.2. Monitorización de Eddie a través de la representación AER _____________________ 179 6.3. Excitación y análisis de las respuestas de Eddie ___________________________ 180 6.3.1. Análisis de Eddie con el lazo de control de giro habilitado ______________________ 180 6.3.2. Análisis de Eddie con el lazo de control de giro deshabilitado ___________________ 183 6.4. Control desde emisora de Radio / Control _______________________________ 185 7. Diseño y análisis de elementos para el procesado de spikes basados en la realimentación del Integrate & Generate ___________________ 188 7.1. Diseño de filtros de paso de baja basados en spikes _______________________ 189 7.1.1. Diseño de filtros de paso de baja basados en spikes con ganancia unitaria _________ 190 7.1.2. Diseño de filtros de paso de baja basados en spikes con ganancia ajustable. Los divisores de spikes 196 Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 6 7.1.2.1. El divisor de spikes probabilístico __________________________________________ 197 7.1.2.2. Divisor de spikes basado en el método Bit-Wise ______________________________ 199 7.1.2.3. Divisor de spikes basado en contadores digitales _____________________________ 202 7.1.3. Diseño de filtros de paso de baja basados en spikes con ganancia completamente ajustable. 203 7.2. Diseño de filtros de paso de alta basados en spikes _______________________ 206 7.3. Diseño de filtros de paso de banda basados en spikes con bajo factor Q _______ 210 7.4. Diseño de filtros de paso de banda basados en spikes con elevado factor Q ____ 218 7.5. Consumo hardware y rendimiento de los filtros basados en spikes ___________ 223 8. Aplicación práctica de los filtros basados en spikes. La cóclea sintética __________________________________________________ 227 8.1. Modelo biológico y electrónico de la cóclea _____________________________ 228 8.2. Propuesta de la arquitectura de la cóclea sintética ________________________ 232 8.3. Mecanismo de sintonización de la cóclea sintética ________________________ 234 8.3.1. Ajuste de filtros paso de banda basados en spikes median algoritmos genéticos ____ 235 8.3.2. Ajuste del banco de filtros basados en spikes ________________________________ 241 8.4. Síntesis y rendimiento del banco de filtros ______________________________ 243 9. Resumen, conclusiones y trabajos futuros. ___________________ 245 9.1. Computadores analógicos y su equivalente pulsante. ______________________ 245 9.1.1. Inversión. _____________________________________________________________ 246 9.1.2. Suma y resta __________________________________________________________ 246 9.1.3. Integrador Temporal ____________________________________________________ 246 9.1.4. Derivador Temporal. ____________________________________________________ 247 9.1.5. Multiplicar por una constante ____________________________________________ 247 9.1.6. Multiplicador __________________________________________________________ 247 9.2. Resumen _________________________________________________________ 250 9.3. Aportaciones más importantes y conclusiones ___________________________ 251 9.4. Trabajos futuros. ___________________________________________________ 252 10. Referencias ____________________________________________ 254 11. Apéndice: Esquemáticos de la AER-Robot ____________________ 266 11.1. Esquemático: AER-RobotTopLevel.SchDoc _____________________________ 266 11.2. Esquemático: FPGA.SchDoc _________________________________________ 267 11.3. Esquemático: 8051.SchDoc _________________________________________ 268 11.4. Esquemático: Puertos E/S.SchDoc ____________________________________ 269 11.5. Esquemático: Potencia.SchDoc ______________________________________ 270 Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 7 11.6. Esquemático: PowerSupply.SchDoc __________________________________ 271 11.7. PCB: AER-ROBOT.BrdDoc ___________________________________________ 272 Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 8 Índice de Figuras FIGURA 1.1: REPRODUCCIÓN DE UNA LÁMINA ILUSTRADA DE RAMÓN Y CAJAL DEL CEREBRO DE UN AVE ........................... 22 FIGURA 1.2: DIAGRAMA DE UN POTENCIAL DE ACCIÓN, O SPIKE, GENERADO POR UNA NEURONA .................................... 23 FIGURA 1.3: ESQUEMA DE LA TRANSMISIÓN DE LA INFORMACIÓN PULSANTE MEDIANTE EL USO DE LA REPRESENTACIÓN AER ........................................................................................................................................................... 26 FIGURA 1.4: EJEMPLO DE LA MODULACIÓN SIGMA-DELTA ...................................................................................... 29 FIGURA 2.1: DIAGRAMA DE BODE DEL MODELO DE UN MOTOR DE DC ....................................................................... 35 FIGURA 2.2: CIRCUITO DEL CONVERSOR DE SPIKES A PWM ..................................................................................... 36 FIGURA 2.3: RESPUESTA DEL CONVERSOR PWM ANTE UNA FRECUENCIA DE SPIKES DE ENTRADA DECRECIENTE .................. 38 FIGURA 2.4: FRECUENCIA MÍNIMA DE SATURACIÓN DEL CONVERSOR PWM FRENTE A SU DIVISOR DE FRECUENCIA ............. 39 FIGURA 2.5: CIRCUITO DEL SPIKES EXPANSOR ....................................................................................................... 41 FIGURA 2.6: SALIDA DEL SPIKES EXPANSOR ANTE UNA ENTRADA DE SPIKES CON FRECUENCIA CONSTANTE ......................... 41 FIGURA 2.7: FRECUENCIA MÍNIMA DE SATURACIÓN DEL SPIKES EXPANSOR FRENTE AL ANCHO DE SPIKE ............................ 42 FIGURA 2.8: ESQUEMAS DE SIMULACIÓN EN LAZO ABIERTO ..................................................................................... 42 FIGURA 2.9: FRECUENCIA MÍNIMA DE SATURACIÓN DEL CONVERSOR PWM FRENTE A SU DIVISOR DE FRECUENCIA ............. 44 FIGURA 2.10: DIAGRAMA DE BLOQUES DEL GENERADOR EXHAUSTIVO BIT-WISE DE SPIKES ............................................. 46 FIGURA 2.11: SALIDA DEL GENERADOR EXHAUSTIVO BIT-WISE DE SPIKES ANTE UNA ENTRADA EN RAMPA .......................... 48 FIGURA 2.12: SALIDA DEL GENERADOR EXHAUSTIVO BIT-WISE DE SPIKES ANTE UNA ENTRADA EN SENO ............................ 48 FIGURA 2.13: RECTAS DE MODULACIÓN DE UN GENERADOR EXHAUSTIVO BIT-WISE DE SPIKES DE 8 BITS Y CON DIVERSOS DIVISORES DE FRECUENCIA ........................................................................................................................ 49 FIGURA 2.14: GANANCIAS DE MODULACIÓN DE UN GENERADOR EXHAUSTIVO BIT-WISE DE SPIKES DE 8 BITS Y CON DIVERSOS DIVISORES DE FRECUENCIA ........................................................................................................................ 49 FIGURA 2.15: GANANCIAS DE MODULACIÓN DEL UN GENERADOR EXHAUSTIVO BIT-WISE DE SPIKES PARA DIFERENTES NÚMEROS BITS Y CON DIVERSOS DIVISORES DE FRECUENCIA ............................................................................. 50 FIGURA 2.16: ESQUEMAS DE SIMULACIÓN DEL CONVERSOR PWM EN LAZO ABIERTO ................................................... 51 FIGURA 2.17: RESPUESTAS DEL MOTOR EN LAZO ABIERTO, USANDO PWM, CON PERIODO VARIABLE Y FRECUENCIA DE SPIKES CONSTANTE ........................................................................................................................................... 52 FIGURA 2.18: AJUSTE TEÓRICO DE LA GANANCIA, USANDO PWM, CON PERIODO VARIABLE Y FRECUENCIA DE SPIKES CONSTANTE ........................................................................................................................................... 53 FIGURA 2.19: TRANSFORMADA DE FOURIER DE LAS RESPUESTAS DEL MOTOR, USANDO PWM, CON PERIODO VARIABLE Y FRECUENCIA DE SPIKES CONSTANTE ............................................................................................................. 54 FIGURA 2.20: RESPUESTAS DEL MOTOR EN LAZO, USANDO PWM, CON PERIODO FIJO Y FRECUENCIA DE SPIKES VARIABLE ... 54 FIGURA 2.21: AJUSTE TEÓRICO DE LA GANANCIA, USANDO PWM, CON PERIODO FIJO Y FRECUENCIA DE SPIKES VARIABLE .... 55 FIGURA 2.22: TRANSFORMADA DE FOURIER DE LAS RESPUESTAS DEL MOTOR, USANDO PWM, CON PERIODO FIJO Y FRECUENCIA DE SPIKES VARIABLE ................................................................................................................ 56 FIGURA 2.23: ESQUEMAS DE SIMULACIÓN DEL SPIKES EXPANSOR EN LAZO ABIERTO ..................................................... 56 FIGURA 2.24: RESPUESTAS DEL MOTOR EN LAZO, USANDO PFM, CON ANCHO DE SPIKE VARIABLE Y FRECUENCIA DE SPIKES CONSTANTE ........................................................................................................................................... 57 FIGURA 2.25: AJUSTE TEÓRICO DE LA GANANCIA, USANDO PFM, CON ANCHO DE SPIKE VARIABLE Y FRECUENCIA DE SPIKES CONSTANTE ........................................................................................................................................... 58 FIGURA 2.26: TRANSFORMADA DE FOURIER DE LAS RESPUESTAS DEL MOTOR, USANDO PFM, CON ANCHO DE SPIKE VARIABLE Y FRECUENCIA DE SPIKES CONSTANTE .......................................................................................................... 59 FIGURA 2.27: RESPUESTAS DEL MOTOR EN LAZO, USANDO PFM, CON ANCHO DE SPIKE FIJO Y FRECUENCIA DE SPIKES VARIABLE .............................................................................................................................................. 59 FIGURA 2.28: AJUSTE TEÓRICO DE LA GANANCIA, USANDO PFM, CON ANCHO DE SPIKE FIJO Y FRECUENCIA DE SPIKES VARIABLE .............................................................................................................................................. 60 Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 9 FIGURA 2.29: TRANSFORMADA DE FOURIER DE LAS RESPUESTAS DEL MOTOR, USANDO PFM, CON ANCHO DE SPIKE FIJO Y FRECUENCIA DE SPIKES VARIABLE ............................................................................................................... 61 FIGURA 2.30: VELOCIDAD ESTACIONARIA DEL MOTOR PARA UN BARRIDO DEL ANCHO DE SPIKES Y LA FRECUENCIA DE LOS SPIKES DE ENTRADA. ......................................................................................................................................... 61 FIGURA 2.31: REPRESENTACIÓN EN 3D DE LA VELOCIDAD DEL MOTOR PARA DIVERSOS ANCHOS Y FRECUENCIAS DE SPIKES ... 62 FIGURA 3.1: DIAGRAMA DE BLOQUES DE UN CONTROL EN LAZO CERRADO .................................................................. 66 FIGURA 3.2: POSIBLE ARQUITECTURA DEL ISI-DIFFERENCE & GENERATE .................................................................... 68 FIGURA 3.3: DIFERENCIA DE FRECUENCIA MÍNIMA RECONOCIBLE EN BASE AL NÚMERO DE BITS ....................................... 69 FIGURA 3.4: POSIBLES EVOLUCIONES DEL HOLD & FIRE TRAS RECIBIR UN SPIKE POSITIVO POR EL PUERTO U ...................... 70 FIGURA 3.5: CIRCUITO IMPLEMENTADO PARA EL HOLD & FIRE ................................................................................. 71 FIGURA 3.6: RESPUESTAS TEÓRICAS ANTE UN ESCALÓN DEL MOTOR CON UN CONTROL P IDEAL EN LAZO CERRADO ............. 74 FIGURA 3.7: REPRESENTACIÓN DEL COEFICIENTE DE SUB-AMORTIGUAMIENTO FRENTE A LA GANANCIA DE LOS SPIKES .......... 74 FIGURA 3.8: REPRESENTACIÓN DEL TIEMPO DE SUBIDA FRENTE A LA GANANCIA DE LOS SPIKES ........................................ 75 FIGURA 3.9: ESQUEMA GLOBAL DE SIMULACIÓN EN LAZO CERRADO .......................................................................... 76 FIGURA 3.10: ESQUEMA DE SIMULACIÓN DEL HOLD & FIRE CON EL MODULADOR PWM .............................................. 76 FIGURA 3.11: ESQUEMAS DE SIMULACIÓN DEL HOLD & FIRE JUNTO CON EL SPIKES EXPANSOR ....................................... 76 FIGURA 3.12: RESPUESTA DEL MOTOR ANTE UNA ENTRADA EN ESCALÓN, USANDO HOLD & FIRE Y PWM. VELOCIDAD, ARRIBA; SEÑAL PWM, CENTRO; SPIKE DE ENTRADA DEL MODULADOR PWM (ERROR) ......................................... 77 FIGURA 3.13: RESPUESTA DEL MOTOR ANTE UNA ENTRADA EN ESCALÓN, USANDO HOLD & FIRE Y SPIKES EXPANSOR. VELOCIDAD, ARRIBA; SEÑAL PFM, CENTRO; SPIKE DE ENTRADA DEL SPIKES EXPANSOR (ERROR)............................. 78 FIGURA 3.14: RESPUESTA DEL MOTOR ANTE UNA REFERENCIA DE SPIKES CONSTANTE Y DIVERSOS PERÍODOS DE PWM. ...... 79 FIGURA 3.15: GANANCIA ESTÁTICA EN LAZO CERRADO MEDIANTE EL USO DE PWM. .................................................... 80 FIGURA 3.16: RESPUESTA DEL MOTOR ANTE UNA REFERENCIA DE SPIKES VARIABLE Y PERÍODO DE PWM CONSTANTE. ........ 80 FIGURA 3.17: COMPARATIVA ENTRE LA VELOCIDAD ESTACIONARIA DEL MOTOR SIMULADA Y TEÓRICA, USANDO EL MODULADOR PWM ................................................................................................................................ 81 FIGURA 3.18: RESPUESTA DEL MOTOR ANTE UNA REFERENCIA DE SPIKES CONSTANTE Y DIVERSOS ANCHOS DE SPIKES. ......... 82 FIGURA 3.19: GANANCIA ESTÁTICA EN LAZO CERRADO MEDIANTE EL USO DEL SPIKES EXPANSOR. ................................... 83 FIGURA 3.20: RESPUESTA DEL MOTOR ANTE UNA REFERENCIA DE SPIKES VARIABLE Y ANCHO DE SPIKE CONSTANTE. ............ 84 FIGURA 3.21: COMPARATIVA ENTRE LA VELOCIDAD ESTACIONARIA DEL MOTOR SIMULADA Y TEÓRICA, USANDO EL SPIKES EXPANSOR ............................................................................................................................................. 84 FIGURA 3.22: SALIDA DEL SPIKESEXPANSOR ANTE SPIKES NO DISTRIBUIDOS HOMOGÉNEAMENTE EN EL TIEMPO ................. 85 FIGURA 3.23: ESCENARIO DE SIMULACIÓN DEL HOLD & FIRE ................................................................................... 86 FIGURA 3.24: RESPUESTA TEMPORAL DE HOLD & FIRE ANTE SEÑALES DE SPIKES CON DISTINTAS DIFERENCIAS DE FRECUENCIAS ........................................................................................................................................................... 87 FIGURA 3.25: DESVIACIÓN RELATIVA DEL ISI DE LOS SPIKES DE SALIDA DEL HOLD & FIRE FRENTE AL ISI IDEAL .................... 88 FIGURA 3.26: SALIDAS DEL HOLD & FIRE ANTE ENTRADAS DE DISTINTA FRECUENCIA Y DIVERSOS TIEMPOS DE HOLD ............ 89 FIGURA 3.27: EFECTOS DE LOS TIEMPOS DE HOLD ANTE UNA ENTRADA EN ESCALÓN ..................................................... 90 FIGURA 4.1: DIAGRAMA CONCEPTUAL DE UN CONTROLADOR PID EN LAZO CERRADO ................................................... 92 FIGURA 4.2: DIAGRAMA DE BLOQUES DEL INTEGRATE & GENERATE .......................................................................... 95 FIGURA 4.3: ESCENARIO DE SIMULACIÓN DEL INTEGRATE & GENERATE ...................................................................... 96 FIGURA 4.4: RESPUESTA DEL INTEGRATE & GENERATE ANTE UNA ENTRADA EN ESCALÓN ............................................... 97 FIGURA 4.5: RESPUESTA DEL INTEGRATE & GENERATE ANTE UNA ENTRADA EN ESCALÓN PARA DIVERSOS DIVISORES DE FRECUENCIA, JUNTO CON LA RESPUESTA TEÓRICA .......................................................................................... 98 FIGURA 4.6: RESPUESTA DEL INTEGRATE & GENERATE ANTE UNA ENTRADA EN ESCALÓN PARA DIVERSOS NÚMEROS DE BITS DEL INTEGRADOR, JUNTO CON LA RESPUESTA TEÓRICA .................................................................................... 99 FIGURA 4.7: MÁXIMA FRECUENCIA DE SALIDA DEL INTEGRATE & GENERATE PARA DIVERSOS DIVISORES DE FRECUENCIA .... 100 FIGURA 4.8: SATURACIÓN DEL INTEGRATE & GENERATE ....................................................................................... 101 FIGURA 4.9: DIAGRAMA DE BODE DEL INTEGRATE & GENERATE ............................................................................. 102 Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 16 ECUACIÓN [ 7-3 ] .......................................................................................................................................... 190 ECUACIÓN [ 7-4 ] .......................................................................................................................................... 196 ECUACIÓN [ 7-5 ] .......................................................................................................................................... 197 ECUACIÓN [ 7-6 ] .......................................................................................................................................... 197 ECUACIÓN [ 7-7 ] .......................................................................................................................................... 197 ECUACIÓN [ 7-8 ] .......................................................................................................................................... 198 ECUACIÓN [ 7-9 ] .......................................................................................................................................... 198 ECUACIÓN [ 7-10 ] ........................................................................................................................................ 200 ECUACIÓN [ 7-11 ] ........................................................................................................................................ 204 ECUACIÓN [ 7-12 ] ........................................................................................................................................ 204 ECUACIÓN [ 7-13 ] ........................................................................................................................................ 204 ECUACIÓN [ 7-14 ] ........................................................................................................................................ 207 ECUACIÓN [ 7-15 ] ........................................................................................................................................ 211 ECUACIÓN [ 7-16 ] ........................................................................................................................................ 211 ECUACIÓN [ 7-17 ] ........................................................................................................................................ 211 ECUACIÓN [ 7-18 ] ........................................................................................................................................ 211 ECUACIÓN [ 7-19 ] ........................................................................................................................................ 212 ECUACIÓN [ 7-20 ] ........................................................................................................................................ 212 ECUACIÓN [ 7-21 ] ........................................................................................................................................ 212 ECUACIÓN [ 7-22 ] ........................................................................................................................................ 212 ECUACIÓN [ 7-23 ] ........................................................................................................................................ 213 ECUACIÓN [ 7-24 ] ........................................................................................................................................ 213 ECUACIÓN [ 7-25 ] ........................................................................................................................................ 213 ECUACIÓN [ 7-26 ] ........................................................................................................................................ 213 ECUACIÓN [ 7-27 ] ........................................................................................................................................ 213 ECUACIÓN [ 7-28 ] ........................................................................................................................................ 215 ECUACIÓN [ 7-29 ] ........................................................................................................................................ 215 ECUACIÓN [ 7-30 ] ........................................................................................................................................ 219 ECUACIÓN [ 7-31 ] ........................................................................................................................................ 219 ECUACIÓN [ 7-32 ] ........................................................................................................................................ 220 ECUACIÓN [ 7-33 ] ........................................................................................................................................ 220 ECUACIÓN [ 7-34 ] ........................................................................................................................................ 220 ECUACIÓN [ 7-35 ] ........................................................................................................................................ 220 ECUACIÓN [ 7-36 ] ........................................................................................................................................ 220 ECUACIÓN [ 7-37 ] ........................................................................................................................................ 220 ECUACIÓN [ 7-38 ] ........................................................................................................................................ 220 ECUACIÓN [ 7-39 ] ........................................................................................................................................ 221 ECUACIÓN [ 7-40 ] ........................................................................................................................................ 224 ECUACIÓN [ 7-41 ] ........................................................................................................................................ 225 ECUACIÓN [ 7-42 ] ........................................................................................................................................ 225 ECUACIÓN [ 7-43 ] ........................................................................................................................................ 225 ECUACIÓN [ 7-44 ] ........................................................................................................................................ 225 ECUACIÓN [ 8-1 ] .......................................................................................................................................... 234 ECUACIÓN [ 8-2 ] .......................................................................................................................................... 234 ECUACIÓN [ 8-3 ] .......................................................................................................................................... 235 ECUACIÓN [ 8-4 ] .......................................................................................................................................... 235 ECUACIÓN [ 8-5 ] .......................................................................................................................................... 235 ECUACIÓN [ 8-6 ] .......................................................................................................................................... 236 Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 17 ECUACIÓN [ 8-7 ] .......................................................................................................................................... 236 ECUACIÓN [ 8-8 ] .......................................................................................................................................... 243 ECUACIÓN [ 9-1 ] .......................................................................................................................................... 248 Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 18 Índice de Tablas TABLA 1-1: COMPARATIVA CUALITATIVA ENTRE UN COMPUTADOR Y UN SISTEMA NERVIOSO .......................................... 25 TABLA 2-1: PARÁMETROS DEL MOTOR REAL USADO EN EL SIMULADOR ...................................................................... 43 TABLA 2-2: SECUENCIA DE EMISIÓN DE SPIKES DE UN GENERADOR EXHAUSTIVO BIT-WISE DE 8 BITS, PARA LOS POSIBLES VALORES DE ENTRADA .............................................................................................................................. 45 TABLA 2-3: RESUMEN DE LA SÍNTESIS DEL GENERADOR EXHAUSTIVO BIT-WISE PARA DIFERENTES NÚMEROS DE BITS ............ 47 TABLA 2-4: COMPARATIVA ENTRE LOS MODULADORES PWM Y PFM ....................................................................... 64 TABLA 3-1: ESTADOS DEL HOLD & FIRE ............................................................................................................... 70 TABLA 3-2: CONSUMO HARDWARE Y FRECUENCIA DE FUNCIONAMIENTO DE LAS IMPLEMENTACIONES DEL HOLD & FIRE ...... 91 TABLA 4-1: PROPIEDADES CUALITATIVAS LA RESPUESTA DE UN SISTEMA CON UN CONTROLADOR PID .............................. 93 TABLA 4-2: RESUMEN DE LA SÍNTESIS DE LA IMPLEMENTACIÓN DEL MODELO INTEGRATE & GENERATE PARA DIVERSOS NÚMEROS DE BITS ................................................................................................................................... 96 TABLA 4-3: GANANCIA EQUIVALENTE DEL INTEGRATE & GENERATE PARA DIVERSOS DIVISORES DE FRECUENCIA ................. 98 TABLA 4-4: GANANCIA EQUIVALENTE DEL INTEGRATE & GENERATE PARA DIVERSOS NÚMEROS DE BITS ............................ 99 TABLA 4-5: RESUMEN DE LA SÍNTESIS DE LA IMPLEMENTACIÓN DEL DERIVADOR DE SPIKES PARA DIVERSOS NÚMEROS DE BITS ......................................................................................................................................................... 105 TABLA 4-6: GANANCIA EQUIVALENTE DEL DERIVADOR DE SPIKES PARA DIVERSOS DIVISORES DE FRECUENCIA .................... 107 TABLA 4-7: GANANCIA EQUIVALENTE DEL DERIVADOR DE SPIKES PARA DIVERSOS NÚMEROS DE BITS .............................. 108 TABLA 4-8: RESUMEN DE LA SÍNTESIS Y RENDIMIENTO DEL CONTROLADOR PID BASADO EN SPIKES ................................ 125 TABLA 5-1: ESPACIO DE DIRECCIONES INTERNO DEL CONTROLADOR PID EN LAZO CERRADO ......................................... 136 TABLA 5-2: ESPACIO DE DIRECCIONES DETALLADO DEL MONITOR AER DEL CONTROLADOR PID BASADO EN SPIKES ........... 140 TABLA 5-3: RESULTADOS DE LA SÍNTESIS DEL CONTROLADOR PID EN LAZO CERRADO .................................................. 141 TABLA 5-4: PARÁMETROS DEL MOTOR REAL USADO PARA LOS EXPERIMENTOS ........................................................... 144 TABLA 5-5: PARÁMETROS DEL CONTROLADOR PI BASADO EN SPIKES ....................................................................... 158 TABLA 5-6: PARÁMETROS DEL CONTROLADOR PD BASADO EN SPIKES ...................................................................... 162 TABLA 5-7: CASOS DE PRUEBA DEL CONTROLADOR PID BASADO EN SPIKES ............................................................... 164 TABLA 5-8: CASOS DE PRUEBA DEL CONTROLADOR PID DE POSICIÓN BASADO EN SPIKES ............................................. 170 TABLA 6-1 RESULTADOS DE LA SÍNTESIS DEL CONTROLADOR DE EDDIE .................................................................... 178 TABLA 6-2: ESPACIO DE DIRECCIONES INTERNO DE EDDIE .................................................................................... 179 TABLA 6-3: ESPACIO DE DIRECCIONES DETALLADO DEL MONITOR AER DE EDDIE ...................................................... 180 TABLA 6-4: PARÁMETROS USADOS PARA LOS EXPERIMENTOS REALIZADOS SOBRE EDDIE .............................................. 180 TABLA 7-1: TIEMPO DE SUBIDA DEL FILTRO DE SPIKES PASO DE BAJA FRENTE AL NÚMERO DE BITS DEL INTEGRATE & GENERATE ......................................................................................................................................................... 192 TABLA 7-2: TIEMPO DE SUBIDA DEL FILTRO DE SPIKES PASO DE BAJA FRENTE AL DIVISOR DE FRECUENCIA DEL INTEGRATE & GENERATE ........................................................................................................................................... 193 TABLA 7-3: FRECUENCIA DE CORTE DEL FILTRO DE SPIKES PASO DE BAJA FRENTE AL NÚMERO DE BITS DEL INTEGRATE & GENERATE ........................................................................................................................................... 195 TABLA 7-4: FRECUENCIA DE CORTE DEL FILTRO DE SPIKES PASO DE BAJA FRENTE AL DIVISOR DE FRECUENCIA DEL INTEGRATE & GENERATE ........................................................................................................................................... 195 TABLA 7-5: GANANCIA Y TIEMPO DE SUBIDA DEL FILTRO DE SPIKES PASO DE BAJA FRENTE AL VALOR DIVISOR DE SPIKES DE LA REALIMENTACIÓN ................................................................................................................................. 201 TABLA 7-6: GANANCIA Y FRECUENCIA DE CORTE DEL FILTRO DE SPIKES PASO DE BAJA FRENTE AL VALOR DIVISOR DE SPIKES DE LA REALIMENTACIÓN .............................................................................................................................. 202 TABLA 7-7: GANANCIA Y TIEMPO DE SUBIDA DEL FILTRO DE SPIKES PASO DE BAJA FRENTE A LOS VALORES DE LOS DIVISORES DE SPIKES ................................................................................................................................................ 205 TABLA 7-8: GANANCIA Y FRECUENCIA DE CORTE DEL FILTRO DE SPIKES PASO DE BAJA FRENTE AL VALOR DIVISOR DE SPIKES DE LA REALIMENTACIÓN .............................................................................................................................. 206 Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 19 TABLA 7-9: GANANCIA DEL FILTRO DE SPIKES PASO DE ALTA FRENTE A LOS VALORES DE LOS DIVISORES DE SPIKES .............. 208 TABLA 7-10: GANANCIA Y FRECUENCIA DE CORTE DEL FILTRO DE SPIKES PASO DE ALTA FRENTE AL VALOR DIVISOR DE SPIKES DE LA REALIMENTACIÓN .............................................................................................................................. 210 TABLA 7-11: PARÁMETROS DE LOS FILTROS PASO DE BANDA BASADOS EN SPIKES PARA DISTINTAS FRECUENCIAS CENTRALES DE PASO .................................................................................................................................................. 216 TABLA 7-12: PARÁMETROS DE LOS FILTROS PASO DE BANDA BASADOS EN SPIKES PARA DISTINTOS FACTORES DE CALIDAD .. 217 TABLA 7-13: PARÁMETROS DE LOS FILTROS PASO DE BANDA BASADOS EN SPIKES DE ALTA CALIDAD CON DISTINTOS FACTORES Q ...................................................................................................................................................... 221 TABLA 7-14: RESUMEN DE LA SÍNTESIS Y RENDIMIENTO DE LOS FILTROS BASADOS EN SPIKES ........................................ 226 TABLA 8-1: PARÁMETROS DEL ALGORITMO GENÉTICO PARA EL AJUSTE DE UNA CÓCLEA DE 16 CANALES .......................... 238 TABLA 8-2: RESULTADOS DEL ALGORITMO GENÉTICO TRAS CALCULAR UNA BANCO DE FILTROS DE 16 CANALES ................ 239 TABLA 8-3: PARÁMETROS DE LOS FILTROS PASO DE BAJA OBTENIDOS DESDE LAS FRECUENCIAS DE CORTE ........................ 241 TABLA 8-4: CONSUMO HARDWARE DE BANCOS DE FILTROS DE DIVERSOS NÚMEROS DE CANALES ................................... 243 TABLA 9-1: OPERACIONES BÁSICAS EN COMPUTADORES ANALÓGICOS Y SUS EQUIVALENTES EN PROCESADOR PULSANTE .... 249 Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 20 1. Introducción y objetivos 1.1. Los sistemas neuro-inspirados, justificación y antecedentes El comienzo de la vida en la tierra se data hace 4.400 millones de años, desde aquel momento los seres vivos comenzaron a colonizar todo el planeta. A lo largo y ancho de la tierra nos encontramos con una gran diversidad de condiciones medioambientales, desde ambientes favorables hasta otros extremos para la vida, sin embargo los seres vivos han conseguido colonizar exitosamente estos entornos. Una de las claves más importantes para la expansión de la vida ha sido la capacidad de adaptación de los seres vivos, estando dotados por la naturaleza de las cualidades necesarias para poder sobrevivir a un determinado entorno. Además, dada la elevada diversidad de hábitats naturales, los seres vivos no han tenido más remedio que especializarse en la supervivencia en su entorno más próximo, y en consecuencia se ha producido una riquísima diversidad de especies. Las características particulares de cada especie están codificadas en el código genético de cada individuo, las cuales han sido moldeadas desde el origen de la vida gracias a la evolución natural. En 1859 Charles Darwin publicó su teoría de la evolución en el “Origen de las especies”, en ella proponía que mediante selección natural los individuos mejor adaptados de una especie en su entorno, tenían mayores probabilidades de sobrevivir y perpetuar así su línea genética, es decir, los individuos más exitosos distribuían su código genético a una mayor cantidad de nuevos individuos. Sin embargo, la transmisión de la información genética de un individuo a otro no está libre de errores, si no que se le incluye un pequeño “ruido” o mutaciones. De manera que el código genético de cada individuo es prácticamente único, presentando pequeñas variaciones que en una u otra medida afectarán a la manera en la que el individuo sobrevivirá en su entorno, siendo ésta la clave de la adaptación y la evolución de las especies. Gracias a la evolución, la naturaleza ha conseguido crear una gran diversidad de especies, logrando una infinidad de soluciones muy eficientes a los problemas de adaptación de los seres vivos en su entorno. A lo largo de la historia en infinidad de ocasiones los ingenieros se han inspirado en las soluciones alcanzadas por la naturaleza para resolver problemas en los más diversos campos, siendo éste el origen de los sistemas bio-inspirados, encontrándolos a nuestro alrededor cada vez con más frecuencia. Por ejemplo, alguno de los sistemas bio-inspirados, en cierta medida, pueden ser los aviones, submarinos o robots humanoides. En las últimas décadas la industria ha sufrido una revolución gracias a la aparición de los sistemas computacionales y robóticos. En la industria se le han ido asignando diversas tareas a los robots, en especial tareas peligrosas, aquellas que requieren de una “fuerza sobrehumana”, o muy repetitivas y precisas. Sin embargo estos robots están programados para realizar un conjunto muy limitado de tareas, teniendo que estar localizados en un ambiente casi completamente controlado, con una capacidad de adaptación y aprendizaje prácticamente nula, y consumiendo unas cantidades ingentes de energía comparados con los seres vivos. Sin embargo, este hecho contrasta frontalmente con las habilidades de los animales, y sobre todo con la extremada facilidad con la que se desenvuelven en su entorno, los cuales no sólo pueden navegar libre e inteligentemente (dentro de sus posibilidades) por su entorno, si no que son capaces de procurarse su propia energía, aprender, desarrollar actividades sociales, Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 21 personalidades propias, comunicarse y organizarse para lograr fines comunes, etc… O en otras palabras, el desarrollo de habilidades sociales, cognitivas y culturales. En la actualidad la mayoría de los robots están gobernados por comportamientos algorítmicos, procesados por sistemas basados en computadores. En los últimos años los computadores han evolucionado a un ritmo muy alto, alcanzando una capacidad de procesamiento elevadísima, tal y como fue predicho por la Ley de Moore [Moore65]. Sin embargo las habilidades de los robots no han aumentado en la misma medida, si no que van progresando a un ritmo muchísimo más lento. Entonces caben plantearse dos preguntas, ¿se puede modelar con la suficiente fidelidad el comportamiento de un ser vivo para con posterioridad ser codificado algorítmicamente? Y en caso de que así fuera, ¿podría ejecutarse este algoritmo en tiempo real y con suficiente fiabilidad en un computador? Las respuestas a ambas preguntas son en cualquier caso debatibles, y por supuesto dependientes del animal a ser tomado como modelo, pero en nuestra opinión, no parece muy arriesgado afirmar que el ser humano será difícilmente modelable en las próximas décadas. Sin embargo las posibles respuestas a estas preguntas pueden dar lugar a muchas más preguntas, pero de en entre ellas cabe plantearse si los sistemas basados en computador actuales son los sistemas más adecuados para proporcionar a los robots de habilidades cognitivas avanzadas [Penrose89]. La solución a todas estas cuestiones es actualmente desconocida, pero tal vez pueda pasar por tratar de imitar al “controlador” de los propios seres vivos, el sistema nervioso, realizando tareas de “ingeniería inversa”, surgiendo así los sistemas neuro-inspirados. Estos son un subconjunto de los sistemas bio-inspirados, los cuales tratan de resolver problemas comunes en la ingeniería mediante el uso de sistemas que están basados en la manera que el sistema nervioso codifica y procesa la información, siendo un campo en continuo desarrollo gracias al trabajo de los ingenieros neuromórficos. El término de ingeniería neuromórfica fue por primera vez usado por Carver Mead en el CalTech al final de los años 80 [Mead89], siendo su objetivo inicial el imitar el comportamiento de las neuronas en el sistema nervioso mediante circuitos analógicos VLSI o aVLSI [Liu02]. Sin embargo el campo de estudio de los ingenieros neuromórficos se expandido en los últimos años, usando tanto circuitos analógicos, como digitales, o de señal mixta para implementar modelos neuronales. Siendo un aspecto muy importante en la ingeniería neuromórfica el entender como mediante el uso modelos neuronales la naturaleza ha creado arquitecturas muy robustas al ruido, increíblemente eficientes, y que además incorporan mecanismos de aprendizaje. La ingeniería neuromórfica agrupa a una serie de investigadores especialistas en los más diversos campos, como son matemáticos, físicos, biólogos, psicólogos e ingenieros de las más diversas ramas. En 1906 el científico español Santiago Ramón y Caja recibió el premio Nóbel de medicina por sus pioneras investigaciones sobre la estructura microscópica del cerebro, descubriendo que el cerebro estaba formado por un conjunto de células independientes conectadas entre ellas, las neuronas. Sus estudios fueron posibles gracias a los avances en los métodos de tinción y de tecnología de los microscopios, plasmando en láminas ilustradas sus observaciones, pudiéndose encontrar en la Figura 1.1 una reproducción de una de las láminas originales. Las neuronas son un tipo especial de células que transmiten su actividad en forma de impulsos eléctricos o potenciales de acción, y aunque son diversas, la mayoría están Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 22 compuestas por tres elementos, el soma, o núcleo de la neurona, las dendritas, compuestas por filamentos de la membrana celular sensible a estímulos externos, y el axón, el cual representa el canal a través del que “viajan” los estímulos generados por una neurona, procesando la información en la conexión entre dendritas y somas, gracias a un fenómeno conocido como la sinapsis [Johnston95]. Figura 1.1: Reproducción de una lámina ilustrada de Ramón y Cajal del cerebro de un ave Las neuronas tienen características fisiológicas muy complejas, en 1952 Hodgkin y Huxley [Hodgkin52] analizaron el comportamiento electrónico de una neurona aislada, estudiando el comportamiento de los canales de sodio y potasio, recibiendo gracias a su estudio el premio Nóbel de medicina en 1963. Demostrando que las neuronas representaban, comunicaban y procesaban la información mediante pequeños pulsos electrónicos en el tiempo, conocidos como potenciales de acción, action potentials o spikes. En su modelo describen el comportamiento de una neurona como una serie de ecuaciones diferenciales no lineales [Lamberti97], un spike consiste en una alteración del voltaje entre membranas de las dendritas de las neuronas, generando las neuronas conectadas nuevos spikes, en base a los spikes recibidos por sus dendritas, estando toda la información codificada en los spikes disparados por las diversas neuronas [Shepherd90][Maass99]. La Figura 1.2 muestra las características Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 23 temporales de un spike al ser disparado por una neurona, al principio los canales de la membrana de la neurona se encuentran polarizados con un potencial inferior a un umbral (Threshold), no emitiendo, y por tanto, no realizando ninguna actividad mientras este umbral no se supere. En algún momento llegarán a la neurona una serie de estímulos externos, de tal manera que si el potencial de la membrana de la neurona alcanza el umbral, despolarizándose bruscamente, se genera un spike y transmitiéndose un impulso nervioso, conteniendo en él la información procesada. Un breve instante después a la despolarización de la neurona, se polarizará de nuevo hasta “hyper-polarizarse”, no siendo capaz de transmitir un nuevo spike hasta transcurrido un período de tiempo conocido como el período refractario. Figura 1.2: Diagrama de un potencial de acción, o spike, generado por una neurona Uno de los puntos clave es la hipótesis de la representación de la información por parte de las neuronas, mucho se ha debatido sobre como codificar la información en los spikes, Horace Barlow en 1961 propuso varios modelos [Barlow61], siendo un modelo muy aceptado el campo de la ingeniería neuromórfica el que se propone la codificación de la información en la frecuencia de los spikes, siguiendo una modulación en frecuencia de pulsos, spikes, o PFM [Westerman97][Maass99]. De esta manera la información puede ser codificada de forma continua, sin necesidad de realizar una discretización temporal de la información [Fujii96] [Hynna01], es más, un computador digital codificará la información como un número binario, necesitando un elevado número de bits, además de necesitar introducir ciertos “artificios”, como representar la información en coma flotante, para poder aumentar la precisión con la que representar la información. Siendo la representación pulsante extremadamente eficiente desde varios puntos de vista, comenzando con su simplicidad, reduciendo la cantidad de canales de comunicación necesarios para transmitir los spikes, y finalmente, aunque no menos importante, proporcionándonos una información continua, en ningún caso discreta. Ambos hechos tienen dos consecuencias muy interesantes, la minimización de canales de comunicación, permitiendo tasa de conectividad entre las neuronas altísimas, y además, al no estar la información muestreada, no se transmite información redundante, sino que sólo se Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 24 transmiten los spikes cuando son necesarios, no saturando los canales de comunicación innecesariamente. El cerebro es el elemento central del sistema nervioso de todos los vertebrados y la mayoría de los invertebrados, localizándose en la cabeza, protegido por el cráneo, y próximo a los órganos sensitivos más importantes, como son: la vista, el oído, el equilibrio, el gusto y el olfato. El cerebro humano es extremadamente complejo y se estima que contiene entre 15 y 33 billones de neuronas, pudiendo estar cada una de ellas conectadas con otras 10 mil neuronas. Estructurándose en capas de neuronas, las cuales están especializadas en procesar una parte de la información, y tienen una funcionalidad más o menos definida [Rakic88] [Shadlen94]. Para realizar el procesado de la información cada neurona está conectada a un campo proyectivo de neuronas a lo largo de diversas capas, fluyendo la información entre capas, y procesándose en este mismo fluir. Por ejemplo, se piensa que el córtex cerebral humano, o neo-cortex, es la parte más “evolucionada” de nuestro cerebro, siendo el responsable de la memoria, la atención, el pensamiento, el lenguaje y la conciencia. En la Tabla 1-1 realizamos un comparativa cualitativa desde un punto de vista muy general entre la manera en que funcionan un computador y el sistema nervioso de los seres vivos. La primera diferencia que encontramos es que un computador está sincronizado por una señal de reloj global, que le hace reaccionar continuamente cada ciclo de reloj, sin embargo, las neuronas se comportan manera completamente asíncrona, no existiendo ningún mecanismo explícito de sincronización entre ellas. Además el computador es elemento completamente determinista, dictaminando en todo momento tras una sucesión de operaciones aritméticas y lógicas en qué estado debe encontrase, en yuxtaposición, las neuronas responden a un modelo estocástico, dependiendo su reacción de modelos probabilísticos dinámicos. Los sistemas actuales computacionales tienen una alta resolución de la información que manejan, muestreada a un ritmo constante, una vez más, el sistema nervioso es completamente opuesto, la resolución de la información no es tan elevada, pero es capaz de adaptarse a las características de la información para mejorar su representación. En los sistemas computacionales actuales el procesamiento en sí de la información está muy centralizado, en el caso de ordenador personal, o levemente distribuido, como en un clúster, comparado con la manera en que las neuronas procesan la información, ya que cada neurona procesa de manera muy simple una pequeña parte de la información, no dependiendo de otras neuronas, e implementando de esta manera un modelo de procesamiento de la información masivamente paralelo. Para usar los computadores actuales resulta imperativo el proveerles de dispositivos de memoria tanto para almacenar los algoritmos a ejecutar, así como los datos iniciales, intermedios y finales, no obstante, los sistemas nerviosos no necesitan memoria para ninguno de estos fines, ya que por un lado el “algoritmo neuronal” que ejecutan las neuronas está modelado mediante las características fisiológicas de cada neurona y la topología con la que se conecta con otras neuronas, y por otro lado, toda la información relativa al procesamiento simplemente fluye, no se deja almacena en ninguna posición de memoria, sino que parte desde los órganos sensitivos y va siendo procesada a medida que va atravesando capas neuronales. En consecuencia, desde el punto de vista de los sistemas computaciones, la solución alcanzada por la naturaleza se presenta completamente revolucionaria en Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 25 muchísimos aspectos, además de los ya comentados, representando el desarrollo de elementos computacionales neuro-inspirados una actividad muy innovadora y prometedora. Tabla 1-1: Comparativa cualitativa entre un computador y un sistema nervioso Computador Sistema nervioso Reloj centralizado de alta velocidad. Asíncrono, sin ninguna señal global de reloj. Dictamina perfectamente y de manera determinista el estado lógico en que debe encontrarse. Las neuronas se comportan de forma estocástica, respondiendo a modelos probabilísticos. Alta resolución de la información con una tasa de muestreo constante. De baja resolución, pero adaptativo. Sin período de muestreo, estando la información contenida en los spikes. La computación está centralizada o levemente distribuida. Cada neurona procesa una pequeña parte de la información, implicando una computación completamente distribuida y masivamente paralela. La memoria está muy “lejos” del computador, necesitando memoria tanto para el algoritmo como para almacenar los datos. Las características morfológicas y las interconexiones de cada neurona son el algoritmo en sí, la información está contenida dentro de las neuronas. Las neuronas en el sistema nervioso presentan una alta tasa de conectividad, pudiendo estar cada una conectada a otras 10 mil, como acabamos de exponer. A la hora de implementar sistemas neuro-inspirados artificiales es muy difícil, o prácticamente imposible, alcanzar esta tasa de conectividad entre las neuronas en el interior de un circuito integrado aVLSI, y sobre todo, conectar de manera dedicada las neuronas de distintos chips entre ellas. Sin embargo, aunque la naturaleza nos aventaja en este aspecto, las neuronas presentan tiempos de respuesta del orden de milisegundos, mientras que los tiempos de los circuitos electrónicos actuales están en el orden de los nanosegundos. La solución al problema de la comunicación entre chips neuro-inspirados fue propuesta por Silvotti en el año 1991 [Silvotti91], la representación dirección-evento, o Address-Event Representation (AER). En la Figura 1.3 se muestra de manera esquemática como se realiza la transmisión de la información mediante la representación AER entre dos chips neuroinspirados. La representación AER propone el uso de un bus común multiplexado de alta velocidad para la comunicación de los spikes disparados por las neuronas de un chip, el bus AER. La idea es asignar una dirección, address, a cada neurona, de manera que cada vez que una neurona dispare un spike en el chip transmisor, un arbitrador hará que aparezca en el bus AER la dirección de la neurona que ha producido el spike, evento AER, pudiendo ser transmitido de diversas maneras. Una vez recibido un evento AER en el chip receptor, este es decodificado, enviado el spike original a una serie de neuronas receptoras. De esta forma, las neuronas de cada chip se encuentran virtualmente conectadas, fluyendo la información entre ellas, multiplexando el acceso a un canal de comunicación común, sólo accediendo a él las neuronas más activas [Boahen98][Boahen00][Zaghloul04]. Se han propuesto diversas maneras Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 32 - Los sistemas de control más comunes en la industria son los sistemas de control en lazo cerrado, en el Capítulo 3 vamos a proponer dos nuevos componentes para diseñar sistemas de control equivalentes a controladores proporciones, P, en lazo cerrado, simulándolos con las dos alternativas presentadas en el Capítulo 2, y de nuevo realizando una comparativa entre la idoneidad de usar uno u otro mecanismo de control. (Objetivo 2.a.ii) - Entre los controladores en lazo cerrado, uno de los más extendidos es el controlador Proporcional-Integral-Derivativo (PID), en el Capítulo 4 vamos a presentar un nuevo elemento que nos permitirá implementar de manera equivalente las componentes integrales y derivativas del controlador, así como la integración de todos los componentes presentados para la obtención de un controlador PID basado en spikes, equivalente a los controladores clásicos analógicos. También se ha simulado y analizado el controlador PID completo, identificando los parámetros del controlador, las fuentes de error y su rendimiento computacional. (Objetivo 2.a.ii) - Una vez diseñado y caracterizado el controlador PID en el simulador ha sido llevado a la realidad, en el Capítulo 5 exponemos como hemos llevado a cabo esta tarea, comenzando con el diseño de una plataforma hardware para dar soporte al controlador, la plataforma AER-Robot, diseñando nuevos componentes para la gestión externa del controlador y la monitorización de la actividad interna del controlador, analizando finalmente el efecto del controlador PID basado en spikes sobre un motor real. (Objetivo 2.a.iii) - En el Capítulo 6 proponemos un modelo de control basado en spikes para robots móviles diferenciales como una aplicación práctica de los controles expuestos en el Capítulo 5, construyendo como plataforma de demostración un pequeño robot móvil, Eddie. (Objetivo 2.c.i) - Tras abarcar todas las cuestiones relativas al control, en el Capítulo 7 vamos a adoptar un nuevo punto de vista sobre los elementos presentados con anterioridad, observándolos de una forma más general desde el punto de vista del procesamiento de señales, diseñando filtros frecuenciales de spikes con modelos equivalentes a los filtros frecuenciales analógicos. En este capítulo partiremos del diseño de un filtro paso de baja de spikes básico, incrementando su complejidad y presentando nuevos componentes, para diseñar filtros más complejos como los filtros paso de alta y paso de banda, además todos los filtros han sido simulados y analizados, identificando a nivel paramétrico sus características. (Objetivos 2.b.i y 2.b.ii) - En el Capítulo 8, exponemos los modelos que subyacen detrás de los sensores de audio neuro-inspirados pulsantes, las cócleas analógicas, proponiendo un nuevo modelo de cóclea sintética que remplaza los elementos analógicos de las cócleas actuales por los filtros paso de banda Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 33 presentados en el Capítulo 7, siendo una aplicación práctica muy prometedora. Sin embargo el modelo propuesto es muy complejo a nivel paramétrico, para resolver la sintonización paramétrica proponemos el uso de un algoritmo genético, siendo un ejemplo de cómo ajustar un sensor neuro-inspirado con técnicas bio-inspiradas de una manera rápida y eficiente. (Objetivo 2.c.ii) - En el Capítulo 9 se sintetiza el trabajo realizado, generalizando y proponiendo nuevas posibles aplicaciones, para finalmente exponer las conclusiones y aportaciones realizadas. - Finalmente presentamos las referencias bibliográficas usadas en este trabajo agrupadas en el Capítulo 10, y en el Apéndice A incluimos los esquemáticos de la placa de circuito impreso presentada en el Capítulo 5, la plataforma AER-Robot. Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 34 2. Mecanismos de actuación sobre motores de DC mediante neuronas pulsantes Nuestro primer objetivo consiste en aplicar los modelos de las neuronas pulsantes al control de elementos motrices de las plataformas robóticas e implementarlos en circuitos lógicos programables, como son las FPGA [Maxfield04]. En este capítulo se van a proponer diferentes estrategias para el manejo de motores de DC mediante el uso de neuronas pulsantes, implementaciones concretas de los elementos que conforman dichas estrategias, así como simulaciones de su comportamiento junto con modelos de simulación de motores de DC. Nuestra idea es introducir un elemento entre una secuencia de spikes (o pulsos) y un motor de DC, el cual “adapte” la información contenida en la frecuencia de los spikes, al movimiento en sí del motor. Estos elementos introducidos en una red neuronal pulsante multijerárquica, estarían localizados principalmente en las capas de salida de la red. Las salidas de los circuitos digitales se caracterizan por tener un rango de operación discreto, en su mayoría sólo alternan entre ‘1’ y ‘0’. Para controlar un motor de DC con señales digitales, cuya velocidad es proporcional al voltaje aplicado en sus bornes, hemos de aprovechar sus características frecuenciales. Es bien sabido que los motores de DC se comportan como filtros de paso de baja. En la Ecuación [ 2-1 ] se muestra la función de transferencia de un motor de DC ideal [Ogata04], pudiendo encontrarse en la Tabla 2-1 el significado físico de cada elemento, así como un ejemplo de valor. En la Figura 2.1 observamos el diagrama de Bode correspondiente a la función de transferencia de los motores de DC que se usarán más adelante en las simulaciones. En el diagrama de Bode del motor de DC se aprecian los dos polos de la función de transferencia del motor de DC, así como los decrementos de la ganancia del motor de DC, además de las pérdidas de fase asociadas a ambos polos, decreciendo asintóticamente hasta 180º. Ecuación [ 2-1 ] Apoyándonos en la Ecuación [ 2-1 ], eliminando los términos multiplicados por ‘s’ (dinámicos), obtenemos la Ecuación [ 2-2 ], en la que se muestra la expresión a que responde la ganancia estática de un motor de DC. Finalmente, despejando la velocidad estacionaria del motor, en la Ecuación [ 2-3 ], obtenemos la velocidad estacionaria alcanzada por el motor, por cada voltio aplicado a sus bornes. Constatando que la velocidad del motor muestra un comportamiento lineal con respecto al voltaje aplicado. Ecuación [ 2-2 ] Ecuación [ 2-3 ] Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 35 Figura 2.1: Diagrama de Bode del modelo de un motor de DC Aprovechando las características frecuenciales de los motores de DC, para controlarlos con un sistema digital, se han desarrollado diversas modulaciones digitales, en las que la información no viaja en los niveles lógicos de la señal, sino en su comportamiento temporal o frecuencial. Variando sólo la componente continua del espectro de la señal aplicada al motor, y haciendo que los armónicos introducidos por las señales digitales se encuentren lejos de la banda de paso del motor. Las dos modulaciones digitales clásicas para el control digital de motores de DC son: Modulación por Anchura de Pulsos (PWM). Modulación por Frecuencia de Pulsos (PFM). Siendo la más popular la modulación PWM, sobre todo en lo que respecta al control de motores. Aunque en general la modulación PWM se puede considerar como un mecanismo simple de conversión D/A aplicable en sistemas muy diversos, por ejemplo, desde sistemas audio [Soren04] hasta fuentes de alimentación conmutadas. 2.1. Conversión de una señal pulsante a una señal modulada por anchura pulsos: Una señal modulada siguiendo un esquema PWM tiene un periodo constante (TPWM) y un tiempo en alto variable (Th). Estando la información contenida en el tiempo que está en alto (Th), aunque también puede obtenerse de la relación ente TPWM (constante) y Th (variable), el dutty-cycle (Figura 2.3 arriba). El período de las señal PWM, TPWM, ha de tener un valor suficientemente pequeño para que su primer armónico, y los sucesivos, sean filtrados por el motor de DC. Si aplicamos una señal de PWM directamente a un motor de DC, éste alcanzará en régimen estacionario una velocidad proporcional al dutty-cycle de la señal PWM. Ya que la potencia de la componente en continua del espectro de la señal de PWM, es aproximadamente proporcional a la tensión de alimentación por el dutty-cycle de la señal, tal y -80 -60 -40 -20 0 20 40 Magnitude (dB) 101102103104105106 -180 -135 -90 -45 0 Phase (deg) Bode Diagram Frequency (rad/sec) Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 36 como se muestra en la siguiente Ecuación [ 2-4 ]. El resto de componentes han de tener una frecuencia suficientemente elevada para que sean filtradas por el motor [Rivas07]. Ecuación [ 2-4 ] Como una primera propuesta para traducir una secuencia de spikes a una señal de PWM, proponemos una arquitectura basada en un modulador PWM y un integrador de spikes (contador digital) [Jimenez08a] La idea radica en que el integrador cuente el número de spikes recibidos a lo largo del período de la señal PWM (TPWM). Cuando TPWM es alcanzado, el contador se “resetea” a cero, y la cantidad de spikes contados se transfiere al modulador de PWM. Esta cantidad de spikes contados responde a una discretización de una señal pulsante con período constante TPWM. El modulador de PWM generará la señal con un dutty-cycle proporcional a la cuenta de spikes del ciclo de PWM anterior. Para llevar a la práctica esta arquitectura, se ha implementado una entidad VHDL que traduce el tráfico de spikes a una señal de PWM. El esquema de interconexión de las entidades VHDL que componen a este elemento [Jimenez08a] se muestran en la Figura 2.2, a la izquierda el integrador de spikes conectado a las entradas de spikes, y a la derecha el modulador PWM y con la salida de la señal PWM. Ambos elementos están conectados por un bus de varios bits, transfiriéndose la cuenta de los spikes como un número discreto con signo. La cantidad de bits usada en este bus e internamente en el modulador PWM nos dictaminará la resolución de la señal PWM que se generará. CycleEnd RST RST SpikesCounter PWM Modulator PWM_p PWM_n CLK CLK Freq_Div FreqDiv RST COUNT UP CLK DOWN Spike_p Spike_n DATA_IN PWM_out_p PWM_out_n Figura 2.2: Circuito del conversor de spikes a PWM Obsérvese en la Figura 2.2 como tanto la entrada de los spikes, como la salida PWM tienen un ancho de 2 bits. La entrada de los spikes tiene dos bits para poder recibir spikes con signo (o polaridad), quedando la polaridad del spike determinada por la posición del bit por el que es recibido. Si un spike es recibido por la señal Spike_p, el spike se considera positivo; y de forma análoga, por Spike_n, será negativo. En caso de recibir un spike positivo, el contador incrementará su valor en ‘1’, sin embargo, en caso de recibir un spike negativo, se decrementará en una unidad. El modulador PWM recibirá la cuenta del integrador con signo a su entrada, seleccionando el canal (o bit) de salida de la señal PWM en base al signo de la Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 37 cuenta de entrada. En caso de que la cuenta del integrador sea positiva, la señal de PWM se encontrará en PWM_p, y en caso de ser negativa, encontraremos la señal de PWM en PWM_n. Para fijar el valor del período de PWM, TPWM, se dispone de la señal Freq_Div de 16-bits (Figura 2.2). El valor introducido en este bus está dirigido a un divisor de frecuencia interno en el modulador, el cual temporizará el modulador PWM. En las siguientes ecuaciones se muestra cómo se ha de calcular el valor del divisor de frecuencia para fijar el período de PWM, en base al número de bits del modulador PWM y el período de reloj de la FPGA. Ecuación [ 2-5 ] Ecuación [ 2-6 ] También podemos calcular el tiempo que la señal PWM estará en alto en base al número de spikes recolectados durante el último período de PWM: Ecuación [ 2-7 ] Dado que la frecuencia de los spikes es el número de spikes recolectados en un tiempo fijo, entre este mismo tiempo, podemos calcular el número de spikes recibidos en base su frecuencia: Ecuación [ 2-8 ] Sustituyendo el número de spikes contados en la Ecuación [ 2-7 ], podemos obtener el tiempo en alto de la señal PWM en base a la frecuencia de los spikes recibidos. Obsérvese como el tiempo en alto es lineal respecto a la frecuencia de los spikes. Así como el tiempo en alto crece cuadráticamente con el período de PWM, ya que cuanto mayor sea el período de PWM, más tiempo estará la señal a nivel alto por spikes recibido, y además estará más tiempo recolectando spikes, incrementando la cuenta de spikes para una frecuencia constante. Ecuación [ 2-9 ] Combinando esta última ecuación con la Ecuación [ 2-4 ], en la que mostrábamos el voltaje equivalente en continua en base al dutty-cycle de una señal PWM, podemos obtener el voltaje equivalente aplicado al motor en base a la frecuencia de los spikes de entrada: Ecuación [ 2-10 ] Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 38 Según la ecuación anterior el voltaje equivalente aplicado al motor debe ser directamente proporcional a la frecuencia de los spikes de entrada, pudiendo alterar la ganancia del sistema modificando el período de PWM. Finalmente podemos obtener la velocidad estacionaria teórica de un motor mediante el uso de este componente, en base a los parámetros constantes del sistema, periodo de PWM, resolución del modulador y tensión de alimentación, así como en base a la variable del sistema, que es la frecuencia de los spikes de entrada: Ecuación [ 2-11 ] En la Figura 2.3 mostramos la salida del modulador PWM ante una entrada de spikes con frecuencia decreciente. Se observa claramente el dutty-cycle de la señal de salida es proporcional a la tasa de spikes medida en el ciclo de PWM anterior. Como cabría esperar y evidencian los resultados de las simulaciones, este elemento introduce una latencia entre la señal de entrada de spikes a su aplicación sobre el motor equivalente a TPWM. 0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2 x 10-3 0 0.2 0.4 0.6 0.8 1 Time (Seconds) PWM 0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2 x 10-3 0 0.2 0.4 0.6 0.8 1 Time (Seconds) Spikes Tpwm Th Figura 2.3: Respuesta del conversor PWM ante una frecuencia de spikes de entrada decreciente A la hora de elegir el período de la señal PWM surge una cuestión acerca del rango dinámico de la señal PWM. Cuanta mayor precisión, bits, tenga el modulador PWM, una mayor tasa de spikes habrá que recibir durante un determinado TPWM para abarcar todo su rango dinámico. Es decir, si tenemos un modulador PWM de 8 bits, se necesitará recibir 128 spikes durante un TPWM para saturarse a ‘1’; sin embargo, aumentando la resolución 9 bits se necesitarán 256 en ese mismo TPWM. Esto nos obligaría tener que aumentar la frecuencia de los spikes de entrada al doble para tener un rango dinámico completo. Sin embargo, como se aprecia en las ecuaciones anteriores, desde el punto de vista de Freq_Div, el número de bits del modulador PWM no influye. En la siguiente ecuación mostramos el número mínimo de spikes necesarios para saturar un modulador PWM en base al valor dado a Freq_Div, así como una representación gráfica del mismo en la Figura 2.4. Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 39 Ecuación [ 2-12 ] Figura 2.4: Frecuencia mínima de saturación del conversor PWM frente a su divisor de frecuencia Este método está basado en la medida de la tasa de spikes recibidos durante un tiempo determinado. Podrían desarrollarse otras arquitecturas basadas en la medida del InterSpike-Interval (ISI) que paliasen en cierta medida el efecto de la latencia del período de integración. Sin embargo, a priori, esta nueva arquitectura sólo paliaría estos efectos en casos muy determinados (cambios bruscos en la frecuencia de los spikes), no terminaría de evitar la introducción del período de integración. 2.2. Adaptación de una señal pulsante a una modulación por frecuencia de pulsos. La modulación por frecuencia de pulsos, PFM, resulta especialmente atractiva, ya que coincide con la empleada por los spikes y las neuronas pulsantes en la naturaleza. Una señal modulada mediante PFM sigue un esquema exactamente opuesto a una señal PWM. En la modulación PFM el tiempo en alto es siempre constante1, pero la frecuencia, o separación temporal entre pulsos, es variable. Estando la información contenida en la frecuencia de la señal. En la Ecuación [ 2-13 ] mostramos la tensión en continua equivalente aplicada al motor. Esta ecuación es similar a la usada para el modulador PWM, pero en este caso, en vez de ser el tiempo en alto de la señal fijo y el período (o su inversa la frecuencia) variable, es justo al 1 Hay otra alternativa para modulación PFM, en la que la señal siempre es cuadrada, esto significaría que tanto su periodo como su tiempo en alto cambiarían a lo largo del tiempo. Este caso no es contemplado en este trabajo, ya que este tipo particular de modulación PFM no es contemplado en los modelos teóricos neuronales. 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0 10 20 30 40 50 60 70 80 90 100 Tpwm (Seconds) Min. Spike Rate for PWM saturation (Spikes/Sec) Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 40 contrario. Resultando la componente continua de la tensión equivalente en el motor, proporcional a la frecuencia de pulsos aplicada, controlando la ganancia estática en este caso con el tiempo en alto de cada pulso en la señal de PFM, justo al contrario que en la modulación PWM. Ecuación [ 2-13 ] Combinando esta última expresión con la Ecuación [ 2-3 ], en la que mostrábamos la velocidad estacionaria del motor frente al voltaje aplicado en sus bornes, podemos obtener la velocidad estacionaria teórica que alcanzará el motor para una frecuencia de pulsos o spikes constante: Ecuación [ 2-14 ] Siguiendo la filosofía de las neuronas pulsantes, donde intentamos evitar la integración de los spikes en el tiempo, y dado que los spikes siguen una modulación PFM, ¿por qué no aplicarlos directamente al motor de DC, evitando así la introducción de períodos de integración? La primera dificultad que nos encontramos es la estrechez de los spikes desde el punto de vista temporal (20nS en nuestras FPGA), incapaces de hacer conmutar una etapa de potencia. La solución pasa por incrementar la anchura temporal de los spikes durante un tiempo fijo (SpikesWidth) [Rivas07]. Al igual que con los adaptadores PWM, hemos diseñado una entidad VHDL que implementa esta funcionalidad, el Spikes Expansor, mostrado en la Figura 2.5. Está compuesto por un contador decreciente, un registro de un 1 bit, y un multiplexor también de 1 bit. De manera que cada vez que un spike es recibido, el contador se carga con el valor del ancho de spike, decrementándose en uno cada ciclo de reloj hasta que llega a cero, parando entonces la cuenta, y estando listo para recibir un nuevo spike. Siendo el bit de cero (/ZERO, activo en baja) del contador que generará la salida, mientras el contador sea distinto de cero, esta señal estará a nivel alto. Para proporcionar la polaridad adecuada a los spikes de salida, con un multiplexor nos encargaremos de redirigir el spike expandido a la señal adecuada. La señal de selección del multiplexor está conectada a un registro de 1 bit, el cual almacena un ‘0’ si el último spike recibido ha sido negativo, y un ‘1’ si el último spike ha sido positivo. Seleccionando así la salida adecuada del spike expandido. Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 41 RST PFM_p CLK /ZERO In SEL RST CLK LD Spike Width PFM_n Spike_p Spike_n RST CLK LD INPUT OUT Down Counter 1-bit Register 1-bit Mux Figura 2.5: Circuito del Spikes Expansor En la Figura 2.6 nos encontramos un cronograma que muestra el funcionamiento del Spikes Expansor. En ella vemos como tras recibir un spike a la entrada (en rojo), inmediatamente se propaga a la salida, y se incrementa durante un tiempo fijo (en púrpura). Figura 2.6: Salida del Spikes Expansor ante una entrada de spikes con frecuencia constante La anchura de los spikes viene determinada por la señal de entrada spikes_width, siendo el ancho de los spikes proporcional a este valor, multiplicado por el período de la señal de reloj por la que se rija esta entidad, tal y como se muestra en la Ecuación [ 2-15 ]. Un efecto interesante del Spikes Expansor es la saturación, ésta ocurre cuando se recibe un spike mientras aún se está incrementando uno anterior. Por ejemplo si tenemos un ancho de spike de 5us, y a los 2us de recibir un spike recibimos otro, el nuevo se incrementará sus 5us, estando la salida del Spikes Expansor a ‘1’ durante 7us, en vez de 10us distribuidos homogéneamente en el tiempo. En la Ecuación [ 2-16 ] se muestra la expresión a la que responde la frecuencia mínima necesaria para saturar la salida del Spikes Expansor a ‘1’. Ecuación [ 2-15 ] Ecuación [ 2-16 ] 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 x 10-5 0 0.2 0.4 0.6 0.8 1 Time (Seconds) Spikes and Expanded Spikes Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 48 función en seno, en la Figura 2.12, en ella podemos ver spikes tanto positivos como negativos, así como la dependencia de su frecuencia con el valor del seno de entrada. Figura 2.11: Salida del generador exhaustivo bit-wise de spikes ante una entrada en rampa Figura 2.12: Salida del generador exhaustivo bit-wise de spikes ante una entrada en seno Analizando más en profundidad la respuesta del generador exhaustivo bit-wise implementado, hemos realizado una simulación en la que fijamos el valor del divisor de frecuencia y hacemos un barrido de los posibles valores de la entrada, anotando la frecuencia media de los spikes generados para cada caso. En la Figura 2.13 mostramos las rectas de modulación de generador exhaustivo bit-wise para diferentes divisores de reloj (entre 1 y 10) y 8 bits. 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 x 10-3 0 1000 2000 3000 4000 5000 Bit-Wise Exhaustive Generator Input 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 x 10-3 0 0.2 0.4 0.6 0.8 1 Time (Seconds) Spikes 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 x 10-3 -2 -1 0 1 2x 104 Bit-Wise Exhaustive Generator Input 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 x 10-3 -1 -0.5 0 0.5 1 Time (Seconds) Spikes Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 49 Figura 2.13: Rectas de modulación de un generador exhaustivo bit-wise de spikes de 8 bits y con diversos divisores de frecuencia Siendo la pendiente de cada una de las rectas de modulación la ganancia de modulación del generador, acorde con la Ecuación [ 2-22 ], en la Figura 2.14 mostramos la ganancia de modulación para un modulador de 8 bits. Figura 2.14: Ganancias de modulación de un generador exhaustivo bit-wise de spikes de 8 bits y con diversos divisores de frecuencia Finalmente, hemos realizado un doble barrido, mostrado en la siguiente ilustración, en el que hemos simulado el generador para distintos números de bits, y distintos divisores de frecuencia, representando la ganancia del modulador como un gráfico en 3 dimensiones. 050 100 150 200 250 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5x 107 Exhaustive Bit-Wise Generator Input Generated Spikes Frequency (Spikes/Sec) 010 20 30 40 50 60 70 80 90 100 0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2x 105 Exhaustive Bit-Wise Generator Frequency Divider 8 bits Exhausive Bit-Wise Generator Gain Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 50 Figura 2.15: Ganancias de modulación del un generador exhaustivo bit-wise de spikes para diferentes números bits y con diversos divisores de frecuencia A continuación vamos a calcular la frecuencia máxima que puede alcanzar el generador de spikes exhaustivo bit-wise. Dado que la máxima frecuencia de salida nos la encontraremos cuando el valor a la entrada del generador alcance el máximo valor: Simplificando la expresión anterior obtenemos: Ecuación [ 2-23 ] De esta ecuación podemos deducir que la frecuencia máxima del generador no dependerá del número de bits del generador, sino del valor asignado al divisor de frecuencia. 2.3.2. Simulaciones basadas en PWM Las primeras simulaciones que vamos a presentar son las basadas en PWM. En la Figura 2.16 se muestra la interconexión de los componentes VHDL que integran el sistema. A la izquierda encontramos los puertos de entrada desde Simulink, están formados por: la señal de reloj y reset, la constante propia de cada método (en este caso Freq_Div / período de PWM), y el estímulo de entrada. Los estímulos de entrada están dirigidos hacia un generador de spikes sintéticos exhaustivos bit-wise. El generador sintético de spikes proporcionará los spikes de entrada del sistema, con una frecuencia proporcional al valor del estímulo, tal y como hemos expuesto en el apartado anterior. Finalmente los spikes (tanto positivos como negativos), se 12 13 14 15 16 17 18 19 20 0 5 10 15 20 0 2 4 6 8 x 105 Bit-Wise Spiker Generator Frequency Divider Bit-Wise Spikes Generator bits Bit-Wise Spikes Generator Gain Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 51 envían al modulador PWM basado en spikes, generando la señal PWM de salida. Siendo esta salida amplificada y enviada al motor de DC. Figura 2.16: Esquemas de simulación del conversor PWM en lazo abierto La Figura 2.17 es representa las revoluciones alcanzadas por el motor de DC para una frecuencia de spikes fija (305.2 kSpikes/Sec), y diversos períodos de PWM (Tpwm) (desde 41uSec hasta 161uSec). En ella vemos claramente cómo afecta el período de PWM a la respuesta del motor, además de la predicha respuesta sobre amortiguada. En cuanto al comportamiento estático, a mayor período de PWM mayor velocidad alcanzará el motor, ya que más tiempo estará el modulador PWM a ‘1’ por cada spike recibido. Así la ganancia estática asociada a la frecuencia de los spikes puede ser controlada con el período de PWM. Centrándonos en el comportamiento dinámico del motor, se observa claramente como con un período de Tpwm suficientemente pequeño, los armónicos introducidos por la modulación PWM son filtrados por el motor, no produciéndose oscilaciones en la respuesta del motor. Sin embargo, para períodos de PMW muy grandes, los armónicos de la señal PWM se encuentran más cercanas a las bandas frecuenciales de paso del motor, introduciéndose un leve rizado. Finalmente, destacar la latencia introducida por el modulador de PWM, si nos fijamos atentamente al inicio de la actividad del motor, en los casos con un TPWM elevado, se aprecia claramente como el motor tarda más tiempo en arrancar. Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 52 0 0.002 0.004 0.006 0.008 0.01 0.012 0.014 0.016 0.018 0 10 20 30 40 50 60 70 80 Simulation Time (Seconds) DC Motor Speed (Rads/Sec) Spikes Rate = 305.2kSpikes / Second Tpwm = 41uS Tpwm = 61uS Tpwm = 51uS Tpwm = 71uS Tpwm = 81uS Tpwm = 101uS Tpwm = 91uS Tpwm = 111uS Tpwm = 121uS Tpwm = 131uS Tpwm = 141uS Tpwm = 151uS Tpwm = 161uS Figura 2.17: Respuestas del motor en lazo abierto, usando PWM, con periodo variable y frecuencia de spikes constante Haciendo uso de los resultados de las simulaciones anteriores, vamos a compararlos con los resultados teóricos que cabría esperar para la modulación PWM. La Ecuación [ 2-24 ] muestra la velocidad estacionaria que debería alcanzar el motor de las simulaciones para la frecuencia fija de las simulaciones, y con diversos períodos de PWM: Ecuación [ 2-24 ] La Figura 2.18 la velocidad estacionaria alcanzada por el motor, extraída de las simulaciones anteriores, para los diferentes períodos de PWM (en azul), así como el resultado de sustituir los períodos de PWM de las simulaciones en la ecuación anterior (verde). En ella se aprecia claramente como la ganancia estática del modulador PWM es lineal respecto al período de PWM. Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 53 PWM Period (Seconds) Static DC Motor Speed (Rads/Sec) 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 x 10-4 20 30 40 50 60 70 80 Simulations Theorical Spikes Rate = 305.2kSpikes / Second Figura 2.18: Ajuste teórico de la ganancia, usando PWM, con periodo variable y frecuencia de spikes constante Gracias a los ToolBoxes proporcionados por MATLAB, podemos calcular los coeficientes de recta una regresión que nos aproxime los resultados de las simulaciones, obteniendo la siguiente recta de regresión: Donde x representa al período de PWM. Comparando la pendiente de esta recta con la pendiente teórica obtenemos: Finalmente, para una tasa de spikes fija, y un período de PWM variable, obtenemos en la simulaciones un ajuste de más del 99.9% respecto a los resultados teóricos. Para poder medir el rizado introducido por el modulador PWM, hemos calculado la transformada rápida de Fourier (Fast Fourier Transform, FFT) [ Mitra93] para cada respuesta asociada a cada período de PWM. En la Figura 2.19 podemos ver los espectros de todas las señales, estando ambos ejes en escala logarítmica, siendo el eje X la frecuencia en hercios y el eje Y la velocidad del motor en radianes por segundo. Obsérvese como la velocidad estacionaria del motor está en la componente continua de la transformada, además observamos armónicos en la frecuencia de PWM usada en cada simulación, así como los sucesivos armónicos de alta frecuencia introducidos por la señal de PWM, separados entre ellos por la frecuencia del PWM. También puede apreciarse claramente el efecto de la ganancia estática asociada al periodo de PWM, estando todas las transformadas sobrepuestas. Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 54 100101102103104105106107 10-8 10-6 10-4 10-2 100 102 104 Frequency (Hz) DC Motor Speed (Rads/Sec) Tpwm = 41uS Tpwm = 71uS Tpwm = 101uS Tpwm = 131uS Tpwm = 161uS Figura 2.19: Transformada de Fourier de las respuestas del motor, usando PWM, con periodo variable y frecuencia de spikes constante A continuación, en la Figura 2.20 mostramos la respuesta del motor ante un TPWM fijo (102.4uS) y diversas frecuencias de spikes de entrada (desde 117.6kSpikes hasta 457.7kSpikes). En ellas se observa la ya predicha linealidad de la velocidad del motor ante los diversos duttycycles de la señal PWM. Sin embargo cabe destacar el rizado que muestran las respuestas de los motores ante una secuencia de spikes de frecuencia creciente. Este rizado es producido debido a que la señal de PWM está a nivel bajo durante un breve período de tiempo, introduciendo componentes espectrales con relativamente alta potencia, en la banda de paso del motor. 0 0.002 0.004 0.006 0.008 0.01 0.012 0.014 0.016 0.018 0 10 20 30 40 50 60 70 80 Simulation Time (Seconds) DC Motor Speed (Rads/Sec) Tpwm = 102.4uS SpikeRate = 117.6kSpikes SpikeRate = 169.9kSpikes SpikeRate = 143.8kSpikes SpikeRate = 196.1kSpikes SpikeRate = 222.3kSpikes SpikeRate = 274.6kSpikes SpikeRate = 248.4kSpikes SpikeRate = 300.7kSpikes SpikeRate = 326.9kSpikes SpikeRate = 353.1kSpikes SpikeRate = 379.2kSpikes SpikeRate = 405.3kSpikes SpikeRate = 457.7kSpikes Figura 2.20: Respuestas del motor en lazo, usando PWM, con periodo fijo y frecuencia de spikes variable Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 55 Al igual que en el caso anterior, podemos comparar la respuesta de los motores en las simulaciones, con las ecuaciones teóricas planteadas con anterioridad. La Ecuación [ 2-25 ] muestra la velocidad estacionaria que debería alcanzar el motor de las simulaciones para un período de PWM fijo, en este caso 102.4uS, y frecuencia variable: Ecuación [ 2-25 ] En la Figura 2.21 mostramos la superposición de la velocidad estacionaria alcanzada por el motor, tanto de las simulaciones (azul), como de la predicción teórica (verde). Obsérvese como la velocidad alcanzada por el motor es lineal con la frecuencia de spikes aplicada a la entrada del modulador PWM. 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 x 105 10 20 30 40 50 60 70 80 Spikes Rate (Spikes / Sec) Static DC Motor Speed (Rads/Sec) Simulations Theorical Tpwm = 102.4uS Figura 2.21: Ajuste teórico de la ganancia, usando PWM, con periodo fijo y frecuencia de spikes variable Finalmente, vamos a calcular una regresión lineal de los resultados de las simulaciones, para así comparar los resultados de las simulaciones con el resultado teórico esperado: Donde x representa la frecuencia de spikes a la entrada del modulador PWM. Comparando la pendiente de esta recta con la pendiente teórica obtenemos: Finalmente, para un período de PWM fijo y una tasa de spikes variable, obtenemos en los resultados de las simulaciones un ajuste de más del 99.8% respecto a los resultados teóricos. También hemos calculado las FFT para cada respuesta del motor, en la Figura 2.22. En ellas, al igual que en el caso anterior, vemos armónicos en la frecuencia del PWM y sus sucesivos armónicos. Pero a diferencia del caso anterior, todos los armónicos están a la misma Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 56 frecuencia (ya que el periodo de PWM es el mismo en todos los casos). Solo variando la amplitud de cada armónicos en base a la frecuencia de los spikes aplicados. 100101102103104105106107108 10-8 10-6 10-4 10-2 100 102 104 DC Motor Speed (Rads/Sec) SpikeRate = 117.6kSpikes SpikeRate = 196.1kSpikes SpikeRate = 274.6kSpikes SpikeRate = 353.1kSpikes SpikeRate = 457.7kSpikes Frequency (Hz) Figura 2.22: Transformada de Fourier de las respuestas del motor, usando PWM, con periodo fijo y frecuencia de spikes variable 2.3.3. Simulaciones basadas en PFM A continuación vamos a mostrar las simulaciones basadas en PFM. En la Figura 2.23 se muestra la interconexión de los componentes VHDL que integran el sistema. Como puede apreciarse, son exactamente los mismo componentes que en el caso de la modulación PWM, pero variando el método de procesamiento de los spikes. En lugar del modulador PWM nos encontramos el expansor de spikes. Figura 2.23: Esquemas de simulación del Spikes Expansor en lazo abierto Al igual que en el apartado anterior vamos a comenzar por un conjunto de simulaciones, mostrada en la Figura 2.24, con una entrada de frecuencia constante (305.18kSpikes), y diversos anchos de spikes (desde 0.14uS hasta 0.6uS). Como se aprecia, a una frecuencia constante, podemos adecuar la ganancia del motor modificando el valor del ancho del pulso, tal y como indicaba la Ecuación [ 2-26 ]. A diferencia del PWM el rizado de la respuesta del motor no aumenta con el ancho de spike (o ganancia) usado. Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 57 0 0.002 0.004 0.006 0.008 0.01 0.012 0.014 0.016 0.018 0 10 20 30 40 50 60 70 80 Simulation Time (Seconds) DC Motor Speed (Rads/Sec) Spikes Rate = 305.2kSpikes / Second SpikeWidth = 0.14uS SpikeWidth = 0.18uS SpikeWidth = 0.22uS SpikeWidth = 0.26uS SpikeWidth = 0.30uS SpikeWidth = 0.34uS SpikeWidth = 0.38uS SpikeWidth = 0.42uS SpikeWidth = 0.46uS SpikeWidth = 0.50uS SpikeWidth = 0.54uS SpikeWidth = 0.58uS SpikeWidth = 0.62uS Figura 2.24: Respuestas del motor en lazo, usando PFM, con ancho de spike variable y frecuencia de spikes constante Análogamente al estudio del modulador PWM, para la modulación PFM podemos comparar la respuesta de los motores en las simulaciones, con las ecuaciones teóricas planteadas con anterioridad. La Ecuación [ 2-26 ] muestra la velocidad estacionaria que debería alcanzar el motor de las simulaciones para una frecuencia de spikes fija, 305.18KSpikes/Sec en este caso, y frecuencia variable. Ecuación [ 2-26 ] En la Figura 2.25 mostramos la superposición de la velocidad estacionaria alcanzada por el motor, tanto de las simulaciones (azul), como de la predicción teórica (verde). Obsérvese como la velocidad alcanzada por el motor para una frecuencia fija de spikes es lineal respecto al ancho de spikes utilizado: Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 64 Con el fin de cuantificar el consumo de recursos físicos hardware, hemos procedido a sintetizar ambos componentes VHDL. La FPGA para la que se ha realizado la síntesis pertenece a la familia Spartan3 de Xilinx, hemos seleccionado precisamente esta FPGA por que será usada de nuevo más adelante en la plataforma AER-Robot. En los reportes de la síntesis se nos informa sobre el consumo de recursos de la FPGA, así como de la velocidad máxima que pueden alcanzar nuestros circuitos. Los circuitos lógicos contenidos en la FPGA se dividen en slices (donde cada slice es un pequeño bloque de lógica), nuestra Spartan 3 contiene un total de 3584 slices. El conversor de spikes a PWM ocupa un total de 53 slices, y puede alcanzar una velocidad de reloj máxima de 140.6MHz. El Spikes Expansor consume 24 slices, y puede operar hasta 157.33MHz. Claramente el Spikes Expansor ocupa muchos menos recursos de la FPGA, gracias a su simpleza, en su contra, el conversor PWM incorpora elementos más complejos (un integrador, y modulador PWM en sí), ocupando casi el doble de hardware. Consecuentemente, el conversor PWM es ligeramente más lento, ya que las señales han de atravesar más circuitos lógicos combinacionales que en caso del Spikes Expansor, el cual, de nuevo muestra mejores gracias a su simpleza. Tabla 2-4: Comparativa entre los moduladores PWM y PFM Método de actuación Consumo Slices Máxima Frecuencia Latencia PWM 53 140.6MHz Equivalente al periodo de PWM PFM 24 157.33MHz Ninguna Normalmente el periodo para el caso del modulador PWM se fija de forma que la frecuencia fundamental, o más pequeña, esté lo suficiente alta para no producir efectos sobre el sistema, debido a que éste la filtra. Si se fija la anchura de pulso en PFM: ThPFM, y el periodo/frecuencia de PWM para el caso del PWM: FreqPWM, entonces consideramos FreqPFM y ThPWM variables, se tiene: Ecuación [ 2-29 ] Por ejemplo, si: FreqPWM=20kHz y ThPFM=0,001mSec. El factor FreqPWM/ThPFM =20000. Si ThPWM =0,01mSec, la frecuencia es de 200Khz para que la tensión teórica del PFM sea igual que la del PWM. Para ThPFM =0,001mSec sería 20Khz. En contra posición, si : FreqPWM=20kHz , ThPFM=0,1mSec. El factor FreqPWM/ThPFM= 200. Si ThPWM=0,01mSeC, la frecuencia es de 2Khz para que la tensión teórica del PFM sea igual que la del PWM. Para ThPWM =0,001mSec sería 200Hz. En el primer ejemplo la frecuencia que se debe utilizar en PFM es mucho mayor que la de PWM, debido a que el ancho de pulso elegido para PFM es mucho más pequeño que el periodo de PWM. En el segundo ejemplo la frecuencia de PFM a usar es mucho más pequeña que la de PWM, debido a que la anchura de pulso de PFM es más grande que el periodo de Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 65 PWM. La anchura de pulso en PFM es importante y tiene el mismo carácter que el periodo para el caso del PWM. Si se elige una anchura de pulso suficientemente pequeña no tiene por que producirse efectos indeseables en el motor, como vibraciones o sonidos, debido a que éste no filtre las componentes de frecuencia indeseadas como se expone en [Ertan04]. Finalmente, desde un punto de vista práctico, el uso de la modulación PFM elimina las pérdidas asociadas a la conmutación innecesaria de la fuente de alimentación, causada por los valores bajos en una señal de PWM. Si el valor de entrada del modulador PWM es muy pequeño, siempre estará conmutando a una frecuencia constante. Mientras que la modulación PFM para valores bajos sólo conmuta la fuente cuando es necesario. Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 66 3. Controles en lazo cerrado basados en sistemas pulsantes A lo largo de este capítulo vamos a exponer el diseño, implementación y simulación de mecanismos para realizar controles en lazo cerrado basados en neuronas pulsantes. En los sistemas de control tradicionales suelen implementarse controles en lazo cerrado, con el objetivo de mejorar la respuesta transitoria del sistema, así como hacerlo más inmune a las perturbaciones externas y efectos del desgaste [Houpis89]. La idea de los sistemas en lazo cerrado consiste en medir la variable a controlar (realimentación) y substraerla con el valor que deseamos alcance (referencia), obteniendo así el error que comete el sistema en cada instante. Finalmente al sistema se le aplicará una función de transferencia del error. Pudiendo dicha función de transferencia variar desde una simple proporción, controles P, hasta funciones dinámicas más complejas, controles PID, predictivos, adaptativos, etc. En la Figura 3.1 mostramos el diagrama de bloques global de un sistema realimentado negativamente, así como en la función de transferencia del sistema equivalente tras realimentarlo unitariamente en el dominio S. Motor(s) - + U(s) E(s) Y(s) Transfer Function TF(s) X(s) Feed-Back FB(s) FB(s) Figura 3.1: Diagrama de bloques de un control en lazo cerrado Ecuación [ 3-1 ] Centrándonos en los sistemas pulsantes, donde la información de la referencia estaría codificada en la tasa de spikes, al igual que la información de realimentación. El error sería una nueva secuencia de spikes, cuya frecuencia vendría proporcionada por la diferencia entre las frecuencias de las señales de entrada (referencia y realimentación). De nuevo, la información del error estará contenida en su tasa de spikes, tal y como mostramos en la siguiente ecuación: Ecuación [ 3-2 ] La idea sería proporcionar al sistema la velocidad de referencia codificada como spikes, y restarla de la velocidad real del motor, también codificada en spikes, obteniendo así el error de la velocidad del motor como spikes. Sólo quedando aplicar los spikes del error al motor, mediante un método de actuación u otro (PWM / PFM). Dado que mediante el uso de ambos métodos de actuación podemos controlar la ganancia estática en lazo abierto del sistema, podríamos implementar controles proporcionales (P). Ajustando la ganancia del sistema mediante de la selección adecuada del período de PWM o tiempo en alto del Spikes Expansor según corresponda en cada caso. Para realizar esta diferencia, y obtener así el error en tiempo real, proponemos dos mecanismos, aunque sólo el segundo de ellos ha sido implementado: Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 67 Inter-Spike-Interval Difference & Generate, basado en la medida del tiempo entre spikes (Inter-Spike-Interval, ISI), y posterior generación sintética Hold & Fire, cancelando spikes consecutivos con signos opuestos. 3.1. Modelo Inter-Spike-Interval Difference & Generate Este modelo se basa en medir el período de los spikes de entrada, procesándolos para obtener el período de los nuevos spikes de salida como un número discreto, y finalmente aplicando dicho número a un generador de spikes sintético exhaustivo bit-wise (descrito en detalle en capítulos anteriores). Este modelo no ha sido implementado por el alto coste hardware que a priori presenta, ya que como veremos a continuación hacen falta implementar divisores y multiplicaciones de un elevado número de bits, sin embargo, vamos a hacer un análisis preliminar, ya que ha sido de interés por algunos investigadores sobre el procesamiento de información basada en el ISI de los spikes [Liu04]. Como hemos expuesto en la introducción de este capítulo, necesitamos diseñar un elemento cuya frecuencia de salida, la cual representará el error del sistema, sea la diferencia de las frecuencias de entrada: Ecuación [ 3-3 ] Esta frecuencia, representada por un número entero, ha de ser aplicada al generador sintético de spikes con el fin de generar los spikes del error. Ecuación [ 3-4 ] Y en el caso particular de que la ganancial del modulador sea 1: Ecuación [ 3-5 ] En la Figura 3.4 mostramos una propuesta de la arquitectura interna que podría tener una posible implementación este modelo, a la izquierda las entradas de los spikes (U para la referencia e Y para la realimentación), en el centro un bloque encargado de medir el período de ambas señales así como calcular la frecuencia del error, y a la derecha finalmente el generador sintético de spikes. Para medir el período de ambas señales lo que vamos a hacer es utilizar un temporizador para cada señal, el cual se incrementará en 1 cada ciclo de reloj, de tal manera que cuando un spike se reciba, el valor del temporizador se escribirá en un registro y será puesto a 0. Este registro almacenará el último ISI, así como su signo, siendo la entrada de un circuito aritmético que calculará la frecuencia de salida. Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 68 RST ISI Diff RST CLK + - ISI_Diff Gen_InSpike_p Spike_n RST CLK CLK Exahustive Bit-Wise Spikes Generator Spikes_in_u Spikes_in_y Spike_out_p Spike_out_n genFreqDiv genFreqDiv Figura 3.2: Posible arquitectura del ISI-Difference & Generate Dado que los contadores se incrementan en 1 cada ciclo de reloj, existe una relación entre el número de bits de los contadores y la frecuencia mínima (períodos máximos) de las señales a la entrada. Dado que: Ecuación [ 3-6 ] Entonces: Ecuación [ 3-7 ] Donde Tclk es el período de reloj de la FPGA y n el número de bits del contador. Siendo la mínima frecuencia reconocible: Ecuación [ 3-8 ] En la siguiente figura mostramos la frecuencia mínima reconocible de las entradas frente al número de bits de los temporizadores, para una frecuencia de reloj de 50MHz. En la figura se ve claramente que para poder reconocer frecuencias menores a 1Hz se necesitan temporizadores de 26 bits. Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 69 Figura 3.3: Diferencia de frecuencia mínima reconocible en base al número de bits La necesidad de unos contadores tan grandes nos obliga a realizar operaciones con signo de 26 bits, lo cual supone un coste hardware elevadísimo en una FPGA, por ejemplo la Spartan3 que utilizaremos en capítulos posteriores tiene 6 multiplicadores de 18 bits, necesitando 2 multiplicadores para implementar un multiplicación de 27 bits con signo. Sin tener en cuenta la división, que deberíamos implementar algorítmicamente, consumiendo varios ciclos de reloj y otros dos multiplicadores. Por estos motivos, hemos decidido abandonar este modelo, en busca de otro que sea mucho más ligero desde el punto de vista del consumo de hardware, aunque en principio no proporcione respuestas tan precisas. 3.2. Modelo Hold & Fire. Manteniendo la filosofía de los modelos neuronales pulsantes, intentando solventar todos los problemas expuestos anteriormente que presentaba el modelo anterior, surge el modelo Hold & Fire [Jimenez09a]. Este modelo se basa en la retención (Hold) de los spikes, esperando a la evolución de las entradas, disparando (Fire) o anulando spikes, en base a la naturaleza de los spikes que se reciban. Es decir, cada vez que llega un nuevo spike este es retenido internamente, esperando a la evolución de las entradas durante un tiempo fijo, tiempo de hold. Si no llega ningún nuevo spike después del tiempo de hold, el spike retenido es disparado. Sin embargo, si llegan nuevos spikes, el spike retenido puede ser disparado, reteniendo un nuevo spike, o cancelado, sin producir ninguna salida y sin retener ningún spike. En la Tabla 3-1 se muestra en detalle el comportamiento del Hold & Fire para las posibles entradas en base a los diferentes spikes retenidos, y en la Figura 3.4 un ejemplo de su comportamiento temporal ante la llegada de un spike positivo por la referencia (U+) para los diversos tipos de spikes de entrada. En definitiva, pensando en una realimentación negativa, la idea es que según vayan llegando los spikes se vayan cancelando mutuamente, produciendo 12 14 16 18 20 22 24 26 28 30 32 10-2 10-1 100 101 102 103 104 105 Time Counter Number of Bits Minium Input Frequency (Fclk=50MHz) Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 70 así la substracción de las tasas de spikes de ambos puertos de entrada, y ofreciendo una salida con la tasa de spikes adecuada. Hold & Fire U YOut + Hold & Fire U YOut Hold & Fire U YOut U+ Hold & Fire U YOut Hold & Fire U YOut U+ Hold & Fire U YOut Hold & Fire U YOut U+ + + + + - - + Figura 3.4: Posibles evoluciones del Hold & Fire tras recibir un spike positivo por el puerto U Tabla 3-1: Estados del Hold & Fire Retenido Recibido Salida Prox. a ser retenido Retenido Recibido Salida Prox. a ser retenido -- U+ --- U+ Y+ --- - --- U- --- UU+ --- --- Y+ --- Y+ U- - UY- --- YY+ - Y+ U+ --- + ---- Y- --- --- U+ + U+ Y- --- + --- U- --- --- U+ + U+ Y+ --- --- U- --- --- Y- + YY+ --- --- U- --- - --- Y- + YU+ --- --- U- - UY+ - Y+ Y- --- --- En cuanto a la implementación concreta de este modelo, hemos diseñado un componente VHDL que responde a esta funcionalidad, cuyo diagrama de bloques se muestra en la Figura 3.5. Como se observa en la figura, está compuesto por cuatro contadores descendentes (uno por cada tipo de spike posible, ±U, ±Y) en los que se retendrán los spikes, y un circuito lógico encargado de gestionar los contadores, así como generar las salidas de la Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 71 entidad. Cada contador tiene dos entradas: set, carga el contador con el tiempo de hold, y reset, pone el contador a cero. Así como dos salidas: hold, cuyo valor en alto indica que tiene un spike retenido, y fire, señal que nos avisa de que el tiempo de hold a finalizado y ha llegado el momento de disparar un spike retenido. A continuación encontramos un circuito combinacional, el cual gestiona las señales de set y reset de cada contador, en base a las señales de hold y las entradas del sistema, así como disparando los spikes necesarios por su salida, implementando la funcionalidad descrita en la Tabla 3-1. Con el fin de poder observar su comportamiento para diversos tiempos de hold, podemos fijar el tiempo de hold de la referencia y la realimentación independientemente. Y+ SET RST HOLD FIRE YSET RST HOLD FIRE U+ SET RST HOLD FIRE USET RST HOLD FIRE COMBINATIONAL CIRCUIT SET0 RST0 HOLD0FIRE0 SET1 RST1 HOLD1FIRE1 SET2 RST2 HOLD2FIRE2 SET3 RST3 HOLD3FIRE3 RST U+ UY+ YOUT+ OUT - RST IN_U+ IN_UIN_Y+ IN_YOUT+ OUT - CLK HOLD_TIME CLK HOLD_TIME CLK HOLD_TIME CLK HOLD_TIME CLK HOLD_TIME_Y HOLD_TIME_U Figura 3.5: Circuito implementado para el Hold & Fire La Ecuación [ 3-9 ] nos permite calcular los tiempos de hold en base a la señal de entrada hold_time. Surge inmediatamente una cuestión sobre cuáles deben ser los tiempos de hold. Si los tiempos de hold son muy pequeños, aparece cierta incertidumbre en el sistema, es decir, sólo se cancelaran spikes si da la casualidad de que se disparan muy cerca en el tiempo. Dicha incertidumbre se traduce en que la resta de las tasas de spikes de entrada se realiza compensando spikes positivos con negativos a la salida, y como veremos más adelante, introduciendo perturbaciones en la respuesta del motor. Sin embargo, con tiempos de hold muy grandes, habrá suficiente tiempo entre spikes para que se cancelen, obteniendo una señal de salida cuya tasa de spikes será una resta precisa de las tasas de spikes de entrada. En un principio, para mantener una mínima incertidumbre, es necesario un tiempo de hold al menos mayor que el período de la mínima frecuencia posible de los spikes de entrada, como mostramos en la Ecuación [ 3-10 ]. Ecuación [ 3-9 ] Ecuación [ 3-10 ] 3.3. Modelos de simulación Al igual que en el capítulo anterior, hemos usado Simulink con Xilinx System Generator para simular estos modelos, junto con modelos dinámicos de motores de DC. Implementado controles proporcionales (P) de velocidad en lazo cerrado basados únicamente en spikes. Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 72 Vamos a comenzar con el estudio del comportamiento teórico de nuestro sistema ante una realimentación con un control proporcional. Estos controladores consisten en multiplicar el error del motor, respecto de la referencia proporcionada, por una constante. En el caso de los moduladores PWM y PFM la constante proporcional está representada por el período de PWM y el ancho de Spike respectivamente. Dado que nuestro sistema es de segundo orden, y de forma general, se tiene la siguiente expresión (equivalente a la Ecuación [ 2-1 ] para un motor de DC): Ecuación [ 3-11 ] Siendo la ganancia introducida por el método de actuación: Ecuación [ 3-12 ] La realimentación que vamos a realizar no es unitaria, ya que hemos de convertir la velocidad del motor a una señal de spikes. Para ello debemos realizar dos operaciones sobre la señal: primero escalarla, desde su velocidad al rango de trabajo del simulador (n-bits), y luego convertirla en spikes, calculando la frecuencia de los spikes en base a la velocidad del motor escalada: Ecuación [ 3-13] Donde p es la resolución del generador de spikes en bits, y Tclk el período de reloj del sistema. Siendo todos estos parámetros constantes del sistema, como veremos más adelante. Tal y como se expone en teoría de control tradicional [Ogata04], realimentando el sistema original obtenemos: Ecuación [ 3-14 ] Desarrollándolo: Ecuación [ 3-15 ] Donde: Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 73 Ecuación [ 3-16 ] Pudiendo obtener a partir de estas ecuaciones el resto de parámetros característicos teóricos del sistema realimentado en base a la ganancia K de los spikes [Aström09], como por ejemplo: Ecuación [ 3-17 ] Sustituyendo las constantes, en el caso particular de nuestro motor: Ecuación [ 3-18 ] Ecuación [ 3-19 ] Obteniendo las respuestas de la Figura 3.6 ante un escalón ideal, para diversos valores de la ganancia del sistema. Observándose como el sistema empieza a comportarse como un sistema sub amortiguado a partir de un determinado nivel de ganancia. Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 80 2 2.5 3 3.5 4 4.5 5 5.5 6 6.5 7 x 10-4 1.4 1.5 1.6 1.7 1.8 1.9 2 2.1 x 10-4 PWM Period (Seconds) PWM Closed-Loop Static Gain (Spike Rate* Rads/sec) Theorical Simulation Figura 3.15: Ganancia estática en lazo cerrado mediante el uso de PWM. Vistos los efectos del período de PWM en el sistema, ahora vamos a pasar a comprobar que efectivamente la respuesta en velocidad del motor es lineal respecto a la frecuencia de los spikes a la entrada. Para ello hemos realizado una secuencia de simulaciones, en las que el período de PWM permanece constante (0.15mSec, implicando una ganancia total en lazo cerrado de 1.215*10-4), y variamos la frecuencia de los spikes de la referencia de velocidad (desde 152.6 hasta 762.9 kSpikes/Sec). Los resultados de las simulaciones pueden verse en la Figura 3.16, donde se encuentran las referencias de velocidad aplicadas al sistema, así como la respuesta del motor para cada una de ellas. 0 0.005 0.01 0.015 0.02 0.025 0 20 40 60 80 100 120 140 160 180 200 Simulation Time (Seconds) DC Motor Speed (Rads/Sec) Speed Reference = 152.6kSpikes/Sec Tpwm = 0.15mS Speed Reference = 305.2kSpikes/Sec Speed Reference = 457.7kSpikes/Sec Speed Reference = 610.3kSpikes/Sec Speed Reference = 762.9kSpikes/Sec Figura 3.16: Respuesta del motor ante una referencia de spikes variable y período de PWM constante. Las ecuaciones teóricas predicen que la velocidad del motor debe seguir la siguiente expresión: Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 81 En la Figura 3.17 se muestran la velocidad estacionaria teóricas del sistema (azul), junto con la velocidad estacionaria extraída de las simulaciones (verde). Si hacemos una regresión lineal sobre las velocidades de las simulaciones, obtenemos: Donde x representa la frecuencia de los spikes de la referencia. Comparando la pendiente de esta recta con la pendiente teórica obtenemos: Finalmente, para un período de PWM fijo y una referencia de velocidad codificada con spikes variable, obtenemos en los resultados de las simulaciones un ajuste del 99.7% respecto a los resultados teóricos. 1 2 3 4 5 6 7 8 9 10 x 105 20 40 60 80 100 120 140 160 180 Spike Rate (Spikes/Sec) Closed-Loop Static Speed (Rads/sec) Theorical Simulation Figura 3.17: Comparativa entre la velocidad estacionaria del motor simulada y teórica, usando el modulador PWM 3.3.1.2. Simulaciones del Hold & Fire con el Spikes Expansor (PFM) Una vez analizado el comportamiento del sistema usando PWM, vamos a proceder a realizar un análisis similar, pero usando el Spikes Expansor, vamos analizar la interacción entre el H&F y el Spikes Expansor. Como se expuso en el capítulo anterior, la ganancia estática en lazo abierto mediante el uso del Spikes Expansor es: Ecuación [ 3-23 ] En base a la a Ecuación [ 3-1 ], el sistema resultante es: Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 82 Ecuación [ 3-24 ] Siendo la ganancia estática en lazo cerrado en base al período de PWM: Ecuación [ 3-25 ] Para comprobar el efecto del ancho de spike en el sistema, hemos realizado una primera secuencia de simulaciones, mostrada en la Figura 3.18, en la que aparece la respuesta del motor en trazo continuo y la salida ideal del motor, en trazo discontinuo. En estas simulaciones la frecuencia de los spikes de referencia es constante (915.5kSpikes -> 234.4 rad/Sec) y el ancho de spike variable (desde 0.2uSec hasta 10.2uSec). A primera vista se observa la ausencia del rizado introducido por el uso del PWM. Además a diferencia del uso del modulador PWM, el Spikes Expansor introduce una mínima latencia en el lazo de control (apenas 3 ciclos de reloj), consecuentemente el sistema no pierde tanta fase, pudiendo tener ganancias elevadas sin apenas sobre oscilación. En la figura también se observa claramente como la salida del motor en todos los casos es semejante a la respuesta ideal en estado estacionario, sin embargo, en las respuestas transitorias ambas difieren debido al error introducido por el controlador, el cual será estudiado en detalle en el próximo apartado. 0 1 2 3 4 5 6 7 8 x 10-3 0 50 100 150 200 250 Simulation Time (Seconds) DC Motor Speed (Rad/Sec) Speed Reference = 915.5kSpikes/Sec - 233 Rads/Sec SpikeWidth = 0.4uS SpikeWidth = 10.4uS Figura 3.18: Respuesta del motor ante una referencia de spikes constante y diversos anchos de spikes. Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 83 La Figura 3.19 muestra la ganancia en lazo cerrado del sistema extraída de las simulaciones (verde), frente a la predicha por las ecuaciones teóricas (azul). Se observa claramente como ambas tienen un comportamiento muy parejo, mostrando un ajuste entorno al 99.93%, 0 0.2 0.4 0.6 0.8 1 1.2 x 10-5 1 1.2 1.4 1.6 1.8 2 2.2 2.4 2.6 x 10-4 Spikes Width (Seconds) Spikes Expansor Closed-Loop Static Gain (Spike Rate* Rads/sec) Theorical Simulation Figura 3.19: Ganancia estática en lazo cerrado mediante el uso del Spikes Expansor. Vistos los efectos de la ganancia en el sistema, ahora vamos a pasar a comprobar que efectivamente la respuesta en velocidad del motor es lineal respecto a la frecuencia de los spikes a la entrada. Para ello hemos realizado una secuencia de simulaciones, en las que el ancho de spike permanece constante (4.82uSec), y variamos la frecuencia de los spikes de la referencia de velocidad (desde 152.6 hasta 1068.1kSpikes/Sec). Los resultados de las simulaciones se encuentran en la Figura 3.20, en la que mostramos las diferentes referencias de velocidad, y la respuesta del motor para cada una de ellas, estando de nuevo representadas las respuestas de las simulaciones en trazo continuo, y las teóricas en trazo discontinuo. Al igual que en las respuesta del motor en el caso anterior, cuando modificábamos el ancho de spikes, el ajuste obtenido entre los resultados de las simulaciones y la respuesta teórica, es muy bueno en estado estacionario, pero una vez más, en la respuesta transitoria se observa una leve desviación. Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 84 0 1 2 3 4 5 6 7 8 x 10-3 0 50 100 150 200 250 300 Simulation Time (Seconds) DC Motor Speed (Rad/Sec) Speed Reference = 152.6kSpikes/Sec SpikeWidth = 4.82uS Speed Reference = 305.2kSpikes/Sec Speed Reference = 457.8kSpikes/Sec Speed Reference = 610.4kSpikes/Sec Speed Reference = 762.9kSpikes/Sec Speed Reference = 915.5kSpikes/Sec Speed Reference = 1068.1kSpikes/Sec Figura 3.20: Respuesta del motor ante una referencia de spikes variable y ancho de spike constante. Las ecuaciones teóricas predicen que la velocidad del motor debe seguir la siguiente expresión: En la Figura 3.21 mostramos la velocidad estacionaria de las simulaciones (en verde) frente la velocidad estacionaria predicha por la ecuación anterior (en azul). Si realizamos una regresión lineal sobre las velocidades de las simulaciones, obtenemos: Donde X representa la frecuencia de los spikes de la referencia. Comparando la pendiente de esta recta con la pendiente teórica obtenemos: 1 2 3 4 5 6 7 8 9 10 x 105 20 40 60 80 100 120 140 160 180 Spike Rate (Spikes/Sec) Closed-Loop Static Speed (Rads/sec) Theorical Simulation Figura 3.21: Comparativa entre la velocidad estacionaria del motor simulada y teórica, usando el Spikes Expansor Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 85 En vista de los resultados obtenidos podemos concluir que el controlador usando Hold & Fire efectivamente se comporta como un sistema en lazo cerrado, controlando la velocidad del motor. Además tanto con el uso del modulador PWM y del Spikes Expansor, las respuestas del motor se ajustan con una elevada precisión a los modelos teóricos. 3.3.2. Fuentes de errores del control proporcional basado en spikes Tal y como se apreciaba en las figuras 3.16 y 3.18, el controlador en lazo cerrado proporciona en estado estacionario una respuesta por parte del motor muy próxima a la respuesta ideal, sin embargo, también se observan algunas desviaciones en la respuesta transitoria. Dichas desviaciones las achacamos a la desviación de la idealidad de los elementos componentes del control en lazo cerrado, y en consecuencia, a la falta de homogeneidad de los spikes presentes en el controlador. En primer lugar vamos a exponer las fuentes del error introducido por el Spikes Expansor, y aunque es el último elemento en el controlador, es el más afectado por la falta de homogeneidad temporal de los spikes. La Figura 3.21 ilustra el problema, en el que se deberían extender 3 spikes por un tiempo equivalente a 3 veces el ancho de spikes, en la parte superior de la figura. Sin embargo, en el pie de la figura vemos que los spikes a la entrada del Spikes Expansor no están homogéneamente distribuidos en el tiempo. Todo comienza cuando el segundo spike llega mientras aún se está extendiendo el primero, produciendo una “colisión”. Cuando se da esta situación el Spikes Expansor resetea el valor de su contador interno con el valor del ancho de spike, expandiendo el nuevo spike, y “olvidándose” del spike anterior. Como la entrada del Spikes Expansor en este capítulo es un Hold & Fire, como ha disparado un spike positivo de más, lo normal será que dispare uno negativo para compensarlo, de manera que ya no sólo tenemos una colisión, sino una colisión con spikes de distinto signo. En este caso el Spikes Expansor cambiará la polaridad de su salida, y comenzará a expandir el spike negativo. Finalmente llega el spike esperado, siendo extendido con normalidad. En consecuencia el tiempo que ha estado la entrada del motor activa ha sido distinto al deseado, además de presentar un cambio de polaridad. Más adelante mostraremos estos efectos sobre la respuesta del motor en la Figura 3.27. Figura 3.22: Salida del SpikesExpansor ante spikes no distribuidos homogéneamente en el tiempo A continuación vamos a estudiar el error cometido por el Hold & Fire junto con el generador de spikes Bit-Wise. El error introducido por ambos elementos lo vamos a observar al mismo tiempo, ya que vamos a usar dos generadores Bit-Wise para generar dos secuencias Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 86 de spikes para las entradas del Hold & Fire. La Figura 3.23 muestra el escenario de simulación diseñado con dichos fines, tal y como se aprecia a la izquierda en la figura, hemos situado dos generadores sintéticos exhaustivos de spikes a las entradas de un Hold & Fire, estando finalmente la salida de este conectada a un bloque que nos permitirá enviar la información al espacio de trabajo de MATLAB. Figura 3.23: Escenario de simulación del Hold & Fire En primer lugar hemos procedido a analizar la desviación de los spikes de salida del Hold & Fire. El mayor error introducido por este elemento depende de la diferencia en frecuencia en sí de los spikes de entrada, tal y como se muestra en la Figura 3.24. En dicha figura hemos fijado la frecuencia de la entrada positiva, y hemos ido incrementando la frecuencia de los spikes en la entrada negativa. De tal manera que en la gráfica superior la frecuencia de los spikes en la entrada negativa es muy baja, de tal forma que la salida del Hold & Fire son los spikes de la señal aplicada al puerto positivo, sólo cancelando un spike cada vez que se dispara un spike en el puerto negativo, obteniendo así una distribución temporal de los spikes pésima. Sin embargo, cuando vamos incrementando la frecuencia de los spikes del puerto negativo, la homogeneidad de los spikes de salida empieza a crecer, hasta que ambas señales tienen una frecuencia muy parecida, siendo la frecuencia de salida del Hold & Fire más baja, pero mucho mejor distribuida temporalmente. Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 87 Figura 3.24: Respuesta temporal de Hold & Fire ante señales de spikes con distintas diferencias de frecuencias Para analizar dicha desviación de distribución en el tiempo hemos medido el intervalo temporal de los spikes, Inter-Spikes-Interval, o ISI, comparándola con el ISI teórico que deberían tener. La Figura 3.25 muestra los resultados tras analizar la desviación en tanto por ciento del ISI de salida del Hold & Fire frente al ISI teórico esperado. La figura muestra una serie de lóbulos, los cuales son debidos a la falta de homogeneidad de los generadores de spikes basados en el método Bit-Wise, siendo esta una de las fuentes de error del sistema, y estudiado en detalle en [Paz09a][Gomez05]. Sin embargo, este error se ve agravado por el error Hold & Fire, superpuesto por una línea discontinua. Pudiendo oscilar entre un 2 y un 35%, dependiendo de la diferencia en frecuencia de los spikes a su entrada. 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 x 10-6 0 1 Spikes 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 x 10-6 0 1 Spikes 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 x 10-6 0 1 Spikes 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 x 10-6 0 1 Time (Seconds) Spikes Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 88 0 1 2 3 4 5 6 7 8 9 10 x 106 0 5 10 15 20 25 30 35 Inputs Spike Rate difference (Spikes/Sec) Output spikes desviation from ideal ISI (%) Figura 3.25: Desviación relativa del ISI de los spikes de salida del Hold & Fire frente al ISI ideal La cuestión que nos queda por abordar es la influencia de los tiempos de hold en el comportamiento del Hold & Fire. Para ello hemos realizado nuevas simulaciones, en las que hemos fijado la frecuencia de los generadores, 230.5KSpikes para la entrada positiva, y 184.3KSpikes para la negativa. A continuación vamos a variar el tiempo de Hold iterativamente, con el fin de comprobar el comportamiento de su salida. Los resultandos de las simulaciones pueden verse en la Figura 3.26. En primer lugar se muestran las señales de entrada generadas, en azul la positiva, y en rojo la negativa. A continuación se muestran las salidas del Hold & Fire para los diversos tiempos de hold, comenzando con el más bajo 20nSec, e incrementándose progresivamente en escalones de 1.5uSec hasta 6uSec. En la figura se ve como ante un tiempo de hold muy pequeño, los spikes no se “esperan” entre ellos, siendo disparados casi inmediatamente, y produciéndose una tasa de cancelaciones entre ellos muy pequeña. De tal manera que emitirá los spikes de la entrada positiva con signo positivo, y los de la entrada negativa con signo negativo, no cancelándose entre ellos, sino más bien compensando spikes positivos con spikes negativos. Sin embargo, según se va incrementando el tiempo de hold, la tasa de cancelación va aumentando, emitiendo menos spikes negativos, y distribuyendo los spikes positivos más homogéneamente en el tiempo. Hasta que finalmente, cuando se le proporciona un tiempo de hold suficientemente alto, por encima del período de ambas señales (nótese que el período más alto de ambas señales es de 5.4uSec, y el tiempo máximo de hold de 6uSec), la tasa de cancelación es la adecuada, no emitiéndose ningún spike positivo, y además consiguiendo una buena distribución temporal de los spikes de salida. Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 89 0 0.5 1 1.5 2 2.5 x 10-4 0 0.5 1 Spikes 0 0.5 1 1.5 2 2.5 x 10-4 -1 0 1 Spikes 0 0.5 1 1.5 2 2.5 x 10-4 -1 0 1 Spikes 0 0.5 1 1.5 2 2.5 x 10-4 -1 0 1 Spikes 0 0.5 1 1.5 2 2.5 x 10-4 -1 0 1 Spikes 0 0.5 1 1.5 2 2.5 x 10-4 0 0.5 1 Time (Seconds) Spikes Input Spikes Signals Hold Time = 20nSec Hold Time = 1.5uSec Hold Time = 3uSec Hold Time = 4.5uSec Hold Time = 6uSec Figura 3.26: Salidas del Hold & Fire ante entradas de distinta frecuencia y diversos tiempos de hold Para finalizar el análisis del error introducido por el Hold & Fire sólo nos resta ver efecto de los tiempos de hold sobre la respuesta del sistema. Nos vamos a centrar en el uso del Spikes Expansor, ya que el modulador PWM debido a la integración de los spikes a lo largo del período de PWM mitigaría estos efectos. Para ello hemos realizado una serie simulaciones del controlador proporcional en lazo cerrado basado en spikes de la Figura 3.11, cuyos resultados se muestran en la Figura 3.27, en la que la frecuencia de la referencia es fija (305.2kSpikes/Sec), así como el ancho de spike (6uSec), sin embargo hemos ido variando los tiempos de hold desde 0.3uSec hasta 3.3uSec. Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 96 Tabla 4-2: Resumen de la síntesis de la implementación del modelo Integrate & Generate para diversos números de bits Número de bits Slices Máxima Frecuencia 6 32 166.24 MHz 8 36 153.45 MHz 10 42 138.53 MHz 12 51 130.29 MHz 14 53 122.17 MHz 16 54 128.52 MHz 4.2. Simulación del modelo Integrate & Generate Para verificar el comportamiento de nuestra implementación del modelo Integrate & Generate, vamos a simularlo junto a un generador de spikes. Analizando su salida para diversas señales de excitación. Al igual que hemos actuado a lo largo de los capítulos anteriores, vamos a diseñar un escenario de simulación en el que vamos a situar un generador exhaustivo bit-wise de spikes a la entrada del Integrate & Generate, monitorizando y analizando su respuesta. La Figura 4.3 muestra el escenario de simulación. Figura 4.3: Escenario de simulación del Integrate & Generate En primer lugar vamos a proceder a excitar al Integrate & Generate con una frecuencia de spikes de entrada constante, es decir, una entrada en escalón. Esperando obtener una respuesta en rampa, con una pendiente equivalente a la ganancia del integrador multiplicado por la frecuencia constante de los spikes de entrada. Ecuación [ 4-11 ] Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 97 La Figura 4.4 muestra los resultados de la simulación ante una entrada en escalón. Hemos usado un Integrate & Generate de 9 bits, con un divisor de frecuencia de 12 ciclos de reloj, y una señal de reloj de 50MHz, obteniendo así una ganancia del integrador de aproximadamente 1.5024 * 104. Aplicando una señal a la entrada de 505.2kSpikes/Sec. En la parte superior de la figura se muestran la señal de excitación (azul), la integral teórica de dicha señal (verde) y la reconstrucción de la salida del Integrate & Generate (rojo). En la parte inferior de la figura mostramos los spikes del sistema, la entrada (azul), y la salida (verde) del Integrate & Generate. 103104 -40 -35 -30 -25 -20 -15 -10 -5 0 5 10 Spikes Frequency Change (Hz) Integrate & Generate Gain (dB) 15 bits, Frequency Divider = 0 15 bits, Frequency Divider = 1 17 bits, Frequency Divider = 0 17 bits, Frequency Divider = 1 Figura 4.4: Respuesta del Integrate & Generate ante una entrada en escalón Para comprobar el efecto del divisor de frecuencia en el comportamiento de Integrate & Generate, así como para verificar la veracidad de las ecuaciones teóricas, vamos a repetir la simulación anterior, pero variando el divisor de frecuencia del Integrate & Generate. Es decir, le vamos a proporcionar una frecuencia constante a la entrada, en este caso de 610.3kSpikes/Sec, y vamos observar su comportamiento para diversas ganancias del Integrate & Generate. En la Figura 4.5 se pueden observar los resultados de la simulación, el escalón en frecuencia de entrada se encuentra en la parte inferior de la figura en azul. A continuación, observamos la reconstrucción de la salida del Integrate & Generate para los diversos valores del divisor de frecuencia, en diversos colores y con una línea sólida, así como la integral teórica de la señal de entrada de forma discontinua. La figura muestra cómo el Integrate & Generate se comporta como un integrador, al que le podemos ajustar la ganancia del Integrate & Generate según la Ecuación [ 4-8 ] modificando el valor del divisor de frecuencia. De esta forma la pendiente de las salidas de Integrate & Generate son aproximadas a la ganancia de Integrate & Generate, acentuándose la pendiente según decrece el divisor de frecuencia, creciendo en consecuencia la ganancia del Integrate & Generate. En la Tabla 4-3 mostramos los divisores de frecuencia usados, así como la ganancia equivalente para un Integrate & Generate de 9 bits, operando con un reloj a 50MHz. Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 98 Tabla 4-3: Ganancia equivalente del Integrate & Generate para diversos divisores de frecuencia Valor del divisor de frecuencia Ganancia equivalente del Integrate & Generate 10 3.5511 * 104 15 2.4414* 104 20 1.8601* 104 25 1.5024 * 104 30 1.2601* 104 0 1 2 3 4 x 10-4 0 1 2 3 4 5 6 7 8 9x 106 Time (Seconds) Spikes Rate (Spikes/Sec) Frequency Divider = 10 Integrate & Generate Number of Bits = 9 bits Frequency Divider = 15 Frequency Divider = 20 Frequency Divider = 25 Frequency Divider = 30 Input Spikes Figura 4.5: Respuesta del Integrate & Generate ante una entrada en escalón para diversos divisores de frecuencia, junto con la respuesta teórica De forma análoga vamos a observar el comportamiento del Integrate & Generate ante diversos números de bits. Para ello vamos a realizar una nueva secuencia de simulaciones en las que vamos a dejar fijo el valor del divisor de frecuencia, 5 en este caso, y vamos a modificar el número de bits del Integrate & Generate entre 8 y 11 bits; y lo excitamos con una secuencia de spikes con frecuencia fija, 305.2kSpikes/Sec. Los resultandos son mostrados en la Figura 4.6. Al igual que en la anterior figura, se muestra la frecuencia de los spikes de entrada, abajo en azul, así como la reconstrucción de los spikes de salida de Integrate & Generate, en diversos colores y sólidos, y la integral teórica de la entrada, en trazos discontinuos. De nuevo, la figura muestra cómo el Integrate & Generate se comporta como un integrador, y que podemos Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 99 ajustar la ganancia del Integrate & Generate según la Ecuación [ 4-8 ] modificando el número de bits del generador. En la Tabla 4-4 se muestran las ganancias equivalentes del Integrate & Generate, a 50MHz, con un divisor de frecuencia de 5, y para diversos números de bits. Tabla 4-4: Ganancia equivalente del Integrate & Generate para diversos números de bits Número de bits Ganancia equivalente del Integrate & Generate 8 1.3021 * 105 9 0. 6510* 105 10 0.3255* 105 11 0.0814 * 105 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 x 10-4 0 1 2 3 4 5 6 7 8 9 10 x 106 Time (Seconds) Spike Rate (Spikes / Sec) Integrate & Generate Frequency Divider = 5 Number of Bits = 8 Number of Bits = 9 Number of Bits = 10 Number of Bits = 11 Input Spikes Figura 4.6: Respuesta del Integrate & Generate ante una entrada en escalón para diversos números de bits del integrador, junto con la respuesta teórica Además en la figura anterior se puede observar cómo la respuesta de mayor ganancia, en azul se ha llegado a saturar. El problema de la saturación es típico de los integradores no ideales. En nuestro caso alcanzamos el estado de saturación cuando el integrador de spikes llega a su máximo nivel, 2n-1, es decir, cuando se han contado 2n-1 spikes seguidos de un mismo signo a la entrada del Integrate & Generate. Dado que la frecuencia máxima de salida del Integrate & Generate será: Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 100 Ecuación [ 4-12 ] Siendo el máximo valor de integrador: Ecuación [ 4-13 ] Y conocida la ganancia del Integrate & Generate expuesta en la Ecuación [ 2-23 ], podemos calcular la frecuencia máxima de salida del Integra & Generate según la siguiente ecuación: Ecuación [ 4-14 ] Según sugieren las ecuaciones teóricas, la frecuencia de saturación del Integrate & Generate no depende del número de bits que utilicemos, sino del divisor de frecuencia asignado. A continuación vamos tratar de verificar la dependencia de la frecuencia máxima de salida del Integrate & Generate con el divisor de frecuencia. Para ello hemos diseñado un escenario de simulación en el que vamos a saturar el Integrate & Generate con diversos divisores de frecuencia, usando frecuencias de entrada suficientemente altas para saturar su salida, y anotando la frecuencia máxima en cada caso. Los resultados son mostrados en la Figura 4.7, en ella podemos encontrar la frecuencia máxima obtenida de las simulaciones en azul, así como la frecuencia máxima teórica del Integrate & Generate según la ecuación anterior, en triángulos rojos. En ella queda constatada la coincidencia de ambas funciones, verificándose así la Ecuación [ 4-14 ]. Figura 4.7: Máxima frecuencia de salida del Integrate & Generate para diversos divisores de frecuencia Finalmente hemos constatado el efecto de “deriva” al que puede llevarnos la saturación del Integrate & Generate, como cualquier otro integrador no ideal con saturación. 10 15 20 25 30 1.5 2 2.5 3 3.5 4 4.5 5 5.5 6x 106 Integrate & Generate Frequency Divider Max. Integrate & Generate Spike Rate (Spikes / Sec) Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 101 Este efecto surge cuando al saturarse el integrador es incapaz de contar más spikes, de tal forma que el contador queda fijo a un valor, dejando de representar la integral de la señal en el tiempo. El problema surge cuando la señal de entrada va variando en el tiempo, ya que la salida del Integrate & Generate dejará de ser fiel a la integral teórica ideal de la señal, introduciéndose una componente continua, u off-set, en la salida del Integrate & Generate. La Figura 4.8 muestra este efecto, en azul encontramos la frecuencia de los spikes de entrada, en verde su integral ideal, y en rojo la salida del Integrate & Generate. Si nos fijamos en la salida de Integrate & Generate, se asemeja perfectamente a la integral ideal al principio, hasta que se satura, quedándose anclada a la frecuencia máxima. Sin embargo, cuando la señal se vuelve negativa, ambas integrales comienzan a disminuir, pero, al no poder alcanzar un valor tan alto el Integrate & Generate, se introduce una diferencia continua entre ambas, o valor de off-set. Figura 4.8: Saturación del Integrate & Generate En resumen, teniendo en cuenta la no linealidad del Integrate & Generate introducida por el efecto de la saturación, podemos formalizar el comportamiento del Integrate & Generate según la siguiente ecuación: Ecuación [ 4-15 ] Con el objetivo de comprobar su comportamiento en el dominio de la frecuencia, hemos excitado el Integrate & Generate con señales sinusoidales de diversas frecuencias, realizando un barrido frecuencial. Anotando para cada frecuencia la potencia de la salida del Integrate & Generate con diversos parámetros, obteniendo así el diagrama de Bode del Integrate & Generate para cada par de parámetros. Los resultados son mostrados en la Figura 4.9, en la que aparecen en trazo continuo la amplitud de la salida del Integrate & Generate, y en trazo discontinuo la salida teórica de un integrador ideal en las mismas condiciones. En el diagrama de Bode se puede observar como la salida del Integrate & Generate es muy parecida 0 0.5 1 1.5 2 2.5 3 3.5 4 x 10-3 -4 -2 0 2 4 6 8x 106 Time (Seconds) Spike Rate (Spikes / Sec) Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 102 a la salida ideal, presentando una atenuación de 20dB por década. Además varía el valor de su componente continua, u off-set, en virtud de la ganancia equivalente del Integrate & Generate según los parámetros usados. 103104 -40 -35 -30 -25 -20 -15 -10 -5 0 5 10 Spikes Frequency Change (Hz) Integrate & Generate Gain (dB) 15 bits, Frequency Divider = 0 15 bits, Frequency Divider = 1 17 bits, Frequency Divider = 0 17 bits, Frequency Divider = 1 Figura 4.9: Diagrama de Bode del Integrate & Generate Para concluir el estudio del Integrate & Generate, lo hemos excitado con otras funciones de entrada, distintas a las entradas en escalón usadas anteriormente. Estas funciones han sido una rampa (o diente de sierra), en la Figura 4.10, y una entrada en seno, en la Figura 4.11. En ambas encontramos en la parte superior la frecuencia de los spikes de entrada, azul, la integral ideal de la entrada, verde, y la frecuencia de salida del Integrate & Generate, en rojo. Y en la parte inferior los spikes de entrada, azul, y los de salida del Integrate & Generate, verde. En ambas figuras se puede observar que el Integrate & Generate realiza una integración de los spikes de entrada, generando secuencias de spikes cuya frecuencia es muy próxima a la esperada teóricamente. Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 103 Figura 4.10: Respuesta del Integrate & Generate ante una entrada en sierra Figura 4.11: Respuesta del Integrate & Generate ante una entrada en seno 4.3. Realimentando el Integrate & Generate: el derivador de spikes La idea del derivador de spikes, es diseñar un elemento o bloque, cuya entrada sea una señal de spikes, y su salida una secuencia de spikes con una frecuencia proporcional a la derivada de los cambios de la frecuencia de los spikes de entrada. Tal y como expusimos con anterioridad: Ecuación [ 4-16 ] 0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2 x 10-3 -1 -0.5 0 0.5 1 Time (Seconds) Spikes 0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2 x 10-3 -1 0 1 2 3x 106 Spikes Rate (Spikes / Sec) 0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2 x 10-3 -1 -0.5 0 0.5 1 Time (Seconds) Spikes 0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2 x 10-3 -1 0 1 2 3 4x 106 Spike Rate (Spikes / Sec) Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 104 Continuando con la analogía de la transformada de Laplace, ¿por qué no realimentar el Integrate & Generate con el Hold & Fire para diseñar nuevos elementos con diferentes funciones de transferencia? Uno de estos nuevos elementos es el derivador de pulsos, y más adelante expondremos otros elementos, como son los filtros paso de baja, alta y banda de señales de spikes. La Figura 4.12 muestra la topología de la conexión el Hold & Fire (H&F) y el Integrate & Generate (I&G) para diseñar el derivador de spikes. El derivador de spikes es en esencia un filtro paso de alta. Hemos realimentado los spikes de entrada con un Integrate & Generate (I&G), siendo la diferencia entre los spikes de entrada y los integrados la salida del derivador. H&F I&G - + Spikes_In Spikes_Out Figura 4.12: Diagrama de bloques del derivador de spikes Aplicando la teoría básica de sistemas, podemos calcular el sistema equivalente en el domino S compuesto por esta configuración topológica del Hold & Fire y el Integrate & Generate: Ecuación [ 4-17 ] Conocida la constante del generador exhaustivo bit-wise integrado en el Integrate & Generate, podemos calcular la función de transferencia como: Ecuación [ 4-18 ] Dicha función de transferencia representa a un derivador, con un polo en una frecuencia equivalente a la ganancia del generador (en radianes por segundo). Teniendo una ganancia equivalente: Ecuación [ 4-19 ] A continuación hemos procedido a sintetizar en hardware el derivador de spikes con el fin de realizar una estimación del hardware necesario en el interior de una FPGA para su implementación. Dado que contiene en su interior un Integrate & Generate, la cantidad de hardware necesario, medido en slices, variará en base al número de bits del Integrate & Generate. Los resultados son mostrados en la Tabla 4-5, en ella se aprecia cómo el consumo Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 105 hardware aumenta según va aumentando el número de bits, así como se reduce la máxima frecuencia de operación, ya que al aparecer más hardware los “caminos” asíncronos son más largos, consumiendo más tiempo, y alcanzando una frecuencia de reloj menor. Tabla 4-5: Resumen de la síntesis de la implementación del derivador de spikes para diversos números de bits Número de bits Slices Máxima Frecuencia 6 43 162.41 MHz 8 48 152.31 MHz 10 53 136.87 MHz 12 64 128.45 MHz 14 65 121.61 MHz 16 67 119.52 MHz 4.4. Simulación del derivador de spikes A continuación, tal y como hemos venido haciendo a lo largo de este trabajo, vamos a construir un escenario de simulación para comprobar el comportamiento del derivador de spikes, mostrado en la Figura 4.13. En este nuevo escenario de simulación vamos a conectar un generador exhaustivo bit-wise de spikes, a la izquierda, con la entrada de un nuevo bloque (SpikesDerivative), en el centro. Este último implementa en su interior el derivador de spikes y está compuesto internamente por un Hold & Fire junto con un Integrate & Generate conectados según la Figura 4.12. A continuación vamos a proceder a estimularlo con diferentes señales y parámetros, analizando su respuesta y contrastando los resultados obtenidos con las predicciones teóricas. Figura 4.13: Escenario de simulación del derivador de spikes En primer lugar vamos a excitar al derivador de spikes con una frecuencia de spikes de entrada creciente a ritmo constante, es decir, una entrada en rampa. Esperando obtener una Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 112 102103104 -35 -30 -25 -20 -15 -10 -5 0 Spikes Frequency Change (Hz) Spikes Derivate Gain (dB) 12 bits, Frequency Divider = 0 12 bits, Frequency Divider = 1 14 bits, Frequency Divider = 0 14 bits, Frequency Divider = 1 Figura 4.19: Diagrama de Bode del derivador de spikes Para finalizar este apartado, vamos a excitar al derivador de spikes con otras funciones de entrada. En primer lugar hemos excitado el derivador de spikes con una función de entrada cuadrada, en la Figura 4.20. Es decir, hemos aplicado a la entrada del derivador de spikes una secuencia de spikes a frecuencia constante de 3MSpikes/Sec, pero cambiando con un período de 2mSec, la cual puede verse en la parte superior de la Figura 4.20 en color azul. Además mostramos la reconstrucción de la salida del derivador de spikes en rojo, así como la salida ideal de este componente en verde. Mostrando en la parte inferior de dicha figura los spikes provenientes del generador de spikes, azul, y la salida del derivador de spikes, verde. Esta figura constata la corrección en la operación del derivador de spikes, ya que si comparamos su salida con la salida ideal, vemos como se ajustan bastante bien. Siendo dicha salida la derivada de una señal en escalón, un impulso en cada transición, aplicada a un filtro paso de baja, modelado por la dinámica del derivador de spikes. Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 113 Figura 4.20: Respuesta del derivador de spikes ante una entrada cuadrada A continuación hemos excitado el derivador de spikes con una función de entrada senoidal, en la Figura 4.21. Esta señal de entrada, que podemos ver en la parte superior de la figura en color azul, se caracteriza por tener una amplitud de 3MSpikes/Sec y una frecuencia de 500Hz. Además mostramos la reconstrucción de la salida del derivador de spikes en rojo, así como la salida ideal de este componente en verde. Mostrando en la parte inferior de dicha figura los spikes provenientes del generador de spikes, azul, y la salida del derivador de spikes, verde. De nuevo vemos el elevado grado de ajuste entre la salida del derivador de spikes y su salida ideal. En este caso la salida es la derivada del seno, es decir el coseno, y como la fase de dicha señal se ve afectada por la dinámica del derivador de spikes. En la figura puede apreciarse que en los primeros instantes de la simulación la salida del derivador de spikes trata de seguir la señal de entrada, sin embargo, a medida que avanza el tiempo la frecuencia de los spikes de salida se ajustan al coseno esperado, este efecto se debe a que al comenzar la simulación los valores iniciales del derivador han sido cero, de la misma manera que ocurre con los filtros analógicos [Oppenheim92]. De tal manera que la máxima frecuencia de los spikes disparados por el derivador de spikes coincidirá por los pasos por 0 del seno de la entrada, y de manera análoga en el caso opuesto, pero no ocurre exactamente así, ya que el polo del derivador desvía levente la fase de la salida. 0 0.5 1 1.5 2 2.5 3 3.5 4 x 10-3 -1 -0.5 0 0.5 1 Time (Seconds) Spikes 0 0.5 1 1.5 2 2.5 3 3.5 4 x 10-3 -1 -0.5 0 0.5 1x 107 Spike Rate (Spikes / Sec) Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 114 Figura 4.21: Respuesta del derivador de spikes ante una entrada senoidal 4.5. Integración del Integrate & Generate y del derivador de spikes al control, el controlador PID basado en spikes. Una vez expuestos todos los componentes para poder diseñar un controlador PID, hemos de estudiar la topología con la que los vamos a conectar los componentes presentados, obteniendo de esta manera la arquitectura del controlador, así como las ecuaciones equivalentes resultantes, para que el controlador PID basado en spikes pueda ser ajustado en base a los requerimientos de la respuesta de un determinado sistema. En este apartado no pretendemos obtener ningún ajuste óptimo, ni ninguna respuesta en particular, sino estudiar la analogía de los modelos presentados basados en spikes con los controles tradicionales continuos. Vamos a diseñar un controlador PID parecido al mostrado anteriormente en la Figura 4.1. Para implementar el controlador PID vamos a necesitar 3 Hold & Fire, con el fin de poder sumar los diversos términos, un Integrate & Generate y un derivador de spikes, así como un Spikes Expansor, para aplicar los spikes a un motor de DC. En la Figura 4.22 mostramos la arquitectura del controlador PID basado en spikes. La señal de error E(s) entrará por la izquierda de la figura, donde a continuación para implementar los términos integral y derivativo, usaremos el Integrate & Generate y el derivador de spikes. Sin embargo, la única manera de controlar el término proporcional es mediante el uso del Spikes Expansor. Así que lo que haremos será propagar el error sin más, para luego aplicarle la ganancia asociada al tiempo en alto de los spikes. Nótese que para sumar dos señales de spikes con un Hold & Fire, en vez de restarlas, lo que tenemos que hacer es simplemente invertir los spikes de una de sus entradas, es decir, conectar a la componente positiva de una de sus entradas, una señal de spikes negativos, y viceversa. 0 0.5 1 1.5 2 2.5 3 3.5 4 x 10-3 -1 -0.5 0 0.5 1 Time (Seconds) Spikes 0 0.5 1 1.5 2 2.5 3 3.5 4 x 10-3 -4 -2 0 2 4x 106 Spike Rate (Spikes / Sec) Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 115 Spikes Derivative E(s) Integrate & Generate Hold & Fire + +Hold & Fire + +Spikes Expansor X(s) Figura 4.22: Arquitectura del controlador PID basado en spikes Sin embargo, esta ganancia afectará a todos los miembros integrantes del controlador PID. La siguiente ecuación nos muestra la función de transferencia equivalente de nuestro sistema: Ecuación [ 4-22 ] Esto significa que la ganancia del Spikes Expansor afectará a todo el sistema. Siendo las ganancias equivalentes del término integral y derivativo proporcionales a la ganancia del Spikes Expansor. Sustituyendo las ecuaciones de las ganancias de cada componente del controlador y añadiendo el polo de nuestro derivador, podemos obtener la ecuación del controlador PID basado en spikes más detallada: Ecuación [ 4-23 ] Donde IGFD y SDFD son los divisores de frecuencia del Integrate & Generate y del derivador de spikes respectivamente. Así como nI y nD son los números de bits para cada componente, SpikeWidth es el ancho de pulso en ciclos de reloj, Fclk la frecuencia de reloj del sistema, y VPS es el voltaje proveniente de la fuente de alimentación, y que será aplicado a los bornes del motor. 4.6. Simulación del controlador PID basado en spikes A continuación vamos a proceder a simular el controlador PID basado en spikes, para poder comprobar su correcto funcionamiento y proximidad a un controlador PID ideal. Para ello hemos construido un nuevo escenario de simulación en Simulink junto con Xilinx System Generator, mostrado en la Figura 4.23. En ella mostramos sólo el bloque de control PID basado en spikes, en la que las entradas del controlador, referencia y realimentación, se encuentran a la izquierda, y conectadas a su vez a dos generadores sintéticos de spikes Bit-Wise, los cuales convertirán estas señales en spikes. A continuación encontramos un Hold & Fire, el cual restará ambas señales, y proporcionará a su salida el error del controlador. Dicho error será la entrada del controlador PID basado en spikes, el cual alberga en su interior un controlador acorde con el expuesto en la Figura 4.22. Para que finalmente los spikes de salida del controlador PID lleguen a un Spikes Expansor, el cual extenderá los spikes a su entrada y los aplicará al motor. Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 116 Figura 4.23: Escenario de simulación del controlador PID basado en spikes Para comprobar el comportamiento del controlador PID después de integrar el Integrate & Generate y el derivador de spikes, vamos a simularlo por partes, es decir, vamos a comenzar inhabilitando el derivador de spikes para poder probar sólo un controlador proporcional e integral, o PI, para después inhabilitar el Integrate & Generate obteniendo un controlador proporcional y derivativo, PD, y finalmente habilitando todo los elementos para simular el controlador proporcional integral y derivativo, PID, basado en spikes. a) Control PI En primer lugar vamos a mantener en estado de reset el derivador de spikes, obteniendo así un controlador PI basado en spikes. El propósito de un controlador PI es eliminar el error en estado estacionario provocado por la componente proporcional. El control integral actuará cuando hay una desviación entre el valor de realimentación y el de referencia, integrando esta desviación en el tiempo, multiplicándola por la constante de integración y sumándola al término proporcional. Dicho controlador consta sólo de dos parámetros, la ganancia integral y la proporcional, así que vamos a simular la respuesta del motor ante ambos parámetros, para poder observar de esta manera su comportamiento. Para comenzar el controlador ha sido simulado fijando el número de bits del integrador a 16, es decir, fijando el término integral, y modificando el ancho de spike iterativamente, entre 1.6uSec y 4uSec, variando así el término proporcional. Sin embargo, el modificar el ancho no sólo afecta al término proporcional, sino también al término integral, tal y como expone la Ecuación [ 4-23 ]. Los resultados obtenidos tras simular el controlador bajo estas condiciones se encuentra en la Figura 4.24. En dicha figura mostramos la referencia del controlador junto con las respuestas del motor para cada caso, estando la respuesta del controlador en trazo sólido, y la respuesta del motor con un controlador similares características e ideal en trazo discontinuo. En la figura se aprecia como gracias a la adición de un término integral al controlador, el motor consigue alcanzar la referencia de velocidad ante una entrada en escalón, eliminando el error en régimen permanente que introducía el controlador P basado en spikes. Además el motor comienza a mostrar respuestas propias de un sistema subamortiguado, siendo este comportamiento debido a la pérdida de fase del sistema equivalente por el uso del integrador [Houpis89]. Las respuestas muestran un sobredisparo de similar magnitud, sin embargo el tiempo de subida y asentamiento de la señal se decrementa a medida que aumentamos el ancho de los spikes. Contrastando la respuesta de nuestro controlador basado en spikes frente Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 117 a un controlador ideal, observamos cómo hay una leve desviación entre ellas, siendo debida al error introducido por los elementos integrantes del controlador, como expusimos con anterioridad. Pero añadiendo más fuentes de error, ya que nos encontramos ahora 3 Hold & Fire, además del error introducido por los generadores Bit-Wise alojados en el interior de los Integrate & Generate. 0 1 2 3 4 5 6 7 8 x 10-3 0 10 20 30 40 50 60 70 80 90 100 Simulation Time (Seconds) DC Motor Speed (Rad/Sec) SpikeWidth = 1.6uS SpikeWidth = 3.2uS SpikeWidth = 2.4uS SpikeWidth = 4uS I&G_FD=0, N_BITS=16 Figura 4.24: Simulación de la respuesta del motor con un controlador PI basado en spikes para diferentes anchos de spikes Como siguiente experimento hemos fijado el valor del ancho de spike, o término proporcional, a 2uSec, y vamos a modificar el número de bits del Integrate & Generate, entre 15 y 19, obteniendo así distintas ganancias del término integral. La Figura 4.25 muestra los resultados de la simulaciones, en los que observamos cómo el término integral va disminuyendo a medida que usamos un número de bits de mayor, traduciéndose en valor de sobre disparo cada vez menor, pero con un tiempo de subida cada vez mayor [Aström09]. Llegando incluso en los dos últimos casos a tener una ganancia integral muy pequeña, mostrando la respuesta un comportamiento sobreamortiguado, y en el último caso necesitando una elevada cantidad de tiempo para alcanzar la referencia. En el caso de las respuestas subamortiguadas, a medida que decrementamos el número de bits, y en consecuencia aumentamos la ganancia del Integrate & Generate, la sobreoscilación se vuelve cada vez más severa, sin embargo conseguimos reducir el tiempo de subida de la señal en gran medida. Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 118 012345678 x 10-3 0 20 40 60 80 100 120 Simulation Time (Seconds) DC Motor Speed (Rad/Sec) N_BITS=15 I&G_FD=0, SpikeWidth=2uSec N_BITS=16 N_BITS=17 N_BITS=18 N_BITS=19 Figura 4.25: Simulación de la respuesta del motor con un controlador PI basado en spikes para diferentes valores del número de bits del Integrate & Generate a) Control PD A continuación vamos estudiar el comportamiento del derivador de spikes junto con el motor, para ello hemos dejado el Integrate & Generate en estado de reset, obteniendo así un control PD basado en spikes. La componente derivativa se manifiesta cuando hay un cambio en el valor del error, y trata que la respuesta del sistema se anticipe la variación del error, corrigiéndolo proporcionalmente con la misma velocidad que se produce. Este controlador suele mejorar la estabilidad del sistema, reduciendo las oscilaciones o haciéndolo más amortiguado, sin embargo, no logra anular el error en régimen permanente [Ogata04]. Este controlador tiene, al igual que al controlador PI, dos parámetros, la ganancia proporcional y la ganancia del término derivativo. En primer lugar hemos simulado la respuesta del controlador PD fijando el número de bits del derivador de spikes a 14, y modificando el valor del ancho de los spikes, alterando de este modo ambos términos, el proporcional, y el derivativo. La Figura 4.26 muestra los resultados de las simulaciones. En ella se aprecia cómo el controlador basado en spikes viene a comportarse como un controlador PD, siendo incapaz de alcanzar la referencia, y mostrando un comportamiento sobreamortiguado gracias a la fase aportada por el término derivativo. Además se ve cómo la ganancia del controlador se incrementa con el ancho de spike, asintóticamente a 1, sin alcanzar nunca la referencia. Sin embargo, este controlador es el que muestra una mayor desviación de la respuesta ideal. Esta desviación es achacable a que ante una entrada en escalón, el motor intentará alcanzar la referencia de la entrada, haciendo que el error entre la velocidad del motor y la referencia disminuya. Al disminuir el error del sistema la salida del derivador de spikes serán spikes negativos, que habrán de restarse en un Hold & Fire con el término proporcional, de tal forma que en Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 119 ocasiones llegarán spikes negativos al Spikes Expansor, invirtiendo el voltaje en los bornes del motor innecesariamente, e introduciendo la desviación que se aprecia en la figura. 012345678 x 10-3 0 20 40 60 80 100 120 Simulation Time (Seconds) DC Motor Speed (Rad/Sec) SpikeWidth = 0.62uS SD_FD=0, N_BITS=14 SpikeWidth = 1.22uS SpikeWidth = 1.82uS SpikeWidth = 2.42uS SpikeWidth = 3.02uS SpikeWidth = 3.62uS SpikeWidth = 4.22uS Speed Reference Figura 4.26: Simulación de la respuesta del motor con un controlador PD basado en spikes para diferentes anchos de spikes Para sólo modificar el término derivativo del controlador PD basado en spikes, hemos fijado el valor del ancho de spikes a 2uSec, y modificado el número de bits del derivador de spikes. Los resultados de las simulaciones se muestran en la Figura 4.27, como indicaba la Tabla 4-1, al aumentar la componente derivativa del controlador sólo conseguimos pequeños cambios en decremento del tiempo de subida y del error en estado estacionario de la velocidad del motor. Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 120 0 1 2 3 4 5 6 7 8 x 10-3 0 10 20 30 40 50 60 70 80 Simulation Time (Seconds) DC Motor Speed (Rad/Sec) SD_FD = 0, Spikes Width = 2uSec Number of Bits = 8 Number of Bits = 18 Figura 4.27: Simulación de la respuesta del motor con un controlador PD basado en spikes para diferentes números de bits del derivador de spikes a) Control PID Finalmente hemos simulado el controlador PID completo, con todos los términos, proporcional, integral y derivativo habilitados. Este controlador consta de tres parámetros, la ganancia proporcional, la integral y la derivativa. Para poder observar el comportamiento del controlador PID basado en spikes, vamos a ir modificando sus parámetros uno a uno, fijando el valor de dos de los tres parámetros, y modificando el tercero. En primer lugar hemos fijado el número de bits del Integrate & Generate y del derivador de spikes a 17 bits y 10 bits respectivamente, así como sus divisores de frecuencia a 0. A continuación hemos ido incrementando el ancho de spike desde 0.8uSec hasta 4uSec, realizando una serie de simulaciones cuyos resultados pueden encontrarse en la Figura 4.28. En ellas observamos respuestas parecidas a las del controlador PI, pero con la tasa de sobredisparo reducido gracias a la componente derivativa, y al igual que en el controlador anterior, el tiempo de subida de la señal se reduce a medida que incrementamos el ancho de los spikes, pero con un leve incremento de la sobre oscilación. En este controlador es en el que se producen las mayores desviaciones teóricas, ya que incorpora un mayor número de elementos introductores de error en el controlador. Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 121 0 1 2 3 4 5 6 7 8 x 10-3 0 10 20 30 40 50 60 70 80 90 Simulation Time (Seconds) DC Motor Speed (Rad/Sec) I&G Number of Bits = 17 – SD Number of Bits = 10 Spikes Width = 0.8uSec Spikes Width = 1.6uSec Spikes Width = 2.4uSec Spikes Width = 3.2uSec Spikes Width = 4.0uSec Figura 4.28: Simulación de la respuesta del motor con un controlador PID basado en spikes para diferentes anchos de spikes A continuación hemos procedido a comprobar el efecto de la ganancia del Integrate & Generate sobre la respuesta del motor. Con este fin hemos fijado el ancho de los spikes a 2.4uSec, así como el número de bits del derivador de spikes a 10. A continuación hemos realizado una serie de simulaciones en las que hemos ido incrementando el número de bits del Integrate & Generate desde 15 a 19 bits, cuyos resultados se ofrecen en la Figura 4.29. En las respuestas del motor mostradas en la figura se aprecia cómo al establecer altas ganancias del término integral, la salida del motor presenta un comportamiento subamortiguado, con una tasa de sobre oscilación y tiempo de subida decreciente a medida que aumenta el número de bits del Integrate & Generate. Hasta el punto que la ganancia de la componente integral es tan pequeña que el sistema comienza a comportarse de manera sobreamortiguada, presentando un tiempo de subida muy elevado. Además las respuestas muestran una desviación frente a la respuesta ideal acorde con la ganancia del Integrate & Generate, ya que los efectos de las no idealidades del controlador se acentúan ante frecuencias tan altas. Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 128 AER_IN REQ ACK AER_OUT REQ ACK Motor Power Enc. A and B Motor 1Motor 2Motor 3Motor 4 Power stage 2 Curr ent HE sens ors Power stage 1 AER IN pt AER OUT AER OUT pt Digital ports Analog input USB USB Cygnal 8051 EEPROM JTAG SPARTAN 3 400 AER IN Motor Power Motor Power Motor Power Enc. A and B Enc. A and B Enc. A and B Figura 5.2: Diagrama de bloques de la plataforma AER-Robot La idea subyacente de la AER-Robot es usar la FPGA para los elementos de procesado que necesiten una velocidad muy alta, como son los eventos AER, o los controladores basados en spikes. Estando el microcontrolador reservado para las tareas lentas, o las dificultosas de realizar en la FPGA, como es la comunicación USB con un PC, la conversión de analógico a digital de sensores, o como veremos más a adelante, la decodificación de un receptor de radio control. En resumen, las principales características de la plataforma AER-Robot son: Spartan 3: XC3S400 o 400k puertas o 56k bits de memoria RAM distribuida, y 288k bits de memoria RAM en bloque o 4 Digital Clock Managers (DCM) o 16 Multiplicadores dedicados Microcontrolador: C8051F320 / 342 o 24 / 48MHZ o Memorias con 2304k bytes de RAM interna y 16k bytes de memoria flash o USB 2.0 Full-Speed o ADC 200ksamples o Variedad puertos Serie 4 puertos AER, permitiendo la conexión de múltiples AER-Robots en cascada. Aislamiento electrónico entre la etapa lógica y la de potencia, permitiendo alimentaciones separadas con el fin evitar ruido indeseado en la etapa lógica debido al uso de motores de alta potencia. Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 129 4 etapas de potencia independientes para motores de DC de hasta 24V. 2 canales de encoder óptico para cada motor, permitiendo el sensado independiente de cada motor. Figura 5.3: Fotografía de ambas caras de la tarjeta AER-Robot 5.2. Implementación real del controlador PID basado en spikes En este apartado vamos a exponer como hemos implementado un controlador PID basado en spikes en el interior de la FPGA incluida en la AER-Robot. Nuestra idea es realizar un análisis análogo al realizado en los capítulos anteriores, pero sin el uso del simulador. Para ello vamos a implementar un controlador PID basado en spikes parametrizable en el interior de la FPGA, excitarlo con diversos parámetros y entradas, y monitorizar las respuestas del control a través del bus AER. La implementación completa del sistema se ha realizado en varios niveles. Por un lado, en el nivel más bajo, está el firmware almacenado en la FPGA, el cual implementa un controlador PID basados en spikes, un monitor AER, así como mecanismos para gestionar todos los parámetros del controlador. Por otro lado está el microcontrolador, el cual actúa en este caso como un dispositivo USB, de tal manera que desde un PC le podemos enviar los parámetros de los controles, así como las funciones de excitación del sistema, a la FPGA. Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 130 Finalmente, conectado al bus AER nos encontramos con la tarjeta USB2AERmini, la cual envía al PC por el puerto USB la información AER generada por la AER-Robot. 5.2.1. Arquitectura del controlador Como acabamos de exponer, en el interior de la FPGA están los elementos encargados del control. Hemos implementado un control basado en varios Hold & Fire e Integrate & Generate, y en un Spikes Expansor, completamente configurable, que no sólo permite cambiar sus parámetros, sino también su topología, para convertirlo en un control en lazo cerrado o abierto, en base a nuestras necesidades. Además gracias a un registro de control vamos a poder habilitar o deshabilitar los componentes integrales o derivativos del controlador, teniendo así controles P, PI, PD o PID basados en spikes. Podemos ver el diagrama de bloques del control implementado en la Figura 5.4. Los spikes de excitación del controlador son generados por el generador sintético de spikes bit-wise (a la izquierda) según le ordene el microcontrolador. Siendo estos spikes una de las entradas de un Hold & Fire, y restados con los spikes provenientes de la realimentación, obteniendo así el error del sistema. Los spikes del error del sistema son aplicados a un módulo que contendrá el controlador PID (en el centro). Finalmente extendemos los spikes de la salida del controlador PID en el tiempo mediante el uso de un Spikes Expansor (a la derecha), y son aplicados directamente al motor de DC. Sin embargo, para poder cambiar la topología del control, de un control en lazo cerrado a uno en lazo abierto, hemos añadido un multiplexor (con dos canales de dos bits) entre el controlador PID y el Spikes Expansor, de tal manera que podemos seleccionar la entrada del Spikes Expansor entre los spikes del generador directamente (lazo abierto) o la salida del controlador PID basado en spikes (lazo cerrado). El bit que selecciona el canal del multiplexor, y en consecuencia la topología del control, estará almacenado en un registro de estado, como expondremos más adelante. 16-bit signed number from 8051 + - Motor Speed (Spikes) Speed Reference (Spikes) FPGA Spikes Enc. A&B Spikes Expansor OpticalEncoder QSR DC Motor H&F Speed MUX O/C DC Motor Speed Error Exahustive Spikes Generator Spikes PID Figura 5.4: Diagrama de bloques del control en lazo cerrad basado en spikes 5.2.2. Realimentando el sistema, midiendo la velocidad del motor En la figura anterior se muestra un nuevo componente aún no presentado (en celeste), usado para convertir la velocidad angular del motor (la realimentación del sistema) en spikes, el Quad Spikes Rate, o QSR. Uno de los sensores muy comúnmente usado para medir la velocidad de rotación de un motor son los encoders ópticos incrementales [HEDS550]. Estos sensores codifican la velocidad del motor mediante una señal modulada en PFM, donde recibimos una secuencia de pulsos, con dutty-cycle constante, pero frecuencia variable. En nuestro caso particular, nuestros encoders tienen dos canales de pulsos, las señales A y B, Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 131 desfasadas 90º entre ellas. Pudiendo calcular la velocidad del motor a partir de la frecuencia de estas señales, y el sentido de giro, o signo, en base a la fase relativa entre ellas. Para traducir estas señales a spikes, hemos implementado este nuevo componente VHDL, el ya mencionado QSR. Este componente está compuesto por una máquina de estados finita (Finite State Machine, FSM), la cual determina el sentido de giro, y dispara un spike por cada flanco de la señales A y B. El diagrama de estados de este componente es mostrado en la Figura 5.5. Los spikes de salida estarán homogéneamente distribuidos en el tiempo, ya que las señales A y B tienen un desfase preciso de 90º entre ellas, pudiendo tener así el cuádruple de precisión usando estos sensores. IDLE Spikes_p<=’0' Spikes_n<=’0' A=’1' & B=’0' AD_Spikes0 Spikes_p<=’1' Spikes_n<=’0' A=’1' & B=’0' AD_WAIT0 Spikes_p<=’0' Spikes_n<=’0' A=’1' & B=’0' others AD_Spikes1 Spikes_p<=’1' Spikes_n<=’0' A=’1' & B=’1' A=’1' & B=’1' AD_WAIT1 Spikes_p<=’0' Spikes_n<=’0' A=’1' & B=’1' AD_Spikes2 Spikes_p<=’1' Spikes_n<=’0' A=’0' & B=’1' A=’0' & B=’1' AD_WAIT2 Spikes_p<=’0' Spikes_n<=’0' A=’0' & B=’1' AD_Spikes3 Spikes_p<=’1' Spikes_n<=’0' A=’0' & B=’0' A=’0' & B=’1' AT_Spikes0 Spikes_p<=’0' Spikes_n<=’1' A=’0' & B=’1' AT_WAIT0 Spikes_p<=’0' Spikes_n<=’0' AT_Spikes1 Spikes_p<=’0' Spikes_n<=’1' A=’1' & B=’1' A=’1' & B=’1' AT_WAIT1 Spikes_p<=’0' Spikes_n<=’0' A=’1' & B=’1' AT_Spikes2 Spikes_p<=’0' Spikes_n<=’1' A=’1' & B=’0' A=’1' & B=’0' AT_WAIT2 Spikes_p<=’0' Spikes_n<=’0' A=’1' & B=’0' AT_Spikes3 Spikes_p<=’0' Spikes_n<=’1' A=’0' & B=’0' A=’0' & B=’1' Figura 5.5: Diagrama de estados del conversor de las señales del encoder a spikes Haciendo uso de ChipScope, proporcionado por Xilinx [CHIPSCOPE], hemos capturado las entradas del QSR, las señales A y B, y su salida, los spikes generados, directamente del interior de la FPGA mostradas en la Figura 5.6. En la figura se observa el giro positivo del motor, ya que la señal A se dispara antes que la señal B, y los spikes positivos generados en cada flanco de las señales A y B. También puede apreciarse la perfecta distribución de los spikes de salida en el tiempo, ya que las señales A y B tienen una fase precisa (cuando la velocidad está en régimen estacionario) de 90º. Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 132 Figura 5.6: Spikes disparados a partir de las señales A y B del encoder óptico El encoder incorporado en el motor que será usado en los próximos apartados para el análisis experimental del controlador PID basado en spikes, tiene una elevadísima resolución, de 500 pulsos por vuelta. Tras conectarlo al QSR, obtenemos 2000 spikes por vuelta, y dado que dicho motor tiene una velocidad máxima de unas 115 revoluciones por segundo (rps), la frecuencia máxima de los spikes proveniente de los encoders será de unos 230kSpikes/Sec. Esta tasa de spikes es suficientemente elevada para que los armónicos de los spikes sean filtrados por el propio motor, además de proporcionando un rango de control muy alto. Sin embargo, se puede dar el caso de que el encoder usado no tenga una resolución tan alta, proporcionando una tasa de spikes relativamente pequeña. En este caso habría que usar otras técnicas para convertir las señales A y B del encoder óptico en spikes. Como por ejemplo, medir el período de las señales A y B, y en base a dicho período generar una nueva secuencia de spikes usando un generador sintético de spikes, como podría ser el general exhaustivo BitWise. 5.2.3. Gestión externa de los parámetros del controlador Para gestionar cómodamente los parámetros de los elementos del controlador, hemos implementado un componente que hace de puente entre los elementos internos de la FPGA y un puerto serie síncrono para sistemas empotrados muy extendido, el Serial Peripheral Interface o SPI [Catsoulis05]. La idea es que el microcontrolador gestione los parámetros del control a través del puerto SPI. Estos parámetros son: modo de funcionamiento, el valor del generador de spikes, tiempos de hold, selección del banco de Integrate & Generate y del derivador de spikes, así como los divisores de frecuencia de cada uno de ellos, y el ancho de los spikes aplicados al motor. El bus SPI (Serial Peripheral Interface) fue desarrollado por Motorola para realizar transmisiones serie síncronas en modo full-duplex entre un dispositivo maestro y periféricos esclavos, aunque también existen las arquitecturas multi-maestro. Los dispositivos SPI pueden trabajar en modo maestro (master), o esclavo (slave). El dispositivo que actúa como master debe proporcionar las señales de reloj así como activar las señales de selección del dispositivo esclavo con el cual quiere mantener una comunicación. Sólo pudiendo haber un dispositivo ejerciendo de master en el sistema, mientras que podemos tener tantos dispositivos esclavos como podamos necesitar [Catsoulis05]. Para poder seleccionar el parámetro adecuado en el que escribir, así como asignarle un valor, hemos introducido un bus de datos y direcciones en el interior de la FPGA, gestionado por un controlador SPI esclavo, de manera que mediante el bus de direcciones apuntaremos a Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 133 un registro concreto, y en el bus de datos le especificaremos el valor a escribir en el registro. En la Figura 5.7 mostramos el controlador SPI esclavo, junto el bus de datos / direcciones y los elementos de control. Siendo en este caso el bus de datos de 16bits y el de direcciones de 8bits. Además se ha incluido una línea de habilitación de escritura, la cual avisa a todos los elementos conectados al bus interno de la FPGA que hay una pareja de datos/direcciones válidas. SCLK MOSI MISO NSS SPI Slave SPI Master (Microcontroller) FPGA Component_0 Component_1 Component_n …. WR DATA ADDRESS Figura 5.7: Arquitectura de datos y direcciones basadas en SPI El controlador SPI esclavo está compuesto por un registro de desplazamiento y una FSM, cuyo diagrama de estados es mostrado en la Figura 5.8. La comunicación SPI comienza con la selección de esclavo (señal NSS a 0) por parte del microcontrolador. Una vez seleccionado, el controlador comienza a esperar los flancos adecuados de la señal SCLK (es este caso en el flanco de bajada) para capturar secuencialmente los bits presentes en la entrada de datos (MOSI, Master Output Slave Input), y desplazar el registro interno por cada bit. El registro interno está directamente mapeado al bus de datos y direcciones, así que una vez se han leído el número de bits adecuados (en este caso 24), sólo resta proporcionar un pulso en la señal WR para que el registro interno apuntado por el bus de direcciones almacene los 16 bits presentes en el bus de datos. IDLE RECEIVED_DATA<=0 WR<=0 i<=0 WAIT_FALL_EDGE NSS=0 NSS=1 SCLK=1 NEW_BIT Rx_DATA(23 to 1) <= Rx_DATA(22 to 0) Rx_DATA(0)<=MOSI i<=i+1 SCLK=0 WAIT_BIT NEW_WORD ADDRESS<=Rx_DATA(23 to 16) DATA<=Rx_DATA(15 to 0) WR<=1 WAIT_WORD WR<=0 i<24 i=24 SCLK=0 SCLK=1 NSS=1 NSS=0 Figura 5.8: Máquina de estados finita del controlador SPI Las tramas SPI que recibe el controlador tienen 3 bytes, 24 bits, en las que lo primero que se transmite es la dirección a escribir (un byte), y a continuación se envían los 16 bits de datos. De tal manera que cada vez que se reciban los 24 bits, estaremos apuntando a un registro del controlador en el bus de direcciones, y el valor a escribir en el registro apuntado se encontrará presente en el bus de direcciones. Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 134 23 16 15 8 7 0 ADDRESS (7 – 0) MSB_DATA (15 – 8) LSB_DATA (7 – 0) En la Figura 5.9 mostramos un cronograma del componente SPI esclavo capturado en el interior de la FPGA, de nuevo haciendo uso de ChipScope. Este cronograma muestra la transmisión de una trama de test, la cual pretende escribir en la dirección 0xAA el valor 0x00FF. En el cronograma, la comunicación comienza bajando la línea de selección de esclavo, NSS. Tras bajar NSS, comienza a oscilar la señal del reloj SPI (SCLK), y empiezan a escribirse bits en el bus por parte del master SPI (MOSI). Los bits recibidos por la línea MOSI son capturados en el flanco de bajada de SCLK, desplazando el registro de desplazamiento interno (Rx_SPI) un bit hacia la izquierda. Finalmente, cuando se han recibido los 3 bytes, en el bus de direcciones y datos aparecen los valores correctos, sólo resta proporcionar un pulso en la señal WR para que todos los componentes conectados a estos buses sepan que hay unos datos de dirección / datos válidos en el bus. Figura 5.9: Cronograma del controlador SPI Cada componente del control ha sido “envuelto” por un envoltorio, o wrapper, el cual contendrá los registros que almacenen los valores de los parámetros, así como la lógica combinacional necesaria para decodificar el bus de direcciones, tal y como muestra la Figura 5.10. Para organizar todos los componentes en el interior del control, hemos proporcionado a cada componente una dirección base, por ejemplo, si tenemos un Hold & Fire, con dos parámetros, y dirección base 0x80, podremos direccionarlos como 0x80+0 y 0x80+1 respectivamente. De tal manera que todos los componentes estarán siempre pendientes del bus de direcciones, y cuando en el bus haya una dirección perteneciente a uno de sus registros y un pulso en WR, el componente direccionado escribirá el contenido del bus de datos en el registro del parámetro adecuado. Param_0 Param_N…... Register_0 …. Spikes-based component DATA Address Decoder WR_0 ADDRESS WR .. WR_N Register_N BASE_ADDRESS SPIKES_INPUT SPIKES_OUTPUT Figura 5.10: Envoltorio usado para parametrizar cada componente Particularmente en esta implementación se han organizado los componentes de acuerdo a la Tabla 5-1. En primer lugar nos encontramos un registro de estado, en el que Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 135 seleccionamos el modo de funcionamiento del controlador (lazo abierto / cerrado), así como los elementos activos en lazo cerrado, el integrador y el derivador de spikes, y con el que podemos encender o apagar los LEDS de la AER-Robot. Como vimos anteriormente, el modo del controlador es seleccionado mediante el uso de un multiplexor, estando el 6º bit del registro de estado directamente conectado con la entrada de selección de canal del multiplexor, seleccionando así el modo deseado. Además los bits 4º y 5º están conectados a las señales de reset del Integrate & Generate y del derivador de spikes, de forma que manteniendo uno u otro componente podremos configurar el controlador en modo P, PI, PD o PID. En la siguiente dirección usada, la dirección 0x02, nos encontramos con el generador sintético de spikes bit-wise, en la que el dato proporcionado representa la entrada del generador, produciendo una secuencia de spikes con una frecuencia que puede ser calculada según la Ecuación [ 2-21 ]. A continuación nos encontramos al Spikes Expansor, el cual sólo tiene un parámetro, el ancho de spike con el que finalmente serán aplicados al motor, siendo el ancho de spikes calculable mediante la Ecuación [ 2-15 ]. En la posición 0x04 nos encontramos con el selector de banco del Integrate & Generate, seleccionando el banco deseado con el valor escrito en esta posición, que debe estar comprendido entre 0 y 3, al contener 4 bancos de Integrate & Generate. Si queremos modificar el valor de cada uno de ellos, tendremos que escribir en la dirección del selector de banco incrementándole el número de banco más uno, es decir, si queremos escribir un nuevo valor en el registro del divisor de frecuencia de un Integrate & Generate, tendremos que escribir en la dirección 0x05, para el del segundo banco en 0x06 y así sucesivamente. Inmediatamente después, en la dirección 0x09 están situado el banco de derivadores de spikes, el cual se comporta exactamente igual que el banco de Integrate & Generate. Tras los bancos situamos los tiempos de hold de los 3 Hold & Fire usados en el controlador, entre las posiciones 0x0E y 0x13, pudiendo modificar los tiempos a nuestro antojo acorde con la Ecuación [ 3-3 ]. Y finalmente el monitor AER, llamado monitor AER masivo, ha sido situado al final del mapa de direcciones, ya que es el componente que más direcciones ocupa. Aunque será descrito en profundidad en los siguientes apartados, en este apartado adelantamos que este componente necesita una dirección de memoria por cada spike a monitorizar a través del bus AER. En nuestro caso particular, tendremos 8 señales a monitorizar, compuesta cada una de ellas por dos spikes para representar el signo, así que necesitará 16 direcciones de memoria, de la 0x20 a la 0x2F. Cada una de estas direcciones representa la dirección (Address) de 16 bits asignada a cada spike monitorizado por el bus AER, es decir, si escribimos en la dirección 0x21 0x5555, cada vez que dispare un spike asociado a la primera dirección, en bus AER se disparará la dirección 0x5555, como veremos en los próximos apartados. Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 136 Tabla 5-1: Espacio de direcciones interno del controlador PID en lazo cerrado Dirección SPI Entidad Comentarios 0x00 Registro de estado [5]- Closed-loop [4]-D [3]-I [2-0] leds 0x01 Reservada No usado 0x02 Generador de spikes Bit-Wise Número de 16bits con signo 0x03 Spikes Expansor Ancho de spike 0x04-0x08 Banco de Integrate & Generate +0 Selección de banco, entre 0-3 +1 Banco 0: Divisor de frecuencia +2 Banco 0: Divisor de frecuencia +3 Banco 0: Divisor de frecuencia +4 Banco 0: Divisor de frecuencia 0x09-0x0D Banco de derivadores de spikes +0 Selección de banco, entre 0-3 +1 Banco 0: Divisor de frecuencia +2 Banco 0: Divisor de frecuencia +3 Banco 0: Divisor de frecuencia +4 Banco 0: Divisor de frecuencia 0x0E-0x0F Hold & Fire (error) Tiempos de hold 0x10-0x11 Hold & Fire (ID) Tiempos de hold 0x12-0x13 Hold & Fire (PID) Tiempos de hold 0x20-0x2F Monitor AER masivo Dirección AER de cada spike 5.2.4. Adaptación del Integrate & Generate y del derivador de spikes De todos los componentes integrantes del controlador, hay dos componentes que comparten una peculiar característica, el Integrate & Generate y el derivador spikes. Esta característica consiste en que uno de sus parámetros, en concreto el ancho de bits, debe ser definido en tiempo de síntesis. Debido a que en base a este parámetro se han de sintetizar contadores de diversos anchos de bits, siendo imposible modificarlo una vez que el circuito ha sido sintetizado. Esta característica de estos componentes nos obliga a sintetizar todo el controlador cada vez que deseemos modificar este parámetro, consumiendo una gran cantidad de recursos y tiempo. La solución por la que hemos optado para solventar esta problemática ha sido sintetizar a la vez varios Integrate & Generate y derivadores de spikes con distintos números de bits, y agruparlos en bancos. Concretamente para este controlador hemos diseñado un banco con 4 Integrate & Generate de diversos bits. De tal manera que para ajustar la ganancia del Integrate & Generate o del derivador de spikes, seleccionaremos el componente con el número de bits adecuados, y realizaremos el ajuste final de la ganancia con el divisor de frecuencia de cada componente. La Figura 5.11 nos muestra el diagrama de bloques del banco de Integrate & Generate que hemos diseñado, en el que hemos añadido cuatro Integrate & Generate, de 12 a 18 bits, y un registro de estado. La idea es seleccionar, mediante el bus interno de la FPGA, en el registro de estado del banco el Integrate & Generate que queremos utilizar, de manera que el registro de estado mantendrá activas la señales de reset de todos los Integrate & Generate excepto del seleccionado en el registro de estado del Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 137 banco, sólo funcionando un Integrate & Generate al mismo tiempo. Como se aprecia en la figura, los spikes de entrada son aplicados a todos los Integrate & Generate, y sus salidas están conectadas a una puerta OR, de forma que los spikes de salida de cualquiera de los Integrate & Generate la podrán atravesar, sin embargo, al sólo estar activo un Integrate & Generate a la vez, sólo nos encontramos con los spikes del Integrate & Generate seleccionado. Además los Integrate & Generate han sido conectados al bus interno de la FPGA, de manera que podamos ajustar el divisor de frecuencia de forma independiente para cada uno de ellos. Un banco de semejantes características ha sido diseñado para el derivador de spikes, de manera que sólo hemos necesitado sustituir los Integrate & Generate por derivadores de spikes de diversos número de bits, de 16 a 22 bits en nuestro caso. Status Register Integrate & Generate 12 bits Integrate & Generate 14 bits Integrate & Generate 16 bits Integrate & Generate 18 bits Spikes_in Internal Bus RST OR Spikes_out Figura 5.11: Diagrama de bloques del banco de Integrate & Generate 5.2.5. Monitorización del control mediante el uso del bus AER Para monitorizar la actividad interna de los spikes que se disparan entre los diversos elementos del control, vamos a codificar cada spike según un espacio de direcciones AER [Boahen98], para ser transmitido a través del puerto AER, donde otra herramienta AER (la USBAERmini2 en este caso y expuesta en detalle más adelante), será la encargada de recogerlos y transmitirlos a un PC para su posterior procesamiento. Con este fin hemos diseñado un componente VHDL que implementa esta funcionalidad, el monitor AER masivo [Jimenez09b]. Este componente, cuyos elementos se muestran en la Figura 5.12, ha sido diseñado para hacer “fotografías” del valor de los buses de los spikes, codificar los spikes mediante la representación AER, y enviar los eventos AER a través del puerto AER paralelo. En nuestro diseño todas las señales de spikes están conectadas a la entrada de este componente como se aprecia en la Figura 5.12. Este componente usa dos memorias estructuradas como memorias FIFO (First Input - First Output), la idea de la primera FIFO, la FIFO de spikes, es almacenar las “fotografías” de los spikes, de manera que los spike son alineados como palabras de un tamaño en bits de 2 por el número de spikes a monitorizar (hemos de tener en Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 144 Tabla 5-4: Parámetros del motor real usado para los experimentos Parámetro Nombre Valor Unidades Voltaje Nominal - 12 V Máxima Velocidad - 726.3 rad/s Constante de Tiempo - 176.1 Ms Frecuencia 0dB - 3.77 kHz Resistencia Terminal R 2.5 Ohm Inductancia Terminal L 0.2276e-3 H Constante de Par Kp 13.9e-3 Nm/A Constante de Velocidad Kv 13.9e-3 V/(rad/s) Inercia del Rotor J 14e-7 Kgm2 Coeficiente de fricción B 1.48e-5 Nm/(rad/s) Relación de reducción - 1:13 - Resolución del encoder - 500 Pulsos por vuelta Frecuencia máxima el encoder - 500 kHz Según las ecuaciones Ecuación [ 2–1 ] y los parámetros proporcionados por el fabricante, la función de transferencia del motor usado en las simulaciones es la siguiente: Ecuación [ 5-1 ] Mostrando el diagrama de Bode de este motor en la siguiente figura: Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 145 Figura 5.16: Diagrama de Bode del motor analizado Como se expuso en el capítulo anterior durante el análisis del modelo teórico del motor de las simulaciones, podemos descomponer la función de transferencia del motor como: Ecuación [ 5-2 ] Analíticamente podemos extraer los siguientes parámetros del sistema: Este motor tiene un coeficiente de amortiguamiento (δ) mayor que 1, mostrando un comportamiento sobre amortiguado en lazo abierto, ofreciendo la siguiente respuesta ante un escalón unitario: -100 -50 0 50 Magnitude (dB) 100101102103104105106 -180 -135 -90 -45 0 Phase (deg) Bode Diagram Gm = Inf dB (at Inf rad/sec) , Pm = 72 deg (at 3.77e+003 rad/sec) Frequency (rad/sec) Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 146 0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0 10 20 30 40 50 60 70 Step Response Time (sec) Amplitude Time (Sec) DC Motor Speed (Rads/Sec) Figura 5.17: Respuesta teórica del motor ante un escalón ideal 5.4.2. Análisis experimental en lazo abierto Para la excitación y monitorización del control hemos usado MATLAB, de tal forma que por un puerto USB nos comunicamos con el microcontrolador de la AER-Robot, mediante el cual generamos los spikes de referencia del sistema y ajustamos los parámetros del control. Simultáneamente por otro puerto USB conectamos al PCB la USBMiniAER2, usada como monitor del tráfico AER del controlador 0. En primer lugar vamos a analizar el comportamiento del motor en lazo abierto ante una entrada en escalón, para una entrada con frecuencia constante y distintos anchos de spikes. Para generar el escalón de frecuencia sólo tendremos que escribir en el generador de spikes (dirección 0x00) el valor de la frecuencia del escalón deseado. A continuación mostramos el script de MATLAB utilizado para esta tarea. El script comienza inicializando la tarjeta AER-Robot y las variables. Luego se introduce en un bucle temporal, en el que esperará el tiempo de monitorización que deseemos. La primera vez que se ejecute el bucle se escribirá en el registro del generador de spikes, generando así el escalón de entrada. Por otro lado a lo largo del tiempo de monitorización hemos de ir capturando el tráfico proveniente de la USBAERmini2, en el que se encuentra toda la información presente en el controlador. Finalmente, capturada la información AER, sólo queda convertirla en números discretos y presentarla por pantalla. Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 147 AER_ROBOT_STARTUP %Inicialización AER-Robot AER_ROBOT_UPLOAD_CONFIG(dev,[SPI_SPIKES_EXP;1;0]) %Fijamos el ancho de spike monitortime=2.5; %Tiempo de monitorizacioin if (isempty(usb0)) %Inicialización USBAERmini2 usb0=usb.CypressFX2MonSeqFactory.instance.getFirstAvailableInterface; end if ~usb0.isOpen() usb0.open end usb0.setOperationMode(1); %Inicialización variables inaddr=[]; %%Address ints=[]; %%TimeStamps ftime=0; %Activamos la captura de eventos AER usb0.setEventAcquisitionEnabled(true); tic %Bucle Temporal while toc<monitortime %Capturamos los paquetes de la USBAERmini2 inpacket=usb0.acquireAvailableEventsFromDriver.getPrunedCopy(); %Y añadimos la nueva información AER a la ya capturada ints=[ints; inpacket.getTimestamps()]; inaddr=[inaddr; inpacket.getAddresses()]; %Si es la primera vez que se ejecuta el bucle, if(ftime==0) %activamos el generador de spikes AER_ROBOT_UPLOAD_CONFIG(dev,[SPI_SPIKES_GEN;0;150]); ftime=1; end end %Paramos el generador de spikes AER_ROBOT_UPLOAD_CONFIG(dev,[SPI_SPIKES_GEN;0;0]); %Paramos la USBAERmini2, y leemos los últimos paquetes inpacket=usb0.stopMonitoringSequencing(); inaddr=[inaddr; inpacket.getAddresses()]; ints=[ints; inpacket.getTimestamps()]; %Convertimos el tráfico AER a números discretos [realTime,TotalDiscreteValues]=spikes2discrete; %Presentamos la frecuencia de los spikes en pantalla plot(realTime,totalDiscreteValues(:,:)) En la Figura 5.18 mostramos el resultado de ejecutar este script iterativamente, pero modificando el ancho de spike. Hemos fijado la frecuencia de los spikes de entrada a 152.59kSpikes/Sec, y variado el ancho de spike desde 4uSec hasta 94.uSec. Como predecían las ecuaciones teóricas, y mostraban los resultados de las simulaciones, la ganancia de los motores reales puede ser modificada variando el ancho de spike. Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 148 0 0.2 0.4 0.6 0.8 1 0 0.5 1 1.5 2x 105 Monitor Time (Seconds) DC Motor Speed Spikes (Spikes/Sec) Spikes Rate= 152.59kSpikes/Sec SpikeWidth = 4.0uS SpikeWidth = 4.6uS SpikeWidth = 5.2uS SpikeWidth = 5.8uS SpikeWidth = 6.4uS SpikeWidth = 7.0uS SpikeWidth = 7.6uS SpikeWidth = 8.2uS SpikeWidth = 8.8uS SpikeWidth = 9.4uS Figura 5.18: Respuesta del motor en lazo abierto para una tasa de spikes constante y ancho de spike variable Tal y como ya hicimos en capítulos anteriores cuando analizábamos las simulaciones en lazo abierto, vamos a contrastar la ganancia teórica del sistema con la experimental. En la Figura 5.19 mostramos la velocidad en régimen estacionario para una frecuencia de spikes fija, respecto del ancho de spike usado. En azul mostramos la velocidad del motor experimental, la cual no es todo lo parecida que debiera con la velocidad teórica, en verde. Sin embargo, al realizar una regresión lineal de la velocidad experimental, en rojo, ésta no resulta ser tan distinta de la velocidad teórica. Constatando así que el modelo del motor usado no es más que precisamente un modelo, con no idealidades, pero sin embargo, en el caso medio, viene a ser similar con la teórica. 2 4 6 8 10 12 14 x 10-6 0 0.5 1 1.5 2 2.5 x 105 Spike Rate (Spikes/Sec) Closed-Loop Static Speed (Rads/sec) Theorical Experimental Experimental Linear Regresion Figura 5.19: Comparativa entre los resultados teóricos y reales de la velocidad estacionaria del motor Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 149 Para comprobar la linealidad de la velocidad del motor respecto de la frecuencia de spikes de entrada hemos excitado el motor con diversas frecuencias de spikes (desde 22.8kSpikes/Sec hasta 53.4kSpikes/Sec) y un ancho de spike constante (5.12uSec), mostrando los resultados en la Figura 5.20. 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 5 10 15 x 104 Monitor Time (Seconds) DC Motor Speed Spikes (Spikes/Sec) Spikes Rate= 22.88kSpikes/Sec Spikes Rate= 26.70kSpikes/Sec Spikes Rate= 30.51kSpikes/Sec Spikes Rate= 34.33kSpikes/Sec Spikes Rate= 38.14kSpikes/Sec Spikes Rate= 41.96kSpikes/Sec Spikes Rate= 45.77kSpikes/Sec Spikes Rate= 49.59kSpikes/Sec Spikes Rate= 53.40kSpikes/Sec SpikeWidth = 5.12uS Figura 5.20: Respuesta del motor en lazo abierto par a ancho de spike constante y un spike rate variable La Figura 5.21 compara la velocidad en régimen estacionario del motor experimental (azul) con la teórica (verde). Como puede observarse ambas tienen una pendiente parecida pero están desplazadas verticalmente, como se mostraba en la Figura 5.19, la ganancia no es del todo lineal con el ancho de spike, así que tomando esa ganancia experimental, hemos calculado la velocidad pseudo-teórica, en rojo, la cual parece que concuerda bastante bien con la experimental. Debiéndose este efecto a que la circuitería de aislamiento y potencia acortan siempre en la misma medida los pulsos dependiendo de su anchura, introduciendo esta no idealidad, siempre de la misma manera para cada determinado ancho de spike. 2 2.5 3 3.5 4 4.5 5 5.5 x 104 4 6 8 10 12 14x 104 Spike Rate (Spikes/Sec) Closed-Loop Static Speed (Rads/sec) Theorical Experimental Experimental Linear Regresion Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 150 Figura 5.21: Comparativa entre los resultados teóricos y reales de la velocidad estacionaria del motor Finalmente, hemos extraído la característica estática del motor mediante el uso del Spikes Expansor, mostrada en la Figura 5.22. Para ello hemos realizado un barrido tanto en frecuencia como en ancho de spikes. En los ejes horizontales encontramos el ancho de spikes (izquierda) y la frecuencia de los spikes (derecha). El eje vertical, Z, representa la velocidad del motor codificada en spikes. Observamos la región de operación lineal, así como una meseta que representa la saturación del Spikes Expansor con anchos de spike elevados. Figura 5.22: Velocidad estacionaria del motor para diversas frecuencias y anchos de spike 5.4.3. Análisis experimental del controlador P basado en spikes En este apartado vamos a analizar las respuestas del motor en lazo cerrado usando un controlador P. Para ello vamos a modificador el registro de estado de la FPGA, fijando el Integrate & Generate y el derivador de spikes en estado de reset. A continuación vamos a excitar el motor con diversas funciones de excitación (escalón, rampa y seno), además de analizar la actividad interna de los elementos de control para verificar su funcionamiento. En la Figura 5.23 mostramos la respuesta del motor en lazo cerrado ante una entrada en escalón. Hemos aplicado un escalón, o referencia de velocidad, de 185kSpikes/Sec, para dos anchos de spike (10uSec y 75uSec). En la figura podemos ver la referencia de velocidad (azul), las velocidades reales del motor (rojo y amarillo), y el error cometido en cada instante (verde y morado). Tal y como predecía el simulador, el sistema parece comportarse como un control proporcional en lazo cerrado, en él se ha reducido el tiempo de subida, y siempre aparece un error en régimen permanente. 510 15 x 104 2 4 6 8 10 x 10-6 0 1 2 3 x 105 Spikes Rate (Spikes / Sec) Spikes Width (Sec) DC Motor Speed ( Spikes / Sec) Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 151 0 0.1 0.2 0.3 0.4 -2 -1.5 -1 -0.5 0 0.5 1 1.5 2x 105 Time Spikes per Second 2*(Revolutions per Second) Monitor Time (Seconds) DC Motor Speed Spikes (Spikes/Sec) SpikeWidth = 8.2uS SpikeWidth = 10.1uS Error (8.2u) Error (10.1u) Figura 5.23: Respuesta del motor en lazo cerrado para dos anchos de spike distintos, incluido el error Para analizar el efecto del ancho de spike en el sistema hemos proporcionado una referencia de velocidad constante (91.55kSpikes/Sec) y diversos anchos de spike (desde 3.2uSec hasta 13.4uSec), mostrando los resultados en la Figura 5.24. En la figura se aprecia cómo el ancho de spike afecta a la ganancia estática del sistema, tal y como el simulador predecía. 0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0 2 4 6 8 10 12 14 16 x 104 Monitor Time (Seconds) DC Motor Speed Spikes (Spikes/Sec) Speed Reference = 91.55kSpikes/Sec SpikeWidth = 3.2uS SpikeWidth = 13.4uS Figura 5.24: Respuesta del motor en lazo cerrado para un spike rate constante y un ancho de spike variable Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 152 La Figura 5.25 muestra la ganancia estática del sistema, eje Y, en lazo cerrado para diversos anchos de spike, eje X. En azul mostramos la ganancia experimental del sistema, en verde la ganancia teórica, y en rojo la ganancia teórica del sistema basada en los resultados experimentales del apartado anterior. Esta figura parece constatar que el sistema se comporta como control en lazo cerrado y que efectivamente la ganancia del control puede ser fijada con el ancho de spike, pero sin embargo, hay que tener en cuenta la no linealidad detectada. 2 4 6 8 10 12 14 x 10-6 0.2 0.3 0.4 0.5 0.6 0.7 0.8 Spike Rate (Spikes/Sec) Closed-Loop Static Gain Theorical Experimental Theorical Gain From Open-Loop Experimental Gain Figura 5.25: Comparativa entre los resultados teóricos y reales de la ganancia estática del motor en lazo cerrado Para comprobar la linealidad de la ganancia del sistema frente a la frecuencia de referencia, hemos realizado otro conjunto de capturas, en las que la frecuencia de referencia es variable (desde 7.63kSpikes hasta 68.6 kSpikes) y el ancho de spike es constante (5.12uSec), en la Figura 5.26. En ella vemos como la velocidad del motor intenta alcanzar la velocidad de referencia, pero nunca llega a ella porque la ganancia equivalente en lazo cerrado es menor que 1. Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 153 0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0 1 2 3 4 5 6 7x 104 Monitor Time (Seconds) DC Motor Speed Spikes (Spikes/Sec) Spikes Rate= 38.14kSpikes/Sec Spikes Rate= 53.40kSpikes/Sec Spikes Rate= 7.63kSpikes/Sec Spikes Rate= 68.66kSpikes/Sec Spikes Rate= 22.88kSpikes/Sec SpikeWidth = 5.12uS Figura 5.26: Respuesta del motor en lazo cerrado par a ancho de spike constante y un spike rate variable La Figura 5.27 muestra la velocidad estacionaria alcanzada por el motor para cada frecuencia de referencia. En ella vemos la velocidad experimental (azul), la velocidad teórica (rojo), y la velocidad teórica obtenida a partir de la ganancia en lazo abierto experimental (verde). Aunque el comportamiento de la velocidad experimental debería ser una línea recta, no lo es del todo, comportándose ligeramente como una parábola. Al igual que en casos anteriores, la velocidad teórica no corresponde completamente con la experimental, sin embargo, si calculamos la velocidad teórica desde la ganancia en lazo abierto experimental obtenemos un mejor ajuste. 1234567 x 104 1 2 3 4 5 6 x 104 Spike Rate (Spikes/Sec) DC Motor Speed (Spikes /Sec) Theorical Experimental Theorical Gain From Open-Loop Experimental Gain Figura 5.27: Velocidad estacionaria del motor en lazo cerrado para diversas frecuencias de referencia Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 256 Networks, vol. 9, pp. 1303-1350, 1996. [GP26] Planetary Gearhead Datasheet: http://shop.maxonmotor.com/maxon/assets_external/Katalog_neu/eshop/Downloads/Katalog_P DF/maxon_gear/Planetengetriebe/new/newpdf_09/GP-26-B-144026_09_EN_230.pdf [Goldberg01] David H. Goldberg, Gert C. Cauwenberghs, Andreas G. Andreou, “Analog VLSI spiking neural network with address domain probabilistic synapses”. The 2001 IEEE International Symposium on Circuits and Systems, 2001. ISCAS 2001, vol. 2, pp. 241-244, 2001. [Goldberg03] David H. Goldberg, Gert C. Cauwenberghs, Andreas G. Andreou, “Probabilistic Synaptic Weighting in a Reconfigurable Network of VLSI Integrate-and-Fire Neurons”. Neural Networks. NN01, Elsevier Science ,Vol. 14, No. 6-7.Pag.781-793. [Gomez01] Francisco Gomez Rodriguez, Alejandro Linares Barranco, Rafael Paz Vicente, Lourdes Miro Amarante, Gabriel Jimenez Moreno, Antonio Abad Civit Balcells, "Aer Image Filtering”. Proceedings of SPIE, the International Society for Optical Engineering. [Gomez05] F. Gomez-Rodriguez, R. Paz, L. Miro, A. Linares-Barranco, G. Jimenez, A. Civit. “Two Hardware Implementation of the Exhaustive Synthetic Aer Generation Method”. LNCS. Vol. 3512. 2005. Pag. 534-540. [Gomez06] F. Gomez-Rodriguez, R. Paz, A. Linares-Barranco, M. Rivas, L. Miro, S. Vicente, G. Jimenez, A. Civit. “AER tools for communications and debugging”. IEEE International Symposium on Circuits and Systems, ISCAS 2006. [Gomez07] Gomez-Rodriguez, F.; Linares-Barranco, A.; Miro, L.; Shih-Chii Liu; van Schaik, A.; Etienne-Cummings, R.; Lewis, M.A., “AER Auditory Filtering and CPG for Robot Control”. IEEE International Symposium on Circuits and Systems, 2007, ISCAS 2007. Pags.: 1201 – 1204. [Häfliger04] P. Häfliger. Especificaciones protocolo asíncrono AER para el proyecto CAVIAR: http://heim.ifi.uio.no/~hafliger/CAVIAR/Consortiumstandards.pdf [Häfliger07] P. Hafliger. “Adaptive WTA with an Analog VLSI Neuromorphic Learning Chip”. IEEE Transactions on Neural Networks, Vol. 18, No 2, pags. 551-572. Marzo de 2007. [Hamilton08] Hamilton, T.J.; Jin, C.; van Schaik, A.; Tapson, J., “An Active 2-D Silicon Cochlea”. IEEE Transactions on Biomedical Circuits and Systems, Vol. 2, Issue 1, Marzo de 2008 Pags:30 – 43. [Hamilton09] Hamilton, T.J.; Jin, C.; van Schaik, A.; Tapson, J., “A 2-D silicon cochlea with an improved automatic quality factor control-loop”. IEEE International Symposium on Circuits and Systems, 2008. ISCAS 2008. Pags.:1772 – 1775. [HEDS550] HEDS 550: Quick Assembly Two and Three Channel Optical Encoders. http://test.maxonmotor.com/docsx/Download/Product/Pdf/HEDS550-E.pdf [Hodgkin52] A. L. y Huxley, A. F., “Action potentials recorded from inside a nerve fibre”. Nature 144, pags. 710-711, 1952. [Houpis89] D’azzo Houpis, “Sistemas Realimentados de Control”. Parainfo 1989. Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 257 [Howe05a] Robert M. Howe, “Fundamentals of the Analog Computer”. IEEE Control Systems Magazine. Junio 2005 [Howe05b] Robert M. Howe, “Analog Computers in Academia and Industry”. IEEE Control Systems Magazine. Junio 2005 [Hynna01] Kai Hynna, Kwabena A. Boahen, “Space-Rate Coding in an Adaptive Silicon Neuron”. Neural Networks, Special Issue on Spiking Neurons in Neuroscience and Technology, vol. 14, no. 6-7, pp. 645-656, 2001. [I2S] I2S Bus Specification: http://www.nxp.com/acrobat_download2/various/I2SBUS.pdf [Ifeachor02] Emmanuel Ifeachor, Barrie Jervis, “Digital Signal Processing: A practical Approach”. Prentice Hall 1992. [Inidvieri99] G. Indiveri, A.M. Whatley, and J. Kramer, “A Reconfigurable Neuromorphic VLSI Multi-Chip System Applied to VisualMotion Computation”. Proc. Int. Conf. Microelectronics for Neural, Fuzzy and Bio-Inspired Systems (Microneuro99). Pags.37-44. España 1999. [Indiveri00] Giacomo Indiveri, “A 2D neuromorphic VLSI architecture for modeling selective attention”. In Proceedings of the IEEE-INNS-ENNS International Joint Conference on Neural Networks, IJCNN 2000. [Indiveri06] Indiveri, G. Chicca, E. Douglas, R. “A VLSI array of low-power spiking neurons and bistable synapses with spike-timing dependent plasticity”. IEEE Trans. Neural Networks, vol. 17, No. 1, pp. 211-221, 2006. [jAER] jAER open-source software project. http://jaer.wiki.sourceforge.net/ [Jimenez07]A. Jimenez-Fernandez. ”Actuación y sensado bio-inspirado sobre motores de DC basado en Address Event. La plataforma AER-ROBOT”. Proyecto fin de carrera, Sevilla 2007 [Jimenez08a] A. Jiménez-Fernández, A. Linares-Barranco, R. Paz-Vicente,C.D. LujánMartínez, G. Jiménez, A. Civit. “AER and dynamic systems co-simulation over Simulink with Xilinx System Generator”. IEEE International Conference on Electronics, Circuits and Systems, 2008. ICECS 2008. [Jimenez08b] A. Jiménez-Fernández, R. Paz-Vicente, M. Rivas, A. Linares-Barranco, G. Jiménez, A. Civit. “AER-based robotic closed-loop control system”. IEEE International Symposium on Circuits and Systems, 2008. ISCAS 2008. [Jimenez09a] A. Jimenez-Fernandez, A. Linares-Barranco, R. Paz-Vicente, G. Jimenez-Moreno, A. Civit, “Neuro-inspired Spike-based closed-loop controller for Robotics”. International Journal of Factory Automation, Robotics and Soft Computing, Volumen:3/2009, Pag. 91-100 [Jimenez09b] A. Jimenez-Fernandez, R. Berner, A. Linares-Barranco, R. Paz-Vicente, G. Jimenez-Moreno. “Spike-based control monitoring and analysis with Address Event Representation”. International Conference on Computer Systems and Applications, AICCSA 2009. Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 258 [Jimenez09c] A. Jimenez-Fernandez, C. Lujan-Martinez, R. Paz-Vicente, A. Linares-Barranco, G. Jimenez, A. Civit. “From Vision Sensor to Actuators, Spike Based Robot Control through Address-Event-Representation”. International Work-Conference on Artificial Neural Networks, Lecture Notes in Computer Science, Vol 5517/2009, Pags. 797-804. [Jimenez10a] A. Jimenez-Fernandez, A. Linares-Barranco, R. Paz-Vicente, G. Jimenez, A. Civit, “Building Blocks for Spike-based Signal Processing”. Enviado a International Joint Conference in Neural Networks 2010. [Jimenez10b] A. Jimenez-Fernandez, J.L. Fuentes-del-Bosh, R. Paz-Vicente, A. LinaresBarranco, G. Jiménez, “Neuro-inspired system for real-time vision tilt correction”. IEEE International Symposium on Circuits and Systems, ISCAS2010. París 2010. [Johnston95] D. Johnston, S. Wu, “Foundations of Cellular Neurophysiology”. MIT Press, Cambridge MA, 1995. [Lamberti97] Pedro W. Lamberti, Víctor Rodríguez, ”Desarrollo del modelo matemático de Hodgkin y Huxley en neurociencias”. Electroneurobiología vol. 15 (4), pp. 31-60, 2007 [Lazzaro93] J. Lazzaro, J. Wawrzynek, M. Mahowald, M. Silvilotti, and D. Gillespie, “Silicon Auditory Processors as Computer Peripherals”. IEEE Trans. on Neural Networks, vol. 4, pp. 523-528, May 1993. [Leñero09] J. A. Leñero-Bardallo, T. Serrano-Gotarredona, and B. Linares-Barranco, “A Mismatch Calibrated Bipolar Spatial Contrast AER Retina with Contrast Threshold”. Proc. of the 2009 IEEE Int. Symp. Circuits and Systems (ISCAS09), accepted for publication. [Lewis01] M. A. Lewis, M. Hartmann, R. Etienne-Cummings, and A. Cohen, “Biomorphic Control of a Running Robot Leg using a Custom aVLSI CPG Chip”. Neurocomputing, Vol. 3840, pags. 1409-1421, Junio 2001. [Lewis03] M. Anthony Lewis, R. Etienne-Cummings, M. H. Hartmann, A. H. Cohen, and Z. R. Xu, “An In Silico Central Pattern Generator: Silicon Oscillator, Coupling, Entrainment, Physical Computation & Biped Mechanism Control”. Biological Cybernetics, Vol. 88, No. 2, pp 137-151, Febrero 2003 . [LFSR] “Efficient Shift Registers, LFSR Counters, and Long Pseudo-Random Sequence Generators”. http://www.xilinx.com/support/documentation/application_notes/xapp052.pdf [Lichtsteiner05] P. Lichtsteiner and T. Delbrück, “64x64 Event-Driven Logarithmic Temporal Derivative Silicon Retina”. Proc. IEEE Workshop on Charge-Coupled Devices and Advanced Image Sensors, pp. 157-160, Nagano, Japan, 2005. [Lichtsteiner06] P. Lichtsteiner, C. Posch, and T. Delbruck, "A 128x128 120dB 30mW Asynchronous Vision Sensor that Responds to Relative Intensity Change”. 2006 IEEE ISSCC Digest of Technical papers, pp. 508-509, San Francisco, 2006. [Lichtsteiner08] P. Lichtsteiner, C. Posch and T. Delbrück, “A 128x128 120dB 15us Latency Asynchronous Temporal Contrast Vision Sensor”. IEEE Journal of Solid State Circuits, vol. 43, No. 2, pp. 566-576, Feb. 2008. [Linares02] A. Linares-Barranco, G. Jimenez-Moreno, A. Civit-Balcells, J. L. Sevillano-Ramos, R. Paz-Vicente, “Software Generation of Address-Event-Representation for Interchip Images Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 259 Communications”. 28th Annual Conference of IEEE Industrial Electronics Society.Pag.19151919. España 2002. [Linares03] Alejandro Linares Barranco, “Estudio y Evaluación de Interfaces para conexión de Sistemas Neuromórficos mediante Address-Event-Representation”. Tesis doctoral, Sevilla 2003 [Linares06a] CGI-95 Linares-Barranco A, Paz-Vicente R, Jimenez G, López Coronado J , “AER neuroinspired interface to anthropomorphic robotic hand”. 3th IEEE International Joint Conference on Neural Network. Vols 1-10 Pages: 1497-1504, Vancouver, CANADA, July, 2006. [Linares06b] A. Linares-Barranco, G. Jimenez-Moreno, A. Civit, B. Linares-Barranco, “On Algorithmic Rate-coded AER Generation”. IEEE Transaction on Neural Network,Vol 17, Nº 3.Pag.771-788. 2006. [Linares07a] Alejandro Linares Barranco, Gabriel Jimenez Moreno, Rafael Paz Vicente, Sergio Varona Moya, Angel Francisco Jiménez Fernández “An Aer-Based Actuator Interface for Controlling an Anthropomorphic Robotic Hand”. Lecture Notes in Computer Science. Vol. 4528. Núm. 2. 2007. Pag. 479489 [Linares07b] A. Linares-Barranco, M. Oster, D. Cascado-Caballero, G. Jimenez, A. Civit, B. Linares Barranco. “Inter-Spike-Intervals Analysis of Aer Poisson-Like Generator Hardware”. Neurocomputing . Vol. 70. Núm. 16-18. 2007. Pag. 2692-2700 [Linares07c] A. Linares Barranco, F. Gomez Rodriguez, A. Jimenez-Fernandez, T. Delbruck, P. Lichtsteiner. “Using FPGA for Visuo-Motor Control With a Silicon retina and a Humanoid Robot”. IEEE International Symposium on Circuits and Systems, ISCAS 2007. [Linares08] A. Linares-Barranco, J. L. Sevillano, M. S. Obaidat, N. Ferrando, J. Cerda, D. Cascado, G. Jimenez, A. Civit. “AER filtering using GLIDER: VHDL cellular automata description” IEEE International Conference on Electronics, Circuits and Systems, 2008. ICECS 2008. [Linares09] A. Linares-Barranco, R. Paz, F. Gómez-Rodríguez, A. Jiménez, M. Rivas, G.Jiménez, A. Civit. “FPGA Implementations comparison of Neuro-Cortical Inspired Convolution Processors for Spiking Systems”. International Work-Conference on Artificial Neural Networks, Lecture Notes in Computer Science, Volumen 5517/2009, Pag. 97-105. [Liu02] Shih-Chii Liu, Tobias Delbruck, Jorgene Kramer, Giacomo Indiveri, Rodney Douglas, “Analog VLSI: Circuits and Principles”. MIT press 2002. [Liu04] S. C. Liu, R. Douglas, “Temporal coding in a network of silicon integrate-and-fire neurons”. IEEE Transactions on Neural Networks, Vol. 15, pags 1305-1314, 2004 [Lujan07a] C. D. Luján Martínez, A. Linares Barranco, M. Rivas Pérez, A. Jiménez Fernández, G. Jimenez Moreno, A. Civit Balcells, “Multi-Task Implementation for Image Reconstruction of an Aer Communication”. Lecture Notes in Computer Science. Vol. 4507. Núm. 1. 2007. Pag. 717-724. [Lujan07b] C. D. Luján Martínez, A. Linares Barranco, M. Rivas Pérez, A. Jiménez Fernández, G. Jimenez Moreno, A. Civit Balcells, “Spike Processing on an Embedded Multi-Task Computer: Image Reconstruction. Proceedings of the 5th International Workshop on Intelligent Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 260 Solutions in Embedded Systems”. 5th International Workshop on Intelligent Solutions in Embedded Systems, Wises07 . Leganés, Madrid 2007. [Lyon88] Lyon, R.F.; Mead, C., “An analog electronic cochlea”. Acoustics, Speech and Signal Processing, IEEE Transactions onVolume 36, Issue 7, July 1988 Page(s):1119 - 1134 [Maass99] Wolfgang Maass, Christopher M. Bishop: “Pulsed Neural Networks”. The MIT press, 1999 [Mahowald92] M. Mahowald, “VLSI Analogs of Neural Visual Processing: A Synthesis of Form and Function”. Ph.D. Thesis, California Institute of Technology, Pasadena CA, 1992. [Mahowald94] Misha A. Mahowald, “An Analog VLSI System for Stereoscopic Vision”, Kluwer international series in engineering and computer science. Kluwer Academic Publishers, Boston, MA, pp. 215, 1994. [Mandal09] Mandal, S.; Zhak, S.M.; Sarpeshkar, R., “A Bio-Inspired Active Radio-Frequency Silicon Cochlea “ Solid-State Circuits, IEEE Journal of Volume 44, Issue 6, June 2009 Pags. 1814 - 1828 [MATLAB] The MathWorks - MATLAB and Simulink for Technical Computing: http://www.mathworks.com/ [Maxfield04] Clive Maxfield, “The Desing Warrior’s Guide To FPGAs: Devices, Tools and Flows”. Newnes 2004. [Maxon] Maxon Motors: http://www.maxonmotor.es/ [Mead89] Carver Mead, “Analog VLSI and neural systems”. Addison-Wesley Publications 1989. [Michalewicz99] Zbigniew Michalewicz, “Genetic Algorithms + Data Structures = Evolution Programs”. Springer-Verlag 1999. [Miro06] L. Miró-Amarante, A. Jiménez-Fernández, A. Linares-Barranco, F. GomezRodriguez, R. Paz-Vicente, G. Jimenez-Moreno, A. Civit-Balcells, “An LVDS Serial AER LINK”. IEEE International Conference on Electronics, Circuits and Systems. ICECS 2006. Pags. 938-941. Francia [Miro07] Lourdes Miró Amarante, A. Jimenez, Alejandro Linares Barranco, Francisco Gomez Rodriguez, RafaelPaz Vicente, Gabriel Jimenez Moreno, Antonio Abad Civit Balcells, Rafael Serrano Gotarredona, “LVDS Serial AER LINK Performance”. IEEE International Symposium on Circuits and Systems, ISCAS2007, Pags. 1537-1540. Estados Unidos [Mitra93] Sanjit Mitra, James Kaiser, “Handbook for Digital Signal Processing”. Wileyinterscience publication, 1993. [Molina08] Molina Vilaplana J., Lopez Coronado J. “A neural network architecture for progressive learning of robotic grasps”. 11th International Conference on Climbing and Walking Robots and Supporting Tecnologies for mobile Machines. Advances in Climbing and Walking Robots (Clawar-2008), 2008, Pags. 120-126, Septiembre 2008. [Moore65] Gordon Moore, “Cramming more components onto integrated circuits”. Electronics Magazine 38, Vol. 8, Pags 114-117, 1965. Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 261 [Morgado04] Arturo Morgado Estevez, “Analisis y modelado de sistemas pulsantes bioinspirados basados en buses de altas prestaciones: Bus AER”. Tesis Doctoral, Sevilla 2004. [Ogata96] Katsuhiko Ogata, ”Sistemas De Control Tiempo Discreto”. Pearson Educación 2003 [Ogata04] Karsuhiko Ogata, “Ingenieria De Control Moderna”. Pearson Educación 2003. [Ollero01] Aníbal Ollero, “Robótica; manipuladores y robots móviles”. Marcombo 2001 [Oppenheim98] Alan V. Oppenheim,Alan S. Willsky,S. Hamid Nawab, “Señales y sistemas”. Prentice-Hall International 1998. [Oster07] M. Oster, R. Douglas, L. Shih-Chii Liu, “Quantifying Input and Output Spike Statistics of a Winner-Take-All Network in a Vision System” IEEE International Symposium on Circuits and Systems. ISCAS 2007. Pags. 853 – 856. [Pallás99] Ramón Pallás-Areny, John Webster, “Analog Signal Processing”. Wiley-Interscience Publication 1999. [Patterson09] David Patterson, Jhon Hennessy, “Computer Organization and Design: The hardware / software interface, 4th Edition”. Morgan Kaufmann Publisher 2009. [Paz05] R. Paz , F. Gomez-Rodriguez , M.A. Rodriguez , A. Linares-Barranco , G. Jimenez, A. Civit,”Test Infrastructure for Address-Event-Representation Communications”. International Work-Conference on Artificial Neural Networks, Lecture Notes in Computer Science, Vol. 3512/2005. Pags. 518-526 [Paz06] R. Paz-Vicente, A. Linares-Barranco, D. Cascado, S. Vicente, G. Jimenez, A. Civit. “PCI-AER interface for Neuro-inspired Spiking Systems”. IEEE International Symposium on Circuits and Systems 2006. ISCAS 2006. [Paz08] R. Paz-Vicente, A. Jiménez-Fernández, A. Linares-Barranco, G. Jimenez-Moreno, FGomez-Rodriguez, LMiró-Amarante, A. Civit. “Image Convolution Using a Probabilistic Mapper on Usb-Aer Board”. IEEE International Symposium on Circuits and Systems. ISCAS 2008 [Paz09a] Rafael Paz Vicente, “Una aportación al procesamiento de la información visual mediante técnicas bioinspiradas”. Tesis doctoral, Sevilla 2009 [Paz09b] R. Paz-Vicente, A. Linares-Barranco, A. Jimenez-Fernandez, G. Jimenez-Moreno, A. Civit-Balcells.“Synthetic retina for AER systems development”. International Conference on Computer Systems and Applications, AICCSA 2009 [PCM1804] PCM1804: Full Differential Analog Input 24-Bit, 192-kHz Stereo A/D Converter. http://focus.ti.com/lit/ds/symlink/pcm1804.pdf [Penrose89] Roger Penrose, “The Emperor's New Mind: Concerning Computers, Minds and The Laws of Physics”. Oxford University Press 1989 [Perez08] Perez-Carrasco, J.A.; Serrano-Gotarredona, T.; Serrano-Gotarredona, C.; Acha, B.; Linares-Barranco, B.; “High-speed character recognition system based on a complex Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 262 hierarchical AER architecture” IEEE International Symposium on Circuits and Systems, 2008. ISCAS 2008. Mayo 2008. Pags, :2150 – 2153. [Philipp04] R. Philipp and R. Etienne-Cummings, “A Single Chip Stereo Vision System”. Analog Integrated Circuits and Signal Processing Journal, Vol. 7, pags. 703-712, Julio 2004. [Rakic88] P. Rakic, "Specification of cerebral cortical areas". Science 241 Vol. 4862, Pags.: 170–176, 1988. [Rajago97] R. Rajagopalan. “A Generic kinematic formulation for wheeled mobil robots”. Journal of Robotics Systems, 14(2), Pags. 77-91, 1997. [Rivas07] M. Rivas-Pérez, A. Jiménez-Fernández, C. D. Luján-Martínez, A. Linares-Barranco, R. Paz-Vicente, G. Jimenez-Moreno. “An Aer Based Actuators Controller”. Actas del II Simposio de Inteligencia Computacional. Simposio de Inteligencia Computacional. Zaragoza 2007. [Rousselet02] G. A. Rousselet, M. Fabre-Thorpe, and S. J. Thorpe, “Parallel processing in high level categorisation of natural images” Natural Neuroscience, Vol. 5, pags.: 629-641, 2002. [Rousselet03] G. A. Rousselet, M. J. Mace, and M. Fabre-Thorpe, “Is it an animal? Is it a human face? Fastprocessing in upright and inverted natural scenes”. Journal of Neural Vision Modeling, Vol. 3, pags.: 440-455, 2003. [Rummer69] Dale I. Rummer, “ Introduction to analog computer programming”. 1969Holt, Rinehart and Winston, Inc – USA. [Schaik97]André Van Schaik, “Analogue VLSI building blocks for an electronic auditory pathway”. Tesis Doctoral, Swiss Federal Institute of Technology, Lausanne 1997. [Schaik05] van Schaik, A.; Shih-Chii Liu, “AER EAR: a matched silicon cochlea pair with address event representation interface”. Circuits and Systems, 2005. ISCAS 2005. IEEE International Symposium on 23-26 May 2005 Pags:4213 - 4216 Vol. 5 [Serrano-Gotarredona99] T. Serrano-Gotarredona, A. G. Andreou, B. Linares-Barranco. “AER Image Filtering Architecture for Vision-Processing Systems”. IEEE Transactions on Circuits and Systems. Fundamental Theory and Applications, Vol. 46, N0. 9, September 1999. [Serrano05] R. Serrano-Gotarredona , M. Oster, P.. Lichtsteiner, A. Linares-Barranco, R. Paz, F. Gomez-Rodriguez, H. Kolle Riis, T. Delbrück, S.C. Liu, S. Zahnd, A.M. Whatley, R. Douglas, P. Häfliger, G. Jimenez, A. Civit, T. Serrano-Gotarredona, A. Acosta, B. LinaresBarrancoet “AER Building Blocks for Multi-Layer Multi-Chip Neuromorphic Vision Systems”. Neural Information Processing Systems 2005, NIPS 2005. [Serano07]R. Serrano-Gotarredona, L. Camuñas-Mesa, T. Serrano-Gotarredona, J. A. LeñeroBardallo, and B. Linares-Barranco, “The Stochastic I-Pot: A Circuit Block for Programming Bias Currents” IEEE Trans. Circuits and Systems, Part-II: Brief Papers, vol. 54, No. 9, Pags. 760-764, Septiembre 2007. [Serrano08] R. Serrano-Gotarredona, T. Serrano-Gotarredona, A. Acosta-Jiménez, C. SerranoGotarredona, J. A.PérezCarrasco, B. Linares-Barranco, A. Linares-Barranco, G. JiménezMoreno, and A. Civit-Ballcels,“On RealTime AER 2D Convolutions Hardware for Neuromorphic Spike Based Cortical Processing”. IEEE Trans. Neural Networks, June 2008. Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 263 [Serrano09] R. Serrano-Gotarredona, M. Oster, P. Lichtsteiner, A. Linares-Barranco, R. PazVicente, F. Gómez-Rodríguez, L. Camuñas-Mesa, R. Berner, M. Rivas, T. Delbrück, S.C. Liu, R. Douglas, P. Häfliger, G. Jiménez-Moreno, A. Civit, T. Serrano-Gotarredona, A. AcostaJiménez, B. Linares-Barranco, “CAVIAR: A 45k-neuron, 5M-synapse AER Hardware SensoryProcessing-Learning-Actuating System for High-Speed Visual Object Recognition and Tracking”. IEEE Trans. on Neural Networks, Volume 20, Issue 9, Sept. 2009 Pags.: 1417 - 1438 [Shadlen94] M. Shadlen, W. T. Newsome, “Noise, Nerual Codes and Cortical Organization”, Current Opinion in Neurobiology, vol. 4, pp. 569-579, 1994. [Shepherd90] G. M. Shepherd, “The Synaptic Organization of the Brain”. Oxford University Press, 3rd Edition, 1990. [Silviotti91] M. Silviotti, Wiring Considerations in analog VLSI Systems with Application to Field-Programmable Networks, Ph.D. Thesis, California Institute of Technology, Pasadena CA, 1991. [SIMULINK] Simulink - Simulación y diseño basado en modelos: http://www.mathworks.es/products/simulink/ [Soren04] Poulsen Soren, Michael A. E. Andersen, “Single conversion audio amplifier and DCAC converters with high performance and lowcomplexity control scheme”. 35th Annual IEEE Power Electronics Specialists Conference. PECS 2004. [SYSGEN] “System Generator for DSP”. http://www.xilinx.com/support/sw_manuals/sysgen_gs.pdf [SPARTAN3] “Spartan-3E FPGA Family: Data Sheet”. http://www.xilinx.com/support/documentation/data_sheets/ds312.pdf [Telluride] Neuromorphic Engineering Workshop: http://www.ine-web.org/telluride-conference-2009/telluride-2009/index.html [Thorpe01] S. J. Thorpe, A. Delorme, and R. VanRullen, “Spike-based strategies for rapid processing”. Neural Networks, 14:715-725, 2001. [TMS320C672x] TMS320C672x Floating-Point Digital Signal Processors Series Datasheet: http://www.ti.com/lit/gpn/tms320c6727 [Varona07] Varona Moya S., Molina Vilaplana J., Linares Barranco A., Feliu Batlle J., Lopez Coronado J. “Biologically inspired architecture for control of grasping movement of an anthropomorphic gripper”. 10rd International Conference on Climbing and Walking Robots and Supporting Tecnologies for mobile Machines. Advances in Climbing and Walking Robots, Clawar-2007, 2008, pp. 533-540. [VIRTEX2] “Virtex-II Platform FPGAs: Complete Data Sheet”. http://www.xilinx.com/support/documentation/data_sheets/ds031.pdf [Vogelstein06] R.J. Vogelstein, R. Etienne-Cummings, N. Thakor and A. Cohen, “PhaseDependent Effects of Stimulation of the Spinal Central Pattern Generator for Locomotion”. IEEE Trans. Rehabilitation Engineering, Vol. 14, No. 3, pp.257-265, Septiembre 2006. Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 264 [Vogelstein08] R. Jacob Vogelstein, Francesco Tenore, Lisa Guevremont, Ralph EtienneCummings, and Vivian K. Mushahwar, “A Silicon Central Pattern Generator Controls Locomotion in vivo”. IEEE Transactions on Biomedical Circuits and Systems, vol. 2, no. 3, pp. 212-222, 2008 [Watts92] Watts, L.; Kerns, D.A.; Lyon, R.F.; Mead, C.A. ”Improved implementation of the silicon cochlea”. IEEE Journal of Solid-State Circuits, Volume 27, Issue 5, May 1992 Pags.: 692 - 700 [Watts93] L.Watts, “Cochlear mechanics: Analysis and analog VLSI”. Ph.D. dissertation, California Inst. Technol., Pasadena, 1993. [Wen09] Bo Wen; Boahen, K. “A Silicon Cochlea With Active Coupling”. Biomedical Circuits and Systems, IEEE Transactions on Volume 3, Issue 6, Dec. 2009 Pags. 444 – 455 [Westerman97] Wayne C. Westerman, David P. M. Northmore, John. G. Elias, “Neuromorphic Synapses for Artificial Dendrites”. Analog Integrated Circuits and Signal Processing, Kluwer Academic Publishers, Vol. 13, no. 1, Pags. 167-184, Mayo 1997. [Williams81]Williams, Arthur “Electronic filter design handbook”. McGraw-Hill, 1981. [Wong06] Wong, C.K.; Leong, P.H.W. “An FPGA-Based Electronic Cochlea with Dual FixedPoint Arithmetic”. International Conference on Field Programmable Logic and Applications, FPL 2006. [Yang06] Yang Z., Murray, A. Worgotter, F. Cameron, K. Boonsobhak, V. “A neuromorphic depth-frommotion vision model with STDP adaptation”. IEEE Trans. Neural Networks, vol. 17, No. 2, pp. 482-495, 2006. [Yu09] Yu, T.; Schwartz, A.; Harris, J.; Slaney, M.; Shih-Chii Liu, “Periodicity detection and localization using spike timing from the AER EAR”. IEEE International Symposium on Circuits and Systems, ISCAS 2009. Pags.: 109 - 112 [Zaghloul04] K. A. Zaghloul and K. Boahen, “Optic nerve signals in a neuromorphic chip: Part I and II”. IEEETrans. Biomed. Eng., vol. 51, no. 4, pp. 657-675, Apr. 2004. [Zamarreño08] C. Zamarreño-Ramos, R. Serrano-Gotarredona, T. Serrano-Gotarredona, and B. Linares-Barranco, “LVDS interface for AER links with burst mode operation capability”. IEEE International Symposium on Circuits and Systems, ISCAS 2008, Pags. 644-648. Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 265 Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 272 11.7. PCB: AER-ROBOT.BrdDoc Diseño y evaluación de sistemas de control y procesamiento de señales basados en modelos neuronales pulsantes Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla Ángel Fco. Jiménez Fernández Página 273