基于FPGA的生物芯片扫描仪位置检测系统设计
引言
生物芯片是20世纪末随"人类基因组计划"的研究和发展而产生的一项高新技术,是人们高效地大规模获取生物信息的有效手段。目前大部分生物芯片采用荧光染料标记待测样品分子。生物芯片扫描仪用激光激发荧光染料,通过对激发点的成像,检测一个点;结合生物芯片X-Y二维精密扫描台上移动,实现对整片的扫描。 X-Y二维扫描台的位置检测精度直接影响着扫描分辨率——生物芯片扫描仪性能的关键参数。基于传统的数字电路的生物芯片扫描仪中X-Y二维扫描台的位置检测电路存在计数误差和误清零问题,本文以基于FPGA设计的位置检测电路来解决。以FPGA芯片代替传统的数字电路,不仅可提高系统的集成度和可靠性,而且FPGA最高工作频率已超过200MHz,通过硬件描述语言对FPGA编程,电路设计更加灵活,为生物芯片扫描仪进一步提高扫描速度和扫描分辨率留了更大的裕量。
1、X-Y二维扫描台位置检测原理
X-Y二维扫描台X向、Y向位置检测元件采用开式光栅,50线/mm,由专用细分尺10细分后,测量分辨为2μm.开式光栅直接利用光电转换原理输出三相方波A、B、Z相。A、B相方波相位差90°(如图1、2所示),Z相用于基准点定位,其逻辑电平都为5V.当A相方波超前B相方波90°时,表示位移方向为正方向,如图1所示;当A相方波滞后B相方波90°时,表示位移方向为反方向,如图2所示。扫描台X向、Y向每位移2μm,光栅发出一个周期的方波。
因此,X-Y二维扫描台的位置检测首先要解决对光栅信号的辨向问题,辨别出X、Y向的位移方向;其次,为保证生物芯片扫描在最高扫描分辨率为5μm时仍有较高扫描质量,X、Y方向位置检测精度应高于2μm,以减少扫描台的定位误差,因此要对光栅信号进一步细分;此外,还要完成将光栅信号转换成控制器能读取的位置数据,当X向、Y向位移方向为正时,此位置数据递增;当X向、Y向位移方向为负时,此位置数递减,并要保证实时的准确可靠的提供X、Y向的位置数据,作为控制器(如单片机、DSP)精确定位X-Y二维扫描台位置的依据。
原有的生物芯片扫描仪中X-Y二维扫描台的一个方向的位置检测采用4倍频专用集成电路QA740210对光栅信号进行辨向、细分,用4片4位二进制 74LS193计数器级联实现对细分后的光栅信号16位计数,计数值(即位置数据)通过2片8位74LS245缓冲器输出至控制器。这样,X、Y两个方向的位置检测电路多达14片芯片,占用大量的PCB空间,布线复杂,板上信号间的串扰易引起计数误差和误清零现象,影响扫描台的精确定位。若只用一片 FPGA实现位置检测电路,输入为光栅信号,输出即为位置数据,直接送入控制器,避免PCB板间信号串扰,就能有效消除计数误差和误清零现象。
2、X-Y二维扫描台位置检测的FPGA设计方案
选用Spartan-II系列FPGA(XC2S15-5VQ100)作为X-Y二维扫描台的位置检测电路,并行的对X、Y两路光栅信号的进行辨向、细分、计数,并提供与控制器的接口,实时可靠的将X、Y向位置数据传送给控制器。
FPGA内部模块划分如图3所示:从X向光栅来的A、B两相方波信号XA,XB由X向辨向细分电路辨向细分后,输出两路脉冲信号XCU、XCD,16位计数模块分别对这两路脉冲信号进行计数,并将两计数值XUPCNT、XDOWNCNT相减,其差作为X向的16位位置数据XCNT.接口电路对3位地址信号 ADDR译码,通过XCLR、YCLR对X、Y计数器分别清零,并选通X向或Y向位置数据输出到控制器。
对Y向同样如此。本论文只以X向说明之。
2.1、辨向细分设计
由图1和图2可知,当光栅正向移动时,A相、B相的电平逻辑表现为"00"→"10"→"11"→"01"→"00"序列;当光栅反向移动时,A相、B相的电平逻辑表现为"00"→"01"→"11"→"10"→"00"序列。因此,只要能辨别出这两种序列,就能实现辨向。
引入外部频率为10MHz的时钟源,利用这个时钟的上升沿同时对A相、B相信号采样,作为当前XA、XB值,以二维向量AB_new记之,AB_new通过一级触发器后,记为AB_old,AB_new和AB_old都跟随A相、B相方波信号变化而变化,只是AB_old要滞后AB_new一个采样时钟周期。这样,就可以将AB_old和AB_new进行比较:当AB_old为"00"时,若AB_new为"10",即A相超B相前90°,XCU输出一个负脉冲,XCD保持为高电平不变;若AB_new为"01",即A相滞后B相90°,XCD输出一个负脉冲,XCU保持为高电平不变。X向光栅信号变化一个周期,如果A相超B相90°(位移方向为正),XCU就会输出四个负脉冲,如果A相滞后B相90°(位移方向为负),
- N进制异步计数器设计方法(03-10)
- 看高电压放大器如何把库仑计数器范围扩展至±270V(08-28)
- 用双色LED指示10种状态的电路(04-17)
- 如何应对常见的在线烧录异常情况(02-24)
- 51单片机计数器与定时器的区别(05-20)
- FPGA verilog实现的1602时钟计数器(02-11)