基于血管弹性腔模型的脉搏波发生器的 FPGA 设计与实现

心血管循环系统是人体最复杂的生命系统之一,具有高度的动态特征,当心脏周期性地 收缩和舒张时,心室射入主动脉的血流将以波的形式自主动脉根部出发沿动脉管系传播,这 种波就是脉搏波。大量临床实测结果证实,脉搏波的波形特征与心血管疾病有着密切的关 系。脉搏波所表现出的形态(波的形状)、强度(波的幅值)、速率(波的速度)与节律(波的周期) 等方面的综合信息在相当程度上反映出人体心血管系统的许多生理和病理特征。由于脉搏 50 波检测不需要复杂而昂贵的设备,且操作简单,性能稳定,因此在心血管临床医学检查、治 疗康复上都有广泛的应用。

获得准确的脉搏波信号源,能够对脉搏波检测仪器准确性和精确性进行验证,从而对心 血管疾病的临床诊断有很大的帮助。然而,一些信号发生器,只能单纯地产生一些形如正弦、 方波等简单的信号,不能反映人体生理信息。我们需要一个能够产生不同类型的脉搏波作为实验输入信号,解决输入源的问题。

本文使用 Altera 公司的 Cyclone I 系列型号为 EP1C12Q240C8N 的 FPGA 芯片作为开发 平台,搭载 NIOS II 片上可编程系统,在 SOPC 开发流程下完成各个功能的实现。液晶屏和触摸屏构成了用户的交互界面。最后,该脉搏波发生器产生的脉搏波信号既可以通过 LCD 显示,也能够通过模拟输出通道,连接到示波器中显示或者作为信号源提供给其他设备。

一 血管建模与仿真

1.1 弹性腔基本理论

当心室收缩,房室瓣关闭,主动脉瓣开启时,心室开始向主动脉射血;从心室射出的血 70 液一部分经过动脉与毛细血管直接进入静脉腔,另一部分则留在主动脉与大动脉之间,使其 弹性扩张;在心室舒张,房室瓣开启,主动脉关闭期间,心脏停止向主动脉射血,由此可 见,主动脉与大动脉管壁的弹性作用使心脏间断的射血转变为动脉管道连续的血流。

1967 年美国的戈特温和瓦特共同提出了双弹性腔模型理论,将人体主动脉及其主要分 支看做两个弹性腔。第一个弹性腔表征主动脉弓及其主要分支的集总顺应性 C1;第二个弹性腔表征腹主动脉及其主要分支的集总顺应性 C2; 连接两腔体的血柱 L 表征血液的惯性。 心脏收缩时,血液 qin 由心室进入第一个弹性腔 C1与血柱 L,而后进入第二个弹性腔 C2, 最后流经集中的外周阻力 R 而进入静脉腔,弹性腔模型如图 1 所示,其相应的等效电路图 如图 2 所示。

1.2  时双弹性腔数值解

实际的生理条件下,整个心动周期 T 应该包括收缩期 Ts和舒张期 Td两部分。这时血流 量  ,我们以左心室每次搏动输出的血流量 qin(t)作为模型的输入信号,其函数如式 3 所示,波形如图 3 所示,其中,收缩期 Ts 等于 300ms,舒张期 Td等于 500ms,整个心动 周期 T 等于 800ms。

q0为根据心输出量计算得到的输入最大幅值,计算公式如式 4 所示,Vout 等于 70mL/s, 代表心输出量。

建立双弹性腔模型的状态方程,对所得三阶微分方程使用四阶龙格库塔方法,得到微分 方程的数值解。其迭代公式如式 5 所示

其中,h 代表计算步长,p1 和 p2 代表两个弹性腔内的压力,模型初始值为 q(1)=30, p1(1)=50, p2(1)=50。

依据表 1 给出的范围,输入不同条件下,弹性腔模型参数 L、R、C1、C2的数值。

2 系统设计

