《电子技术应用》
您所在的位置:首页 > 可编程逻辑 > 设计应用 > 基于SoPC和Nios II处理器的医用呼吸机主控系统设计
基于SoPC和Nios II处理器的医用呼吸机主控系统设计
摘要: 现有的呼吸机产品,其主控系统大多基于单片机来实现,对于功能强一些的产品就需要使用高端单片机,这样使得系统的成本比较高,而且外围的接口模块较多,结构复杂。使用SoPC(可编程片上系统)技术设计主控系统,可充分利用IP核的强大功能,精简外设数量,与此同时只占用了很小部分的资源,大大提高了系统的性价比。
关键词: SoPC NIOS II Altera
Abstract:
Key words :

 

         以Altera公司FPGA芯片为平台,利用SoPC技术和Nios II处理器设计并实现了医用呼吸机的主控系统。
 
  呼吸机是可以代替人的呼吸功能或辅助人的呼吸功能的仪器。它适用于呼吸衰竭、甚至停止呼吸的病人做人工呼吸之用。它能帮助病人纠正缺氧和排出二氧化碳,是挽救某些危重病人生命的重要工具。
 
  现有的呼吸机产品,其主控系统大多基于单片机来实现,对于功能强一些的产品就需要使用高端单片机,这样使得系统的成本比较高,而且外围的接口模块较多,结构复杂。使用SoPC(可编程片上系统)技术设计主控系统,可充分利用IP核的强大功能,精简外设数量,与此同时只占用了很小部分的资源,大大提高了系统的性价比。
 
  本文利用SoPC技术设计了持续气道正压通气呼吸机的主控系统,使用了Altera公司的Nios II软核处理器以及一些通用的IP核,笔者基于Avalon总线规范定制了组件,将控制逻辑全部集成至单片FPGA内。
 
  医用呼吸机
 
  正压呼吸机是利用增加气道内压力的方法将空气送入肺内,肺内的压力增大使肺腔扩张。当压力失去后,由于肺腔组织的弹性,将肺恢复到原来的形状,而使经过交换的一部分空气呼出体外。目前,大部分呼吸机都是利用这种增加气道内压力的方法给病人送气的。
 
  呼吸机所需的气压采用直流电机来提供,直流电机的控制信号为PWM信号,根据PWM信号的占空比和周期来控制电机的转速。外部接口提供按键来接受命令,设定各种参数。提示信息、状态信息、参数信息通过字符型LCD显示。为了便于对系统进行测试,使用UART为命令控制接口,对系统进行直接控制,该接口在成品后即被隐去。
 
  系统结构
 
  以SOPC技术为核心的呼吸机主控系统框图如图1所示。
 
 
图1  呼吸机系统硬件结构框图
 
  主控系统的核心FPGA采用Altera公司Cyclone系列的EP1C6T144C8。CPU即为Nios II软核处理器,对整个系统进行统一管理。折线框内为主控板,除下载、调试用的PC机外,对直流电机及主控板需单独供电。直流电机工作后将气流送至面罩内,电机根据端的信号来调节气流的大小。在面罩内装有压力检测模块,通过A/D转换返回至主控板,用来对气流进行回馈调节。面罩供患者使用。
 
  直流电机控制
 
  系统使用PWM信号对直流电机进行控制。在SOPC Builder提供的标准IP核中是没有PWM组件的,需要自行定制,PWM组件的输出信号是方波,方波的周期及占空比可调。PWM任务逻辑结构示于图2。
 
 
图2  PWM任务逻辑结构
 
  PWM组件的任务逻辑有:
 
     PWM任务逻辑由一个输入时钟、一个输出信号、一个允许位、一个32位计数器和一个32位的比较器组成; 
    时钟驱动32位计数器,建立输出信号的周期; 
    比较器用来对32位比较器的当前值和占空比值进行比较,决定所输出的信号; 
    若当前值小于或等于占空比值,则输出逻辑信号为0,否则为1。
  PWM组件的寄存器文件:
 
