Logo Studenta

SantoyoRincon_TesisMaestriaPDFA

¡Este material tiene más páginas!

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

Continuar navegando