APP下载

DNA分析仪荧光光谱数据的传输设计

2019-12-13

分析仪器 2019年6期
关键词:双口毛细管指针

(公安部第一研究所,北京 102200)

1 前言

DNA鉴定技术起源于上世纪80年代,具有亲缘关系认定准确、个体识别率高的特点,目前已成为公安机关的主要侦破手段[1]。以前我国DNA检测仪器和配套的软件、耗材都依赖进口,本项目组在公安部的大力支持下,经历近十年的科研攻关,以激光诱导荧光(LIF)-高效毛细管电泳(HPCE)-面阵CCD接收- 短串联重复序列(STR)分型[1]的技术路线成功研制了国内首台商业化的DNA分析仪,各项技术指标达到了国外同类产品水平,已在全国20多个省级公安机关推广使用。

DNA分析仪的电路控制系统采用主从式多处理器架构,以ARM芯片为主CPU,负责部件的监控、运行时序的生成、与PC机的实时通信等,其中一个从处理器DSP负责CCD驱动时序生成、CCD温度控制、光谱数据采集等功能,这两个CPU之间就需要一套简洁、高效的数据存储、传输机制将DSP采集、处理后的荧光光谱数据稳定可靠地传送给ARM。本研究对荧光光谱数据的类型进行了分析,基于光谱数据的特点,设计了一种基于双口RAM的数据传输机制。

2 荧光光谱数据分析

如图1所示,以16道毛细管阵列为例,激光光源激发携带荧光染料的DNA片段,在面阵CCD上每一根毛细管出射的荧光光谱展开都对应一个长条型的空间。出于毛细管定位、光谱叠加消弭的目的,需要在荧光光谱信息的通道和波长两个维度上进行光谱分解[2-4],横轴方向称为空间校正(Spectral calibration),纵轴方向称为光谱校正(spatial calibration),利用这两个校正文件可以处理实际的样品电泳数据,得到STR分型结果。

图1 荧光光谱在面阵CCD上的展开示意图

空间校正的目的是确定每根毛细管在CCD检测器上的纵向最佳读取坐标值。为了计算空间校正图谱,PC机数据处理软件需要读取某一时刻整幅CCD面阵上的所有像素(pixel)的荧光强度值进行横轴数据求和。本研究所使用的CCD为512×512像素,由于DSP采用16bit的数据总线,故数据采集系统使用16位无符号正整数表示像素的强度值,一帧空间校正数据共需要256K×16 bit的数据存储空间。

光谱校正主要是解决染料空间到光谱空间的映射问题。在实际样品电泳前,需要先使用4种或5种已知的荧光染料(即染料空间)在面阵CCD上成像,读取这几种荧光染料在CCD上的光谱分布。经过调试光路和驱动电路控制,只需要读取图1所示的L×H的范围内的像素值,这一段的位置和像素数都是固定的。本研究所用数据采集系统L=280 pixel、H=3 pixel,因此,DSP读取一帧光谱校正数据需要13440×16 bit的数据空间。

实际样品的STR荧光谱图同样是落在图1中 L×H的范围内,与光谱校正数据相比较,只是每个像素的光强度值是变化的,对ARM来说,DSP传输过来的STR数据格式和光谱校正是没有区别的,只是解析时的数据帧头是不一样的。

综上,在进行荧光光谱数据采集时,DSP通过控制CCD驱动电路得到两种格式的数据:空间校正数据和光谱校正数据(STR数据),然后将数据加上帧头、帧尾、帧序号等信息,传输给ARM主处理器。

3 数据传输系统设计

如果ARM和DSP采用同步时序的方式传输数据,会大大增加它们的工作开销,特别是ARM还需要对仪器各部件状态进行实时监控,同步方式会延缓ARM对部件的响应速度,严重的话会造成仪器的运行故障。因此考虑采用异步读写的方式,并在两者之间增加一级数据缓存,这样当DSP采集到一帧数据时,它只需要将数据存储到指定的数据空间、更新状态位后,就可以转入下一帧的数据采集,而不必等待ARM给出读取响应;ARM也会定时(跟采集波特率有关)读取数据、更新状态位。

3.1 硬件电路设计

DSP具有的异步通信方式主要是串口(UART)和系统总线挂载双口RAM[5], UART传输速度慢、误码率高,所以本设计使用IDT公司的高速256K×18 bit 的双口RAM芯片 IDT70V631S,它采用共享静态RAM存储器的方法,具有两套(左、右)独立的读写控制线,数据传输过程中两边CPU没有时序约束,符合荧光光谱数据传输不需要同步的要求。

本研究所设计的数据传输硬件电路框图如图2所示。

图2 数据传输电路框图

由于i.MX6Q的应用程序运行于LINUX操作系统下,还需要设计双口RAM的驱动程序,主要是配置读写时钟、存储空间映射、地址总线和数据总线等,最后结合硬件电路,完成如下文件操作结构体eimbus_fops中的系统调用函数的具体实现。

static struct file_operations eimbus_fops = {

.owner = THIS_MODULE,

.open = eimbus_open,

.release = eimbus_release,

.read = eimbus_read,

.write = eimbus_write,

.unlocked_ioctl = eimbus_ioctl,

.llseek = eimbus_seek,

.mmap = eimbus_mmap,

.fasync = eimbus_fasync,

};

