1 Revista Argentina de Trabajos Estudiantiles Arquitectura de un Circuito Integrado para la Medición Autónoma de Presión Sanguı́nea J. Carrique, L. Centurión, M.Cipolletti, M. Di Federico†, P. Julián†, P. S. Mandolesi† Dto. Ingenierı́a Eléctrica y Computadoras, Universidad Nacional del Sur, Av. Alem 1253, Bahı́a Blanca. Email: [email protected] Resumen— En este trabajo se describen los lineamientos principales para la implementación de un tensiómetro digital, dispositivo capaz de medir la presión sanguı́nea de manera no invasiva. Se plantea un diseño modular implementable como circuito integrado para aplicación especı́fica (ASIC), partiendo de una descripción mixta en layout y en lenguaje de descripción de hardware (VHDL). Abstract— In this work it is described the principal items for the implementation of a digital tensiometer , device capable to measure the blood pressure in a non-invasive way. A modular design that can be implemented as an ASIC circuit is proposed, starting with a mixed description in layout and VHDL languaje of hardware description. SerialOut 7 7 Filtro IIR Pasa Bajo Comunicación paralelo/serie ClkUser ______ ______________________ RST /Start Strobe P/S _______________ (Busy/Ready) Diast. Sist. Lógica de control Strobe _________________________ Busy/Ready _______________________ Strobe Pulsos Palabras clave— Tensiómetro digital, descripción de hardware, ASIC. Start /RST 7 Filtro IIR Pasa Bajo PulsoIIR Ready 7 Detección de envolvente Pico SyncPico Detección de presión CLK Fig. 1. Diagrama general del sistema I. Introducción Cada vez que late, el corazón impulsa la sangre, que transporta oxı́geno y nutrientes, a través de los kilómetros de arterias y venas del organismo. La presión arterial es la fuerza ejercida por la sangre contra las paredes de las arterias. Todo el mundo posee cierta presión arterial para que la sangre llegue a los órganos y músculos del organismo. La presión sanguı́nea puede medirse por métodos invasivos. Si bien estos métodos son los más precisos, en la práctica rara vez se utilizan. Por el contrario, los métodos no invasivos son utilizados ampliamente debido a su simplicidad, costo y principalmente por comprometer menos la salud de los pacientes frente a cualquier alternativa invasiva. En el método tradicional se coloca un estetoscopio entre el brazo y un brazalete, se infla el mismo hasta lograr una presión adecuada (200 mmHg por ejemplo), luego se libera gradualmente la válvula de alivio hasta escuchar unos ruidos (ruidos de Korotkoff) que señalan cuándo la presión en el brazalete coincide con la presión arterial. El primer ruido coincide con el valor de la presión arterial alta o sistólica y el último coincide con la presión arterial baja o diastólica. Una alternativa al método tradicional es utilizar el método oscilométrico. En este método se reemplaza el estetoscopio por la medición de la presión en el brazalete, separando las oscilaciones producidas por las pulsaciones de la señal de presión. Contando con la amplitud de las pulsaciones, se analiza la pendiente de la envolvente de las mismas. De la †Docentes. P. Julián está afiliado con CONICET; P. S. Mandolesi está afiliado con CIC. TRATE05-012 información experimental y de la bibliografı́a especı́fica se determina que la envolvente de la presión permite obtener el momento aproximado donde la presión sanguı́nea y la presión medida coinciden. Desde el comienzo del proceso de medición la pendiente de la envolvente es monótona creciente pasando por un máximo al momento de la máxima presión sanguı́nea para luego de unos instantes volverse monótona decreciente pasando por la presión mı́nima al momento de máxima pendiente decreciente. II. Bloques del sistema Para el diseño de la arquitectura se asume que se cuenta con la señal de presión sanguı́nea y con la componente de alta frecuencia de la misma, ambas señales correctamente digitalizadas. La arquitectura propuesta consta de varios bloques funcionales, que se relacionan como muestra la Fig.1. Los distintos tipos de bloques funcionales son los siguientes: - Filtro pasa bajo digital de respuesta infinita al impulso (IIR) - Detector de envolvente de pulsos cardı́acos - Detector de máximos locales en la pendiente de la envolvente de pulsos cardı́acos - Conversor paralelo/serie utilizado para la comunicación - Lógica de control general La señal de pulsaciones que ingresa al sistema contiene la información de sincronismo para capturar los datos de presión sistólica y diastólica. Esta señal es suavizada por un filtro promediador antes de pasar a la siguiente etapa de Vol. I - Nº 1 - Febrero 2006 58 2 Revista Argentina de Trabajos Estudiantiles Start /RST ____________________ _ _ _ Start /RST 7 Strobe 7 Pulsos Filtro IIR Pasa Bajo 7 7 PulsoIIR PulsoIIR Ready Ready CLK Detección de envolvente Fig. 2. Interfase de un filtro IIR Pico SyncPico CLK Fig. 3. Interfase del módulo de detección de envolvente detección de envolvente, que es la encargada de obtener las pulsaciones sanguı́neas determinando los máximos locales de la misma. Por último las pulsaciones se pasan a la etapa que realiza el algoritmo de detección de la presión sanguı́nea que envı́a la señal de captura de presión máxima y mı́nima a los registros de comunicación. El algoritmo de detección básicamente busca la máxima pendiente positiva y negativa[1]. De esta manera, almacenando el valor de presión en el momento que ocurra la máxima pendiente creciente y decreciente se habrá almacenado la presión arterial máxima y mı́nima. Entonces los aspectos principales para la detección de la presión sanguı́nea dada la amplitud de las pulsaciones son: - Determinación de la pendiente de la envolvente de los púlsos - Determinación del momento de máxima pendiente negativa y positiva Una vez realizada la medición de presión los datos son entregados en forma serial con un reloj externo. A. Fitro pasabajos IIR Freescale Semiconductor, Inc... La función que debe cumplir el bloque representado en la Fig. 3, encargado de la detección de envolvente es la siguiente: dada una forma de onda conocida muestreada en tiempos discretos por un conversor A/D y filtrada con determinadas caracterı́sticas que se detallan más adelante, otorga el máximo de la misma y señaliza a la etapa siguiente que el dato en la salida es válido. Estos datos son enviados a la etapa siguiente que determina cuándo tiene que capturarse la presión sistólica y diastólica. Se observa en la parte superior de la Fig. 4 la señal de entrada, sobre la cual están los pulsos cardı́acos necesarios para la sincronización de la etapa siguiente. Para poder extraer más eficientemente (en términos de la conversión A/D) los pulsos cardı́acos, la señal de presión se filtra por medio de un filtro pasa altos, resultando la señal de la parte inferior. Para una mejor visualización de esta señal, y a los efectos de poder relacionar las restricciones impuestas se ve a continuación una ampliación de la misma. Entonces extracted oscillation signal at the output of the amplifier. 3 2.5 2 1.5 Oscillation signal is extracted here 1 0.5 0 0 5 10 15 20 Time (seconds) 25 30 35 40 Figure 3. CP signal at the output of the pressure sensor 3.5 MAP 3 SBP DBP 2.5 2 Vo (volts) B. Detección de envolvente TRATE05-012 attenuation of 10 dB to the 1 Hz signal, the oscillation signal becomes 3.8 mV to 11.4 mV respectively. Experiments Vi (volts) Se diseñaron filtros IIR digitales en VHDL para las señales digitales correspondientes a la presión y a las pulsaciones. En el diseño queda asociado el orden de los mismos a una constante, para facilitar la utilización de una misma topologı́a para ambos filtros. En la Fig. 2 se pueden apreciar las lı́neas de interconexión que forman la interfase de un filtro IIR. los valores que se desean rescatar son los máximos picos positivos por encima de 1,75 V que se observan en la Fig. 5. Para el diseño de la máquina de estados que comanda esta etapa detallaremos las restricciones necesarias para un correcto funcionamiento: - Una vez hallado el máximo no se sensa la señal por un tiempo (máscara de 450 ms.), para prevenir la identificación de pulsos prematuros debidos a oscilaciones en la electrónica. - Toda señal de entrada por debajo de un nivel de continua se considera ruido 1,75 V.y no se procesa. - La señal debe ser suave. - La señal del filtro solo es válida cuándo la entrada Ready = 1. - La salida es válida cuándo SYNCPICO = 1. - La señal PULSOSIIR solo es válida cuándo Ready =1 La máquina de estados del módulo de detección de enFreescale Inc. observar enAN1571 volvente, compuesta por 4 Semiconductor, estados, se puede indicate that, the amplification factor of the amplifier is chosen The oscillation signal varies from person to person. In el diagrama de la Fig. 8. to be 150 so that the amplified oscillation signal is within the general, it varies from less than 1 mmHg to 3 mmHg. From the output limit of the amplifier (5 mV to 3.5 V). Figure 3(a) shows transfer function of MPX5050GP, this will translate to a voltage Aofcontinuación se explican uno ellos: the output fromde the pressure sensor and Figure 3(b) shows the output 12 mV to 36 mV signal. Since the filter gives an cada 1.5 1 0.5 0 10 15 20 25 30 35 Time (seconds) Figure 3b. oscillation signal at the output of señal amplifierfiltrada por Fig. 4. Arriba: señal deExtracted presión original. Abajo: un pasa altos Vol. I - Nº 1 - Febrero 2006 Motorola Sensor Device Data 59 For More Information On This Product, Go to: www.freescale.com 3 Freescale Semiconductor, Inc. AN1571 SOFTWARE DESCRIPTION Upon system power–up, the user needs to manually pump the cuff pressure to approximately 160 mmHg or 30 mmHg above the previous SBP. During the pumping of the inflation bulb, the microcontroller ignores the signal at the output of the amplifier. When the subroutine TAKE senses a decrease in CP for a continuous duration of more than 0.75 seconds, the microcontroller will then assume that the user is no longer pumping the bulb and starts to analyze the oscillation signal. Figure 5 shows zoom–in view of a pulse. Revista Argentina de Trabajos Estudiantiles 3 Freescale Semiconductor, Inc... 1.75 Vo (volt) 450 ms Premature pulse –8.5 –8.3 –8.1 –7.9 –7.7 –7.5 –7.3 –7.1 Time (second) Figure 5. Zoom–in view of a pulse Fig. 5. Ampliación de la señal de presión filtrada con un pasa altos First of all, the threshold level of a valid pulse is set to be 1.75 V to eliminate noise or spike. As soon as the amplitude of a pulse is identified, the microcontroller will ignore the signal for 450 ms to prevent any false identification due to the presence of premature pulse ”overshoot” due to oscillation. Hence, this algorithm can only detect pulse rate which is less than 133 beats per minute. Next, the amplitudes of all the pulses detected are stored in the RAM for further analysis. If the microcontroller senses a non–typical oscillation envelope shape, an error message (“Err”) is output to the LCD. The user will have to exhaust all the pressure in the cuff before re–pumping the CP to the next higher value. The algorithm ensures that the user exhausts all the air present in the cuff before allowing any re–pumping. Otherwise, the venous blood trapped in the distal arm may affect the next measurement. Therefore, the user has to reduce the pressure in the cuff as soon as possible in order for the arm to recover. Figure 6 is a flowchart for the program that controls the system. Reset: Cuando comienza cada ciclo se tiene que asegurar que los valores que utiliza para calcular la pendiente estén en el peor caso, ası́ no se pierden datos por valores iniciales incorrectos. Cada vez que se termina un ciclo se pasa por un estado de Reset (RST). En él solo se está un pulso de reloj y se utiliza para inicializar la máscara y el dato anterior a un valor predefinido. BD: Este estado se llama búsqueda de disparo dado que es el encargado de encontrar cuándo la señal comienza a subir y esto se puede apreciar en el diagrama de estados simbolizado con la letra S que es igual al signo de la diferencia entre la presión anterior y la presión actual, la cual representa si la pendiente asciende o cae, es decir si S=1 la pendiente es negativa y si S=0 es positiva. Como en el inicio, el dato anterior es definido al nivel máximo, la pendiente calculada en BD será 1. DespuésMotorola evolucionará Sensor Device Data 6 For More Information On This Product, Go to: www.freescale.com dependiendo de la señal de entrada. Cuando ocurra el cambio de S de 1 a 0 la señal comenzará a subir y entonces se habrá cambiado al siguiente estado. BM: Búsqueda de máximo. En este estado, se desea hallar cuándo la pendiente pasa de 0 a 1, entonces el dato guardado anteriormente será el valor máximo y la máquina evolucionará a su siguiente paso. Mask: Máscara. La función de este estado es enmascarar la señal de entrada por un tiempo definido (450 ms) para prevenir falsos disparos que suelen ocurrir después de un máximo. Además, al comienzo de este estado, se levanta la salida SYNCPICO indicando que hay un dato válido a la salida. La máquina transiciona al estado de RST cuando se cumple el periodo de 450 ms fijado por la CONT=0 Fig. 7. Simulación del módulo de detección de envolvente máscara. A continuación se mostrará la simulación del módulo de detección de envolvente para constatar su correcto funcionamiento. Esta parte del sistema se especificó en VHDL, las simulaciones fueron realizadas con el entorno de desarrollo de ALTERA. Fig. 7 sólo se pueden observar con claridad las salidas SYNCPICO (transiciones de 1 a 0) y PICO, la primera representa si el dato es válido y la segunda si es el máximo de ese perı́odo. La señal MAINCLK es el reloj principal del sistema, PULSOSIIR es la señal de entrada, Ready habilita si PULSOSIIR es válido, Start es el encargado de iniciar la medición de presión, PICO es la señal de salida del módulo de detección de envolvente (máximo de PULSOSIIR) y SYNCPICO avisa a la etapa siguiente que el máximo del perı́odo se encuentra la salida. En la Fig. 8 se puede observar como varı́a la señal de entrada PULSOSIIR que es una representación numérica de la Fig. 5. La salida del sistema es el máximo local de PULSOSIIR. Cuando se detecta un máximo local la señal PICO guarda este valor y SYNCPICO pasa de 0 a 1 avisando a la etapa siguiente que se tiene un nuevo dato válido. C. Detección de la presión máxima y mı́nima Para la implementación de este algoritmo se presentó un prediseño a nivel de compuertas para luego pasar a una especificación VHDL, su esquema de entrada salida se puede observar en la Fig. 9. Se trabajó con valores de pendiente positivos, es decir, con el valor absoluto de la pendiente, y con el signo de la pendiente. Además se tuvo especial cuidado en la inicialización de las variables CONT=0 MASK RST CLK S=1 BD S=1 BM S=0 S=0 Fig. 6. Máquina de estados del módulo de detección de envolvente TRATE05-012 Fig. 8. Detalle de la simulación de la máquina de estados del módulo de detección de envolvente Vol. I - Nº 1 - Febrero 2006 60 4 Revista Argentina de Trabajos Estudiantiles actualData _______________________ Start /RST Sist. Diast. No se actualiza en este bloque (stIdle) antSignoSlope <= signoSlope 7 Pico SyncPico Detección de presión actualData < antData si signoSlope <= '1' no CLK signoSlope <= '0' Tener en cuenta que antSignoSlope no sera el signoSlope anterior antSignoSlope = '0' Fig. 9. Interfase del módulo de detección de presión máxima SI RESET maxSlope del sistema para garantizar el correcto funcionamiento del módulo. El diagrama funcional del mismo es el que se puede apreciar en las Fig. 10 y Fig. 11. El módulo se mantiene ocioso esperando por la ocurrencia de un pulso de presión, la ocurrencia de una pulsación activa el mecanismo de detección. Estando con pendiente positiva si se encuentra una pendiente mayor a la máxima pendiente encontrada hasta ese momento, inicializada en cero, se muestrea la presión y se promueve el nuevo máximo, es decir que se efectúa una búsqueda sucesiva de un máximo muestreándose la presión en todos los máximos locales. En el momento que se de el mayor de los máximos, se muestrea la presión sanguı́nea correcta; el proceso es análogo para la detección con pendiente negativa. Como la pendiente se toma en valor absoluto, otra vez se inicializa la máxima pendiente en cero. En la Fig. 12 se puede apreciar el resultado de una simulación del bloque de procesamiento en acción en conjunto con el resto del sistema. El pulso en la linea Sist produce la grabación del valor actual de presión, en el registro de salida quedando almacenada entonces la presión sistolica. Esta parte consiste en almacenar los datos que vienen del conversor A/D (Presión Alta y Baja). Dichas presiones se almacenan en forma paralela y son mostradas al exterior en forma serie. Para esto se utilizan dos registros de 7 bits que están conectados en serie entre si y además están nueva pulsacion procesamiento idle fin procesamiento Fig. 10. Diagrama general de estados para la detección de presión máxima y mı́nima. TRATE05-012 antData <= actualData slope = ABS(antData - actualData) stINewSlope slope > maxSlope si no maxSlope <= slope pulso Diast ó Sist stIMaxSlope Idle Fig. 11. Secuencia de estados del bloque de procesamiento. D. Módulo de comunicaciones no hay pulsacion stIdle realimentados, ver Fig. 13. La realimentación está para que una vez que el operario realizó una lectura queden en los registros la última medida que se hizo, sin modificación alguna para el supuesto caso que se necesite volver a extraer los datos. Es necesario contar con dos relojes diferentes, uno para lectura que lo provee el operario y otro para escritura generado por el sistema. El manejo de los dos periodos de reloj se llevó a cabo utilizando dos multiplexores manejados por la señal de control Busy/Ready la cual proviene de la lógica de control. En sı́ntesis lo que se logró fue que si se está haciendo una escritura (Busy/Ready = 0), gobierna el CLK del sistema (Sist o Diast, dependiendo del dato a guardar) y si se está haciendo una lectura (Busy/Ready = 1) gobierna el CLK provisto por el usuario. Escritura: como se dijo en un principio la escritura se hace en forma paralela. El dato está disponible en el BUS y es almacenado en un registro con la ocurrencia de un Vol. I - Nº 1 - Febrero 2006 61 5 RevistasignalPulsoZoom.vwf* Argentina de Trabajos Estudiantiles Date: May 9, 2005 0 ps Project: v001 80.0 ms 160.0 ms 200.0 ms 75.0 ms MainClk Data_in Strobe 38 42 46 50 54 58 62 89 +125.0 ms 59 58 56 7 bits Reg (Sist. Data) 54 50 45 42 30 21 10 clk 7 bits Reg (Diast. Data) 12 clk Rst_Start ____ Busy / Ready Sist 7 bits Dist IIR_LP:IIR_PULSO|acumulador 70 35 77 39 85 43 93 47 101 51 109 55 117 59 148 74 133 67 125 63 119 60 114 57 107 54 99 50 92 46 76 38 59 30 40 20 32 16 28 14 28 IIR_LP:IIR_PULSO|Ready MUX MUX envelope:instEnvelope|contador 450 envelope:instEnvelope|data_ant envelope:instEnvelope|SyncPico 127 46 50 SistDiast:instSistDiast|signoSlope SistDiast:instSistDiast|slope 0 SistDiast:instSistDiast|maxSlope 3 54 58 7 7 CLK. Para ubicar la presión alta en su correspondiente registro y la baja en el suyo se hace uso de las señales de control Sist y Diast (señales de CLK) que provienen de la máquina principal del sistema (detección de presión). Esto es, con la señal de control Sist solamente se habilita el registro donde vá el dato sistólico y con la señal de control Diast se habilita el registro donde vá el dato diastólico. Page 1 of 1 ya Lectura: se realiza en modo serie. Una vez que existen datos válidos (finalización de una medición) se genera una señal de control para informarle al operario que está en condiciones de extraerlos. Es ahı́ cuando éste debe proveer el CLK correspondiente para la lectura y ası́ obtener bit a bit la información completa. La realimentación hace que los bits no solo salgan uno a uno hacia el exterior sino que también vayan rotando en los registros hasta volver a su posición inicial quedando ası́ nuevamente la información disponible para el caso en que se necesite volver a leerlos. Está claro que es necesario que la cantidad de CLK provisto por el operario sean exactamente 14, de modo de evitar una falsa lectura debido al defasaje de la información en los registros. D.1 Diseño de los registros para el módulo de comunicación Los registros se realizaron mediante un arreglo de flip flops y multiplexores, ver Fig. 14. Los multiplexores tienen la función de mandar el dato paralelo al flip flop cuando se trate de una escritura o de mandar el dato serie cuando se esté realizando una lectura (realimentación). P D Q S FF D b0 P D Q FF D P D 0 Sist Clk Diast Fig. 14. Esquema de multiplexado de reloj Para discriminar si se está haciendo una lectura o una escritura, a estos multiplexores les llega también la señal de control Busy/Ready. Vale recordar que cada registro funciona con su CLK (uno con el CLK Sist y el otro con el Diast). III. Conclusiones Se puede notar de la Fig. 10 que en general el módulo Revision: v001 de detección de la presión se encuentra ocioso durante la espera de una pulsación por lo que se podrı́a optimizar su funcionamiento para reducir el consumo. El método implementado resulta de gran utilidad y ayuda, dado que permite el monitoreo rutinario de pacientes internados en forma automática. Resulta también importante destacar que si bien el mismo podrı́a implementarse utilizando otra plataforma, como un dispositivo lógico programable (PLD) o un microcontrolador, la alternativa presentada permite implementar gran parte de la lógica necesaria para la medición de la presión sanguı́nea en un circuito integrado, lo cual a su vez permitirı́a reducir costos de fabricación por volumen, y de esta forma equipar a los hospitales con un método confiable y económico de medición continua de la presión sanguı́nea. Referencias [1] Cari Bryant, Michol Cooper, and Andrew DeHennis, ”Analysis of Invasive and Non-Invasive Blood Pressure Signals”, BME458 Final Project Report Winter 2001 [2] Neil H. E. Weste and Kamran Eshraghian, ”Principles of CMOS VLSI design”, Addison-Wesley EEUU (1993). [3] Jan M. Rabaey, Anantha Chandrakasan, Borivoje Nikolic, ”Digital Integrated Circuits”, Second Edition, ISBN: 0-13-090996-3, Prentice Hall (1996). Q FF D Out b13 b1 ____ Busy / Ready S 7 bits 74 Fig. 12. Simulación del bloque de procesamiento junto con el resto del sistema. S Out 14 Clk (sistolico) Clk (diastolico) Fig. 13. Cascada de flip flops que implementan el registro serie paralelo TRATE05-012 Vol. I - Nº 1 - Febrero 2006 62