美章网 资料文库 多路数据采集与处理系统设计范文

多路数据采集与处理系统设计范文

本站小编为你精心准备了多路数据采集与处理系统设计参考范文,愿这些范文能点燃您思维的火花,激发您的写作灵感。欢迎深入阅读并收藏。

多路数据采集与处理系统设计

《深圳大学学报》2016年第一期

摘要:

针对血液分析仪需在8s内完成4路血细胞和1路状态信号数据采集、处理的要求,设计一套基于现场可编程门阵列的多路数据采集处理系统.系统实现5路数模转换的并行数据采集、数据处理,并通过串行外设接口通讯接口将处理的数据上传至ARM主机.临床试用结果表明,系统数据采集和处理的方法完全满足血液分析仪对测试速度的要求,仪器性能指标达到了国家注册检验的要求.

关键词:

信息处理技术;血液分析仪;数据采集;现场可编程门阵列;数模转换器;串行外设接口

传统血液分析仪大多采用ARM作为控制器,在实际应用中每个ARM工作时钟内只能对1路血细胞信号进行采样,造成采样速率慢,易导致线程死锁等现象[1].其次,ARM控制器为串行指令工作方式[2],其有限资源难以完成血液分析仪复杂的控制动作,影响了系统的实时性.另外,随着对血液分析仪检测与诊断水平要求的提高,其控制系统也在不断更新升级,这就要求控制电路具有较好的灵活性,以降低仪器更新升级的成本.实际测试结果表明,血液分析仪需在1min内完成单个测试分析动作,包括采集4路血细胞信号和1路状态信号,5路数据总共所占存储空间大小约为110Mbyte.根据设计开发要求,血液分析仪的单个测试分析动作需在60s内完成,而控制电磁阀和电机等动作部分占据大量时间,所以留给数据采样及处理的时间仅有8s左右.若先将采样数据存入同步动态随机存储器(synchronousdynamicrandomaccessmemory,SDRAM)模块,再统一上传,耗时就会超过设计要求,要想达到设计要求则只能缩短采样时间.采样时间越短,所采集的细胞个数就越少,这时,任何细胞个数的波动都会对细胞整体计数造成很大影响,使仪器性能不稳定.为解决采样时间、系统可靠性及准确性之间的矛盾,系统采用ARM(管理级)+FPGA(基础自动化级)的两级控制系统的方法[3-5],本研究选择现场可编程门阵列(fieldprogrammablegatearray,FPGA)作为血液分析仪控制系统的核心,利用其并行工作特点,在完成多路信号并行采样、数据处理等工作的同时,完成血液分析仪的控制动作,也可满足系统不断更新升级的需要.

1系统总体框架设计

本研究设计的5路并行数据采集、处理系统,如图1.其中,包括4路的白细胞、红细胞、血小板、血红蛋白和1路状态信号(压力、小孔电压和试剂)的数据采集、处理的控制模块共同组成血液分析仪多路数据采集与处理系统[6-8].设计时考虑到节约硬件资源及成本,采用1片8路分时选通的CD4051芯片,用于切换不同的状态检测信号,CD4051的输出端连接到模数转换器(analogtodig-italconverter,A/D)的输入端,完成状态参数的检测.在信号采集的同时,针对不同信号进行对应的数据处理,然后将处理的数据缓存于随机存储器(randomaccessmemory,RAM)模块,RAM模块存满后,再通过数据存储控制模块将细胞特征存储于SDRAM中,最后上传至ARM主机.

2模块设计与实现

2.1A/D芯片的选择与控制A/D芯片若采用并行数据传输方式,硬件上至少需要14根信号线连接,而选择串行外设接口(serialperipheralinterface,SPI)控制方式,硬件上只需3根信号线进行连接,分别为CS、CLK和SDO[9-10];每路A/D至少可节约11个FPGA通用输入/输出(input/output,I/O)端口并简化硬件连线.同时,根据实际测试可知,经过放大后的血细胞脉冲电压幅值约为0.4~5.0V,频率约为500Hz~70kHz,依据采样定理,采样频率必须大于等于信号变化频率的2倍,才能将信号还原,而实际工程上一般都取5~10倍以上.因此,本研究选用TI公司的带SPI控制方式的芯片ADS7883,其采样频率最高可达3×106次/s(millionsamplespersecond,MSPS),能更好的复原被采样波形的包络线,提高细胞的识别精度.ADS7883工作时序图如图2.工作过程为:当SPI的时钟信号SCLK传送到A/D的SCLK引脚时,A/D开始工作;当SPI的CS下降沿传送到A/D的CS引脚时,开始转换;A/D进行转换操作是在CS为低电平的状态下;当CS上升沿到来时,A/D转换工作结束.A/D进行转换的周期为16帧,但是CS可以在任何时间进行中断(拉高),此时SDO数据线处于3态,CS为高电平.当CS再次变为低电平时开始下一个模/数转换周期,因此每个数据的实际采样周期为18=(16+2)个时钟.图3是血红细胞A/D采样电路原理图.红细胞脉冲微信号经过放大后的电压信号RBC是A/D芯片的输入信号.引脚CS、SDO和SCLK是A/D芯片SPI串行工作方式的3条连接线路,分别为片选、数据线和时钟,分别连接到FPGA对应的I/O引脚上;DAD4是保护A/D芯片的稳压二极管,可限制A/D的输入信号在5V以下.FPGA接收到A/D转换后的数据后,通过细胞识别模块,利用细胞识别算法进行细胞识别[11],再将识别后的细胞特征值传递给RAM缓存模块进行缓存.