i.MX6Q EIM总线的异步数据读写时序如图3所示。

图3 EIM总线异步模式读写时序

3.2 软件设计

3.2.1数据空间划分

双口RAM由于是数据共享,两侧CPU都能读写同一地址的数据,这就可能造成访问冲突,所以必须制定数据访问协议来解决共享冲突问题。如图4所示,将RAM空间划分成通信协议区和光谱数据区。

图4 双口RAM空间划分示意图

通信协议区大小为64K×16 bit,它的最高两个地址单元被称作“邮箱”,这两个单元一旦被一方写入数据,则会触发另一方的中断信号,另一方通过读取邮箱内容来获取对方的命令或信息。

ARM将要发送给DSP的命令写入LMAILBOX邮箱,这会触发DSP端的中断,DSP读出LMAILBOX的内容,根据命令执行数据采集动作。LMAILBOX 16 bit的定义如表1所示,分别表示数据采集初始化、开始、结束、放弃、暂停、恢复,设置采样率、帧序号,请求DSP软件版本号等命令,初始化命令的参数写入INITDATA区,其它命令的参数写入COMMAND_PARA区。

DSP向RMAILBOX邮箱写入自身的状态及事件信息,这会触发ARM端的中断,供其监控CCD数据采集系统状态。RMAILBOX 16 bit的定义如表2所示,前9个bit都是对ARM命令的回应,其中bit 8置1时同时将具体版本信息写入VERSION区,当CCD报错时,将 bit 9 置1,并把具体错误信息写入STATUS_EX区,DATATAIL、DATAHEAD、TFRAMNUM、HFRAMNUM四个区在光谱数据传输时使用。

表1 LMAILBOX 16 bit定义

表2 RMAILBOX 16 bit定义

光谱数据区大小为192K×16 bit,用于光谱数据的缓冲区,由右侧的DSP写入,左侧的ARM读出,由图4可知该区域是一段线性连续的、固定长度的共享存储空间。

3.2.2光谱数据区读写机制

由光谱数据分析可知,一帧空间校正数据为256K×16 bit,大于光谱数据区的容量,这就要求必须采用环形缓冲区读写的方式,如图5所示,环形缓冲区是一种先进先出的循环读写方式,在只有一个写用户和一个读用户方式下,天然具有互斥保护机制确保两个用户互斥访问数据区域。

图5 环形缓冲读写示意图

环形缓冲区有一个写指针和一个读指针,DSP拥有写指针,它以DATATAIL区存储的指针(偏移值)开始将数据写入可写区域后,用最新的写指针(偏移值)更新DATATAIL区,并用最新写入的数据帧序号更新TFRAMNUM区;同样的ARM定时读取数据,首先比较DATATAIL区与DATAHEAD区是否相等,如果相等表明没有数据更新,如果不相等则可以读取数据,它以DATAHEAD区存储的指针(偏移值)开始将数据读出,最后用最新的读指针(偏移值)更新DATAHEAD区,并用最新读取的数据帧序号更新HFRAMNUM区,具体读写流程如图6所示。

在这种方式下,DSP写入一帧完整的空间校正数据时,帧尾的数据必然覆盖了帧头的数据,覆盖大小为64K×16 bit,这就要根据数据采样率计算好ARM端读取数据的定时时间,保证在DSP写入周期内最少要读取64K×16 bit数据、在一个采样周期内必须读取完整的一帧数据,本文综合各方面情况将定时时间设定为1秒。光谱校正和STR检测时数据量少,不存在覆盖的问题,按照1秒的时间间隔读取数据是足够的。

图6 读、写流程图

4 测试验证

本研究所述荧光光谱数据传输系统已经应用在国产GA118-16A DNA分析仪上,使用16道毛细管阵列和IdentifilerTM、DNATyperTM15 PLUS等国内外主流试剂盒,成功生成了空间校正和光谱校正图谱。对DNATyperTM15 PLUS 进行等位基因分型标准物(Allelic ladder)的STR检测,分型图谱如图7所示,其含有的16个STR基因座分型准确,没有出现片段丢失现象。

5 结语

在对DNA分析仪荧光光谱数据分析的基础上,采用主从式处理器架构,以双口RAM作为数据传输的共享存储空间,成功设计了一套满足DNA分析仪要求的数据传输系统。目前,使用该系统的国产DNA分析仪已经销售了100多台(套),满足了公安机关刑事侦查、打拐、DNA库建设等方面的需要!

猜你喜欢

双口毛细管指针
毛细管气相色谱法测定3-氟-4-溴苯酚
垂悬指针检测与防御方法*
双口RAM在航天伺服系统中的应用
Matching mechanism analysis on an adaptive cycle engine
为什么表的指针都按照顺时针方向转动
超声萃取-毛细管电泳测定土壤中磺酰脲类除草剂
毛细管气相色谱法测定自酿葡萄酒中甲醇的含量
双口RAM读写正确性自动测试的有限状态机控制器设计方法
浅析C语言指针
用毛细管电泳检测牦牛、犏牛和藏黄牛乳中β-乳球蛋白的三种遗传变异体