本文使用 FPGA 作为硬件开发平台。FPGA(Field Programmable Gate Array),即现场可编程门阵列,它作为专用集成电路领域中的一种定制电路而出现,解决了定制电路的不足, 克服了原有可编程器件门电路数有限的缺点。同时,FPGA 与其他硬件开发平台,如单片机 相比,因内部集成锁相环,可将外部时钟倍频,具有更高的运行速度;能够连接更多外围设 备;拥有大容量的 SDRAM 等优势。

可编程片上系统(SOPC)是一种特殊的嵌入式系统:它是片上系统(SOC),即由单个芯片 完成整个系统的主要逻辑功能;它也是可编程系统,具有灵活的设计方式,可裁减、可扩充、 可升级,并具备软硬件在系统可编程的功能。它结合了 FPGA 的优点,具有小容量片内高 速 RAM 资源,提供丰富的 IP 核资源,包含一个嵌入式处理器内核,涵盖嵌入式系统设计 技术的全部内容。

SOPC 技术开发主要包括两个方面,即硬件设计和软件设计。硬件设计主要在 Quartus II 和 SOPC Builder 两个开发环境中完成。软件设计主要基于 Nios II IDE 开发环境。

在 Quartus II 开发环境中,用户可以使用硬件开发语言或原理图对硬件进行布局设计, 依据用户手册,完成管脚分配。在 SOPC Builder 中,添加不同功能的 IP 核,通过系统总线 连接各个硬件,设计能在 FPGA 芯片上运行的完整的嵌入式系统的。

软件开发环境 Nios II IDE 是 Nios II 系列嵌入式处理器的基本软件开发工具。所有的软 件开发任务都可以在 Nios II IDE 下完成,包括编辑、编译、调试。Nios II IDE 为软件开发 提供四个主要功能:(1)工程管理器;(2)编译器和编辑器;(3)调试器;(4)内存编程器。Nios II IDE 提供了一个统一的开发平台,可用于所有 Nios II 处理器系统。

2.1 硬件设计

本文使用北京百科融创公司型号为 EP1C12Q240C8N 的开发板作为设计平台。开发板包 括 FPAG 芯片、SRAM、Flash 和 SDRAM 等芯片。时钟信号由外部晶振提供,频率为 50MHz。 开发板通过 IO 端口,连接数模转换芯片及液晶屏等设备。

2.1.1 基于 FPGA 的 SOPC 设计

硬件开发主要是创建 Nios II 软核系统,作为应用程序运行的平台。利用 SOPC builder工具从开发套件的设备列表中选择合适的 CPU,存储器以及各种外围器件,并定制和配置 相应的功能,最后生成整个系统。本文使用的 IP 软核包括 Nios II 核,即嵌入式系统的 CPU; SRAM 核;SPI 核,一种工业标准的串行接口协议,在控制器与控制设备之间实现数模、模 数通信;I/O 核,驱动 FPGA 芯片外部引脚,与连接的外设进行数据和地址的相互传输;CFI Flash 控制核,提供代码运行的空间,同时,可以将代码烧录在 Flash 中,节省每次下载程序的时间;JTAG_UART 核,将编译好的代码下载到芯片中。硬件设计框图如图 4 所示。

2.1.2 LCD 液晶屏设计

选用夏普公司型号为 LQ080V3DG01 的 LCD 液晶屏。分辨率为 640*RGB*480,能够显 示 262,144 种颜色。通过 32 pin 接口与 FPGA 连接,完成数据传输。根据用户手册提供的时 序描述,在 FPGA 中设计 LCD 控制模块,其控制框图如图 5 所示。其中,SDRAM 存储 LCD 中需要显示的数据;添加锁相环(PLL),将输入时钟信号分频倍频,分别提供给 LCD 显示器和 SDRAM 模块作为其工作信号;添加 FIFO,完成 LCD 于 SDRAM 之间的异步读写功能。

