首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于FPGA的自由立体显示系统光学引擎设计(2)

基于FPGA的自由立体显示系统光学引擎设计(2)

2 光学引擎系统设计
        2.1 系统总体架构

            由上节所介绍的自由立体显示系统原理可知,本系统中光学引擎的主要任务包括视频左右帧同步信号的获取、观看者瞳孔位置坐标的获取和对高亮度LED阵列的控制。目前光学引擎的主控部分采用AVR单片机来完成。受限于单片机的顺序执行单线程架构,无法对系统的时序进行精确控制,很小的功能改变就会导致最终系统的时序错乱,使整个系统的鲁棒性和可定制性较差。并且由于单片机的时钟最高仅能到12 MHz,再加上部分指令执行时间大于一个时钟周期,单片机对TLC5927 LED驱动芯片的配置速率最高仅能达到800 kHz。由于TLC5927采用串行方式配置,当驱动芯片数量为50片时,完成所有驱动芯片的配置需要耗时达1 ms,已经无法满足大规模LED阵列的驱动时序要求。因此本文采用基于FPGA的光学引擎系统。由于FPGA的并行特性,可以方便地对系统时序进行控制,增加和减少功能不会对已有时序产生影响,增强了系统的可定制性和鲁棒性[4]。并且由于FPGA的高时钟频率,系统可以以LED驱动芯片的最大配置时钟频率30 MHz对其进行配置,在1 ms时间内最多可配置1 876片TLC5927,使系统的可扩展性大大增强。系统功能框图如图2所示,其中虚线内的部分由FPGA完成。

       


        2.2 同步信号接收模块设计
            从120 Hz液晶面板配套的液晶开关眼镜中可以提取出左右液晶镜片的驱动波形,如图3中lon、loff、ron、roff所示。将该波形经过电平匹配后即可输入FPGA内部的同步信号接收模块,将这4路信号两两异或,即可得到左眼和右眼的同步信号lbuff和rbuff。两路信号的周期均为60 Hz,且相位相差180°。该信号仅仅表示液晶刷新的使能信号,由于液晶翻转需要时间,因此左图和右图LED点亮使能信号需要延时液晶的翻转时间τ,才能输出给主控制器供LED驱动器使用。最后同步信号接收模块输出的波形为图3中的lenable和renable。利用该信号驱动LED驱动器,即可在液晶面板显示左图时点亮左眼LED,显示右图时点亮右眼LED,液晶面板刷新过程中LED不亮。

       


        2.3 串口通信模块设计
            为了使光学引擎能够实时更新人眼跟踪模块的瞳孔位置坐标,FPGA使用RS232串口与人眼跟踪模块的DSP通信。右眼的瞳孔位置可以根据左眼瞳孔位置+瞳孔间距得到,在观看者瞳孔间距基本一致的情况下,串口仅需发送左眼瞳孔坐标即可,这样可以大大减少串口的数据量,提高实时性。串口每帧传输10 bit数据,包括一位起始标志位和一位结束标志位[5]。串口通信模块状态机如图4所示。DSP首先发送一个开始字节,内容为56 h,表明新的坐标数据传输开始。第二个字节中传输当前检测到的瞳孔对数(即观看者数量)。根据光学成像系统的参数视场角θ=±30°,最佳观看距离d=1.2 m,人脸宽度w≈0.22 m,可以计算出最大同时观看人数n=[2×(d×tanθ)/w]=6。第三个字节开始传输左眼瞳孔的坐标位置,当串口通信模块获得了所有的瞳孔坐标后,会将这些坐标发送给主控模块,主控模块以这些位置为地址即可从预置在FPGA中的对应表获得显示左图时需要点亮的LED的对应位置。在该地址上加一个偏移量,就可以从同一个对应表中得到显示右图时需要点亮的LED的对应位置。主控模块将这两个位置存放在寄存器中,直到下一次DSP通过串口更新瞳孔位置信息。

       


       
            在3D显示模式下,LED由主控提供的Enable信号按照120 Hz的帧率刷新,每帧LED熄灭后,LED驱动控制模块从主控获取下一帧的LED位置信息。由于采用8驱动管脚并联的工作方式,因此可以将LED位置信息通过SDI口以3.75 MHz的速率发送给TLC5927阵列,同时以同步方式输出30 MHz的CLK,即可实现每8个CLK周期同步一个SDI电平。SDI信息写入完成后,LED驱动器控制模块发送一个LE信号对TLC5927进行锁存,并在下一次Enable信号到来时将OE信号拉低点亮对应的LED。时序如图6所示。
       
继承事业,薪火相传
返回列表