本文提出了一种基于FPGA和USB接口的验光仪控制系统设计方案,该方案中的全自动电脑验光的接口设计是在原先验光仪的基础进行了改进,设计了基于FPGA的全自动电脑控制系统,并采用了先进的USB技术连接设备与电脑,提高了数据传输速率,增加了定位精度,并且缩短了验光过程的时间。
1.引言
近些年来,近视已经严重影响了人们的健康。为了准确的了解近视患者眼睛的近视程度,为近视者配出更加合适的眼镜,验光仪器成为了眼镜零售行业必不可少的设备。目前市场上主流电脑验光仪并不能完全实现验光过程的自动化,问题主要表现在以下三个方面:
①定位速度慢;②定位精度差;③自动化水平低。
为了解决以上问题,本设计对原有的电脑验光仪进行了改进,采用运行速率快,稳定性高的FPGA控制步进电机驱动芯片,实现了验光仪的三轴联动;运用行程开关实现了极点间的自动往返。为了保护电路安全,设计了板间的光电隔离电路;并且采用先进的USB技术使电脑和设备进行通信,增加了数据的传输率,提高了设备的可控性。
2.系统硬件整体设计
控制系统是验光仪的控制核心,它不但要实现对多轴步进电机的运动和光源控制,还要实现与上位机信息的交互和其他重要功能。验光仪的主控制板的设计由EP3C16Q240C8最小系统扩展而成,根据FPGA功能实现及相关外设扩展对插针接口进行适当更改,并添加了USB通信接口、步进电机驱动模块和行程开关信号输入端的光电隔离电路。验光仪控制系统的主控制板硬件电路设计框图如图1所示。
主控制板中FPGA使用的是Altera公司生产的Cylone III系列芯片EP3C16Q240C8N,该芯片拥有15,408个逻辑单元;可以提供516,096字节的RAM;另外芯片内部还自带有4个锁相环,可以保证系统时钟信号在高速运行时的稳定性。步进电机驱动芯片选择使用Allergo公司生产两相步进电机专用驱动芯片SLA7042M,它能够实现超平滑低速驱动。为了实现主芯片和外部设备通信,控制板需要将3.3V和5V的电平相互转换,系统使用TI公司生产的16位3.3V-5V电平转换芯片SN74ALVC164245.USB接口控制芯片采用PDIUSBD12,它集成了SIE FIFO存储器、收发器以及电压调整期,适用于许多的外部设备。
3.Verilog硬件功能实现
Verilog HDL是一种硬件描述语言,主要用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模.FPGA芯片是验光仪主控制板的核心部件,本设计方案中使用Verilog HDL在FPGA上实现下位机与上位机的信息交互、多轴联动步进电机运动平台的控制、对光源的控制等功能,FPGA内部功能模块如图2所示。
1)USB接口控制模块:FPGA内部USB固件程序,实现FPGA与上位机USB接口通信。
2)时钟模块:对外部的16MHz时钟进行分频、倍频处理,产生FPGA工作所需各种频率的时钟信号。
3)指令分析模块:分析收到的上位机指令,根据规定的指令协议,产生执行命令并将执行指令发送到各个执行模块。
4)步进电机控制模块:执行FPGA送达的三轴步进电机控制指令,对各轴的电机进行细分、变速控制,最终通过给步进电机专用驱动芯片发送不同的命令实现电机的三轴联动。
5)光源控制模块:控制光学系统的5个LED红外光源和3个视觉辅助光源3个视觉辅助光源引导人眼注视方向,5个LED红外光源辅助系统的对焦功能。
4.上位机应用程序及驱动程序的实现
本电脑验光仪控制系统上位机软件主要负责完成视频图像采集和处理的功能,在预处理的基础上完成形态学的处理、目标识别和光斑参数计算输出等一系列指令,并将指令通过USB接口传输给下位机。由于该设备不是一个类设备,说以要使设备正常工作,还需要编写专门的驱动程序和软件。
4.1 驱动程序的编写
驱动程序的编写使用一些驱动开发的专用工具,例如Driver Studio、WinDriver等。
Driver Studio3.2进行开发,开发步骤这里就不一一列举,应该注意的是要在USB Vendor ID和USB Product ID中输入和固件中设备描述一致的信息。由于选用的是Philips的PDIUSBD12芯片,所以设备的Vendor ID固定为0×0471.
使用Driver Studio的Driver Wizard生成驱动框架后,可以根据需要使用Visual C++6.0对Driver Wizard生成的工程文件中的函数进行修改,还有就是对自定义的IO控制接口函数进行处理和厂商请求的编写。完成这些后,就可以对驱动程序进行编译了,成功编译驱动程序后,将它和Driver Studio自动生成的。inf文件放在同一目录下,在查找驱动的时候指定这个目录就可以了。
4.2 上位机应用程序的编写
由于设备使用USB接口进行上位机与设备进行通信,所以上位机应用程序要通过USB驱动实现对设备的访问,编写上位机的应用程序必须符合USB驱动定义的接口规范。一般来说,使用Driver Wizard生成一个驱动工程后,会同时生成一个ioctl.h的文件,这个文件就是建立应用程序和驱动之间的桥梁,它定义了驱动程序的接口,在编写应用程序的时候需要将它引用进去。
上位机应用程序整体划分6个区域,视频显示区域、(直接控制)操作区域、MOTOR控制区域、LED控制区域、实时处理(数据)显示区域、状态反馈数据显示区域。
本系统人机交互功能在windows平台上使用VC++6.0编译环境设计完成,可以直观显示跟踪对焦过程,并进行简单控制的可视化人眼跟踪控制程序,通过人机界面实现对人眼跟踪系统的完全控制。完成的人机交互界面(上位机应用程序),具体实现代码不再敖述。
5.系统的搭建及测试
全自动电脑验光仪控制系统整体分为上位机和下位机两部分,通过USB总线进行连接通信,配合完成整个系统功能。通过VC6.0++开发环境编程实现windows平台的上位机软件,可通过其人机交互界面对设备进行控制。上位机软件实现了对电脑验光仪机头内CCD摄像头的控制、对视频数据的实时采集处理、下发各种控制指令、显示数据信息等功能。
在搭建好的工作平台上进行完整的系统测试,结果如图3所示,在人机交互界面可以清晰完整的观察到已完成跟踪后采集的图像。
通过对测试结果分析,本控制系统可以很好的完成跟踪任务,识别准确、跟踪迅速、对焦精确,充分验证了本系统的可行性,基本达到了设计预期。
6.结束语
本方案利用PC和FPGA配合设计出了一套完整的控制系统,充分发挥了PC机在图像处理、人机交互方面的特长以及FPGA硬件资源多、可重构性强的特点,极大的提高了系统的实时处理能力,缩短了跟踪时间,提高了跟踪效率。经系统的测试表明本方案设计的电脑验光仪控制系统将会是整个验光仪系统中不可缺少的一部分。
|