Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
INSTITUTO TECNOLÓGICO Y DE ESTUDIOS SUPERIORES DE MONTERREY CAMPUS MONTERREY PROGRAMA DE GRADUADOS EN ELECTRÓNICA, COMPUTACIÓN, INFORMACIÓN Y COMUNICACIONES DISEÑO DE UNA ARQUITECTURA COMPUTACIONAL ESPECÍFICA PARA LA COMPRESIÓN DE SEÑALES ELECTRO EN CEFALOGRÁFICAS TESIS PRESENTADA COMO REQUISITO PARCIAL PARA OBTENER EL GRADO ACADÉMICO DE MAESTRO EN CIENCIAS EN INGENIERÍA ELECTRÓNICA ESPECIALIDAD EN SISTEMAS ELECTRÓNICOS ING. ROLANDO SANTOYO RINCÓN MONTERREY, N.L., DICIEMBRE 2004 © Rolando Santoyo Rincón. 2004 Dedicado especialmente a mis padres: Salvador y Esther Reconocimientos A Dios por su generosidad al darme la vida que tengo A mis Padres por todo su apoyo, cariño y enseñanzas que me han dado durante toda mi vida. A mis hermanos por su apoyo y palabras de aliento siempre que las necesite. A mi asesor de Tesis, el Dr. Alfonso Ávila por su ayuda durante el desarrollo de esta tesis y por darme su confianza, apoyo y amistad durante mis estudios de maestría. A mis profesores tanto del ITESM como de FIMEE por el apoyo que me dieron siempre durante todos mis estudios profesionales. A todos mis compañeros y amigos por su apoyo y compañía, ya que me ayudaron a que mi estancia en Monterrey fuera más agradable . ROLANDO SANTOYO RINCÓN Instituto Tecnológico y de Estudios Superiores de Monterrey Diciembre 2004 IX Resumen El monitoreo de señales electroencefalográficas, necesario para hacer análisis y diagnostico de trastornos cerebrales tales como la epilepsia, presenta algunas limitantes para el paciente. Entre estas limitantes se encuentra el hecho de que este monitoreo se realiza por periodos de más de 24 horas, ocasionando que los costos de hospitalización se incrementen. También, el espacio en memoria para el almacenamiento de la información generada de monitoreo es demasiado grande. A lo anterior se debe agregar que el tener que portar un conjunto de electrodos y tener que permanecer atado al dispositivo de monitoreo, ocasiona al paciente incomodidad no pudiendo realizar sus actividades diarias. En el desarrollo de esta tesis, se hablará de un sistema de adquisición y proce- samiento de señales cerebrales propuesto por el Grupo de Investigación de Microsis- temas del Tecnológico de Monterrey. Este sistema involucra el monitoreo ambulatorio y transmisión inalámbrica de señales electroencefalográficas. El sistema se basa en un arreglo de micro electrodos conectados a un sistema de procesamiento de señal y a un transmisor inalámbrico. El sistema se encuentra en la etapa de diseño y el trabajo de esta tesis involucrará el diseño de una arquitectura computacional especifica para la compresión de las señales adquiridas. Esta compresión permitirá transmitir la infor- mación de manera, más eficiente, así como un mayor tiempo de monitoreo, y también almacenará más información. El método de compresión propuesto, consiste en un algoritmo denominado com- presión por Transformada Coseno Discreto (DCT). Con este método se obtiene una buena aproximación de la señal original, obteniendo hasta un 66% de compresión. Este algoritmo también permite remover automáticamente gran parte del ruido de alta fre- cuencia inducido sobre la señal EEG. Para la implementación de la DCT se empleó un algoritmo basado en un filtro recursivo. Para poder emplear esta técnica es necesario hacer procesamiento previo de la señal de entrada, en base a un algoritmo propuesto en este esfuerzo. Al diseñar la arquitectura computacional específica para ejecutar el algoritmo de compresión propuesto, se siguieron técnicas de Codiseño para integrar en un mismo diseño módulos de software y módulos de hardware. Para esto se propusieron varios diseños, los cuales fueron evaluados considerando parámetros tales como velocidad, area ocupada y consumo de potencia. Entre los diseños que se analizaron se incluyen módulos de hardware tales como multiplicadores de números de 16 bits y varios módulos que calculan la DCT en tan solo 34 ciclos de reloj. Estos módulos se interconectaron a módulos de software tales como un procesador DLX y módulos de memoria, obteniendo una arquitectura con un consumo de potencia estimado inferior a 30 mW. índice general Reconocimientos IX índice de figuras VII índice de tablas XI Capítulo 1. Introducción 1 1.1. Justificación 1 1.2. Definición del problema 3 1.3. Objetivo . . . 3 1.4. Contribución y Alcance 3 1.5. Organización de la tesis 4 Capítulo 2. Antecedentes 5 2.1. Ingeniería Biomédica : 5 2.2. Las señales EEG y su medición 5 2.3. Sistemas actuales de monitoreo portátil de señales EEG 6 2.4. El sistema de transmisión inalámbrica de señales EEG propuesto . . . . 7 2.5. Compresión de señales 8 2.6. Compresión por transformación 9 2.7. La compresión de señales por medio de la Transformada Coseno Discreto (DCT) 10 2.8. Arquitectura de procesadores de acuerdo a su aplicación 12 2.8.1. Arquitectura computacional y sus elementos 12 2.8.2. Circuitos integrados y la orientación de su aplicación 14 2.9. Codiseño Hardware-Software de sistemas embebidos 14 2.9.1. Especificación formal 15 2.9.2. Modelado 15 2.9.3. Simulación y verificación 16 2.9.4. Mapeo del modelo (síntesis) 17 2.9.5. Implementación y desarrollo del prototipo 17 2.9.6. Herramientas utilizadas para Codiseño 18 I 2.10. El procesador DLX 21 Capítulo 3. El algoritmo de compresión propuesto 25 3.1. Representación de datos en sistemas digitales 25 3.1.1. Aritmética de punto flotante 25 3.1.2. Aritmética de punto fijo 26 3.2. Algoritmos para la realización de la Transformada Coseno Discreto (DCT) 32 3.3. Algoritmo recursivo para la implementación de la DCT 33 3.3.1. Modelo matemático del algoritmo recursivo para la DCT . . . . 34 3.3.2. Modelo matemático del algoritmo recursivo para la DCT inversa (IDCT) 36 3.4. Aplicación de la técnica de compresión de señales DCT a las señales EEG 37 3.5. Características del algoritmo propuesto para la compresión y reconstruc- ción de señales EEG 37 3.6. El algoritmo propuesto para la compresión de señales EEG mediante la DCT 41 3.6.1. Adquisición 42 3.6.2. Cálculo del VCD de la señal 43 3.6.3. Conversión complemento a 2 en el formato Q1.7 43 3.6.4. Cálculo del valor absoluto máximo entre las muestras adquiridas 44 3.6.5. Eliminación de la componente de CD de la señal EEG 45 3.6.6. Escalamiento inicial de las muestras 46 3.6.7. Nuevo escalamiento de las muestras para incremento de la res- olución y cálculo del factor de escalamiento 46 3.6.8. Implementación del algoritmo recursivo de la DCT 48 3.6.9. Cuantificación de los coeficientes mediante un escalamiento final y actualización del factor de escalamiento 50 3.7. Selección del número de muestras tomadas para el algoritmo de compre- sión de señales mediante DCT 52 3.8. El algoritmo propuesto para la reconstrucción de señales EEG mediante la IDCT 53 3.8.1. Interpretación de los parámetros que recibe el algoritmo . . . . 54 3.8.2. Conversión de los parámetros al formato Q l.7 54 3.8.3. Decodificación del factor de escalamiento 55 3.8.4. Corrección de la amplitud de los coeficientes calculados 56 3.8.5. Cálculo de la componente de DC de la señal 57 3.8.6. Asignación de valor al resto de las componentes no calculadas . 57 3.8.7. Implementación del algoritmo recursivo para la IDCT 58 II Capítulo 4. Metodología e Implementación 61 4.1. Implementación SW/SW del algoritmo de compresión de señales EEG utilizando BASCOM 62 4.1.1. Descripción de las funciones que conforman el algoritmo de com- presión propuesto •. 63 4.2. Implementación del algoritmo de compresión utilizando el multiplicador en Hardware de la arquitectura AVR 69 4.3. Implementación en Hardware de un multiplicador de 16 bits en formato Q1.15 70 4.3.1. Descripción de los módulos que conforman la arquitectura del multiplicador 72 4.4. Implementación SW/SW del algoritmo del algoritmo de compresión de señales EEG haciendo uso de Seamless 78 4.4.1. El módulo de memoria. 78 4.4.2. Ensamblado del modelo implementado 80 4.4.3. El software implementado 84 4.5. Particionamientodel sistema basado en la DGT 85 4.6. Descripción de un módulo en hardware propuesto para la implementación completa de la DCT 87 4.6.1. Descripción de los bloques que conforman la arquitectura del módulo para la implementación completa de la DCT 90 4.7. Implementación HW/SW del algoritmo de compresión de señales EEG, utilizando el módulo en HW para el calculo completo de la DCT . . . . 98 4.7.1. Ensamblado del SW y HW para la ejecución del algoritmo de compresión de señales para esta implementación 98 4.8. Descripción de un nuevo módulo de HW para la implementación parcial de la DCT 101 4.8.1. Diferencias entre los módulos de HW para la implementación de la DCT de forma parcial y completa 103 4.9. Implementación HW/SW del algoritmo de compresión de señales EEG, utilizando el módulo en HW para el calculo parcial de la DCT 105 Capítulo 5. Resultados 107 5.1. Resultados obtenidos de la implementación en software (SW/SW) del algoritmo recursivo de la DCT 107 5.2. Resultados de la implementación del algoritmo de compresión utilizando el multiplicador en Hardware de la arquitectura AVR 110 5.2.1. Resultados de la implementación en hardware del multiplicador propuesto 110 I I I 5.3. Resultados obtenidos de la implementación SW/SW del algoritmo de compresión haciendo uso de Seamless 117 5.4. Resultados obtenidos de la implementación del módulo en hardware propuesto para el calculo completo de la DCT 120 5.5. Resultados obtenidos de la implementación conjunta HW/SW utilizando el módulo en hardware propuesto para el calculo completo de la DCT . 123 5.6. Resultados de la implementación del módulo de HW para el cálculo parcial de la DCT 126 5.7. Resultados obtenidos de la implementación conjunta HW/SW utilizando el módulo en hardware propuesto para el calculo parcial de la DCT . . 127 5.8. Aspectos relevantes para la evaluación de los diseños 130 5.9. La función de evaluación 132 5.10. Evaluación de los diseños 134 Capítulo 6. Conclusiones y trabajo futuro 145 6.1. Conclusiones 145 6.2. Trabajo futuro 146 Apéndice A. Código de la implementación en SW del algoritmo de com- presión de señales EEG 149 A.l. Implementación del algoritmo en Matlab 149 A.2. Implementación del algoritmo de compresión de señales en C 153 A.3. Implementación del algoritmo de compresión de señales en BASCOM . 164 Apéndice B. Código de los multiplicadores empleados para la imple- mentación HW/SW 187 B.l. Código del multiplicador en la implementación inicial HW/SW utilizan- do la arquitectura AVR 187 B.2. Código del multiplicador en HW implementado en SystemC 189 B.3. Código del multiplicador en HW implementado en VHDL 200 B.3.1. Listado utilizado para la simulación del multiplicador en Modelsim209 Apéndice C. Código para el procesador DLX en la implementación en SW del algoritmo de compresión de señales 211 Apéndice D. Código escrito para la implementación HW/SW en Seamless usando el módulo de calculo completo de la DCT 223 D.l. Código en VHDL para el modulo que implementa la DCT de forma completa 223 D.l.l. Código principal 223 D.l.2. Controlaclor 226 IV D.1.3. Latch 228 D.1.4. Registro 229 D.1.5. Coeficiente 230 D.1.6. Listado que se usó para probar el módulo DCT completo . . . . 240 D.2. Módulos que conforman el resto de la arquitectura 244 D.2.1. Programa principal e interfaz 244 D.2.2. Módulo de memoria 251 D.2.3. Generador de reset 253 D.2.4. Generador de señal de reloj 255 D.2.5. Decodificador para el uso del Monitor del Bus 256 D.3. Código escrito para el procesador DLX para esta implementación . . . 257 Apéndice E. Código escrito para la implementación HW/SW en Seamless usando el módulo de calculo parcial de la DCT 265 E.l. Código en VHDL para el módulo que implementa la DCT de forma parcial265 E.1.1. Código principal 265 E.l.2. El controlador 267 E. 1.3. Listado que se usó para probar el módulo que calcula la DCT de forma parcial 269 E.2. Módulos que conforman el resto de la arquitectura 272 E.3. Código escrito para el procesador DLX para esta implementación . . . 273 E.4. Interfaz propuesta para el diseño final de la arquitectura especifica para la compresión de señales EEG 281 Bibliografía 285 Vita 287 v Índice de figuras 2.1. Ejemplos de señales EEG 6 2.2. El sistema internacional 10 - 20. Vista lateral y superior 7 2.3. Sistema de adquisición y transmisión de señales EEG propuesto 8 2.4. Comparación en el uso de un microelectrodo (izquierda) y un electrodo con- vencional. En el convencional se requiere un gel electrolítico para medir los biopotenciales (disminuye las características aislantes del Stratum Corneum). En el microelectrodo, las agujas penetran en la capa conductora Stratum Germinativum para sensar los biopotenciales 8 2.5. Tipos de procesadores orientados a su aplicación, a) Procesador de uso general. b) Procesador de uso semiespecífico c) Procesador de uso específico 13 2.6. Circuitos integrados y su orientación de aplicación 14 2.7. Fases fundamentales del codiseño Hardware-Software 16 2.8. Arquitectura de Seamless 19 2.9. Arquitectura del procesador DLX soportada por Seamless 22 2.10. Diagrama esquemático del procesador DLX 22 3.1. Ejemplo que muestra el truncamiento de un número en formato Complemento a 2 28 3.2. Ejemplo de un número en formato Q3.5 28 3.3. Ejemplo de una suma de número en formato Qn.m 30 3.4. Ejemplo de una multiplicación de 2 números sin signo . 30 3.5. Ejemplo de una multiplicación de un número con signo por un número sin signo 31 3.6. Ejemplo de una multiplicación de 2 números con signo, multiplicador positivo 31 3.7. Ejemplo de una multiplicación de 2 números con signo, multiplicador negativo 31 3.8. Estructura del filtro recursivo para calcular la DCT 35 3.9. Estructura del filtro recursivo para calcular la DCT inversa 37 3.10. Espectro de la señal obtenido al aplicar la DCT a un set de 256 muestras con fs=128Hz 38 3.11. Señal EEG original en punto flotante comparada con la misma señal con una resolución de 8 bits 40 VII 3.12. Diagrama de flujo del algoritmo propuesto para la compresión de señales EEG 42 3.13. Representación de una muestra adquirida de la señal EEG 43 3.14. Diagrama del cálculo del VCD 44 3.15. Conversión de un dato sin signo a un dato con signo en complemento a 2 . . 45 3.16. Representación de un dato en el formato Complemento a 2 Q1.7 45 3.17. Diagrama que muestra el escalamiento inicial de las muestras para evitar el desbordamiento de los registros 46 3.18. Diagrama que muestra un ejemplo del desplazamiento a la izquierda del valor absoluto máximo para obtener la mejor resolución 47 3.19. Diagrama que muestra el corrimiento a la izquierda aplicado a las muestras para obtener una máxima resolución 48 3.20. Diagrama de flujo que muestra el cálculo del factor de escalamiento hasta este punto del algoritmo 50 3.21. Diagrama que muestra el corrimiento final que se le aplica a las muestras para transmitir o almacenar los coeficientes en menos bits 51 3.22. Resultados obtenidos al procesar 16 muestras al mismo tiempo por el algorit- mo DCT 54 3.23. Resultados obtenidos al procesar 32 muestras al mismo tiempo por el algorit- mo DCT 55 3.24. Resultados obtenidos al procesar 64 muestras al mismo tiempo por el algorit- mo DCT 56 3.25. Resultados obtenidos al procesar 128 muestras al mismo tiempo por el algo- ritmo DCT 57 3.26. Resultados obtenidos al procesar 256 muestras al mismo tiempo por el algo- ritmo DCT 58 3.27. Diagrama de flujo que muestra el algoritmo de reconstrucción de la señal EEG. 59 4.1. Ejemplo obtenido de la implementación del algoritmo propuesto en Matlab 62 4.2. Diagrama de flujo para el algoritmo de la multiplicación de 2 números de 16 bits en el formato Q1.15 66 4.3. Diagrama a bloques del algoritmo recursivo para el calculo de la DCT in- cluyendo el escalamiento inicial de las muestras 67 4.4. Diagrama a bloques del sistema propuesto para implementar el algoritmo de compresión con un multiplicador por hardware 69 4.5. Diagrama a bloques de la arquitectura del multiplicador implementado... 71 4.6. Máquina de estados que conforma el controlador del multiplicador 73 4.7. Diagrama a bloques del sistema mínimo a utilizar para la implementación en SW 78 4.8. Diagrama de un sub-bloque que conforma la memoria del sistema 79 VIII 4.9. Diagrama de interconexión de los sub-bloques que conforman el módulo de memoria y sus terminales 80 4.10. Diagrama con las terminales de los módulos generadores de la señal de reloj y reset 81 4.11. Diagrama con las terminales de la terminal visual incluida en Seamless. ... 81 4.12. Diagrama con las terminales del monitor de bus incluido en Seamless 82 4.13. Máquina de estados que conforma la interfaz del diseño para la imple- mentación en software 83 4.14. Diagrama a bloques del particionamiento'final del sistema 86 4.15. Arquitectura del módulo propuesto para implementar la DCT 88 4.16. Diagrama de estados que describe el funcionamiento del controlador A. ... 91 4.17. Arquitectura interna del módulo Coefx, con una mayor utilización de recursos de HW 92 4.18. Arquitectura interna del módulo Coefx, con una menor utilización de recursos de HW 95 4.19. Diagrama de estados que describe el funcionamiento del controlador B y el multiplexor 97 4.20. Comparación agregada al estado EnableMem de la Figura 4.13 para generar la señal dct_clk 99 4.21. Diagrama de estados del controlador para generar la señal de inicio dct_start_p 99 4.22. Interconexión del hardware utilizado en el modelo propuesto 100 4.23. Arquitectura del módulo propuesto para el calculo de cada uno de los coefi- cientes 102 4.24. Máquina de estados que conforma el controlador del nuevo módulo de HW para le cálculo parcial de la DCT 104 5.1. Demostración del resultado de la simulación de la implementación en la ar- quitectura AVR utilizando el programa BASCOM-AVR 108 5.2. Simulación del multiplicador implementado en VHDL 112 5.3. Diagrama del modelo para la simulación del multiplicador implementado en SystemC 113 5.4. Simulación del multiplicador implementado en SystemC 115 5.5. Ventana del simulador lógico donde se muestran los resultados de la simulación de la implementación en SW 118 5.6. Operaciones de lectura/escritura del DLX 119 5.7. Resultados obtenidos con el Performance Profiler de Seamless 120 5.8. Resultado de la simulación del módulo en HW implementado en VHDL . . 122 5.9. Resultado de la simulación del módulo en HW implementado en VHDL(continuación) 124 IX 5.10. Ventana obtenida del simulador lógico de Seamless para esta implementación HW/SW 126 5.11. Algunas de las ventanas obtenidas del Performance Profiler de Seamless para esta implementación HW/SW 127 5.12. Resultado de la simulación del módulo en HW que calcula parcialmente la DCT implementado en VHDL 128 5.13. Ventana obtenida del simulador lógico de Seamless para esta implementación HW/SW del nuevo diseño 129 5.14. Algunas de las ventanas obtenidas del Performance Profiler de Seamless para la nueva implementación HW/SW 130 5.15. Modelo de la arquitectura final propuesta para la compresión de señales EEG 138 5.16. Diagrama Interno del módulo de memoria utilizado en la arquitectura final del diseño 139 X índice de tablas 2.1. Modelo de pines de la interfaz del DLX 23 3.1. Valores de codificación del factor de escalamiento 49 3.2. Resultados obtenidos de la simulación del algoritmo de la DCT para diferente número de muestras procesadas 53 4.1. Valores de los cosenos utilizados en la función DCTRec 68 4.2. Tabla de verdad del módulo multiplexor 74 4.3. Tabla de verdad del módulo sumador 75 4.4. Tabla de verdad del módulo que calcula el bit especial 76 4.5. Tabla de verdad del registro de desplazamiento 77 5.1. Muestras de entrada al algoritmo para su prueba funcional 109 5.2. Resultados funcionales obtenidos en la implementación en SW con diversas herramientas con los datos de entrada de la tabla 5.1 110 5.3. Resultados de las implementaciones basadas en la arquitectura de los micro- controladores AVR 116 5.4. Funciones involucradas por la DCT y su porcentaje de tiempo de ejecución. 121 5.5. Datos procesados y resultados obtenidos de la implementación en software del algoritmo recursivo de la DCT 123 5.6. Resultados obtenidos de la síntesis del módulo para el calculo completo de la DCT 125 5.7. Resultados obtenidos de la síntesis del módulo para el calculo completo de la DCT (Continuación) 125 5.8. Métricas importantes obtenidas para cada uno de los diseños basados en su simulación y síntesis 135 5.9. Evaluación de la potencia consumida por cada uno de los diseños propuestos 137 XI Capítulo 1 Introducción 1.1. Justificación El área de la medicina, es un campo en el que los avances en la tecnología se ven reflejados de manera notoria. Los sistemas electrónicos para el monitoreo y registro de las señales biomédicas utilizados actualmente, son por lo general dispositivos complejos, robustos, con muy poca portabilidad además de ser caros. La principal razón por la cual dichos dispositivos son complejos, es que el procesamiento de las señales biomédicas adquiridas requiere de varias etapas de acondicionamiento. Esto debido a que las señales se encuentran inmersas en ruido e incluso se ven afectadas por otras señales biomédicas sobreimpuestas a la señal de interés. El ruido inducido sobre las señales biomédicas es generado en los mismos dis- positivos de medida y registro, o también puede ser transmitido al sistema desde una. fuente externa. Mucha de la interferencia externa se produce en los mismos electrodos utilizados para el sensado de señales. Ya que el gel que se les aplica para mejorar la conductividad de la piel también pueden producir voltajes de DG que pueden saturar los amplificadores de señal o incluso pueden causar cierta corrosión en los mismos elec- trodos. Esta corrosión puede detectar señales RF, permitiendo que se produzca cierta modulación de la señal al llegar al dispositivo de medición. En todos los hospitales, señales fisiológicas son registradas para ayudar en el di- agnóstico de enfermedades o monitorear el progreso de pacientes bajo algún tratamien- to. Si estas señales son corrompidas, se pueden producir errores en la interpretación o en el diagnostico. Actualmente, existen muchas regulaciones buscando limitar estas inter- ferencias a niveles aceptables. Estas limitaciones no son lo suficientemente satisfactorias hablando del monitoreo de señales fisiológicas. Es por eso que debido a la naturaleza de las señales adquiridas, se requiere de un mejor procesamiento de las señales para lograr que la interferencia cause menos errores en la interpretación de dichas señales.[15] 1 Además, con los avances de la telemedicina, se vuelve imperativo contar con dis- positivos que no solo sean capaces de monitorear y registrar señales biomédicas, si no que también puedan transmitir la información adquirida de una manera eficiente de modo que pueda ser analizada por expertos de una forma confiable en un lugar distinto de donde se genero la señal. En un futuro no muy lejano, las señales biológicas tales como electrocardiogra- mas(ECG), electroencefalogramas(EEG) y presión sanguínea no solo serán monitore- adas en ambulancias o lugares remotos, si no que deberán de ser transmitidas sobre canales de capacidades bajas a hospitales cercanos para su interpretación. Además, deben de ser transmitidas de una forma que el ruido no las afecte demasiado y que al ser recibidas puedan ser interpretadas con seguridad por los especialistas. Además, algunas veces las señales biológicas deben ser almacenadas de una forma que ocupen la menor memoria posible. Para esto se requiere que las señales transmitidas sean com- pactadas tanto para su mejor transmisión como para su almacenamiento[18]. En estos días, el monitoreo ambulatorio de las señales EEG se vuelve una her- ramienta valiosa para la caracterización de posibles ataques de epilepsia. Este moni- toreo tiene una clara ventaja sobre el monitoreo ordinario de señales EEG, puesto que permite hasta 72 horas de registro. Este monitoreopuede realizarse desde cualquier lugar y no necesariamente en un hospital donde los costos de admisión son muy altos [22]. El monitoreo ambulatorio implica que el sistema de medición se vuelve de carac- terísticas portátil requiriendo que tenga un consumo de potencia reducido para lograr un mayor tiempo de monitoreo. Este trabajo de tesis tiene la finalidad de diseñar una arquitectura computacional especifica, dedicada a la compresión de señales de origen cerebral para poder transmitir estas señales de una forma más eficiente. Además de que por medio de la compresión de señal se podrá almacenar mayor cantidad de información. Esta arquitectura se enfoca a aplicaciones en sistemas de monitoreo ambulatorio inalámbrico, por lo cual se requiere que la arquitectura propuesta presente un bajo consumo de potencia. Para realizar la compresión de señal sé propone un método basado en la transformada coseno discreto (DCT). Esta técnica permite una buena aproximación de la señal, permitiendo un porcentaje de compresión cercano al 70%. La arquitectura computacional específica se diseñará en base a técnicas de codiseño para integrar módulos de software y de hardware y así poder encontrar la mejor distribución de estos que de los resultados óptimos para esta aplicación. 2 1.2. Definición del problema El monitoreo ambulatorio de señales EEG se ve afectado por gran cantidad de ruido inducido sobre las señales adquiridas. Este monitoreo requiere almacenar gran cantidad de información y transmitirla de manera eficiente. El equipo para el monitoreo ambulatorio es de características portátiles, y por tanto requiere tener un consumo bajo de potencia. Por tanto, en esta tesis se propone diseñar una arquitectura computacional específica para la compresión de señales EEG. Esta arquitectura debe ser específica para, que el consumo de potencia sea mínimo y la compresión se da para poder realizar un monitoreo por mayor tiempo al almacenar menos información, además de facilitar la transmisión. 1.3. Objetivo Se pretende diseñar una arquitectura computacional específica para la compresión de señales de origen cerebral. La compresión de la señal tiene como objetivo el facilitar su transmisión libre de ruido, así como facilitar el registro de la información permitiendo un monitoreo por mayor tiempo. La arquitectura deberá de ser capaz de procesar al menos 32 canales EEG con una frecuencia de muestreo de 200 Hz[22]. La arquitectura deberá de ser especifica, pues se busca que esta opere con un bajo consumo de potencia utilizando los menores recursos posibles. 1.4. Contribución y Alcance Actualmente se han desarrollado micro electrodos para el monitoreo inalámbrico de señales EEG, los cuales requieren de circuitería compacta para darles la característica de portabilidad. Esta circuitería debe de contener los elementos específicos para que su costo de fabricación y consumo de potencia sean mínimos y estos sistemas puedan ser competitivos en el mercado. Estos sistemas requieren además de transmitir las señales adquiridas de una manera eficiente para poder ser analizadas o almacenadas posteriormente. Para poder transmitir esta información de una manera eficiente una técnica empleada es la compresión de señales. La contribución de este trabajo de tesis será el proponer un algoritmo de com- presión de señales y una arquitectura computacional específica capaz de ejecutarlo. La arquitectura contará con elementos de software y de hardware, y para encontrar la mejor distribución entre ambos elementos se requiere realizar un análisis del algoritmo de compresión propuesto usando las técnicas de Codiseño. Se propondrán diversos mod- elos de la arquitectura que ejecutara el algoritmo y se evaluará de acuerdo a métricas 3 tales como velocidad, recursos utilizados y consumo de potencia. La mejor arquitec- tura será la que logre un mejor equilibro entre estas métricas y las necesidades de esta aplicación. Para la elaboración de la tesis se usaran diversas herramientas tales como Matlab, C y Bascorn para la simulación del algoritmo de compresión en Software. También se manejaran herramientas de descripción, simulación y síntesis de hardware tales como ModelSim y Leonardo Spectrum de Mentor Graphics y herramientas de codisñeo (Hardware/Software) tales como SystemC y Seamless de Mentor Graphics. 1.5. Organización de la tesis Esta tesis se encuentra distribuida en 7 capítulos y estos se describen a contin- uación. En el capítulo 2 se describen antecedentes referentes a electroencefalografía, técnicas de compresión de señales, arquitecturas computacionales específicas y gen- erales, descripción de las técnicas de Codiseño HW/SW así como algunas herramientas empleadas por estas técnicas. También se describe en forma breve la arquitectura del procesador DLX. En el capítulo 3 se describirá el algoritmo de compresión de señales propuesto, así como aspectos relacionados con este, tales como aritmética de punto fijo y el algoritmo recursivo para la implementacion de la DCT. Este capítulo también in- cluye la descripción del algoritmo de reconstrucción de señales EEG. En el capítulo 4 se presentan diversos modelos de arquitecturas propuestas para la ejecución del algorit- mo de compresión de señales. Estos modelos incluyen versiones SW/SW y HW/SW que se implementaron con diversas herramientas. En el capítulo 5 se presentan resultados obtenidos de las diversas implementaciories, así como su evaluación y comparación. Para la evaluación de los diseños se propone una ecuación (función de evaluación) que in- volucra métricas obtenidas de la implementacion de los diseños. En base a la evaluación de los modelos se propone una arquitectura específica para la compresión de señales EEG. En este capítulo también se incluyen consideraciones importantes que hay que seguir al diseñar una interfaz en un sistema digital. En el capítulo 6 se presentan las conclusiones obtenidas del trabajo realizado así como algunas propuestas para trabajos posteriores. 4 Capítulo 2 Antecedentes 2.1. Ingeniería Biomédica La ingeniería biomédica. es una disciplina enfocada a aplicaciones en medicina. El estudio de esta área se orienta la restitución o sustitución de funciones y estructuras dañadas del cuerpo humano, y así construir instrumentos con fines terapéuticos y de diagnóstico. La rama de la ingeniería biomédica verifica más directamente el impacto entre la medicina y la ingeniería. La creciente complejidad de los instrumentos, de los métodos de medición e incluso de la interpretación de los datos obtenidos, hacen que los hospitales necesiten de los bioingenieros, con frecuencia jugando papeles comple- mentarios a los del médico en los equipos clínicos[ll]. 2.2. Las señales EEG y su medición Grabaciones eléctricas de la superficie expuesta del cerebro o de la superficie de la cabeza demuestran una actividad eléctrica oscilatoria continua, La intensidad y los patrones de esta actividad eléctrica son determinadas por una gran excitación del cere- bro resultado de las funciones en el RAS (Sistema de Activación Reticular). Las on- dulaciones en los potenciales eléctricos grabados son llamadas ondas cerebrales y la grabación completa se llama electroencefalograma (EEG). Las intensidades de las ondas cerebrales en la superficie del cerebro pueden ser tan grandes como 10 mV, mientras que esas grabaciones del cuero cabelludo tienen una pequeña amplitud de aproximadamente 100 f.iV. Las frecuencias en las ondas cerebrales tienen un rango de 0.5 - 100 Hz y su carácter es altamente dependiente del grado de actividad en la corteza cerebral. Las ondas cambian marcadamente entre los estados de alerta y sueño[6]. Los distintos tipos de señales EEG se muestran en la Figura 2.1, En la electroencefalografía clínica, 21 electrodos son aplicados a la cabeza del paciente para utilizar el sistema conocido clínicamente como 10 - 20. Este sistema emplea límites en el cráneo como puntos de referencia para, localizar los electrodos. En 5 Beta(W 13-30H: Parietal y Frontal Alfa (a)8- I3H2 Occipital Thetaf®) 4-8 Hi Niños y adultos durmiendo Delta (6) 0.5-4 Hz Niños y adultos durmiendo Picos 3 Hz Alaques de epilepsia 200-, V[uVj 100- 0J i- 0 3 Time [s] 4 Figura 2.1: Ejemplos de señales EEG total, son colocados 19 electrodos en el cuero cabelludo y 2 en los lóbulos del oído. Estos 2 últimos son utilizados como los electrodos de referencia. Se llama sistema 10 - 20, debido a que los electrodos están localizados con un espaciamiento entre el 10 y 20% de la distancia entre nasión e inión[6]. Esto se muestra en la Figura 2.2. 2.3. Sistemas actuales de monitoreo portátil de señales EEG Actualmente existen dispositivos que registran estas señales en tiempos discretos y por ciertos periodos de tiempo. Estos dispositivos utilizan un multiplexado de más de 16 canales a frecuencias de muestreo mayores que los dispositivos de registro continuo. Los dispositivos actuales registran muestras de señales EEG a intervalos definidos y también registra lapsos cuando es presionado un botón por el paciente mismo u algún otro observador. Una memoria electrónica permite revisar la señal unos instantes antes de presionar dicho botón. Una caja pequeña usada en la cabeza del paciente contiene los amplificadores y multiplexores. Una desventaja de este dispositivo es que la lectura 6 20% 20% 20% Inion Figura 2.2: El sistema internacional 10 - 20. Vista lateral y superior. obtenida con el registro por lapsos esta sujeto a errores de muestreo y los pacientes no serán capaces de activar de forma confiable el modo de registro por medio del botón. Conectando el dispositivo a una computadora con programas de detección de picos y ataques (anormalidades presentes en las señales EEG), se puede detectar instantánea- mente algún problema, pero se sacrifica, la portabilidad. La integración de la tecnología de la computadora a los sistemas de monitoreo EEG en los 90's fue el parte aguas que permitió la expansión del número de canales de registro y así mejorando el análisis de datos. Actualmente se disponen dispositivos de hasta 32 canales, con tazas de muestreo de 200 Hz y resolución de 16 a 22 bits. Los electrodos están unidos de la cabeza del paciente a la unidad de registro, la cual es usada en la cintura del paciente. Este modelo pesa alrededor de 1.5kg, incluyendo el disco duro y una batería. Las dimensiones de este dispositivo son de aproximadamente 450 - 550 cm3, similar a un reproductor de CDs. Estos sistemas utilizan una batería grande y un disco duro debido a que el registro se realiza en el mismo dispositivo de adquisición de señal. Además el disco duro es tam- bién grande para almacenar todo la información, ya que no se encuentra comprimida, Esto limita el tiempo de almacenamiento de la unidad [22]. 2.4. El sistema de transmisión inalámbrica de señales EEG propuesto El sistema propuesto por el grupo de Microsistemas del Tecnológico de Monter- rey consiste en un sistema de transmisión inalámbrica de señales EEG basado en un conjunto de micro electrodos con un micro maquinado como método de fabricación. El sistema adquiere varias señales EEG por medio de los micro electrodos. Las señales 7 llegan a una etapa de multiplexado para que el procesamiento de las señales sea real- izado por un solo bloque. La señal que sale del multiplexor es acondicionada por medio de una etapa analógica y pasa a un bloque de procesamiento de señal donde la señal es comprimida y librada de interferencias. En este módulo, la señal se deja lista para que sea transmitida inalámbricamente. La Figura 2.3 muestra el modelo del sistema propuesto. Sistema de Hicroelect rodos •- —..... . . Acondiciona- miento de señal analog. Procesamiento de señal Transmisor Inalámbrico Figura 2.3: Sistema de adquisición y transmisión de señales EEG propuesto Los micro electrodos utilizados son del tipo semi-invasivos ya que estos consisten de un arreglo de agujas puntiagudas diseñadas para la penetración de la piel humana con las cuales se libran los problemas relacionados con las altas impedancias de las capas superficiales de la piel. La mayor ventaja de estos electrodos incluye un procedimiento de aplicación rápido y fácil, una baja impedancia entre el electrodo y la piel (menor que la de los electrodos tradicionales) y un uso mas cómodo para el paciente que los porta[9]. La Figura 2.4 muestra físicamente la comparación entre un electrodo convencional y un micro electrodo. Micro-Electrodo en seco Electrodo convencional en húmedo gel no electrolítico agujas gel electrolítico Figura 2.4: Comparación en el uso de un microelectrodo (izquierda) y un electrodo con- vencional. En el convencional se requiere un gel electrolítico para medir los biopotenciales (disminuye las características aislantes del Stratum Corneum). En el microelectrodo, las agu- jas penetran en la capa conductora Stratum Germinativum para sensar los biopotenciales. 2.5. Compresión de señales Inicialmente, las señales digitalizadas son representadas como una serie de mues- tras y las imágenes como un arreglo bidimensional de pixeles. La compresión de datos es la exacta o aproximada codificación de señales e imágenes en una forma alternativa, 8 la cual requiere menos bits. La compresión permite que las señales sean transmitidas de forma mas rápida, económica, en mayor número y en tiempo real. Algunas técnicas de compresión son sin perdidas ("lossless"), lo cual significa que la señal puede ser reconstruida exactamente de los datos codificados. Las técnicas de codificación con pérdidas ("lossy"), solo permiten recuperar aproximadamente la señal original de los datos originales, pero son por lo general más eficientes que las técnicas sin perdidas. Pequeños errores pueden ser tolerados en la mayoría de las aplicaciones, de manera que las técnicas sin perdidas se han convertido en las más ampliamente usadas y aceptadas. La compresión de datos con perdidas es esencial en la transmisión digital y almacenamiento de las siguientes señales[18]: • Señales fisiológicas • Música • Imágenes médicas • Imágenes de satélites • Vídeo digital 2.6. Compresión por transformación Una señal puede ser considerada como una-secuencia de N muestras. Esta secuen- cia puede ser representada por X. Una representación más eficiente de X puede ser obtenida aplicando una transformación ortogonal Y = TX, donde Y denota el vector transformado y T denota la matriz de transformación. El objetivo de la compresión es seleccionar una sub-secuencia de Y conteniendo M componentes, donde M es substancialmente menor que N. Es decir, son descartados M — N componentes. Es posible mostrar que la transformación Karhunen-Loeve (KLT) es la óptima para la representación de señales con respecto al criterio del error cuadrático medio. La mayor desventaja de usar KLT es el substancial tiempo de computación. La transformada coseno discreto (DCT) es una solución suboptima con ventajas computacionales y de hecho existen algoritmos rápidos para su cálculo. Esta transfor- mación puramente real para un vector de entrada real hace este método interesante para la compresión de señales EEG. La DCT es usada para la compresión de señales ECG (Electrocardiografía) y frecuentemente se ha reportado que la DGT logra un desempeño prácticamente idéntico a KLT.[19]. 9 2.7. La compresión de señales por medio de la Transformada Coseno Discreto (DCT) Como en todas las técnicas de compresión de señales por medio de transforma- ciones, la DCT involucra el procesamiento de la señal por medio de la descomposición de componentes ortogonales, lo cual causa que no exista perdida de información, si no que solo se produce una rotación del sistema de coordenadas. La compresión entonces se logra por medio de la eliminación de las componentes menos representativas de la señal transformada, y codificando las componentes restantes con menor número de bits. Esto causa definitivamente que exista perdida de la información. La señal transformada es obtenida por medio de la matriz de rotación DCT: ,DCT 2 COS ̂I ros -^ • • • rosn \.-\J!j O/U ^-WO COS donde N es el número de muestras de la señal EEG. Una característica de la DCT es que su matriz de rotación o transformación es independiente de la señal EEG. Además esta matriz tiene coeficientes constantes, tal como se ve en la ecuación 2.1. Esto asegura que la complejidad en software u hardware sea menor, ya que esta matriz puede ser almacenada en una memoria, siempre y cuando el número de muestras permanezca constante. De esta manera, la señal transformada puede ser obtenida por una simple multi- plicación de matrices: EEG?rans = (v^CT}tEEGN (2.2) Donde EEGN es la señal EEG original y EEG^rans es la transformación de la señal EEG. Esto también puede ser expresado de la siguiente manera: EEGtrans[k] = a - £ EEGorg{n] cos — (2n + 1) (2.3) n=0 ¿i Donde fc = 0, 1 , - - - , N - I [0 ,5 S i f c = 0 ,0 ,. ük= 1 Otro caso (2'4) 10 Ahora, la simple transformación mostrada en la ecuación 2.2 no provee una com- presión de la señal por si misma, ya que se obtiene el mismo numero de coeficientes que el número de muestras en la señal original. Es por eso cine son requeridas técnicas adi- cionales para eliminar la redundancia de datos, mientras que se preserve la información de importancia. Los coeficientes obtenidos por la DCT son una representación especial de la am- plitud de las componentes espectrales de la señal original. Esto quiere decir que las proyecciones de la señal original sobre los vectores base de la DCT corresponden a las amplitudes de las señales coseno con frecuencias específicas, cuya suma reconstruirá la señal 'original. Estas frecuencias son dependientes de la frecuencia, de muestreo y el número de muestras de la señal original[3|. El proceso de compresión de señales basado en la DCT consta de los siguientes pasos: 1. Transformar la señal original por medio de la matriz de rotación DCT 2. Eliminar las componentes de frecuencia, que proporcionen menor información. 3. Codificar las componentes restantes con menor cantidad de bits. Teóricamente, este método de compresión puede dar una razón de compresión aproximadamente de hasta 7:1, dependiendo de las propiedades de la señal a comprimir. Los coeficientes resultantes de aplicar la DCT se usarán posteriormente para la reconstrucción de la señal EEG. Para esta reconstrucción se utilizará la Transformada Inversa Coseno Discreto (IDCT), para esto se requiere contar con el mismo número de coeficientes que las muestras de entrada al algoritmo de la DCT. La representación matemática general que describe la IDCT se muestra en la ecuación 2.5. Í12N~1- Trk EEGrecons\i] = \/T7 E EEGTrans(k] eos —(2i + 1) (2.5) ' jv fc=o Z7V Para i = o , i , - - - , ; v - i La ecuación 2.5 obtendrá a la salida una serie de jV puntos, los cuales constituirán una aproximación de la señal EEG original. 11 2.8. Arquitectura de procesadores de acuerdo a su aplicación. 2.8.1. Arquitectura computacional y sus elementos Una arquitectura se define como la estructura que permite el funcionamiento de un sistema capaz de desarrollar una serie de procedimientos que satisfacen condiciones de operación deseadas. [1]. Los elementos que componen una arquitectura son: procesador, elementos de memoria, registros, instrucciones, interrupciones, elementos de control, estructuras de entrada/salida y funciones. Procesadores y la orientación de su aplicación. Un procesador es un diseño digital capaz de ejecutar un algoritmo y típicamente consta de un controlado!' y una ruta de datos. La ruta de datos incluye componentes digitales básicos tales como registros de almacenamiento de datos, unidad de transfor- mación de datos, multiplexores y buses para mover datos. La unidad del controlador consta de registros, compuertas lógicas que configuran la ruta de datos para hacer transformaciones y almacenamiento de datos. Muchos procesadores son programables y algunos no lo son. Los procesadores de propósito general son programables, ya que están diseñados para ejecutar casi cualquier aplicación. La ruta de datos de estos, contiene grandes registros y unidades aritmética-lógica flexibles. Sus controladores no incorporan infor- mación acerca de la aplicación que el procesador esta corriendo, pues solo ejecuta las instrucciones guardadas en memoria que representan la aplicación. Para ajustar una aplicación a un procesador de propósito general se requiere compiladores rápidos y más herramientas. Así mismo, los diseñadores pueden usar procesadores específicos para ejecutar la aplicación. Estos pueden establecer exactamente el número, el tamaño y las interconex- iones entre los registros y unidades funcionales para que se ajuste mejor a'la aplicación y cumpla con las necesidades de consumo de potencia, y desempeño. Los procesadores específicos pueden incluir grandes "pipelines" o numerosas unidades funcionales de ru- tas de datos para lograr paralelismo. Estos procesadores de uso específico también son referidos a veces como cooprocesadores, aceleradores o periféricos. Las ventajas de los procesadores de uso general son que se tiene una inmediata disponibilidad, bajo precio (debido a su producción en masa), y un flujo de diseño sencillo. Los diseñadores especialmente prefieren la flexibilidad de los procesadores de uso general, pues pueden programarlos en minutos, pero enfrentan la disyuntiva entre el 12 mejor rendimiento y bajo consumo de energía de los procesadores específicos y los costos reducidos de los procesadores programables que son producidos en grandes cantidades. La mayoría de las veces los diseñadores deben dividir sus aplicaciones para encontrar un balance entre soluciones generales y especificas. Actualmente existen dispositivos que caen dentro de los extremos de la división, estos son los DSPs y los microcontroladores. Algunas computadoras embebidas digi- talizan señales analógicas (tales como audio o vídeo), las transforman y devuelven una señal nueva. Esto se requiere hacer en tiempos reducidos. Es por eso que los DSPs incluyen instrucciones especiales y estructuras de hardware para manejar tales señales. Por ejemplo un DSP típico puede contener instrucciones para una lectura y escritura rápida de arreglos grandes de datos, multiplicación y acumulación en un un solo ciclo y aritmética de punto flotante rápida. Los microcontroladores requieren de operaciones, un eficiente manejo de puertos de entrada/salida, y un menor consumo de potencia. Las arquitecturas de los microcontroladores generalmente tienen rutas de datos angostas de (16 ó 8 bits), unidades funcionales sencillas, registros directamente conectados a puertos externos y un uso extensivo de instrucciones a nivel de bits. También incluyen temporizadores, comunicación serial, convertidores analógico digital y algunas otras funciones de control. Los DSP y microcontroladores representan las 2 formas de arquitecturas o proce- sadores semi-específicos, también conocidos como procesadores con instrucciones para aplicaciones específicas. Estos tienen grandes aplicaciones en procesamiento digital de imágenes, ruteo en redes y comunicaciones móviles[20]. Memoria de Instrucción Dr Inst.PC Controlador control Controlado: Unidad de control A i H 1 Hult-Acum uta de datos a) b) Figura 2.5: Tipos de procesadores orientados a su aplicación, a) Procesador de uso general, b) Procesador de uso semiespecífico c) Procesador de uso específico 13 2.8.2. Circuitos integrados y la orientación de su aplicación. Un circuito integrado (CI) es una interconexión de transistores siguiendo uno de varios posibles estilos de fabricación. También existen CI 's de uso general programadles y de uso específico. Un fabricante de CI's puede diseñar un circuito de aplicación especi- fica usando únicamente los elementos necesarios (transistores) para esto. El resultado de esto es un chip compacto, rápido y de bajo consumo de potencia. Los CI's de uso general, son construidos por un conjunto de módulos interconec- tados y se programa cada uno de ellos para implementar diferentescomponentes. Un módulo debe de ser pequeño, memoria de 16 palabras. Almacenado los bits apropiados en la memoria, se puede implementar la función combinacional deseada. Debido a que los componentes digitales consisten de una lógica combinacional y almacenamiento, en estos se puede mapear cualquier función. Se pueden crear varios módulos dentro del mis- mo CI's e interconectarlos para, crear un sistema completo. Este sistema trabaja bien, aunque se consume más potencia que los CI's de uso especifico y la implementación es menos eficiente. El mas popular de estos dispositivos es el FPGA (Field Programmable Gate Array), el cual consiste de módulos lógicos programables y módulos de almace- namiento interconectados. CI Programable CI de uso semiespecífico CIde uso específico 2.9. Figura 2.6: Circuitos integrados y su orientación de aplicación Codiseño Hardware-Software de sistemas em- bebidos Actualmente, la mayoría de los sistemas embebidos se encuentran compuestos de componentes de hardware y software funcionando concurrentemente y en forma, cooperativa. Estos sistemas son llamados embebidos, debido a que fueron diseñados para cumplir con funciones específicas y comunicarse con el medio externo o con otro equipo. Algunos ejemplos de estos sistemas pueden ser encontrados en equipo médico, procesos 14 de control, aeronáutica, sistemas de comunicación y recles, impresoras, dispositivos electrónicos, etc. La presión comercial de producir sistemas complejos en tiempo cada vez mas corto, ha llevado a los diseñadores a usar nuevas metodologías más formales para el desarrollo de estos sistemas embebidos[2]. Tradicionalmente cuando se desarrollaban sistemas em- bebidos, los diseñadores particionaban el hardware y software al principio del proceso. De esta forma, los ingenieros de software y hardware diseñaban respectivamente sus componentes sin tener alguna comunicación entre estos dos grupos. Esto en muchas ocasiones, provocaba que hubiera que repetir varias veces el proceso por errores de planeación causando elevados costos de diseño y ciclos de desarrollo muy largos. Como resultado de esto, surgió el llamado Codiseño Hardware - Software (HSG), el cual ha ganado una gran aceptación en la industria y en las universidades la última década. El codiseño integra los principios del diseño de hardware y software y provee métodos estructurados y herramientas para la simulación y verificación conjunta del sistema. Esto conlleva a ciclos de desarrollo mas cortos, costos menores, reuso de com- ponentes y la maximización de la potencia de procesamiento. Una sola metodología HSC rio puede ayudar al diseño exitoso de todas las aplica- ciones. Existen distintas técnicas o metodologías usadas de acuerdo al tipo de diseño a implantar, aunque existen fases fundamentales que se deben seguir. Estas fases se muestran en la Figura 2.7 y se describen a continuación[10]. 2.9.1. Especificación formal En esta fase, los diseñadores crean un documento con las especificaciones del sis- tema. Estas especificaciones documentan los requerimientos del sistema, su funcional- idad, comportamiento y su interfase. La interfase define el mecanismo por el cual se comunica con el medio externo. En esta fase, también son considerados otros algunos otros criterios como tamaño, consumo de potencia, según sea considerado importante por los diseñadores. 2.9.2. Modelado Los diseñadores crean un modelo del sistema basándose en las especificaciones definidas. Para esto se debe generar un modelo estructural, un modelo funcional y un modelo dinámico del sistema. El modelo estructural describe los componentes (hard- ware y software) que constituyen el sistema. El modelo funcional ilustra la funcionalidad del sistema y como este reacciona con el medio externo. El modelo dinámico muestra los estados de transición dentro del sistema, El modelado es desarrollado capturando las especificaciones en uno o más lenguajes de alto nivel de descripción de sistemas, 15 Figura 2.7: Fases fundamentales del codiseño Hardware-Software tal como el SystemC el cual se usa para el modelado estructural. También pueden ser usados lenguajes de descripción de hardware tales como VHDL o Verilog. 2.9.3. Simulación y verificación Para iniciar la simulación del modelo, los diseñadores primero particionan el sis- tema y seleccionan un procesador. El particionamiento se refiere a la manera en que los diseñadores asignan ciertas funciones de un sistema a ser desarrolladas por hardware y otras por software. Usando simuladores, los diseñadores prueban eventos. Tales eventos contienen un set de condiciones iniciales para controlar el proceso. Los diseñadores usan los resultados de las simulaciones para estudiar y evaluar alternativas de diseño, verificar la funcionalidad del sistema, y reparticionar el software y hardware para lograr con el desempeño especificado del sistema. Esto incluye el costo de hardware y software, ya que un sistema con más software que hardware es general- 16 mente menos costoso, debido a la flexibilidad del software. Aunque recientemente con los avances en la tecnología los FPGAs, el hardware ofrece una flexibilidad comparable al software, con la ventaja de que se obtiene un mejor desempeño y un consumo de potencia mucho menor. Una herramienta utilizada comúnmente para verificar el desempeño y eficiencia del diseño es la llamada Función de evaluación. Esta consiste simplemente en una ecuación que tiene como variables los parámetros de rendimiento del sistema tales como velocidad, costo y consumo de energía. Cada diseño implementado se evalúa mediante esta función y se obtiene un valor el cual se busca maximizar. Al modelo en este punto se le pueden hacer modificaciones y es vuelto a sim- ular hasta que se alcance la funcionalidad deseada del sistema, así como obtener un valor máximo de la función de evaluación. Para realizar estas modificaciones, se re- quiere reparticionar de nuevo el sistema. Consecuentemente, se pasa la mayor parte del desarrollo del sistema en la verificación, pero es la parte más importante del diseño. 2.9.4. Mapeo del modelo (síntesis) En esta fase el diseñador transfiere el modelo al hardware especifico,componentes de software o interfases. La especificación del modelo es traducida a código en C (para los componentes de software) y a código en VHDL/Verilog (componentes de hardware). En este punto, el modelo ha sido verificado para cumplir con todos los requerimientos y restricciones y el sistema esta listo para ser implementado. 2.9.5. Implementación y desarrollo del prototipo Los diseñadores generalmente seleccionan primero la arquitectura de hardware cuando el prototipo es construido. El hardware puede ser alguno de una gran variedad de microcontroladores comerciales y FPGAs disponibles. Además los sistemas en Chip (SOCs)son una alternativa muy popular hoy en día. Para permitir la comunicación de los componentes del sistema, es necesario sin- tetizar interfaces. Existen 3 tipos de interfases: hardware con hardware, software con software y hardware con software. Esta comunicación entre los componentes es crucial, debido a que esto asegura la ejecución correcta del programa, y sincroniza, los procesos. Algunos tipos de comunicación son las memorias mapeadas (Entrada/salida), manejo de interrupciones, esperas en el bus y saludo(handshaking). En este punto, el diseño contiene una descripción completa de todos los compo- nentes de software y de hardware y de las interfases usando lenguajes de descripción de software (C ó Java) o de Hardware (VHDL ó Verilog) y los componentes físicos pueden 17 ser construidos usando herramientas de síntesis. 2.9.6. Herramientas utilizadas para Codiseño Existen varias herramientas empleadas para conjuntar el software y el hardware en un diseño digital. Dos de los programas que se están comenzando a utilizar ampliamente son el SystemC y el Seamless. Estos se describen de forma breve a continuación. 2.9.6.1. SystemC SystemC es un lenguaje utilizado para describir hardwarey software con múlti- ples niveles de abstracción. Este lenguaje fue creado por la necesidad de conjuntar en un mismo lenguaje el software y el hardware de un diseño. La creación de este lenguaje fue patrocinado por un grupo de empresas que mostraban un fuerte interés en el Co-diseño por las ventajas que este les brindaría. Entre las empresas precursoras del SystemC se encuentran Syriopsys, CoWare, Cadenee, AR.M, Ericsson, Infineon, Lucent, NEC, Fujitsu, Sony, STMicroelectronics, Motorola y Texas Instruments[5]. Básicamente SystemC constituye una librería adicional del lenguaje C++, con la cual se pueden modelar y simular sistemas. Con esta nueva librería, se pueden crear procesos concurrentes, temporizaciones, diversos tipos de datos en distintos formatos, interrupciones así modelar procesos con jerarquía tales como módulos, puertos o señales. Algunas versiones de SystemC permiten visualizar las simulaciones mediante el de- splegado de señales tal como lo hacen los simuladores convencionales de VHDL. 2.9.6.2. Seamless La Co-verificación o codiseño pueden disminuir el tiempo de diseño de un sistema, debido a la integración temprana del software y hardware mediante el uso de simu- ladores muy veloces, pues la simulación de la ejecución de instrucciones de un micro- procesador modelado en software es más lenta que la ejecución en un microprocesador real. Seamless es una herramienta para detección de errores (debugging) interactiva entre hardware y software que acelera el proceso de co-verificación permitiendo que cierto software pueda ser ejecutado o simulado en hardware. Este programa fue creado por la empresa Mentor Graphics y la forma en que Seamless acelera el proceso de co-verificación se basa en dos aspectos: • Separa la función del procesador de su interfaz. • Permite la supresión selectiva de los ciclos en los buses en la simulación lógica. 18 Seamless incluye algunas librerías para soportar algunos procesadores. Estas li- brerías se denominan PSPs (Processor Support Packages). Estas proveen modelos a procesadores que aceleran la co-verificación. Los 2 principales componentes de un PSP son el modelo del conjunto de instrucciones (ISM) y el modelo de la interfaz del bus. El modelo de la interfaz del bus simula el comportamiento de los pines de entrada y salida del microprocesador para la sección de hardware de la co-verificación. El software ISM executa por separado y mucho más rápido las instrucciones programadas. Esto lo hace en un simulador de software. Durante la co-verificación, la mayoría de las operaciones del procesador son tareas de rutina tales como la lectura de instrucciones (fetching), o el escribir y leer datos del Stack. En Seamless normalmente el simulador lógico ejecuta los ciclos para el acceso del bus. Una ventaja de Seamless es que este puede suprimir estos ciclos de rutina permitiendo que la simulación corra mas rápida[8]. Los principales componentes de Seamless para la co-verificación se muestran en la Figura 2.8 y se describen a continuación. Código ejecutable Petición de acceso de dalos Temporizactón de instrucción "\ Figura 2.8: Arquitectura de Seamless 19 • Simulador de Software. Este ejecuta la porción de software de la sesión de co-verificación. Este ejecuta el código de máquina, que el usuario produce cuando se compila un código para un procesador específico. La interfaz del simulador de software controla la ejecución del ISM y ejecuta operaciones tales como correr el programa paso a paso, inspección de memoria y funciones típicas de un simulador de software. • Kernel de co-verificación. Este controla la comunicación entre la porción de software y la lógica durante la co-verificación. Este permite al usuario configurar varios aspectos durante la co-verificación por medio de la ventana de sesión de Seamless. Entre estos aspectos están algunas optimizaciones de acceso a memo- ria, • El simulador lógico y el kernel de simulación lógica. Estos implementan la porción de hardware de la sesión de co-verificación. Se pueden manejar uno o mas modelos de interfases de bus de microprocesadores y algunos modelos de memoria en el diseño de hardware, el cual generalmente es expresado en un lenguaje de descripción de hardware (HDL). El simulador lógico controla la ejecución de un diseño. Entonces el kernel de simulación lógica executa la co-verificación HDL del diseño. Otra de las ventajas de este programa consiste en una aplicación denominada Per- formance Profiler. Esta aplicación permite registrar algunas métricas de desempeño del diseño. Entre estas métricas se cuenta, con: • Code Profile, con el cual se puede analizar el porcentaje del tiempo total que el programa, permanence en alguna función o procedimiento. • Bus load, con el cual se analiza el porcentaje de utilización del bus de los mi- croprocesadores del diseño. • Arbitration Delay, el cual permite analizar las esperas para poder ocupar el bus principal por cada uno de los microprocesadores. • SW Gant Chart, el cual muestra el periodo de tiempo en el cual se ejecuta cada una de las funciones o procedimientos del programa. Esto se despliega como una gráfica de Gant. • Memory transactions, el cual permite ver las operaciones de memoria real- izadas en cada momento por los microprocesadores. Aquí se permite ver el mo- mento en que se realizó una lectura o escritura de memoria. 20 Estas métricas ayudan a los diseñadores a decidir nuevas mejoras en el sistema tales como un nuevo particionamiento, incremento de memoria, optimización de código, etc. La forma en que seamless puede obtener estas métricas es simplemente que existe un módulo de hardware denominado bus monitor, el cual se cuelga de la interfaz y monitorea en cada momento el estado del bus. De esta forma se obtienen las estadísticas mencionadas. El sistema mínimo para poder implementar un diseño de hardware-software con- siste de un microprocesador, una unidad de memoria, una interfaz y una señal de reloj. Con lo anterior es posible ejecutar algún software en el microprocesador. A partir de es- ta estructura básica, es posible agregar módulos adicionales de hardware y adicionarlos al diseño. ' 2.10. El procesador DLX Este procesador es bastante conocido y estudiado por su arquitectura ya que esta es la base de la que se derivan muchos de los diseños de mícroprocesadores comerciales, entre ellos se tienen AMD 29K, DECstation 3100, HP850, IBM 801, Intel Í860, MIPS M/1000, Motorola 88K, RISG I, SGI 4D/60, SPARCstation-1 Sun-4/260. La arquitectura DLX es una arquitectura simple de carga/almacenamiento (load/store) surgida de una mezcla de otras arquitecturas load/store similares (RISC) y más sofisticadas. Esta arquitectura es de 32 bits y esta basada en las instrucciones más comúnmente utilizadas. Las instrucciones que son menos utilizadas son consideradas menos criticas en términos de desempeño y por lo tanto no se encuentran implemen- tadas directamente en el DLX. Existen 4 conceptos importantes en esta arquitectura: 1. La simplicidad del conjunto de instrucciones load/store 2. La importancia de la capacidad de pipelining (capacidad de ejecutar varias fun- ciones al mismo tiempo). 3. Los beneficios de un conjunto de instrucciones fácil de codificar. 4. La compilación de programas de alto nivel en código de máquina eficiente. El DLX tiene 32 registros de propósito general y 32 registros para operaciones de punto flotante de precisión sencilla, así como un número de registros misceláneos usados para el manejo de interrupciones y excepciones de punto flotante. La longitud de palabra (word) del DLX es de 32 bits, mientras la memoria es direccionable por byte en el modo "Big Endian" con 32 bits de direcciones[13]. 21 Por lo ampliamente utilizado este procesador, el programa Seamless incluye un PSP para este procesador. Este PSP no soporta algunas de las instrucciones del proce- sador, entre estas las relacionadas con punto flotante. Este PSP tampoco soporta el snooping, que esta relacionado con la memoria cache. La Figura2.9 muestra la arquitectura del procesador DLX que es soportada por Seamless. ALU Entera Pipeline de 5 etapas J \ \ Banco de Registros V J Simulación de software f >. Interfaz del bus V J Simulación de hardware Figura 2.9: Arquitectura del procesador DLX soportada por Seamless La Figura 2.10 muestra un diagrama esquemático del procesador DLX. Así mismo, la Tabla 2.1 muestra el modelo de la interfaz en Seamless del procesador DLX. También se da una breve descripción de ellas[7]. I ^\ DLX Processor • BreqP | BusyP • AddrP(32) • DataP(32) in-out • ValidP • RdP_WrN • BurstReqP • ByteEnP(4) ^/ Figura 2.10: Diagrama esquemático del procesador DLX 22 Tabla 2.1: Modelo de pines de la interfaz del DLX Pin del modelo ClkP ResetP BreqP BgntP BusyP AddrP DataP RD_PWrN ByteEnP ValidP AckP BurstReqP BurstGntP SnoopAddrP SnoopEnP Descripción Entrada de reloj Señal de reset. Debe mantenerse activa por lo menos 10 ciclos de reloj Señal de petición del bus por parte del microprocesador Señal de indicación que el bus ha sido asignado al microprocesador Señal de indicación que el procesador esta utilizando el bus. El procesador mantiene activa esta señal siempre que este usando el bus. Bus de direcciones de memoria Bus de datos Señal de selección escritura/lectura. Alto para lectura bajo para escritura Señal de habilitación del número de bytes a leer o escribir Señal del DLX que indica que la dirección de memoria es valida Indica que un dato de entra es valido o alguna lectura se completo Señal de petición a acceso de una ráfaga (burst) a memoria. Señal que indica que una transferencia en ráfaga puede ser ejecutada. Usada para mantener coherencia en el cache Señal activa cuando una dirección valida esta en SnoopAddrp. La configuración más simple es unir (Not RdP.WrN) a esta señal. Nota Entrada Entrada Salida Entrada Salida Salida Entrada/Salida Salida Salida Salida Entrada Salida Entrada Entrada (No implementada) Entrada (No implementada) 23 Capítulo 3 El algoritmo de compresión propuesto Antes de comenzar a describir los algoritmo de compresión y reconstrucción de señales EEG propuestos, es necesario comprender algunos conceptos con respecto a la aritmética, que se utilizó en ellos así como una descripción mas detallada, del modelo de compresión manejado para su implementación . En las siguientes secciones se dará una breve descripción de tales puntos, lo cual permitirá comprender de forma mas sencilla, los algoritmos propuestos. 3.1. Representación de datos en sistemas digitales La mayoría de los sistemas digitales comerciales para el procesamiento de señales se caracterizan por incluir procesadores de punto fijo o punto flotante. Existe algunas diferencias para la implementación de algoritmos en cada uno de estos formatos, tales como el escalamiento que se debe de implementar en los procesos en punto fijo para evitar sobreflujo. En general, los procesadores de punto flotante son mas caros, y gen- eralmente al menos el 50 % de ellos son más lentos que los procesadores de punto fijo. De esta forma, cuando la velocidad y costo del sistema es un criterio importante de diseño, se debe usar un procesador de punto-fijo. Los procesadores de punto fijo se han usado exitosamente en muchas aplicaciones y continúan manteniendo la promesa de proveer soluciones efectivas con respecto a la métrica costo-eficiencia. Pero para seleccionar el tipo de procesador a utilizar, es necesario conocer las diferencias entre ambos formatos aritméticos y conocer las limitaciones de cada uno de ellós[16]. 3.1.1. Aritmética de punto flotante Un número en punto flotante X esta compuesto de una mantiza M ( X ) y un exponente E(X] de forma tal que: X = M ( X ) • 2E(X) (3.1) Esto en forma sencilla consiste en una representación logarítmica de base 2. El 25 manejar esto por una unidad computacional es algo complicado y requiere de mayor longitud en sus registros para procesar este tipo de datos. Supongamos que se tienen 2 números en punto flotante X y Y, y se desean multiplicar. El producto de estos números esta dado por la ecuación 3.2 X = M(X}M(Y] • 2£W+E(y) (3.2) Para este calculo, el hardware de punto flotante que lo implementará deberá con- tener un multiplicador para las matizas y un sumador para los exponentes. La mayor ventaja de usar procesadores de punto flotantes es que proveen un alto rango dinámico que hace que se produzca un sobreflujo se muy poco probable. Por otro lado, un procesador de punto flotante, requiere de unidades multiplicado- ras y acumuladores más complejas y más grandes que los procesadores de punto fijo. Esto ocasiona que los costos sean más grandes, así como que el consumo de potencia es mayor. Aunque desde luego, con los avances de la tecnología submicron VLSI CMOS, se pueden diseñar procesadores de punto flotante atractivos para las soluciones DSP en términos de costo y velocidad. 3.1.2. Aritmética de punto fijo Un número en punto fijo a = djv-i , (iN-2, • • • , Q-o puede ser tratado como un número con signo o sin signo. Cuando se maneja un formato sin signo, todos los N bits expre- saran la magnitud del número, mientras que en un formato con signo, existirá un bit que definirá el signo del número. 3.1.2.1. Representación en complemento a 2 En un número con signo el bit más significativo (MSB) es usado para representar el signo del número. La representación en complemento a 2 de un número de N bits a = ajv-i, a;v_2, • • • , «o dependerá del bit de signo. Si el bit a^v-i = O, el número será positivo, y los demás bits representaran la magnitud del número, esto se muestra en la ecuación 3.3. N-2 a = £ «,2' (3.3) !=0 para a > O De esta forma la implementación en complemento a 2 de un numero positivo de N bits es equivalente al valor de un número sin signo de N — 1 bits. En esta 26 representación O es considerado como un número positivo y el rango de números que pueden ser representados en N bits va de O a 2N~l — 1. Cuando el bit MSB es 1, a/v_i = 1, entonces tenemos un número negativo y este bit tendrá un peso negativo, mientras que el resto de los números tendrán un peso positivo. La ecuación 3.4 ilustra esto. a = -(2 /v-1)+¿a!21 (3.4) i=0 para a < O Combinando las ecuaciones 3.3 y 3.4 tenemos una expresión general: a--(2y v-1)aw_1+¿a í2 l (3.5) ¿=o 3.1.2.2. Extensión y truncamiento de números en formato Complemento a 2 De la ecuación 3.5 se puede ver que el MSB juega un papel fundamental en la representación complemento a 2 de números negativos. En muchos diseños digitales, a menudo se requiere de extender o truncar un número de N bits para formar uno de AI bits, donde M > N en el caso de extensión y M < N en el caso de truncamiento. • Extensión. En el caso de un número positivo, M — N bits de extensión se llenan con Os y el número en representación sin signo permanece igual. En el caso de un número negativo, la nueva representación es equivalente a: 2M — | a |, donde | a \ corresponde al valor absoluto de a. La extensión de u número a complemento a 2 es obtenida moviendo el bit de signo a la nueva MSB posición y llenando los huecos con una copia del bit de signo. Por ejemplo —2 en 4 bits sería 1110, extendiendo esto a 8 bits se convierte en 11111110. Truncamiento. El truncamiento se logra simplemente removiendo los M —TV bits menos significativos (LSBs). Esto aparentemente significa que el valor del número cambiará drásticamente, pero la mayoría de la aritmética en diseños digitales se implementa en el formato Qn.rn, el cual se explicara más adelante. En ocasiones 27 es conveniente utilizar un redondeo antes de eliminar los bits LSBs, esto se hace verificando el bit MSB a ser eliminado, si este es 1, entonces al valor truncado se le deberá sumar un 1. Esto se puede ver en la Figura 3.1, en donde se tiene el número —38 representado en 8 bits se truncará a 4 bits. Si el bit MSB a ser eliminado es O, no se le suma valor alguno para su redondeo. 1 1 011 1 O 1 O Es 'V, por lo tanto se redondea Valor truncado a 4 Figura3.1: Ejemplo que muestra el truncamiento de un número en formato Complemento a 2 3.1.2.3. Formato Qn.m La mayoría de los sistemas de comunicaciones y procesamiento de señal son sim- ulados con herramientas aritméticas de punto flotante tales como Matlab. Desde el punto de vista de implementación, los dispositivos y hardware de punto flotante, son más caros que los implementaclos en punto fijo. El formato Qn.m es un sistema numérico establecido para representar números en punto flotante. Qn.m simplemente significa que un número binario de N bits tiene n bits a la izquierda, del punto binario y m bits a la derecha. En el caso de números con signo el MSB es usado para el signo. Los bits a la derecha del punto binario tendrán un exponente negativo correspondiente a su posición, mientras que los números a la izquierda del punto binario tendrán un exponente positivo. Esto se muestra con un ejemplo en la Figura 3.2. 2' 2'2' 21 2' Bit de signo punto binario Formato Q3.5 para un número Figura 3.2: Ejemplo de un número en formato Q3.5 Es importante mencionar que para números con signo en formato Qn.m, estos se siguen manejando como números en formato complemento a 2. La posición del punto binario, solo se tomará, en cuenta, para su representación como número en punto flotante. 28 Al manejar el formato Qn.m, el rango de números que se pueden representar se limita a solo cierto intervalo, el cual estará definido precisamente por el valor de n( — 2n~l a 2™"1), mientras que la resolución estará fijada por el valor de m. Por ejemplo para el caso en que se maneje un formato de Ql.15, se podrán manejar valores en el rango de — 1 a 1, siendo su resolución de 2~15 y en total el número tendrá 16 bits. Para el caso de que se maneje un formato de (53,5, el rango de valores que cubrirá será de —4 a 4 y la resolución será de 2~5. 3.1.2.4. Conversión entre números fracciónales decimales y formato Ql.X Durante el desarrollo de esta tesis se manejaron algunos datos en fortmato Ql.7 y Q1.15. Esta sección mostrará la forma de convertir un número decimal fraccionario en un número binario en formato Ql.X [4]. Para convertir un número fracciona! decimal y al formato Ql.X se deben seguir las siguientes reglas: • Para valores positivos (1 — 2~A ') > y > 0): Multiplicar y por 2X, redondear al entero mas cercano y convertir a un valor binario de (X + 1) bits. • Para valores negativos ( — 1 > y < 0): Tomar el valor absoluto de V, multiplicarlo por 2X, restar 1 a lo anterior, redondear al entero mas cercano y convertir a un valor binario de (X + 1) bits e invertir todos los bits, es decir complementar a 1. Para convertir un número de formato Ql.X a su correspondiente en decimal frac- cional, se toma el bit MSB, dependiendo de este valor a 2 casos a seguir: • Si el bit es 0: Convertir el número binario a decimal, dividir entre 2A . • Si el bit es 1: Esto quiere decir que el número es negativo. Invertir los bits, convertir el número binario resultante a decimal, sumar 1, dividir entre 2X y multiplicar el resultado por -1 (esto es por ser negativo). 3.1.2.5. Suma en formato Q Si se suman 2 números a y b en formatos Qn\.m\ y Qn^.m^ respectivamente, el resultado quedará en formato Qn.m. donde n es el más grande entre ni y n.2 y rn, es el más grande de mi y m.22. Por ejemplo: En el ejemplo de la Figura 3.3, ni y r?,2 son distintos. Nótese que se ha extendido el bit de signo del número Q2.2 para que quede en formato Q4,4. Ya estando ambos en el mismo formato, se suman de la forma tradicional. 29 Qn1.m1 = Qn2.m2 = Qn.m = 1 0 0 1 1 1 1 1 1 1 1 0 1 0 1 0 1 1 1 1 0 0 Q2.2=-2+1+0.5=- 0.5 Q4.4=1 +2+4+0.225+0.125=7.375 Q4.4= 2+4+0.5+0.25+0.125=6.875 Figura 3.3: Ejemplo de una suma de número en formato Qn.m 3.1.2.6. Multiplicación en el formato Q Si dos números a y fe en formato Qni.mi y Qn^.m^ respectivamente son multipli- cados, el resultado es un número en formato Qn\ + n2.m\ + m^- Si ambos números son números con signo en complemento a 2, se obtendrá un bit de signo redundante en la posición del MSB, que se remueve con un corrimiento a la izquierda del resultado. A continuación se muestran algunos ejemplos de multiplicaciones en formato Q: Multiplicación de dos números sin signo En la Figura 3.4 se da. el caso de una multiplicación sin signo, en donde los produc- tos parciales son simplemente sumados como una multiplicación sencilla. Nótese que cada producto parcial es desplazado una posición a la izquierda. 1101 1011 Q2.2 3.25 Q2.2 2.75 1101 1101 - 0000 - - 1101--- 10001111 Q4.4 8.9375 Figura 3.4: Ejemplo de una multiplicación de 2 números sin signo Multiplicación de un numero sin signo por uno con signo En la Figura 3.5 se muestra la multiplicación entre un número con signo y otro sin signo. Nótese que se requiere extensión de signo en cada uno de los productos parciales antes de ser sumados. Multiplicación de dos números con signo La multiplicación de números con signo requiere de extensión de signo en los pro- ductos parciales. En este tipo de multiplicación siempre se obtiene un bit de signo redundante, el cual puede ser removido por un corrimiento a la izquierda. Hay que recordar que el resultado se encuentra en formato Q, así que el corrimiento solo afec- tará el formato del resultado y el valor del resultado será el mismo. En la Figura 3.6, el 30 1101 Q2.2 = -OJ5 0101 Q2.2= 1.25 fJ7Í1101 0000000 - ÍT1101-- 00000-- - 11110001 Q4.4 = 0.9375 Figura. 3.5: Ejemplo de una multiplicación de un número con signo por vin número sin signo resultado de la multiplicación debería de obtenerse un resultado en formato Q2A, pero debido al corrimiento a la izquierda se obtiene un número en formato Ql,5. 010 Q1.2 = 0.5 010 Q1.2 = 0.5 0010- 000-- 000100 01.5 = 0.25 Figura 3.6: Ejemplo de una multiplicación de 2 números con signo, multiplicador positivo En caso de que el multiplicador sea un número negativo, al calcular el último producto parcial se sustituye por el complemento a dos del multiplicando. Esto se ve en la Figura 3.7. 0101 02.2 = 1.25 1101 01.3 = -0.375 00000101 0000000 - 000101 -- 11011 ^ i- - Complemento a 2 del multiplicando y luego extensión de signo 11110001 Q2.6 = -0.48675 Figura 3.7: Ejemplo de una multiplicación de 2 números con signo, multiplicador negativo 3.1.2.7. Consideraciones importantes en el manejo de aritmética de punto fijo Cuando se maneja la aritmética de punto fijo, el rango de valores en el que se puede trabajar debe ser reducido al tipo de formato seleccionado. Es decir que los resultados que se producen dentro del algoritmo deben de permanecer dentro del mismo rango. Este es un asunto que se debe de cuidar, pues se corre el riesgo de que se produzcan sobreñujos en las operaciones que se realizan, obteniéndose resultados erróneos. Además a veces es necesario mover un dato de un registro a otro, siendo el segundo más pequeño que el primero. En este casó se tendrán que descartar ciertos bits del primer registro perdiendo quizá bits importantes. 31 Existen varias técnicas que se pueden usar para minimizar los errores debidos al sobreflujo, estas se describen a continuación [16]: • Mayor precisión: Una solución parcial consiste en usar registros de mayor tamaño, donde se van a estar almacenando los resultados de las operaciones matemáticas. De esta forma, el rango permitido de los resultados puede ser may- or, y con esto se evitaría sobre flujo. Esto quiere decir, que si se sumaran 2 datos en el rango de — 1 a 1, el resultado de esto pudiera almacenarse en un registro de valores en el rango de —2 a 2. Con esto se asegura que no existiera sobreflujo. • Saturación aritmética: En esta técnica, cuando se produce un sobreflujo, el procesador simplemente fija el resultado en la magnitud máxima positiva, o neg- ativa permitida y procede como si nada hubiera sucedido. Esto en definitiva in- troduce un error, el cual es asnalmente mucho menor que el producido por un sobreflujo, el cual puede causar errores de signo y magnitud debido a la naturaleza del
Compartir