1、基于 FPGA 的生物芯片扫描仪的位置检测!摘 要: 基于 FPGA 实现了生物芯片扫描仪中 X-Y 二维扫描台的位置检测电路,解决原有电路存在的计数误差和误清零问题,提高系统的可靠性。详细阐述了 FPGA 中辨向细分、可逆计数器,接口电路的设计实现,并给出了仿真波形。 关键词: FPGA;位置检测;辨向;细分;可逆计数 引言 - 生物芯片是 20 世纪末随 “人类基因组计划”的研究和发展而产生的一项高新技术,是人们高效地大规模获取生物信息的有效手段。目前大部分生物芯片采用荧光染料标记待测样品分子。生物芯片扫描仪用激光激发荧光染料,通过对激发点的成像,检测一个点;结合生物芯片 X-Y 二维精密
2、扫描台上移动,实现对整片的扫描。 X-Y 二维扫描台的位置检测精度直接影响着扫描分辨率生物芯片扫描仪性能的关键参数。基于传统的数字电路的生物芯片扫描仪中 X-Y 二维扫描台的位置检测电路存在计数误差和误清零问题,本文以基于FPGA 设计的位置检测电路来解决。以 FPGA 芯片代替传统的数字电路,不仅可提高系统的集成度和可靠性,而且 FPGA 最高工作频率已超过 200MHz,通过硬件描述语言对 FPGA编程,电路设计更加灵活,为生物芯片扫描仪进一步提高扫描速度和扫描分辨率留了更大的裕量。 1 X-Y 二维扫描台位置检测原理 图 1 2- X-Y 二维扫描台 X 向、Y 向位置检测元件采用开式光
3、栅,50 线/mm, 由专用细分尺 10 细分后,测量分辨为 2m。开式光栅直接利用光电转换原理输出三相方波 A、B、Z 相。A、B 相方波相位差 90(如图 1、2 所示) ,Z 相用于基准点定位,其逻辑电平都为 5V。当A 相方波超前 B 相方波 90时,表示位移方向为正方向,如图 1 所示;当 A 相方波滞后 B相方波 90时,表示位移方向为反方向,如图 2 所示。扫描台 X 向、Y 向每位移 2m,光栅发出一个周期的方波。 - 因此,X-Y 二维扫描台的位置检测首先要解决对光栅信号的辨向问题,辨别出 X、Y 向的位移方向;其次,为保证生物芯片扫描在最高扫描分辨率为 5m 时仍有较高扫描
4、质量,X、Y 方向位置检测精度应高于 2m,以减少扫描台的定位误差,因此要对光栅信号进一步细分;此外,还要完成将光栅信号转换成控制器能读取的位置数据,当 X 向、Y 向位移方向为正时,此位置数据递增;当 X 向、Y 向位移方向为负时,此位置数递减,并要保证实时的准确可靠的提供 X、Y 向的位置数据,作为控制器(如单片机、 DSP)精确定位 X-Y二维扫描台位置的依据。 - 原有的生物芯片扫描仪中 X-Y 二维扫描台的一个方向的位置检测采用 4 倍频专用集成电路 QA740210 对光栅信号进行辨向、细分,用 4 片 4 位二进制 74LS193 计数器级联实现对细分后的光栅信号 16 位计数,
5、计数值(即位置数据)通过 2 片 8 位 74LS245 缓冲器输出至控制器。这样,X、Y 两个方向的位置检测电路多达 14 片芯片,占用大量的 PCB 空间,布线复杂,板上信号间的串扰易引起计数误差和误清零现象,影响扫描台的精确定位。若只用一片 FPGA 实现位置检测电路,输入为光栅信号,输出即为位置数据,直接送入控制器,避免 PCB 板间信号串扰,就能有效消除计数误差和误清零现象。 2 X-Y 二维扫描台位置检测的 FPGA 设计方案 图 3- 选用 Spartan-II 系列 FPGA(XC2S15-5VQ100)作为 X-Y 二维扫描台的位置检测电路,并行的对 X、Y 两路光栅信号的进
6、行辨向、细分、计数,并提供与控制器的接口,实时可靠的将 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
7、.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
8、_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(位移方向为负) ,XCD 就会输出四个负脉冲,同时实现了辨向与细分功能。 2.2 可逆计数器设计 - 用两个 16 位二进制计数
9、器对两路脉冲信号 XCU、XCD 分别计数,然后用一个 16 位减法器对此两个计数器的计数值作差,被减数为 XCU 的计数值 XUPCNT,减数为对 XCD 的计数值 XDOWNCNT,其差作为 X 向的位置数据 XCNT。这样, XCU 有计数脉冲时,XCNT 就会增加,而 XCD 有计数脉冲时,XCNT 就会减小,实现了可逆计数。结合前面的辨向细分电路,使 X 向的位置数据在正向位移时增加,反向位移时减少。位置数据的变化真实反映了位移情况。 2.3 接口电路设计 - 接口电路是控制器实时可靠读取 X 向、Y 向的位置数据或清零的接口。接口电路由译码电路、输出三态缓冲器组成。接口电路与控制器
10、的 16 位数据线 CNT 用于 FPGA 向控制器传送位置数据,控制器的 3 位地址线 ADDR 作为译码电路的输入:能分别输出 X、Y 向位置数据,以及分别对 X、Y 向计数器清零。译码电路可使 X 向、Y 向位置数据复用 16 位数据线,高效的利用控制器的端口资源;对 3 位地址信号译码产生清零信号,能有效地防止在只使用一根信号线时受干扰等原因而引起的误清零现象。 3 设计仿真和实现 - 在 ISE6.1i 开发平台上,用 VHDL 语言对辨向细分、计数、接口电路进行编程实现。图4 是仿真波形。 图 4- 由图 4 可看出, X、Y 向可并行的对光栅信号辨向、细分、计数,下面只以 X 向
11、说明:辨向细分电路根据两路正交的方波信号 XA、XB 的相位差分别在 XCU, XCD 上输出频率为XA、XB4 倍的计数脉冲,实现了辨向细分;可逆计数器分别对 XA、XB 计数,计数值的差 XCNT 随 X 向的位移方向的变化增加或减少;当控制器的地址译码信号 ADDR 为“101”时, X 向的位置数据 XCNT 输出到 16 位数据线 CNT;当 ADDR 为“110”时,FPGA 将 Y向的位置数据 YCNT 输出到 CNT;当地址线 ADDR 为“001”时,X 向位置数据 XCNT 清零,CNT 表现为高阻态;当 ADDR 为“010”时,Y 向位置数据 YCNT 清零, CNT
12、表现为高阻态;当 ADDR 为其他任意值时,CNT 都表现为高阻态,使控制器能向其他外设交换数据。将代码下载到 XC2S15-5VQ100 后,用于生物芯片扫描仪中,准确可靠的实现了位置检测功能。 4 结论 - 用 FPGA 实现 X-Y 二维扫描台的位置检测电路,提高了系统的集成度,位置检测快速可靠。并且,FPGA 工作频率高、设计灵活,可减少生物芯片扫描仪进一步提升扫描速度和扫描分辨率的开发时间和成本。 参考文献 1 James R.Armstrong, F.Gail Gray. VHDL Design Representation and Synthesis. Prentice Hall PTR, Inc.2003 2 Xilinx DS001 September 3,2003