clock_divde 在PWM的一个周期中的时钟周期数; 
duty_cycle PWM输出为低电平的时钟周期数; 
enable  PWM输出的允许/禁止。0到1的上升沿使能PWM组件。
  将PWM定义寄存器的头文件和驱动程序封装有:
 
  altera_avalon_pwm_init();    //PWM模块初始化,包括周期设置
 
  altera_avalon_pwm_enable();     //PWM模块使能
 
  altera_avalon_p wm_disable();  //PWM模块禁止
 
  altera_avalon_ pwm_change_duty _cycle();  //PWM模块占空比调整
 
  对于直流电机来说,PWM占空比需要达到一定量才能使电机工作,低于阈值(PWM_DUTY_THRESHOLD)的PWM信号不能驱动电机,这部分能量会转化为热量损害电机,所以,设定PWM值的时候需要注意将值设在阈值以上,在altera_avalon_pwm_change_duty_cycle()中对所设定的值进行判断,如果值低于PWM_DUTY_THRESHOLD则调整为PWM_DUTY_THRESHOLD+1。
 
  以上的设计全部完成后,在SOPC Builder内将其封装成为SOPC组件。
输出及指示模块
 
  系统需要输入设置、控制以及显示提示,这部分功能包括有按键输入、LED指示灯输出、蜂鸣器输出、液晶输出等。
 
  按键输入是用户与系统交互的重要接口,键盘板上共设有4个按键,一个为“On/Off”键,一个为“Set”键,一个为“Up”键,一个为“Down”键。“On/Off”功能键用于系统开机、关机;“Set”功能键用于LCD中参数设置时确定;“Up”和“Down”功能键用于改变当前选项的内容。
 
 
  按键输出模块在Nios II内使用SOPC Builder提供的PIO模块搭建,由于要实时响应按键内容,需要开中断,对按键的上升沿进行捕捉,当有中断到来时,进入中断寄存器判断中断的来源和类型,根据现在的模式信息决定系统的动作。
 
  LED显示及蜂鸣器输出也使用PIO模块搭建,为使得电流充裕采用共阳极接法。
 
  LCD显示使用的是1602的通用液晶模块,在SOPC Builder内提供有相应的IP核。液晶为16×2的形式,可显示英文字母及数字,字库在液晶模块内部含有。
 
  与PC机通讯的接口
 
  系统与PC通讯有两个接口,JTAG接口和UART接口。JTAG接口用来对FPGA进行配置及程序下载;UART接口则作为命令控制接口,对完成的程序进行系统的调试。这两个组件在SOPC Builder内均有提供,可直接使用。JTAG接口无需过多配置,外部硬件连接完成后,在内部添加组件即可使用,对JTAG端口的操作由Quartus软件内部完成。
 
  UART接口与PC机通过RS-232协议进行通讯,可以改变其波特率、奇偶校验位、停止位、传输的数据位以及其他可选的RTS-CTS流控制信号等。实际应用中波特率使用115200,8位数据位,1位停止位,带奇偶校验位,流控制则设为none。外部硬件连接使用MAX3232作为电平转换芯片。
 
  存储及配置单元
 
  FPGA使用AS配置模式,配置芯片为EPCS4。EPCS4芯片中的存储区可分为两个区:FPGA配置存储区用来保存FPGA配置的数据,通用存储区用来存放系统启动代码以及程序数据。除了SOPC Builder提供的EPCS组件外,Nios II IDE中的Flash Programmer实用程序可把数据固化到EPCS芯片中。
 
  FPGA芯片内部开出一块4K大小的RAM,作为程序运行时的缓存区。
 
  定时器
 
  SOPC Builder提供的定时器是一个32位的间隔定时器,与我们常见到的单片机内部的定时器模块类似,有递增计数模式和递减计数模式,在计数器为0时可生成中断,也可令周期脉冲发生器输出一个脉冲。对periodl和periodh寄存器进行写操作可设定定时器的周期。系统中使用定时器模块计时,用来判断命令执行时间的长短,按键时长等功能,开中断后可实现长按键开关机或Shift键功能。
 
  A/D采样
 
  A/D采样主要是为了检测面罩压力并反馈,根据反馈值对压力进行再调节。压力检测后压力信号通过Maxim公司的A/D芯片MAX197进行采样。
 
  与PWM组件类似,SOPC Builder也没有提供相应的A/D组件IP核,需自行定制,定制过程与PWM组件相同。 
 
  系统软件设计
 
  系统的工作流程如图3所示。
 
 