2.1.3 触摸屏设计

本文使用四线电阻式触摸屏,若获取触摸屏坐标,首先要得到触摸屏上的电压值,然后 通过模数转换,将电压值转换为坐标值。本文采用 ADS7843 的模数转换芯片作为触摸屏的 控制器,ADS7843 是一个 12 位的模数转换器,由 FPGA 芯片为其提供其工作时序信号, ADS7843 的工作电路如图 6 所示,14 号引脚为输入接口;12 引脚为输出接口;2 至 5 号引 脚连接触摸板。若获取 Y 方向的坐标数值,可以将信号由 X+引脚输入,同时打开 Y+和 Y- 引脚,得到 X+的数字电压值,内部模数转换后,得到 Y 方向的坐标。X 方向上的坐标可以 用同样的方法获得。ADS7843 提供了两种电压输入模式,分别是单电压参考输入模式和差 分模式。本文使用差分电压输入模式。

2.1.4 DA 转换设计

将脉搏波进行数模转换,以连续变化的电压形式输出。本文采用 DAC7513 数模转换芯 片作为 DA 转换装置。DAC7513 是一个低电压、12 位、低功耗并且能够与 SPITM核兼容的 高速转换芯片,该芯片工作时钟信号为 10kHz,参考电压输入为 3.3V,其工作电路如图 7 所示。DAC7513 的 6 号引脚为输入接口;1 号引脚为输出接口,可直接连接示波器或其他 设备。

2.1.5 降压电路设计

本文设计的脉搏波信号发生器,需要的电源幅值为 12V、5V 和 3.3V,其中,12V 和 5V 分别提供给 LCD 液晶屏,作为背光电压。3.3V 提供给 ADS7843 模数转换芯片、DAC7513 数模转换芯片和触摸屏。

12v 电压通过稳压电源直接获取;通过降压芯片 LM2940CT-5.0 将 12V 电压降到 5V, 提供给 LCD 液晶屏。降压芯片 LM2940CT-5.0 电路图 8(a)所示。

通过降压芯片 LM1085IT-3.3 将 5V 电压降到 3.3V,提供给 ADS7843 模数转换芯片、 DAC7513 数模转换芯片和触摸屏使用,降压芯片 LM1085IT-3.3 电路如图 8(b)所示。

2.2 软件设计

脉搏波发生器的软件设计部分在 Nios II IDE 中完成。它能为所有的 IP 核提供软件驱动。 软件流程图如图 9 所示。

软件部分主要实现以下功能:(1)弹性腔模型实现;(2)三种噪声信号产生;(3)系统信噪 比设定;(4)基线漂移;(5)触摸屏坐标获取。

2.2.1 噪声添加功能

临床中提取的脉搏波信号,必定含有噪声成分,为了最大程度接近临床获得的脉搏波波 形,本文设计产生三种噪声,分别是 50Hz 工频噪声,均匀分布白噪声和高斯分布白噪声.

50Hz 工频噪声是信号提取中最常见的噪声类型,往往受电源电压的影响,提取信号被 50Hz 噪声污染。文本使用 sin 函数得到噪声,周期与脉搏波周期相同。

均匀分布白噪声是指功率谱密度在整个频域内均匀分布的噪声,在等带宽的频带所含的 噪声能量相等。本文使用定义在 C 语言中的 rand 函数得到,均值为 0.5,幅值在 0-1 之间。

高斯分布白噪声是指它的幅度分布服从高斯分布,而它的功率谱密度有事均匀分布的白噪声。产生高斯随机数列最常用的方法是由 Box 与 Muller 首先提出,后经 Marsaglia 与 Bray 改进的极坐标方法,计算步骤如下:

1.产生两个独立同分布的 U(0,1)随机数 U1和 U2。

2.令 Vi=2Ui-1,i=1,2,并计算 S=v1*v1+v2*v2 。

3.若 S>1,则返回第一步;反之,计算

