基于DSP的心电监护模块设计
心脏在机械收缩之前,心肌预先发生电的激动,并向全身各部位放散,从而在体表的不同部位产生电位差。通过体表把这种变动着的电位差按时间顺序描记出来的连续曲线就是心电图ECG。
心电图是诊断心律失常的最可靠的途径,其它临床检查虽然也可以诊断某些心律失常,但是准确率不高。通过观察患者的心电图,其诊断准确率几乎可以达到100%。心电监护模块的功能就是实时地记录下病人的心电波形,并进行自动分析和处理,同时给出相应的结论。
随着数字信号处理技术和大规模集成电路工艺的发展,单片数字信号处理器的功能越来越强大,价格越来越低,越来越多地被应用到人们生产生活的各个领域。本文介绍一种基于DSP芯片的心电监护模块的解决方案,讨论了它的硬件结构和软件组成。
该心电监护模块是一个以美国德州仪器公司(TI)的TMS320F206为核心的DSP数据采集和处理模块。整个系统安装在一块4层的PCB板上,通过9针RS-232电缆和PC机进行通讯,其原理框图如图1所示。其中所有的输入信号包括ECG1、ECG2(两路心电信号)、TEMPI(体温信号)、RESP(呼吸信号)、LEADOFF(导联脱落检测)、PACE(起博器检测)等均来自心电信号前期模拟处理模块。
1 TMS320F206简介
TMS320F206(以下简称F206)是TI公司于1996年推出的一种性价比很高的16位定点DSP芯片,运算速度为40MIPS。F206体系采用改进的哈佛结构,将程序存储器和数据存储器的总线分开,以便最大限度地提高处理能力。其可寻址空间为224K字(64K字程序空间,64K字数据空间,64K字I/O空间,32K字全局空间),64K字程序空间中的前32K字可映射到F206片内集成的闪烁存储器(FLASH MEMORY)中,这样可以通过仿真器对F206进行在线的编程和擦写。F206片内具有4级流水线结构,其指令集专门对信号处理中常用的乘-加运算作了优化,支持单周期的乘法/累加指令;支持存储器块搬移指令,以便更好地管理程序和数据;支持基2的FFT位倒序检索寻址。
除支持高速运算以外,F206还具有众多的片上外设,主要包括:①软件可编程定时器;②用于程序、数据、I/O存储空间的软件可编程等待状态发生器,便于和低速器件接口;③片内振荡器和锁相环(PLL),用于时钟选择×1,×2,×4,÷2;④同步串口,便于和串行CODEC接口;⑤全双工的异步串口,便于和PC机通信。
2 硬件组成
该心电监护模块共有4路输入:两路心电信号ECG1和ECG2、一路体温信号TEMPI、一路呼吸信号RESP,采用分时采样的工作方式。由于呼吸信号和体温信号的频率远小于心电信号的频率,在确定采样率时就以心电信号为基准。经验表明,在做常规心电图时,要求系统的带宽为100Hz左右,根据Nyquist采样定理,采样频率必须不低于200Hz。考虑到一定的工作裕量,每个工作通道的采样率取250Hz,这样对4个通道而言,总的工作频率为1kHz。通道切换的工作由一片双向模拟开关CD4051来实现,将C、B、A控制端连接到TMS320F206的三根地址线上,通过I/O指令打开相应的模拟通道,进行信号的采样。
信号的采样和量化工作由一片ADS774完成。ADS774是美国Burr-Brown公司生产的12位逐次逼近型并行A/D转换器,典型转换时间为8.5μs,并且有多种工作方式可供用户选择。在本心电模块中我们选用了直通 throughout 模式,仅用两根控制线R/C和STATUS与TSM320F206接口,其工作原理和时序如图2所示。
TMS320F206通过指令在XF引脚上产生一个宽度大于25ns的低电平脉冲,启动ADS774进行一次转换。启动后ADS774的STATUS引脚变为高电平,转换结束后ADS774数据线上的数据有效,此时其STATUS引脚跳变回低电平,通过这个电平跳变触发TMS320F206的INT1外部中断,将12位转换数据读入数据存储器。
由于TMS320F206片内的数据存储空间有限,为保存大量的采样数据和运算的中间结果,需增加外部数据存储器;同时为了在调试程序时能够设置断点和进行单步操作,也需要增加外部程序存储器。我们采用了4片日立公司的8位SRAM HM62256-10,两两组成16位的程序存储器和数据存储器,分别用F206的PS和DS信号进行片选。HM62256-10的典型存取时间为100ns,而TMS320F206的指令周期为50ns。为节省硬件等待电路的开支,利用了TMS320F206片内的可编程软件等待状态发生器产生两个等待状态,从而满足存储器的操作时间要求。利用TMS320F206片上集成的全双工异步串口,可以实现心电模块和PC机的通信。但是RS232电平和TTL电平不兼容,我们使用了一片电平转换芯片MAX202,它采用+5V单电源供电,使用时只需加几个电容,便能完成两种电平的转换。为防止数据在传输过程中受到干扰,在输入输出端都加上光电耦合器。
R波的精确定位是心电监护模块的一个重要功能,它关系到后面进行心率计算及心律失常分析结果的正确性。一个正常人完整的的心电波形由P、Q、R、S、T五个部分组成,其中R波和T波的幅值相对较高。心率计算通常是根据心电波形中R波的间距来推算得到。但在少数异常波形中,T波的幅值会超过R波,如果把T波误判为R波来进行心率计算,则会产生很大的误差。通过对大量的心电信号进行频谱分析,发现R波通常位于0~33Hz的频率范围内,而T波位于0~9Hz的频率范围内。为了在心率计算时消除T波可能引起的干扰,我们设计了一个有源带通滤波器,其中心频率f0=12.867Hz,带宽B=f0/Q=5.629Hz,下限截止频率f1=10.3565Hz;上限截止频率f2=15.9855Hz。标准心电信号通过该带通滤波器前后的波形如图3所示。可以看出,频率相对较低的T波有很大的衰减而R波基本保持不变。
3 软件设计
该心电监护模块的软件由两部分组成。一是运行在TMS320F206片内FLASH MEMORY中的系统监控程序,二是运行于PC机端的图形界面用户程序。前者对实时性的要求较高,为提高运行效率,采用TMS320C2XX汇编语言编写,经汇编、链接后在外部程序RAM中调试,调试成功后烧写到TMS320F206的FLASH中。它主要由如下几个功能模块组成:①系统初始化模块。完成RAM、ADS774、中断以及定时器等外设的初始化设置;②定时采样模块,进行四路信号的分时采集,经预处理后存入数据RAM;③心率、呼吸率计算和体温插值运算模块;④512点心电信号的基2 FFT运算模块;⑤异步串行通信模块,实现与PC机之间的通信协议。
下面简要介绍一下心率计算模块的算法。设dR-R是相邻两个R波的间距(即两个R波之间有dR-R个采样点),由于心电通道的采样率为250Hz,所以250÷dR-R即为一秒钟内R波的个数,60×250÷dR-R即为一分钟内的心跳次数。因此关键在于对R波进行准确定位。算法流程如图4所示。其中F I 为数据RAM中最新的1024个心电信号值,一次运算后, FIFO即被刷新,准备进行下次运算。 图5显示了R波的定位结果,"X"标识出查找到的R波最高点。
为了验证这个算法的正确性,我们以BIO-TECH心电信号仿真器产生的标准心电信号作为测试信号,发现它对正常信号和大部分异常信号均能准确地测出心率。
4 模块调试过程
整个心电模块的调试过程分三个阶段:①硬件调试,确保DSP板上的各器件均正常工作,这是进行软件调试的基础;②TMS320F206端软件调试,采用模块化方法,对各个功能编写相应的子程序,分别调通各个功能模块,然后把这些模块通过接口组装起来,实现整个系统的功能;③图形用户界面GUI软件调试,与TMS320F206的通讯模块调试同时进行,确保数据的正确收发,并在此基础上逐步增加新的功能。
调试结束后,用仿真器的FLASH烧写程序将目标代码通过JTAG口下载到TMS320F206中去,实现整个系统的脱机运行。
本系统已经达到设计任务书规定的要求,但还具有进一步扩展的潜力。软件方面,由于采用模块化设计,可以方便地增加新的功能模块,如自相关处理等;在硬件方面,TMS320F206和外围芯片的接口逻辑目前是用小规模集成电路实现,今后可改用PLD或FPGA芯片编程实现接口逻辑,减少芯片的数量,提高系统的可靠性。
|