HHCE(Home Health Care Engineering)这门学科正随着人类对健康的重视和远程医疗的发展而逐渐走进人们的生活。它提倡的是一种“在家就医,自我保健,远程诊断”的理念,把高科技与医疗结合起来。HHCE的出现符合21世纪社会老龄化、医疗费用日益高涨以及人们生活健康质量高要求的趋势,同时可实现医疗资源共享,提高边远地区的医疗水平,因此具有特别旺盛的生命力。HHCE系统提供一种对于家庭、社区医疗、出诊医生有效便捷的医疗监测解决方案,具有心电信号监测功能的监测器是HHCE系统的重要组成部分。就国内而言,该类产品的研究也属于刚起步阶段,远程网络也只是简单的完成数据库医疗数据的存储和传输,还没有真 正完成将网络与医疗器械相结合。在国际方面,世界各国在此的研究均投入大量资金,但依然主要是使用价格昂贵的仪器完成医疗数据采集,然后依托PC/internet网络完成数据采集以及网络诊断[1]。
SOPC(System On Programmable Chip)即可编程片上系统,是随着现代计算机辅助设计技术、EDA(Electronic Design Automation)技术和大规模集成电路技术高度的发展而出现的,是一种基于FPGA解决方案的SOC。本设计采用了SOPC技术,以Altera公司的NiosII软核处理器作为CPU,并移植了当今主流的uclinux操作系统。使该系统具有高稳定性、便携式、功能可升级扩展、面向用户、远程控制等特点。
1 系统介绍 便携式远程心电监护仪主要由心电信号的前端采集与调理模块、心电信号处理与存储模块、数据显示模块和远程传输控制模块等四个关键模块组成,系统功能结构如图1所示。
该监测系统的硬件平台采用Altera公司CycloneII 2C35 FPGA芯片,采用SOPC(片上可编程系统)技术将NiosII软核处理器、存储器、功能接口和扩展I/O口等集成在一块FPGA芯片上,外围扩展心电数据采集板、网络、LCD屏、触摸屏/键盘、SD存储卡等硬件来实现系统的硬件架构,且带有可扩展的I/O接口,便于以后系统功能升级与扩展。
图1 系统功能框图
2 系统关键模块的设计
2.1 NiosII嵌入式软核处理器简介
NiosII系列嵌入式处理器是Altera公司推出的软核处理器。用户可以获得超过200 DMIPS的性能,而只需花费不到35美分的FPGA逻辑资源。NiosII支持MicroC/OS-II、uClinux等多种实时操作系统,支持轻量级TCP/IP协议栈,允许用户增加自定义指令和自定义硬件加速单元,无缝移植自定义外设和接口逻辑,在性能提升的同时,方便了用户的设计。
NiosII处理器采用Avalon交换式总线,该总线是Altera开发的一种专用的内部连线技术。Avalon交换式总线由SOPC Builder 自动生成,是一种用于系统处理器、内部模块以及外设之间的内联总线。Avalon交换式总线使用最少的逻辑资源来支持数据总线的复用、地址译码、等待周期的产生、外设的地址对齐、中断优先级的指定以及高级的交换式总线传输[2]。
2.2 心电信号采集调理模块设计
对ECG信号采集采用模块化的设计方式,主要由前端的导联传感器、信号滤波放大调理电路和A/D采样电路组成。人体心电信号的主要频率范围为0.05~100Hz ,幅度约为0~4mV, 信号十分微弱。同时心电信号中通常混杂有其它生物电信号,加之体外以50Hz工频干扰为主的电磁场干扰,使得心电噪声背景较强,测量条件比较复杂。因此器件的选择显的非常重要,要求器件误差要很小,且工作性能稳定。综合考虑,本设计心电信号采集调理模块大部分元器件选用村田制作所的电子元器件。
为了不失真地检测出有临床价值的心电信号,信号滤波与放大调理部分主要由一下几个电路组成:前置放大电路、高低通滤波电路、陷波电路与A/D转换电路,电路原理图如下图2所示:
图2 心电信号滤波放大调理电路原理图
首先心电导联采集过来的微弱心电信号通过前置放大电路进行放大,此部分包括右腿驱动以抑制共模干扰、屏蔽线驱动以消除引线干扰,增益设成10倍左右。设计前置放大电路主要采用美国模拟器件公司生产的医用放大器AD620与村田制作所的电阻与电容。AD620由传统的三运算放大器发展而成,为同相并联差动放大器的集成。其具有电源范围宽(±2.3~±18V) ,设计体积小,功耗低(最大供电电流仅1.3mA) 的特点,因而适用于低电压、低功耗的应用场合。此外还具有有较高的共模抑制比,温度稳定性好,放大频带宽,噪声系数小等优点。同时该部分还选用了村田制作所的误差范围在0.1%的ERJM1系列精密电阻和容量范围在0.3pF~100uF的GRM系列电容。放大后的信号经滤波、50Hz陷波处理后再进行二次放大,后级增益设成100倍左右。其中高(低)通滤波电路电阻选用村田的精密电阻,电容选用低ESL系列电容,其范围和精度满足滤波要求。陷波电路电阻选用ERJM1系列精密电阻,电容采用LLL系列低ESL宽幅型电容。由于ECG信号幅度最大就几mV,而A/D转换中输入信号的幅度要求在1V以上,所以总增益设成1000倍左右。其中,滤波采用压控电压源二阶高(低)通滤波电路,用于消除0.05Hz~100Hz频带以外的肌电等干扰信号,工频中的其余高次谐波也可被滤除掉。同时,采用有源双T带阻滤波电路进一步抑制50Hz工频干扰。
A/D采样芯片采用TI公司的8位串行芯片TLC549,该芯片采用SPI接口,仅用三条线即可实现采集控制和数据传输;具有4MHz的片内系统时钟和软、硬件控制电路,转换时间小于17μs,采样速率达40KSPS;采用差分基准电压技术这个特性,TLC549可能测量到的最小量值达1000mv/256,也就是说0—1V信号不经放大也可以得到8位的分辨率。
2.3 数据采集控制器设计
为了得到经过前端TLC549芯片转换的心电信号,必须设计一个数据采集控制器,实现对AD芯片的控制与数字化心电数据的获取。该控制器根据TLC549芯片的工作时序[3]与后端数据处理的需要,采用verilog HDL自行设计。该控制器具有多路采集的特点。
在自TLC549的I/O CLOCK端输入8个外部时钟信号期间需要完成以下工作:读入前次A/D转换结果;对本次转换的输入模拟信号采样并保持;启动本次A/D转换。则一路采集时间为:0.5us×(3+8×2+1)=10us,而芯片转换时间小于17us,则整个过程时间花费为27us。为了有效的利用该控制器,在一路A/D转换期间,同时进行另外一路A/D采样,这样就可以在40us时间内完成对四路信号的采集,大大提高了工作效率。同时,设计中还加入了一个FSM信号来控制采样时间,从而适应不同频率信号的采样频率。以下是AD芯片的时序仿真图:
图3 仿真时序图
Din 为采集数据的串行输入,时钟由系统时钟通过分频系数得到。设计中,设置了fsm作为采样控制时钟,这样可以根据需要来调整采样速率。由于进行一次AD采样的时间很短,无论采用查询还是中断直接读取都是不现实的,这就需要利用缓冲设计,通过把N次转换的数据暂存在缓冲存储器中来降低中断次数。为了取得连续和正确的采集数据,实现无缝缓冲,鉴于FPGA设计的灵活性,本设计采用了双缓冲存储的乒乓操作结构。本设计通过将AD采样时序控制器交替存储在两个512Byte的双口RAM(DPRAM)中实现数据的缓存,当其中一个DPRAM1存储满后即转为存储到另一个DPRAM2中并产生一次中断,这样在控制器写数据到DPRAM2中时系统将有非常充足的时间将DPRAM1中的数据取出。
2.4 显示模块设计
为了能够直观的显示出采集的心电波形,需要显示设备的支持。本设计采用的LCD面板是TFT 320*240 LCD。该LCD模块没有显示控制器,因此需要设计显示控制器IP核来驱动LCD面板。本设计实现的显示控制器IP核采用Verilog HDL设计,支持多种颜色模式,包括18bpp、16bpp、8bpp和自定义模式。图像存储器lcd_fifo是采用片内FIFO,可以根据需要进行调整。256色的颜色查找表采用片内RAM来存储。图像信息能够通过Avalon总线主端口写入的突发块传输方式进行传输,利用DMA从内存中自动读取,在SDRAM图像存储器image_ram与片上图像数据缓存器lcd_fifo之间建立了一条专用DMA通道,该控制器结构如下图4:
图4 LCD控制器IP核结构框图
该LCD控制器IP核主要由四个模块组成:接口模块、内存模块、颜色转换模块和时序模块。
接口模块:主要是NiosII处理器对LCD控制器进行控制及状态读取。接口模块主要是以寄存器方式存在的,其中寄存器有:控制寄存器、状态寄存器、DMA地址寄存器和中断寄存器。
内存模块:是Avalon总线的主接口部分,在系统启动之后,利用DMA传输模式,通过Avalon总线主端口写入的突发块传输方式,完成图像数据存储器image_ram中的图像数据到片上图像数据缓存器lcd_fifo的独立读取。采用DAM传输方式是为了把NiosII软核处理器从频繁地进行数据读取操作的工作中解脱出来,这样可以大大提高系统的工作效率。
颜色转换模块:将读取后的数据根据4种颜色模式不同进行数据读取的转换,其中8bpp和自定义模式由于颜色不足,需要接入颜色查询表处理。自定义模式可以手动对调色板的地址进行预设来定义输出的颜色。
时序模块:严格按照LCD的时序编写,其中LCD时钟为5M。通过控制数据使能信号启动lcd_fifo数据输出,逐行扫描显示。同时,设计该模块时,在数据有效信号(DE)有效前,须检查lcd_fifo中是否存有数据,以确定是否进行数据读取和传输;须进行调色板模式设置,在帧传输过程中需要进行模式锁定,以免出现传输错误;须根据不同bpp模式,确定不同的读取时间段,18bpp每次都读取,16bpp间隔1次读取,8bpp间隔4次读取。
2.5 数据存储模块设计
本设计选用SD卡作为外接存储硬盘。SD存储卡具有大容量、高性能、安全性好等特点的多功能存储卡,被广泛用于数码相机、掌上电脑和手机等便携式设备中。SD卡上所有单元由内部时钟发生器提供时钟,接口驱动单元同步外部时钟的DAT和CMD信号到内部所用时钟。SD卡有两种通信协议,即SD通信协议和SPI通信协议,与SPI通信协议相比,SD通信协议的最大优点是读写速度快,单根数据线理论上可以达到25MB/秒,四线传输可以达到100M/s,本设计采用的是四线SD通信协议。
本设计中对SD卡的协议采用软件编写:首先在SOPC Builder里定义了六个I/O口:SD_CMD、SD_DAT0-DAT3、SD_CLK,分别对应SD卡的命令、数据、时钟端口,然后在NiosII IDE上按照SD卡的传输协议编写C程序来对六个I/O口进行操作,以此来实现SD卡的传输协议。 在完成SD卡数据块的读写基础上移植了文件系统FAT16,这样在不影响读写速度的条件下节省FPGA的资源。
2.6 数据传输模块设计
为了实现远程的数据交换,本系统采用以太网络进行数据传输。设计采用DM9000A作为以太网控制芯片。DM9000A是DAVICOM公司的一款高速网络控制器,具有通用处理器接口、一个10/100M PHY和4K字节的SRAM。为了实现数据的网络传输,设计需要完成的任务有:在NiosII上移植了uClinux操作系统、完成网络底层驱动程序的设计、基于网络协议的应用程序开发。其中在NiosII上移植了uClinux操作系统的工作已经完成[4],因此本设计的关键任务是完成网络驱动程序设计与应用程序开发。
基于DM9000A的HAL设备驱动设计主要分为两步:首先是DM9000A的Avalon总线接口逻辑设计;其次DM9000A的读写驱动程序设计;最后按照HAL的驱动模式将DM9000A的驱动程序移植进HAL。DM9000A是作为Avalon总线的从外设与NiosII进行通信。DM9000A的Avalon总线接口逻辑主要完成芯片信号与Avalon总线接口信号的对接。
DM9000A不允许直接访问芯片内部的寄存器,需要通过数据端口和索引端口来读写。而这两个端口由CMD管脚控制:当CMD接高电平时为数据端口,CMD接低电平为控制端口。
创建HAL设备驱动包括:创建设备实例和登记设备[5]。设计中针对LWIP的结构,定义一个结构体作为DM9000A设备的alt_dev结构:
在NiosII启动时,将在alt_sys_init()中对设备初始化,初始化程序如下:
应用程序设计采用TCP/IP、HTTP协议,把监测器作为Web服务器端,远程PC端作为客户端通过网页显示采集到的心电波形。
3 实验结果
系统对人体心电信号进行了采集,通过LCD面板进行实时显示。通过SD卡存储数据,同时采用以太网网络将数据发送到远程的PC端上,以下是对系统功能的验证与测试结果。
3.1 信号采集调理模块
心电信号采集调理模块是自行设计的采集板,主要测量参数为前置放大器的通道带宽、放大能力和陷波特性。经测试,测试信号在1--1KHz的频带带宽内放大增益基本稳定在12.1dB,即其通道带宽能≥ 1kHz;在频率为20Hz和50Hz时,放大器对40--800mV信号的放大能力增益并无明显变化,基本稳定在11.7 dB--13.1 dB;同时,陷波器在对50Hz信号滤波时能将放大增益控制到0.5 dB以下。因此,基于心电信号的特点所设计的采集调理模块能稳定的获得人体的心电信号。
3.2 信号显示模块
图5是采集后的心电信号通过本地的LCD面板实时显示。从显示结果看,心电信号的PQRST五个特征点明显,波形平滑,并且在实际测量中稳定无干扰,能真实反映出采集后的心电信号。
图5 心电信号在本地LCD面板显示
3.3 网络传输模块
在设计中,网络接口功能的实现使采集到的心电信号通过以太网发送到远程PC端,实现数据的远程传输。根据TCP/IP协议与HTTP协议,信号经过打包处理后发送到网络上。在远程PC端,通过网页浏览器就可以观看到服务器端采集到的心电波形。图6是心电信号在远程PC端的网页浏览器上显示结果。该测试结果显示其与本地的LCD面板显示波形基本一致,实现了远程传输功能。
图6 远程PC端网页显示
实验表明,该心电监护系统能实时准确的实现数据的采集、显示、存储和传输功能。
4 结论
设计中采用了SOPC技术与IP核复用技术,缩短了系统开发周期,同时使系统具有便携式、灵活性、功能可扩展等功能。通过移植uClinux操作系统,使系统具有了强大的网络功能与更加强健的系统稳定性。但是设计只是通过了系统板级的功能验证,没有具体考虑现代便携式产品中的电源功耗等问题,离真正的产品还有一段距离。