可以证明上述方法得到的随机变数 X1与 X2是相互独立的,并服从正态分布。噪声分布 直方图如图 10 所示。

2.2.2 信噪比设定功能模块

信噪比是指正常声音信号与无信号时噪声信号(功率)的比值,单位是 dB。信噪比是衡量噪声和信号关系的重要参数,比值越高,则表示混在信号里的杂波越少,信号的质量越好。 信噪比计算公式如式 6 所示,其中 Asignal 为信号幅度, Anoise 为噪声幅度。由于我们只能通 过原始信号和噪声得到噪声比,而不能由噪声比和信号得到噪声的原始幅值,这个过程是不 可逆的,所以,本文采用查表法确定噪声的幅值。首先根据信噪比定义求出不同噪声幅值对应的信噪比,得到不同噪声幅值信噪比的查找表,存放在数组中;然后将数组中的数值分别 和人工选定的信噪比做差,取绝对值最小值,目的是使其尽可能的接近选定的信噪比;最后, 求出该最小值处的坐标,其坐标便对应噪声幅值待乘的系数,进而求出满足信噪比要求的噪声。

2.2.3 基线漂移

在临床脉搏波信号的采集过程中,往往会受到人的呼吸运动、身体移位以及接触皮肤时 用力大小等方面影响,使获得的脉搏波信号受基线漂移的影响,产生不同程度的失真,对信 号分析和诊断影响很大。脉搏波基线漂移通常表现为缓慢变化的曲线,即每个周期的脉 搏波不在同一条水平线上,属于低频噪声。

本文对多个周期的脉搏波进行处理,达到基线漂移效果。

3 结论与讨论

低阻抗波形与实测 I 型滑波对比图如图 11 所示,图 12、13 是波形经数模转换后,在示 波器中显示的基线漂移、噪声添加效果图。图 14 显示在 MATLAB 中仿真得到的四种不同 阻力的脉搏波波形。LCD 液晶屏输出如图 15 所示。

从结果图分析可得,发生器能够完成波形产生、噪声添加、基线漂移等功能,最后将脉 搏波在示波器和液晶屏中准确显示。

本文设计的脉搏波发生器与其他发生器相比,有显著的优势和特点。首先使用 FPGA 作 为开发平台,FPGA 具有更快的运行速度,能够连接更多的外围设备。同时,应用 SOPC 开 发流程,建立 Nios II 嵌入式系统,将所需 IP 核添加到系统中,避免了繁琐的编写硬件驱动 的过程,缩短了开发周期,IP 核可裁剪,可重复开发,实现其他功能的后续添加,从根本上解决了由于开发平台资源的不足导致的系统功能的缺陷;采用液晶屏和触摸板结合的方 法,使交互界面易操作,降低用户使用难度。实现模拟波形输出,不仅可在示波器中显示, 也可用于其他操作。

其次,本文对心血管系统建立双弹性腔模型,与单弹性腔相比,虽结构复杂,但是能够 解释由心脏舒张期而出现的一些诸如潮波,重博波之类的脉搏波波纹,这些波纹在临床上有重要的意义。对由模型等效电路图建立的微分方程,用四阶龙格库塔方法,能快速得到微 分方程数值解,且准确程度高,与脉搏波形状相同。

本文的信号处理部分包括添加噪声,设置信噪比,基线漂移功能。在临床测量脉搏波的 过程中,必然会受到噪声干扰和其他影响因素,添加这些功能,能最大程度上模仿实际测量 得到的脉搏波。同时,产生的波形也可作为脉搏波检测设备或信号处理的输入源,如衡量去基线漂移算法的有效性等。提高了输出脉搏波的利用率。

本文所设计的脉搏波发生器,克服原有发生器如需要大容量 RAM 存储波形数据,输 出波形类型单一,仿真程度低等缺点,能够为脉搏波的临床检测提供有效的解决方案,有很 大的实际利用价值。