摘 要: 利用Actel公司的基于Flash构架的模数混合型Fusion系列FPGA芯片,设计了一款低功耗片上的心电监护仪采集显示系统。结合Fusion系列的FPGA芯片的各种资源,实现了心电采集预处理模块、数据的处理和显示模块的系统集成,完整地形成了片上系统。
关键词: 心电监护;FPGA;片上系统
心电监护仪器的研制起源于国外,目前由于我国医院用的心电监护仪体积大、价格昂贵、维护费用高,使用起来极其不便,因此仪器无法满足家庭与乡镇医院的使用要求。针对这种状况,一种小型、价格低廉、便于维护的多功能心电监护仪具有相当的市场竞争力[1]。
Fusion系列的FPGA是世界上首个基于Flash构架的模数混合的FPGA,即在数字FPGA的基础上加入了模拟电路部分,解决了传统模拟电路和FPGA分离给设计带来的诸多问题,降低了PCB板的制作难度,缩小了产品的体积。FPGA的可编程性使得系统易于升级。同时在数字系统中引入模拟电路,简化了系统电路设计。
1 Fusion FPGA介绍
Fusion FPGA的主要特点主要体现在:
(1)单芯片:无需配置芯片;
(2)高安全性:晶体管受7层金属保护,具有AES和Flash Lock加密技术;
(3)高可靠性:对高能量粒子轰击具有免疫作用,具有很强的固件错误免疫功能;
(4)上电即行:上电时间非常短,一般只有几十个微秒左右;
(5)低功耗:无论是动态功耗还是静功耗都低于竞争对手,IGLOO最低可达5 ?滋W;
(6)低系统成本:无需配置芯片,小功率电源芯片,无需加密芯片,PCB面积更小。
Fusion系列FPGA内部框架如图1所示。
2 片上系统的实现原理
具体片上系统框图如图2所示。经过心电信号采集传感器采集的心电信号接入12位ADC,ADC将心电模拟信号转换成数字信号被BUF锁存,然后送给Core8051供其采集处理。Core8051中设计算法,将ADC传来的数据转换成VGA可以显示的数据,然后送给VGA驱动模块。
2.1 ADC模块设计
Fusion FPGA内含采样精度和转换时间可以灵活配置的AD转换器,为灵活的AD转换方案提供了可能性。作为一种逐次逼近型ADC,这种转换器具有高达600 Ks/s采样率,器件内部具有2.56 V的参考源,误差在12位模式下为±6 LSB,具有自动校准功能。
利用FPGA内部逻辑单元对ADC进行配置:设置ADC精度为12位,参考电压采用幅值为2.56 V精度为1%片内电压源供电,同时FPGA内部的ADC具有Prescaler(预处理器),所以可以灵活地设置采样电压的范围,更进一步保证了AD转换的精确度。ADC初始化工作过程如下:
(1)等待ADCRESET管脚释放无效;
(2)ADCRESET管脚释放无效后,ADC上电自校准;
(3)上电校准后(CALIBRATE=1),对ACM 进行配置;
(4)配置完成后,通过ADC_START来使ADC工作。
FPGA内部逻辑单元进行ADC的配置和初始化工作,从而控制ADC采样,具体过程如图3所示。
2.2 控制核心Core8051模块设计
FPGA内部可以嵌入高速的Core8051处理器内核,它是整个系统的核心,负责有序地调用其余各功能模块,同时又兼有数据处理任务,负责将ADC传来的数据转换成VGA可以显示的数据。Core8051的硬件配置非常灵活,时钟速度可以达到33 MHz,ROM的大小可以根据需要灵活地设置,该设计配置为64 KB。片内DATA RAM仅需256 B即可完成驱动VGA的功能,也可以扩展外部64 KB RAM,从而完成更强大的软件功能。系统中设置单片机的片内DATA RAM为256 B,并通过系统总线扩展了外部64 KB的SRAM,系统框图如图4所示。
2.3 彩色显示驱动模块
比较成熟的TFT_LCD显示驱动的开发大多数基于ARM[2-3]、DSP[4]的平台。然而本系统使用的处理器是Coer8051,所以没有办法移植原有的驱动模块。又因为图像数据比较大,对处理器运算能力的要求比较高,所以结合Core8051和FPGA的特点重新设计了一种算法,降低需要处理的数据量,从而在Core8051的能力范围内来完成心电图像信息的显示。
为了显示一幅完整的图像,按照液晶扫描的时钟顺序将事先准备好的一帧图像数据逐次地输入到数据端口,从而完成一帧图像的显示。由于要显示的图像只有心电信号是动态变化的,而其他的都是相对静止不动的,也就是每一次扫描时数据信息是不变化的,整幅的图像被分成动态的(心电图像)和静态的(背景、标度)两部分。动态的由Core8051产生,并在特定时刻输入到TFT_LCD;静态的图像信息事先存储到FPGA中的存储器中,每扫描一次都按照特定的顺序输入到LCD。通过这种方法,Core805就只需处理心电信号的信息,从而大大地减少了图像数据的处理量,并完成图像的显示。该模块的设计完成了低端处理器很难完成的实时彩色界面的驱动,即仅使用带有256 B RAM的Core8051就可以显示256色界面。
根据上述设想,可将液晶屏分成动态部分和静态部分,如图5所示。
图5中除了“心电信号动态显示区”中显示出动态的心电图像,其他部分包括“动态显示区”中的背景图像信息全部事先存储在FPGA内部的Flash存储器中。
动态显示区可以用两组数据来标注,设为:x0,y0,x1,y1,则这个动态显示区每个定点的坐标就可以表示为(x0,y0)(x0,y1)(x1,y0)(x1,y1)。如图5所示, 横坐标表示时间t/s,纵坐标表示心电信号的幅值大小U/v,(x0,y0)处为(0,0)坐标点。在Core8051的基础上设计编码算法,对采集到的心电信号进行编码,然后将心电信号转换成显示屏的坐标信号,然后根据坐标信号计算出心电图像的数据,并在扫描时钟的控制下逐次将数据按照顺序输入到LCD中, 这样即可实现动态的心电图像的显示。
心电信号动态显示区的设计采用了3种方法,分别为:
(1)移位寄存器法。在FPGA内部构建一个240位移位寄存器作为心电图像的缓存,Core8051实时地采集数据然后发送到移位寄存器内部,同时CRT驱动模块按照自己的时序来不断地扫描移位寄存器,从而显示出心电图像。这种方法的缺点是动态曲线显示的连续性不好。
(2)双RAM缓存法[5]。利用Core8051外部扩展的64 KB
RAM作为心电波形信号的缓存,同时在CRT驱动模块中再设计一个心电波形显示缓存,这样Core8051就可以先采集心电信号存储在外部扩展的64 KB RAM中,达到某一数量后,连续地发送给CRT驱动模块中的缓存,从而显示出动态的心电信号图像。该设计的一个最大优点是图像显示连续(没有抛弃任何时刻的心电数据),同时又可以根据需要选择观察采集到的任何时刻的心电波形。但由于要采集一定数量的心电波形数据,因此心电波形的显示会有一定时间的延时。
(3)单RAM缓存法。在Core8051没有扩展外部64 KB RAM的前提下设计的,利用一个双端口的RAM作为动态显示区的图像缓存,Core8051通过其中的一个写端口向图像缓存中写入数据,VGA控制器通过另外一个端口从图像缓存中读出数据,两者互不影响。同时设计算法使双端口RAM具有位读写能力,即利用Core8051来灵活地读写双端口RAM中的任何一位,这样对图像数据的处理就非常灵活了。这种设计的最大优点是如方法(1)一样可以实时地显示。
本文结合(2)、(3)两种方法进行系统的设计,弥补了各种方案的缺点,实现了动态、实时显示的功能,使得片上系统的功能变得完善。这种设计结合了FPGA的可编程性成功解决了低端8位处理器无法驱动彩色TFT_LCD动态、实时显示的问题。在此基础上,还可以利用FPGA和Core8051的资源开发其他的功能模块,例如与PC机的通信、SD卡大量心电数据存储、心电分析与报警等。
3 系统测试及结果
心电信号能力集中在中低频段,随着频率的升高,响应的能量也逐渐降低[6]。利用信号发生器产生不同频率和幅值的正弦信号来模拟心电信号,并将其加到心电信号输入端口,可以看到CRT显示器上显示出和输入信号完全一致的正弦波形,没有任何失真。
Fution模数混合信号芯片的诞生给小型化、便携式片上系统的设计带来了可能,本文通过对FPGA各种资源的综合应用完成了一种心电监护仪的片上系统的设计,通过实际的测试验证了它的准确性。系统的所有功能都是在FPGA上完成的,所以它的单芯片性和FPGA可编程性,给产品的升级带来了极大的便利。
参考文献
[1] 吕德刚,李军.微型心电监护仪的开发[J].电子世界,2008,30(12).
[2] 叶一初,胡方明.基于ARM7的心电采集与远程传输系统设计[J].电子设计工程,2009,17(6):83-85.
[3] 侯立亚.基于ARM的心电采集系统的设计[J].医疗卫生装备,2006,27(1).
[4] 李晓燕.基于DSP的便携心电数据采集处理系统[J].工业控制计算机,2006,19(9):54-55.
[5] 龚小年,张兴敢.双口RAM的发展及在现代数字系统中的应用[J].微处理机,2007(4):110-111.
[6] 何伟.心电信号及各组分的频率分布和有效带宽研究[J].生物医学工程学,1996,12(4):336-340.