控制台是磁共振成像(MRI)或核磁共振(NMR)系统的核心设备,完成序列运行、系统控制、射频发生、射频接收以及梯度发生等功能[1].控制台具有较高的技术复杂度,其关键技术之一是用户计算机与成像仪各功能单元之间的快速数据传输:序列与运行参数从用户计算机下传至成像仪,进而配置到各功能单元;采集的多通道回波数据高速上传到用户计算机.当前主要采用现场可编程门阵列(FPGA)[2, 3]、微控制器[4-6]、计算机主板[7-9]或独立主板[10-12]进行数据的获取与传输.这些设计在一定程度上能够满足成像与波谱分析的数据传输需求,然而对于多通道成像(要求16个甚至32个通道)存在着一定的不足.以FPGA作为主控与通信单元,其编程压力大且数据存储空间小;以微控制器作为主控与通信单元,其数据存储空间相对较小;以计算机主板为平台,则受计算机软件环境复杂影响,实时性难以得到保证而且扩展性受到限制;以独立主板为平台,其设计较为复杂,设备紧凑度也难以提高.
本文针对自行研制的成像仪控制台,采用飞思卡尔公司的PowerPC处理器—MPC8270构建成像仪的数据传输模块.PowerPC上运行嵌入式Linux,与用户计算机之间通过百兆以太网(TCP/IP协议)相连接,通过本地总线访问双端口静态随机存取存储器(SRAM)以实现与成像仪其他模块的数据交换,采用中断机制使得PowerPC高速响应数据采集模块的读数请求.该设计具有结构紧凑、集成度高、内存较大的特点,能够接入可扩展的多个数据采集模块,大量的MRI实验表明它能够满足高速频繁的数据传输需求.
1 多通道成像仪的数据传输模块设计MRI成像仪控制台的结构框图如图 1所示.
在MRI扫描过程中,存在着两个方向的数据传输:
(1) 序列与参数的下行传输
当成像开始时,用户计算机的控制软件将序列与相关参数通过网络下传到数据传输模块,再传送到脉冲编程器,由其设置各模块的参数并控制各个模块的运行.这部分数据一般在整个成像过程中只需要传送1次.
(2) 接收数据的上行传输
在成像过程中,数据传输模块定期地读取数据采集模块接收的一行多通道数据(一行有若干个点,每个点包括I、Q分量,每个分量为两个字节),进行累加操作,在成像结束后,将全部数据上传给用户计算机以完成图像的重建(二维傅里叶变换)与合成.
一次读取的数据量为:接收通道数×一行的点数×2×2(单位:字节),若接收通道数为16,一行的点数为256,则数据量为16 k字节.
数据读取的周期取决于不同的成像序列,对于快速的序列(如梯度回波成像),读数的周期为数十毫秒甚至更短.一旦因响应不及时或传输错误而造成漏数或错数,整个图像重建则将失败.
本文以PowerPC处理器—MPC8270为数据传输模块的核心,实现高速的数据传输与交换.
1.1 数据传输模块的结构与组成数据传输模块的主要组成(图 2)包括:
(1) PowerPC处理器—MPC8270,它是一个功能强大的通信处理器,内部包含一个高性能精简指令集计算机(RISC)处理器核与一个通信处理器模块(CPM),并且具有32 bit数据线与18 bit地址线的局部总线,可以与各种存储器挂接(包括SRAM),运行嵌入式Linux操作系统.
(2) 1个百兆以太网接口.
(3) Flash闪存,用于存储BootLoader、Linux内核、文件系统.
(4) 同步动态随机存取内存(SDRAM),作为主内存,用于程序运行并作为数据临时存储的空间,共512 MB.
(5) 1片双端口SRAM,用于存储序列与参数(PowerPC写入,由序列运行模块读取).
(6) 1片FPGA,型号为EP1C12Q240,具有约12 000个逻辑门和170个I/O管脚.FPGA作为PowerPC的辅助控制器,主要负责完成译码、中断与控制接口等功能.PowerPC的通用I/O经FPGA时钟同步后输出,作为序列运行模块控制器的中断信号.来自数据采集模块的中断信号经FPGA后输入到PowerPC.
SDRAM以及双端口SRAM均挂接在PowerPC外部总线上,映射到处理器的内存空间中,PowerPC与SRAM通过外部总线进行数据传输.
本设计能够挂接一定数量的数据采集模块,每个采集模块可以为1、2、4乃至8个接收通道.以T1-SE加权自旋回波成像序列为例,若一行采256个点,每个点为4字节,相位编码步为256,层数为40层,那么每个通道的数据总量为10 MB.数据传输模块的总内存为512 MB,除去操作系统和应用程序占用的内存,可用内存约为四百多兆字节,因此这种情况下本方案可以支持16个甚至32个通道.
鉴于U-Boot对于PowerPC与Linux的强大支持[12],并且是开源软件,本文设计选用它作为处理器的BootLoader.嵌入式Linux的内核版本为2.6.19,具有较强的实时性.同时,为了提高软件执行速度,采用RAMDISK文件系统运行Linux内核与应用程序.
1.2 数据传输模块的工作机制数据传输模块接收到用户计算机发送来的序列、参数以及运行指令后,将序列与参数依照预定的顺序存入对应的SRAM,然后向序列运行模块发出中断,序列运行模块的控制器随即从相应的SRAM读出序列与参数,并开始执行.
在成像过程中,数据采集模块每采集一行数据就存储于对应的SRAM中,数据存储的SRAM是可扩展的.如果采集的通道数较多、数据量较大,可以通过增加SRAM来满足需求.采集模块获取到数据之后就向PowerPC发送一次中断.接收并响应中断后,PowerPC读出数据并存储到SDRAM中,进行累加操作.当中断的数量等于预先的设置时(表明成像过程结束),PowerPC将全部的接收数据上传到用户计算机进行图像重建与合成.
2 软件设计嵌入式软件包括应用程序与驱动程序两部分.应用程序完成初始化、网络通信、调用驱动程序对双端口SRAM进行读写等操作.驱动程序实现对双端口SRAM的读写、控制通用I/O输出、响应外部中断等操作[13].
2.1 应用程序的功能应用程序与用户计算机之间的网络通信采用客户端/服务器模式,应用程序作为服务器,在运行过程中,等待计算机(客户端)的请求并提供相应的服务.网络通信采用socket编程:在执行socket()与bind()函数之后,调用listen()函数监听这个socket,若客户端发出连接请求,服务器就会接收到这个请求,从而进行数据的接收或发送.
应用程序采用I/O多路复用技术,利用select函数对多个网络套接字进行监听,判断是否有套接字需要进行数据传输.应用程序的工作主要分为3个部分:一方面需要管理与用户计算机的网络通信,接收来自计算机的序列以及有关参数,然后将数据写入相应的SRAM;另一方面需要在内存中开辟空间,用于存储来自数据采集模块的数据,然后还要创建专用的数据读取线程,数据读取线程需要调用驱动将数据从对应的SRAM中读取到内存中;最后应用程序需要将内存中的数据通过网络传输给用户计算机,而数据上传还包括在采集过程对部分数据的抽点上传,这个传输要求具有很强的实时性,采用内存映射的方式读取数据很好的解决了数据读取速度的问题,抽点上传也极大的缓解网络的压力.当整个采集过程结束后,应用程序还需要将内存中存储的数据全部上传给用户计算机,这样应用程序就完成了数据采集与传输过程.
应用程序的工作流程如图 3所示.
为了及时地响应数据采集模块发送来的中断以读取接收的数据,驱动程序中构建了相应的中断服务程序,而应用程序中也创建了专用的线程来调用驱动进行数据读取.
驱动程序首先在内存中开辟了一个数组作为缓冲池,这个数组应尽可能大(如256 k字节).响应中断后,中断服务程序调用内核函数memcpy()将接收数据从双端口SRAM读入缓冲池的预设位置(该位置随着每一次数据的读取依次递增,不断循环),再给出状态信息供应用程序的线程查询.
线程对应的功能函数ReadDataThread反复查看驱动程序给出的状态信息,若驱动程序已经完成数据写入缓冲池,则线程调用驱动程序的Read函数,将预设位置的接收数据读入用户空间,并执行数据累加.
3 实验结果与讨论数据传输模块已完成安装与调试,其电路板如图 4所示.
将数据传输模块集成到自行研制的MRI成像仪控制台中进行测试,图 5是基于该板卡构建的7 T高场成像仪控制台的测试系统图.
测试中重复连续运行了多种不同的临床成像序列(如T1-SE、T2-FSE等),在测试过程中,没有丢失中断、丢失数据或数据错误的情况发生.以T1-SE加权自旋回波成像序列为例,当脉冲间隔重复时间设置为16 ms、采集通道为16、一行采集数据点数为512时,经数小时的长时间测试,该数据传输模块能够正确无误地运行.
使用多层自旋回波(Multi-Slice Spin Echo,MSSE)序列,当读取16个通道、一行采集点数为256时,数据传输模块所产生的片选信号的时序测量图如图 6所示.这里的数据传输模块挂接了4个数据采集模块,每个模块有4个通道.从图 6中可以看出,读取一条线所需时间约为1.18 ms,读取所有通道两个采样点之间的时间间隔约为4.61 μs.改变通道数和1行采集的点数,重复测试,测得的读取1行采集数据所需要时间如表 1所示.
采用基于该数据传输模块的自制成像仪控制台在7 T超导系统上进行了水模和一些样品的成像实验,接收线圈采用双通道正交鸟笼线圈,图 7为采用T1-SE序列扫描得到的水果(桃)图像(水模、油桃和苹果的扫描图像及扫描参数参见该文章网络版,或扫描文章首页OSID码查看附件).
本文基于PowerPC处理器—MPC8270设计开发了MRI成像仪的数据传输模块,处理器运行嵌入式Linux操作系统,通过驱动程序的设计以保证接收数据读取的可靠性与速度.该模块与成像仪的数据采集模块相结合,能够完成多个通道的数据采集和传输,满足临床成像的需求,并且此设计具有结构紧凑的特点,将为国内高性能MRI成像仪的研制提供一个可行的技术手段.
但是对于需要非常快速(TR为数个毫秒)进行数据传输的磁共振电影成像(Cine MRI),本文设计的数据传输模块目前在读取通道数量较多(如16个通道)时还难以满足实际应用的需求,需要进一步优化设计.
[1] | 俎栋林. 核磁共振成像学[M]. 北京: 高等教育出版社, 2004. |
[2] | TAKEDA K. A highly integrated FPGA-based nuclear magnetic resonance spectrometer[J]. Rev Sci Instrum, 2007, 78(3): 033103. DOI: 10.1063/1.2712940. |
[3] |
XIE Q M, XIAO L Z, ZHANG X L, et al. Design and implementation of an FPGA-based pulse programmer for low field NMR spectrometer[J].
Chinese J Magn Reson, 2011, 28(3): 317-325.
谢庆明, 肖立志, 张晓玲, 等. 基于FPGA的低场核磁共振谱仪脉冲编程器设计与实现[J]. 波谱学杂志, 2011, 28(3): 317-325. DOI: 10.3969/j.issn.1000-4556.2011.03.002. |
[4] | CARL A M. A low-cost spectrometer for NMR measurements in the earth's magnetic field[J]. Meas Sci Technol, 2010, 21(8): 105902. |
[5] |
SHANG Y, ZHOU J, LEI D, et al. Software system design in an integrated NMR spectrometer console[J].
Chinese J Magn Reson, 2012, 29(1): 68-77.
商赟, 周娟, 雷都, 等. 一体化核磁共振谱仪控制台的软件系统设计[J]. 波谱学杂志, 2012, 29(1): 68-77. DOI: 10.3969/j.issn.1000-4556.2012.01.007. |
[6] |
PENG Q S, ZHENG Z Y, CHEN Z, et al. Design of NMR receive channel based on STM32[J].
Electronic Measurement Technology, 2014, 37(7): 76-79.
彭求实, 郑振耀, 陈忠, 等. 基于STM32的波谱仪接收通道的设计[J]. 电子测量技术, 2014, 37(7): 76-79. |
[7] | SHEN J, XU Q, LIU Y, et al. Home-built magnetic resonance imaging system (0.3 T) with a complete digital spectrometer[J]. Rev Sci Instrum, 2005, 76(10): 105101. DOI: 10.1063/1.2069707. |
[8] | HASHIMOTO S, KOSE K, HAISHI T. Development of a pulse programmer for magnetic resonance imaging using a personal computer and a high-speed digital input-output board[J]. Rev Sci Instrum, 2012, 83(5): 053702. DOI: 10.1063/1.4711132. |
[9] | TSUDA M, TAMADA D, TERADA Y, et al. Development of digital MRI consoles using general-purpose digital instruments and microcontroller boards[J]. Appl Magn Reson, 2016, 47(8): 847-858. DOI: 10.1007/s00723-016-0806-4. |
[10] | MAO W P, BAO Q J, YANG L, et al. A modularized pulse programmer for NMR spectroscopy[J]. Meas Sci Technol, 2011, 22(2): 025901. DOI: 10.1088/0957-0233/22/2/025901. |
[11] |
WANG H, XIONG Z C, LIN X C, et al. A computer-on-module based high-performance control interface with gigabit Ethernet for magnetic resonance imaging spectrometer[J].
Chinese J Magn Reson, 2012, 29(4): 499-507.
王洪, 熊泽冲, 林先钗, 等. 基于模块计算机的千兆网磁共振谱仪控制接口[J]. 波谱学杂志, 2012, 29(4): 499-507. DOI: 10.3969/j.issn.1000-4556.2012.04.003. |
[12] | STANG P P, CONOLLY S M, SANTOS J M, et al. Medusa:a scalable MR console using USB[J]. IEEE T Med Imaging, 2012, 31(2): 370-379. DOI: 10.1109/TMI.2011.2169681. |
[13] | 漆昭铃. 基于PowerPC的嵌入式Linux[M]. 北京: 北京航空航天大学出版社, 2004. |