图3  呼吸机工作流程
 
  工作状态
 
  设置状态:只能在系统断电后,重新上电时进入。除此之外,系统在任何情况下都无法进入设置状态。并且从设置状态只能返回到关机状态。“Up”,“Down”键改变选项,“Set”键进入设置或确认设置,“On/Off”取消设置或退出当前这层设置界面,当已退到最初设置界面时,再按“On/Off”为关机;
 
  关机状态:液晶显示“Off”,且只响应开机键和命令;
 
  待机状态:液晶显示治疗压力的延时;
 
  治疗状态:响应“On/Off”键, “Up”键和“Down”键。其中,“On/Off”键用于“启动/停止”治疗;“Up”和“Down”用于以0.5厘米水柱的压力为步长调整当前工作压力。
 
  对这四种状态的切换都基于不同时段不同按键的组合,设计时考虑到治疗操作的简便性,把大多数操作都放到设置状态内进行,治疗时只需要根据实际情况略作调节即可。
 
  压力反馈
 
  对于呼吸机这种直接面对病患的医疗器械,安全性是非常重要的,另外,对所加压力的精度要求也比较高,就算是5%的压力变化对于一个病人的呼吸系统来说也是不小的压力。在电机有输出有波动的时候,加一级反馈来对压力进行补偿输出,可以防止突然间的误动作以及供电电压波动带来的压力精度偏移。
 
  将A/D采样的结果与预先设定的值进行比较,如果低于设定值,则对输出值进行相应的提升;如果高于设定值,则减少输出值。对压力输出的调节要逐步进行,根据实验结果设定步长PWM_T_STEP,每次变化只增减PWM_T_STEP的值,这样不会使得气流忽大忽小,让患者的呼吸系统感到不适。
 
按键及显示
 
  系统中对按键的要求比较多,除了正常的单次按键外,还有开关机时的长按键、进入设置状态的组合键等。这些特殊功能的按键也是基于单次按键的基础上进行的。
 
 
  长按键需要对按键的触发的上升沿和下降沿都进行判断,单次按键的下降沿中断来到后,计数器开始计数,到上升沿中断到来为止,如果计数大于某一阈值则认为该次按键为长按键。阈值的确定要根据系统的时钟频率以及所需要的延时长度。
 
  系统的显示主要依靠LCD,16×2的液晶上只能显示两行菜单,但菜单的总条数远大于两条,为此,菜单数组的显示和执行就需要两套指针来实现,显示时单行滚动显示,以便于观察。
 
  结语
 
  本文所述的医用呼吸机主控系统,样机已制出,现正进行性能测试,目前运行正常。整个系统的设计重点在定制基于SOPC技术的嵌入式Nios II软核处理器设计和电机驱动的实现上,与传统的基于单片机的方案相比,Nios II只占用了FPGA芯片内的一小部分资源,却完成了包括单片机及相当数量外设的功能,这样既简化了电路板设计,减少外围器件的配置,又有效地控制了系统软硬件的复杂度,降低了成本,缩短开发周期,更便于对未来产品的升级换代。
 
  参考文献:
 
  1.  李兰英,Nios II嵌入式软核——SOPC设计原理及应用,北京航空航天大学出版社,2006.11
 
  2.  Altera. NiosII Processor Reference Handbook [EB/OL].  (2006-05).http://www.altera.com
 
  3.  Altera. Altera Embedded Peripherals Handbook [EB/OL].  (2006-05).   http://www.altera.com
 
  4.  彭澄廉,挑战SOC—基于Nios的SOPC设计与实践,清华大学出版社,2004
 
此内容为AET网站原创,未经授权禁止转载。