DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1649|回复: 1
打印 上一主题 下一主题

[待整理] 基于FPGA的生物芯片扫描仪的位置检测

[复制链接]
跳转到指定楼层
楼主
发表于 2014-10-5 13:55:58 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
基于FPGA的生物芯片扫描仪的位置检测

摘 要: 基于FPGA实现了生物芯片扫描仪中X-Y二维扫描台的位置检测电路,解决原有电路存在的计数误差和误清零问题,提高系统的可靠性。详细阐述了FPGA中辨向细分、可逆计数器,接口电路的设计实现,并给出了仿真波形。
关键词: FPGA;位置检测;辨向;细分;可逆计数


引言
   
生物芯片是20世纪末随“人类基因组计划”的研究和发展而产生的一项高新技术,是人们高效地大规模获取生物信息的有效手段。目前大部分生物芯片采用荧光染料标记待测样品分子。生物芯片扫描仪用激光激发荧光染料,通过对激发点的成像,检测一个点;结合生物芯片X-Y二维精密扫描台上移动,实现对整片的扫描。 X-Y二维扫描台的位置检测精度直接影响着扫描分辨率——生物芯片扫描仪性能的关键参数。基于传统的数字电路的生物芯片扫描仪中X-Y二维扫描台的位置检测电路存在计数误差和误清零问题,本文以基于FPGA设计的位置检测电路来解决。以FPGA芯片代替传统的数字电路,不仅可提高系统的集成度和可靠性,而且FPGA最高工作频率已超过200MHz,通过硬件描述语言对FPGA编程,电路设计更加灵活,为生物芯片扫描仪进一步提高扫描速度和扫描分辨率留了更大的裕量。

1 X-Y二维扫描台位置检测原理

图1 2

    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设计方案

图3

    选用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°(位移方向为负),XCD就会输出四个负脉冲,同时实现了辨向与细分功能。

2.2 可逆计数器设计

    用两个16位二进制计数器对两路脉冲信号XCU、XCD分别计数,然后用一个16位减法器对此两个计数器的计数值作差,被减数为XCU的计数值XUPCNT,减数为对XCD的计数值XDOWNCNT,其差作为X向的位置数据XCNT。这样, XCU有计数脉冲时,XCNT就会增加,而XCD有计数脉冲时,XCNT就会减小,实现了可逆计数。结合前面的辨向细分电路,使X向的位置数据在正向位移时增加,反向位移时减少。位置数据的变化真实反映了位移情况。

2.3 接口电路设计
   
接口电路是控制器实时可靠读取X向、Y向的位置数据或清零的接口。接口电路由译码电路、输出三态缓冲器组成。接口电路与控制器的16位数据线CNT用于FPGA向控制器传送位置数据,控制器的3位地址线ADDR作为译码电路的输入:能分别输出X、Y向位置数据,以及分别对X、Y向计数器清零。译码电路可使X向、Y向位置数据复用16位数据线,高效的利用控制器的端口资源;对3位地址信号译码产生清零信号,能有效地防止在只使用一根信号线时受干扰等原因而引起的误清零现象。
3 设计仿真和实现
   
在 ISE6.1i 开发平台上,用VHDL语言对辨向细分、计数、接口电路进行编程实现。图4是仿真波形。

图4

    由图4可看出,X、Y向可并行的对光栅信号辨向、细分、计数,下面只以X向说明:辨向细分电路根据两路正交的方波信号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表现为高阻态;当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

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-12-27 17:45 , 耗时 0.095582 秒, 21 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表