3.1 分频电路
利用PWM方式设置参数可调的分频电路,将48MHz占空比为50%的脉冲分为4.8MHZ和0.1MHz占空比为50%的脉冲信号。
3.2 延时电路
延时电路由按键开关控制,按下即开始工作,产生一最小单位为0.01s、1s-5s间的随机延时。随后输出一“en”使能信号,控制之后的电路。随机数在100-500的计数循环中产生,按键时将数字读出,即为随机数。将此数乘以1000,作为0.1MHz计数器的终止数,即可产生随机延时。延时电路仿真波形图如图2。Clk为输入的0.1MHz脉冲,start为开始信号,en为输出信号,当start为‘0’后,经过一定时间的延时,en输出高电平信号。当start变为‘1’后,en同时变为‘0’。延时时间随机产生。
3.3 计时器
由1MHz的脉冲信号作为时钟,计数器的精度为0.01ms。由“en”信号和清零端控制,输出五位数字,逐级进位,输出五位数字总线并连接至LCD显示模块,用于视觉反应时间的计时。
3.4 LED亮度调节
用PWM方式改变0.1MHz的频率以及占空比,占空比为0-1,每0.1一级,将不同占空比的脉冲信号输出至LED灯,即可调节灯的亮度,用于测试不同亮度下的视觉反应时间。LED亮度调节模块波形仿真图如图3。Clk为输入的0.1MHz脉冲,level为输入的不同等级的数据,en为使能端,clkout为根据不同level值得到的不同占空比的脉冲。有些level下的波形有些毛刺,但对整体的效果没有影响。
图2 延时电路仿真波形图
图3 LED亮度调节模块波形仿真图
3.5 亮度设置模块
为循环计数器,脉冲信号由亮度设置键提供,每经过一个下降沿计数器加一,并输出亮度级别“level”信号以及两个需显示的数字,输出至LCD显示。
3.6 亮度渐变模块
由于正常人眼存在视觉暂留现象,且视觉延时多在0.2-0.4秒之间,所以利用PWM方式改变4.8MHz脉冲的占空比,使得亮度每秒增加一级,步长为万分之一,可以基本排除人眼视觉延时的干扰[7]。
另外,该设计还包括数据选择器、按键防抖电路、LCD显示等其它设计。
4 系统基本操作
LED1:视觉敏感测试灯;
LED2:视觉反应时间测试灯,设置不同等级有不同的亮度。
LCD显示:受功能选择键控制,高电平时为视觉反应时间测试功能,屏幕显示“000.00 ms/Level 00”,记录不同等级下反应时间。低电平时为视觉敏感测试功能,开始后,随着灯亮度增加而数字增加,显示灯的亮度等级。
按键说明:
En键(使能端):控制整个器件的运行,en =‘1’时开,可以运行各个功能,en =‘0’,整个系统关闭。
Control键(功能选择键):控制功能切换,control =‘1’时为视觉反应时间测试功能,control =‘0’时为视觉敏感测试功能。
Ldset键(亮度设置键):用于亮度等级设置,按一下,亮度等级加一。
Start键:测试开始键,视觉反应时间测试时,设置好等级,等级显示在LCD屏幕上,当start按下,经过延时,LED灯亮,释放start键,屏幕显示反应时间。
Reset键(清零端):按下后,屏幕显示清零。
5 误差分析
虽然设计精度较高,但是由于实现方法本身以及硬件条件的限制使得系统仍然存在误差和改进的余地。延时模块送出高电平后,计时模块直接开始计时,此信号要经过LED亮度调节模块才能使D4灯亮,这两者之间有LED亮度调节这一模块的几个纳秒的延时。从人眼睛感觉到光的存在到手释放Start键,这之间也有反映时间,所以我们测量到的是人视觉反应时间和人手反应时间的总和。但是由于视觉反应时间处于百毫秒数量级,所以这些误差基本可以忽略,如需更高精度的测试,设计仍需改进。
6 结论
各模块设计均用VHDL硬件描述语言进行编写,模块之间用顶层原理图绘制。测试视觉反应时间时,将亮度分为10级,当设置不同的亮度等级,可以测试不同亮度下的视觉反应时间,得到光强与视觉反应的关系。在测试视觉反应时间的基础上增加了视觉敏感程度的测试模块,用于测试人对于光敏感的最低亮度。亮度分为100个等级,正常人眼十级以上就基本能感觉到光线的存在。在所有测试功能中都有延时模块,能产生1s到5s之间随机的延时,减少测试误差,得到最准确的测试结果。