2.2RAM数据缓存模块的设计细胞识别模块通过对采样波形的分析,对细胞脉冲进行识别,并记录血细胞脉冲的最大高度和最大宽度,将其缓存于FPGA内置的双口RAM模块中[12].本研究选用的FPGA芯片EP2C20F484C8,其内部RAM模块寄存器转换级(registertransferlevel,RTL)电路如图4.其中,rdclock为数据读取时钟;wrclock为数据写入时钟;wren为RAM模块的写使能信号;data[15∶0]为16bit的写入数据;rdaddress[8∶0]为9bit的数据读取地址信号线;wdaddress[8∶0]为9bit的数据写入地址信号线;q[15∶0]为16bit的读出数据.在采样过程中,RAM缓存控制模块收到细胞特征值存储请求后,首先将细胞高度值传递给data[15∶0],然后将数据写使能wren置1,再给一个wrclock写脉冲信号,将细胞高度值写入RAM模块中,同时数据写入地址加1,准备写入下一个细胞特征值.由于实际采样频率为50/18=2.78MHz,而数据传输频率为50MHz,为了达到采样与存储的时钟匹配,本研究采用数据乒乓存储操作,保证数据的连续性和准确性.具体实现方式为:在设计过程中,先将RAM中512个存储单元,分成2个256存储单元使用.采样开始时,首先将细胞特征值存储于第1个256存储单元,当第1个存储单元存满后,开始将细胞特征值存储于第2个256存储单元,同时,将第1个存储单元的数据,转存到SDRAM中.第2个256存储单元存满后,再将细胞特征值存储于第1个256存储单元,同时,将第2个256存储单元的数据转存到SDRAM中.如此反复操作,实现了数据存储的乒乓操作,既保证了数据存储的连续性,又保证了实时性.数据存储乒乓操作过程如图5.

2.3SDRAM存储模块的设计由于RAM模块仅有512个存储单元,而每路细胞特征值最高可达1×105个数据点,只有4个RAM缓存模块,分别存储不同细胞信号的特征值,因此,当RAM模块存储满后,需将数据进行转存.本研究选择2片Micron(美国镁光)公司的MT48LC16M16A2P芯片进行数据存储[13],其内存带宽为133MHz,每片存储空间有32MByte,每片SDRAM芯片对应存储2个RAM模块数据.将SDRAM的各个引脚连接到FPGA相对应的引脚上,并定义好FPGA引脚功能定义,其中,SDRAM的CLK引脚连接到FPGA的锁相环(phaselockedloop,PLL)时钟输出引脚上,在实现SDRAM存储时,可通过PLL进行倍频,以提高SDRAM的读写速度.在采样过程中,数据的存储与读取通过SDRAM控制器实现.由于每片SDRAM模块对应存储2个RAM模块的数据,因此,将SDRAM的32Mbyte空间分成2个16Mbyte空间,分别存储2个RAM模块的数据.数据存储时,SDRAM控制器通过切换数据存储地址实现数据的正确存储.采样开始后,SDRAM控制器首先检测第1个RAM模块是否有数据存储请求信号,即req_1是否为1,如不为1,则检测第2个RAM模块是否有数据存储请求信号,即req_2是否为1,如不为1,则再次检测req_1信号.当req_1=1后,则将第1个RAM模块中的数据读出,存储到SDRAM模块中,数据存储完成后,再检测req_2信号.这样就实现了存储完第1个RAM模块的数据后,首先检测第2个RAM模块是否有数据存储请求,保证了每个RAM模块的数据均能及时存储到SDRAM中,避免了数据丢失或阻塞现象.

