摘 要: 基于FPGA实现了生物芯片扫描仪中X-Y二维扫描台的位置检测电路,解决原有电路存在的计数误差和误清零问题,提高系统的可靠性。详细阐述了FPGA中辨向细分、可逆计数器,接口电路的设计实现,并给出了仿真波形。
关键词: 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板间信号串扰,就能有效消除计数误差和误清零现象。 图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向位置数据输出到控制器。 2.1 辨向细分设计 引入外部频率为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就会输出四个负脉冲,同时实现了辨向与细分功能。 用两个16位二进制计数器对两路脉冲信号XCU、XCD分别计数,然后用一个16位减法器对此两个计数器的计数值作差,被减数为XCU的计数值XUPCNT,减数为对XCD的计数值XDOWNCNT,其差作为X向的位置数据XCNT。这样, XCU有计数脉冲时,XCNT就会增加,而XCD有计数脉冲时,XCNT就会减小,实现了可逆计数。结合前面的辨向细分电路,使X向的位置数据在正向位移时增加,反向位移时减少。位置数据的变化真实反映了位移情况。 3 设计仿真和实现 图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工作频率高、设计灵活,可减少生物芯片扫描仪进一步提升扫描速度和扫描分辨率的开发时间和成本。 参考文献
|