文献标识码: A
DOI:10.16157/j.issn.0258-7998.2017.06.023
中文引用格式: 赵硕峰,张娟. 基于LabVIEW平台的嵌入式光谱强度检测系统设计[J].电子技术应用,2017,43(6):90-93.
英文引用格式: Zhao Shuofeng,Zhang Juan. Design of embedded spectral density measurement system based on LabVIEW[J].Application of Electronic Technique,2017,43(6):90-93.
0 引言
光谱分析作为一种鉴别物质以及确定其化学组成的有效手段,已经被广泛应用在食品、医药、环境检测、石油等领域。其原理就在于,每一种物质在一定条件下都存在物质本身的特征光谱,通过对这些光谱的研究,就可以获得物质的结构和成分,以及内部的能级结构和相互作用等信息。正因如此,国内外工作者投入了大量的研究和实验工作。
近年来以CCD(Charge Coupled Devices,电荷耦合器件)芯片和光纤为基础的光谱仪与拉曼光谱、LIBS(Laser-Induced Breakdown Spectroscopy)光谱、荧光光谱等技术结合,日益成为成分快速分析和生产过程实际测量手段。究其原因在于CCD灵敏度高,价格便宜,且基于CCD芯片的光谱仪不需要任何运动部件,可直接获得完整的光谱谱图,使得光谱仪器更为简单。
但使用CCD作为光探测元件,有一个关键的问题需要解决,即CCD器件包含众多像素,其工作需要严格的外部驱动。目前传统的驱动方式是以微控制器为核心、通过软件编写的方式产生驱动时序。此种驱动方式的局限为微控制器是基于顺序执行代码的工作方式,如果设计复杂,中断等模块较多,应用容易被速度和抖动所限制。FPGA最大的优点是使用非常灵活,在不改变外围电路的情况下,设计不同的片内逻辑就能实现不同的电路功能,从而缩短了系统的开发周期,节约成本。不仅如此,FPGA可以通过设计专用硬件逻辑,并发执行,速度快,时序准确。这种架构特别适合于大容量数据的实时传输、处理,可以很好地解决上述问题。
本文系统采用FPGA为CCD提供驱动时序脉冲和A/D采样电路的时序控制电路,同时采用ARM芯片为数据采集系统和上位机建立数据传输通道,并通过LabVIEW构建的图形化接口实时地显示测量数据。实验表明,系统可应用于光谱的快速实时精确测量。
1 光谱强度检测系统整体设计
整个系统结构框图如图1所示。采用FPGA作为控制核心,包括线阵CCD时序驱动电路、A/D采样电路的时序控制电路、Delay-M电路。外部硬件电路包括A/D采样电路、精密延时电路、微处理器、电源、逻辑转换及相关电路。通过FPGA控制外部电路,启动并采集光信号,然后存储到FPGA内部的RAM中。采集结束后,通过串口模块自动寻址把数据传送到电脑中。FPGA模块通过SPI(Serial Peripheral Interface)与STM32微处理器实现数据交换。LabVIEW上位机可以通过USB接口实现数据同步通信,还可以通过FPGA串口或STM32串口接收数据并显示。
2 系统各模块设计介绍
2.1 CCD模块电路
系统采用TSL1401作为感光元件,它是一款高灵敏度、低噪声和宽动态范围的线阵CCD器件。根据TSL1401的数据手册,CCD工作的电压为3~5 V,驱动频率为5~8 000 kHz,系统设计为4 V供电模式和250 kHz的时钟主频。
TSL1401共有128个像素点,在采集过程中,CCD采集的值与采集阶段的光强度和曝光时间是成正比的,当前第19个时钟到下一个SI开始的这段时间,就是下次信号采集需要的曝光时间,前18个时钟周期为积分器复位时间,第19个时钟开始,像素点开始随着时钟输出,数据率就是时钟的频率。值得注意的是,本周期采集的像素值是上个周期曝光时间产生的像素值。所以在设计中,第一个周期采集的像素值要舍弃,从第二个周期开始可以采集并保留值。在连续采集时,如果时钟速度比较快,曝光时间可以近似地认为是两个信号之间的时间,而忽略前19个时钟的影响。根据手册,TSL1401的最大曝光时间是100 ms,所以曝光时间不宜超过100 ms,因为即使超过100 ms,曝光效果和100 ms是一样的,而且在强光下长时间曝光可能造成CCD的永久损坏。所以系统测试时采用的曝光时间为25 ms,曝光时间要根据外界光强度来调节,避免曝光不足和过曝光的情况。
时序设计的设计方式为:对主时钟进行计数,以计数器的值作为参考,通过对计数器值的判定来决定信号脉冲的时刻与宽度,因为时钟参考是同步时钟,而且是并行的硬件电路,所以信号的时序很准确。同时利用计数器对主时钟进行计数,系统外接晶振为50 MHz,所以每200个周期翻转一次信号的值就是250 kHz的主时钟。通过调节两个信号间的时间间隔来调整第一次的曝光时间。
2.2 A/D采样电路
本模块为整个系统核心部分之一。采样的真实稳定决定系统的精度,CCD的时钟如果是250 kHz,系统设计数据率就应该是250 kS/s。故本设计中选取的AD7988-5就是最大500 kS/s的16位AD芯片。
外部A/D与微控制器内部集成的A/D相比,外部A/D芯片位数可以很多,速度可选,精度很高,而微控制器内部集成的A/D模块主要针对通用目的,位数很少有超过16位的,速度依系统时钟而定,但是数据率能到500 kHz的也不多见,且通用目的设计A/D在积分和微分非线性误差上表现不如专用的外部A/D芯片。
参考电压稳定度直接影响A/D转换精度,故为了避免电源波动给转换精度带来的影响,系统选取ADRA4540作为基准电压源。
对于A/D采集芯片AD7988-5,外部的时序驱动决定了数据采样的质量,在设计时应该注意在时序图的基础上保留一定的设计余量来应对实际问题的考验,包括传输延时、输入等效电容等实际分布参数。所以在500 kHz采样率的芯片,可以保证500 kHz以下的应用。但是如果到达最高使用速度,就需要外部时序和误差尽量小,故如果选择250 kHz的采样率,就为设计留下了很大的空间。
由AD7988-5数据手册可知最小采样时间和最大转换时间,这两个参数决定了采样的周期和CNV信号(转换使能信号)的高电平时间,而其他参数主要是为了让选取的时钟和CNV的时序满足传输延时和分布参数给系统带来的不确定性,本系统选取250 kHz的采样率,CNV采样时间设为2 μs,这样就满足了最大转换时间为1.6 μs的要求,而后采用10 MHz的时钟进行移位输出数据。
系统外接时钟为50 MHz,对于时钟的奇分频不能像偶分频一样,记数后翻转就行。对于奇分频的实质就是对一个要分频的周期时间进行平分。
AD7988-5三线制工作模式,决定了当前周期采集的数据是上一个周期的实际数据,因为在CNV为高电平时,先进行的是转换阶段,而后就自动进入采集模式,所以当前周期采集的就是下个周期需要的数据。这点需要注意,特别在精准数据操作的系统中需要格外注意。
2.3 存储时序与RAM模块
前端CCD工作频率和ADC的工作频率很高,每个像素点为16 bit,数据率为250 kHz,这样的数据量和速度,电脑串口根本没有办法满足要求。此时如果再采用FIFO(First Input First Output)更是不可取,因为数据写的速度非常快,而数据读的速度很慢,很容易就饱和,造成数据丢失。
系统选取了双端口的RAM,引用IP核中的RAM(16 bit,256 B),对于128个像素点的数据完全够用。双口RAM主要的优势就在于可以同时读写,系统设计为直接引用IP核的方式,这样的设计方式保证了设计准确性,同时也加快了设计的进程。但要注意写进RAM的时序要和ADC采样移位输出的数据时序相匹配,否则会造成数据大量丢失。
当进行RAM存储操作时需要注意:当存储上升沿到来之时,写使能、写地址和数据必须准备好,只有这样在写时钟的上升沿到来之时才能保证数据被写入相应地址的RAM当中。所以系统采用A/D采样信号同步产生的RAM读写的时序,有CNV信号下降沿的累积形成地址,设置16位移位寄存器,保存ADC输出的数据,然后CNV上升沿到来时,上个信号的数据存入RAM。
2.4 数据传输模块设计
串口是一种常见的接口方式,常用于低速、小数据量的传送方案中。
为了数据传输的稳定可靠,故选择波特率为9 600 b/s(即:接收一个比特的时间为1 s/9 600=104 μs,每隔104 μs发送一个数据),系统主时钟为50 MHz,则一个系统时钟周期时间为20 ns,远小于104 μs,所以可以通过计数器对主时钟进行计数,然后根据计数器的值来打拍发送数据。
串口模块只会被动地发送数据,并不能对RAM中存储的数据自动寻址发送和做相应的控制。由于串口通常只有8个数据位,需要传输两次,所以两个传输周期的地址是一样的,用同步时钟计数器产生两倍的串口周期用于自动累加形成地址。
这种设计在理论上没有问题,但结合实际应用电路就会出现问题。在应用的IP核RAM中,输入端口会有一个寄存器,这在开始就会造成一个时钟周期的延时,才能使地址和数据存进RAM。虽然存放数据只是延时一个时钟周期,但用串口模块自动读取数据时就会产生时序的错乱。
所以在具体设计时,输出口的寄存器可以选择去掉,但输入口的寄存器必须存在。在读取时钟上升沿到来之时,读使能、读地址必须提前就位。只有这样,当读时钟的上升沿到来时才会读出相应地址存储的值,因为数据和地址的输入必须要维持一个稳定的时间,这个时间就是时钟周期。所以一个读取周期应该是3个串口周期,这样第一个串口周期什么都不做,只是把使能信号和地址送进RAM,后两个周期的上升沿到来时把数据分2个8位输出。
2.5 LabVIEW上位机模块
主要用到的节点是串口配置节点,即VISA功能块中提供的相关节点。由于LabVIEW串口接收的都是字符串的格式,而且串口一般接收8位数,所以接收时需要数据的重组,选取了字符串平化的数据节点,可以选取字符串平化至相关数据类型,在输出类型中选择16 bit无符号数,这样就可以直接输出到数据图中直观地看到接收到的数据。
LabVIEW上位机程序设计流程为:先建立串口模块即引用VISA模块,之后设立缓存区的大小,设立等待时间,等待时间为前面板可输入的控件,设置的串口等待时间必须大于串口发送的时间,否则会造成数据传输不完全,造成数据丢失,最后就是数据的拼接和转化部分,利用平化节点,使得每两位数据组成一个16 bit的无符号类型的十进制数并在波形图中显示。
3 实验结果
在QUARTUS软件中编程结束后,可以进行语法编译,检验语法是否有错误。此时的编译不能确定设计是否满足需求,只有运用可综合的Verilog HDL语句才能进行RTL级设计,全编译后生成的就是综合后的电路,也是系统设计的目标。接下来,可以进行RTL级的仿真以及门级仿真来验证设计在时序上是否满足要求。门级仿真已经很接近实际情况,如果门级仿真满足要求,就可以将编译过后的程序下载到FPGA中,进行最后的实际系统的调试。
图2所示为扫描物体和扫描数据上下对比图,当扫描视野中全为白色时,CCD的值在2 000~35 000之间,呈现的是中间高两头低的情况。这与理论有出入的原因在于:CCD的镜头是通过透镜成像,透镜本身就决定了越是靠近中轴部分光发生的折射越少,中轴线的光为直射,中间部分的光比两边强,所以CCD成像的值反应出来就是中间值比较大,很好的对称性也证明了这一点。
当扫描视野全部是黑的时,CCD扫描的一行图像的值基本都一样,在0~5 000之间,这很好地验证了在全白光时的结论,同时有光和无光有明显的区别。
当扫描视野中有一条黑线时,扫描的值很明显地出现一块凹陷的值,并且是连续变化的。通过这3组对比的结论可知,系统实验结果满足实验预期。
在初步的全白扫描和全黑实验后,为了进一步验证系统的稳定性和可靠性,做了如图3所示的3组实验,分别为1条黑线、2条黑线、3条黑线,扫描对应的值以上下对照的形式给出。从实验结果可以看到,对于不同的扫描物体,CCD同样可以明显区分不同条纹物体,实验值符合理论的预期。
4 结束语
本文提出了一种低成本易集成的光谱强度测量系统,设计并制作了A/D采样电路。根据TSL1401采集时序编写相应的A/D采样时序和存储时序,对转化后的数字信号按地址存储到FPGA内部RAM中。采集结束后,串口模块自动寻址发送RAM中存储的数据,LabVIEW上位机可通过串口接收数据并显示。实验结果表明,实验数据符合理论的预期,可广泛应用于光谱强度的实时快速精确测量。
参考文献
[1] 刘胜,张兰勇,章佳荣,等.LabVIEW 2009程序设计[M].北京:电子工业出版社,2010.
[2] 米本和也.CCD/CMOS图像传感器基础与应用[M].北京:科学出版社,2006.
[3] 陈树学,刘萱.LabVIEW宝典[M].北京:电子工业出版社,2011.
[4] 姚远,李辰.FPGA应用开发入门与典型实例[M].北京:人民邮电出版社,2010.
[5] 汤琦.Xilinx FPGA高级设计及应用[M].北京:电子工业出版社,2012.
[6] 翟晶晶.基于电子快门自动增益的CCD驱动电路研究[J].现代电子技术,2010,33(19):188-190.
[7] 王庆有.光电传感器应用技术[M].北京:机械工业出版社,2014.
[8] 马克斯菲尔德.FPGA设计指南:器件、工具和流程[M].北京:人民邮电出版社,2007.
[9] 朱仁盛,曲波.光电传感器及其应用[M].北京:化学工业出版社,2004.
作者信息:
赵硕峰1,张 娟2
(1.温州医科大学 仁济学院,浙江 温州325035;2.温州医科大学 生物医学工程学院,浙江 温州325035)