2.4SPI数据通讯模块的设计血液分析仪单个分析动作所采集的细胞总数最多约为15万个,处理过程中需取每个细胞的宽度和高度两个细胞特征值,因此,FPGA需反馈给ARM处理器的总数据量最多约为30万个,每个数据点为16bit,因此总数据量为0.6Mbyte.根据设计要求,数据上传耗时仅1s,SPI理论传输速率为25Mbyte.为保证通讯可靠,本研究采用12MHz的控制时钟,则SPI传输速率为1.5Mbyte,因此数据传输完成总时间为0.4s,可满足设计要求.SPI通讯连接示意图如图6.由于上下位机之间连线较少,因此提高了整个系统的稳定性与可靠性.FPGA需将采集的数据通过SPI接口上传给ARM进行分析管理,此时ARM作为主机,FPGA作为从机.具体流程如图7,FPGA通过REQ信号向ARM发出数据发送请求;ARM收到请求信号后,启动SPI控制器控制FPGA的SPI模块进行数据发送,再将CS置为0,然后发出16个CLK脉冲时钟,每个CLK的上升沿通过SPI的MOSI向ARM发送1bit数据,高位在前,低位在后,数据发送完毕后,将CS置为1.FPGA的采样数据均为12bit,ARM的控制器发出的SPI时钟为16bit,因此数据发送时,以1个16bit的数据为1个单位,FPGA中数据不足的位补0,即每发出1个REQ请求信号,上传2byte给ARM,直到数据传送完为止,停止REQ的请求.

3系统数据验证

为验证系统数据采集及处理的正确性,针对A/D采样部分,本研究以3V直流电压源为输入到5路A/D行采样,同时运用FPGA编程软件QuartusII[14]自带的SignalTap逻辑分析仪进行在线观测.从A/D采样、AD输入到SDRAM、SDRAM数据存储与读取、SPI通讯4方面对系统进行了测试分析,验证数据的正确性.

3.1A/D采样数据的验证测试过程中输入信号为约3.07V的直流源,对应的十进制A/D数据为3.07×4095/5=2514.若5路A/D转换器采集电压值对应的十进制值都在2514左右范围内,则采样的数据是准确的,否则错误.当控制5路A/D采样的SPI时钟完全同步时,由图8可知,同时段内采集的电压值相同且都在误差允许范围内,说明5路A/D采样的数据准确.

3.2AD输入到SDRAM数据链路验证为验证从AD输入到SDRAM输出的数据链路的正确性和完整性,采用SignalTab工具观测SDRAM输出数据是否与AD输入保持一致.图9为SignalTab观测的SDRAM数据输出时序图.其中,S_enable为读SDRAM的使能信号.当S_enable为高电平时,开始读取SDRAM的数据.参考图8可知,SDRAM输出数据与AD输出数据完全一致,无丢失和错码,说明从AD输入到SDRAM输出链路数据正确且完整.

3.3SDRAM数据存储与读取的验证数据处理完毕,通过将细胞特征值用1~4095依次递增的循环数进行代替,验证数据存储与读取的正确性与完整性.图10为1路RAM模块将256个连续数据存储到SDRAM模块的时序图.当第1个缓存模块r_req发出数据发送请求后,SDRAM数据存储控制模块起始地址为数据存储起始地址saddr1,同时将缓存中的数据存入SDRAM中.由图10可知,data-in寄存器存储数据为1~256,共256个数据.然后,停止数据存储,此时白细胞数据存储起始地址saddr1由开始的0000H变为0100H,共增加了256,数据存储位数和地址变化正确.为进一步验证数据的正确性,放大后的逻辑分析仪效果图如图11.数据寄存器data-in中的数据由1开始递增变化,数据存储正确.由图12可知,当数据读取请求信号req发出时,SDRAM读取控制器开始读取SDRAM中的数据,每次请求数据读取的总数为256个,同时将数据存储到RAM中.数据读取起始地址由0开始,每读完256个数据,读取的起始地址加256,当读取完4次256个数据后,停止数据读取.因此可知,数据读取个数与数据读取起始地址变化正确.为进一步验证数据读取的正确性,放大后的逻辑分析仪效果如图13.数据输出寄存器data-out中的数据,由1开始依次递增,因此,SDRAM读取出来是正确的,同时也再次验证了存入SDRAM模拟数据的正确性.

3.4数据传输验证采样结束后,需将SDRAM中的数据通过SPI通讯接口上传给ARM主处理.具体的处理过程为:SPI在ARM主处理器的控制下,首先将CS置为0,然后发出CLK时钟信号,每个CLK的上升沿将数据逐位通过MOSI发送出去,数据发送完后,将CS置为1.由图14可知,数据发送寄存器data-out为依次递增的数列,数据正确且完整,验证了数据发送正确性及完整性.

4结语

设计一种基于FPGA的多路数据采集与处理系统,实现了5路A/D的并行数据采样、处理的功能.采用A/D芯片的串行SPI控制接口,节省了FPGA的硬件资源;2.78MSPS采样速度达到了血液分析仪采样速率的要求;乒乓存储操作的方式,良好地匹配了数据采样与存储的时钟.系统不但满足了血液分析仪对数据采集、处理的要求,也可根据实际需求,实现对硬件电路的升级.与传统数据采集系统相比,本系统具有运行稳定可靠、实时性强、灵活性好等特点,对性比价高的血液分析仪的研制具有一定的参考价值.

作者:詹从来 龙伟 丁远超 李富贵 单位:南昌大学信息工程学院