Nios软核在CT机扫描系统控制器设计中的应用
来源:电子工程世界 作者:—— 时间:2010-08-03 10:54
图3右边为AVALON总线接口,由片选,地址线、数据线、读写使能和中断信号组成。左边为FPGA的输出,即和步进电机驱动器接口:DIR为步进电机运行方向控制,Pulse为步进电机的控制脉冲,HOFF为保持信号。下方三个信号为编码器的反馈信号,分别是A相脉冲、B相脉冲和初始位置信号。步进电机控制模块接收Nios通过AVALON总线发送来的目标位置信息,然后根据当前位置及目标位置,得到到达目标所需的步进电机的脉冲数,发出相应的脉冲。同时,根据反馈的编码器信号,解码得到电机当前位置信息,并判断步进电机运动是否达到目标位置,控制任务是否完成。然后产生中断,通知 Nios软核任务完成情况。可见运行于Nios中的软件只需将目标位置通知电机控制模块即可,大大减轻了CPU的负担。
4 软件设计
由前文能看出,扫描系统控制器需要完成多项功能,软件体系复杂,而且通信、扫描控制、电机控制等环节需求非常高的实时和并发性。在这种情况下,采用传统的基于前后台的嵌入式软件设计方法将存在非常大的困难,软件设计结构复杂,工作量大,且研发周期长,功能扩展受限。嵌入式实时操作系统为系统软件设计提供了良好的研发平台,承担起系统资源管理的责任。这样就简化了应用程式设计,保障了软件质量,缩短了研发周期。本文采用了ATI公司研发的Nucleus操作系统,Nucleus是个抢先式多任务操作系统内核,具有原始码开放、性价比高、功能模块丰富等好处。
本文中,软件结构可分为三个结构层次,最底层为硬件抽象层,主要由Nios软核外设驱动程式中断服务程式及板级初始化程式组成,外设驱动程式包括UART控制器, CAN控制器, 步进电机控制模块,扫描控制模块的驱动程式,此部分是操作系统和底层硬件的接口。第二层为Nucleus操作系统内核及其服务,他提供任务调度,中断管理,内存管理、定时控制等服务。最高层为应用软件层,运行在操作系统之上,完成所有的应用功能。
根据系统功能,应用软件结构如图4所示:
系统管理单元是系统工作的核心,包括两个任务:命令解析任务和系统状态控制任务。命令解析任务接收上级控制单元指令,将其解析为各个子系统需要完成的任务目标,并发送给各个子系统控制单元。子系统控制单元控制子系统完成指令。系统状态控制任务是个状态机,控制着CT扫描系统的运行状态。他根据当前的系统状态和上级指令,判断系统的目标动作,控制扫描时序,同时和各子系统管理单元通信,同步各子系统管理单的任务执行,并将各子系统状态发送给上级控制单元。本文采用信号量和事件的手段同步各任务。
数据采集管理单元是控制器和数据采集系统的接口,他负责数据采集系统的初始化、数据采集参数设置、数据采集系统状态监视和对其错误状态进行处理。这部程式分包括串口通讯接收任务和数据采集系统管理任务。
由前文可知步进电机控制功能由FPGA硬件实现,因此对准栅管理单元的工作变得十分简单,他从系统状态控制部分接收对准栅开口宽度,将其传递给步进电机控制模块,然后通过步进电机控制模块的中断服务程式,监视任务完成情况。
和数据采集控制类似,射线发生器控制部分负责射线发生器的初始化、射线参数设置、监视射线发生器状态和异常情况处理。他包括一个射线发生控制任务和CAN通讯处理任务。射线发生控制任务负责完成射线发生器的参数管理和状态监视,CAN通讯任务完成CAN总线数据的收发功能。
上述任务均为事件驱动方式,在系统不工作时,Nios处理器处于空闲状态,这样能降低系统功耗。任务间通讯采用管道(Pipe)的方式,管道的好处是能传输变长的数据。CT扫描系统控制器需要接收系统设置、扫描、故障诊断等不同长度的上级控制指令,所以在命令解析任务和通信接口任务之间采用管道进行通讯,另一方面命令解析任务向各子系统控制任务发送的指令长度也是不确定的,所以和三个子系统管理单元通讯也采用管道的方式。
合理的设置任务优先级是嵌入式系统软件可靠工作的必要条件。本文中,任务的根据重要程度可分为三个层次:首先是系统状态控制,他是系统运行的中枢,同时控制着扫描时序,必须确保状态控制任务的畅通运行,因此他具有最高优先级设为1。其次是和上级控制单元的接口,包括串口通信任务和命令解析任务,控制器必须准确的接收上级单元的命令并及时反馈,所以这两个任务优先级设为2。最后是各子系统管理任务,其中射线管理单元如果误操作,可能对人员造成损害,所以他的两个任务优先级较高,设为3,其余子系统管理单元任务较低均设为4。
本文的应用软件使用GNU交叉编译器编译,然后经ATI公司的Codelab软件调试通过。
5 实验验证
为验证调试CT扫描系统控制器,搭建了测试平台。测试平台由一台PC机、CT数据采集系统和对准栅组成,其中PC机模拟CT扫描系统控制器的上级单元和 X射线发生系统。
通过监听和上下级控制单元的通讯,测量对准栅的开口宽度,测量控制器输出的数据采集和射线发生控制信号波形,证实,本文设计的CT扫描系统控制器能够满足多任务实时处理的需求。
6 结论
本文采用SOPC方式设计实现了多任务,实时响应的CT扫描系统控制器。硬件设计以Nios软核和FPGA为核心,充分利用SOPC系统的灵活制定的特点,简化了电路结构,缩短了设计周期,减轻了处理器运算负担。同时基于嵌入式实时操作系统Nucleus的结构化、层次化应用程式设计,确保了系统的软件质量和实时性。试验表明,本文 设计的CT机扫描系统控制器满足多任务实时处理的需求。
本文作者的创新点:使用基于Nios软核和实时操作系统的方式实现了实时多任务控制系统,充分利用了Nios软核灵活制定的特点,使用硬件加速的方式减轻了处理器负担,确保了系统性能。