摘 要:通过在现场可编程门阵列器件中构建软核处理器(NIOSⅡ)来代替专用集成电路,并在NIOSⅡ中嵌入C程序,根据给定的规模,自动实现了在不同规模下的各种设计参数的计算。实现了只需要输入系统参数,就能适用于不同规模LCOS控制器的设计,并且结合USB芯片和特定的程序流程,提高了LCOS控制器的适用性和可靠性,降低了器件的成本。
1 引 言
校正器作为自适应光学系统的部件,在很大程度上决定着自适应技术发展的方向。目前在自适应光学系统使用较多的是变形镜校正器。
随着自适应技术在眼底观测方向的使用,传统变形镜校正器显露出其固有的缺点,由于受校正单元少的限制,变形镜校正器很难对存在高阶像差的眼底成像。因此,校正单元多的液晶校正器开始在眼底观测领域广泛使用。与玻璃基板液晶显示器相比,采用硅基板的液晶显示器(LCOS)由于具有尺寸小、分辨率高、光效利用率高等优点,成为目前的选择。作为LCOS驱动电路的———为液晶模块(LCM)提供显示数据和时序信号的LCOS控制器通常都是由专用集成电路(ASIC)组成。在实际工程应用中,需要各种分辨率的LCOS,由于每一种LCOS都需要专门的显示控制器,因此LCOS的设计和使用都比较繁琐。
本设计采用现场可编程门阵列(FPGA)器件来代替ASIC,利用可编程片上系统(SOPC)实现通用LCOS显示控制器的设计。在使用中只需通过对软件参数进行修改,即可完成对不同分辨率LCOS的控制。由于液晶自适应系统需要传输的数据量很大,所以为了保证系统的实时性,采用USB2.0协议进行数据传输。本文使用了NXP公司的PDIUSBD12的USB芯片、ALTERA公司的EP1C6Q240C8器件,采用C++语言设计了USB驱动程序和固件程序,利用VHDL硬件描述语言设计了通用LCOS控制器并在实际应用中通过测试,基本上实现了通用LCOS控制器的预期目标。
2 系统原理
LCOS的显示采用逐行扫描方式,即当一行被选通以后,这一行中的各列信号同时加到列上,并维持一个扫描行的时间,当这一时间结束后选通下一行,各列电极施加下一行的显示电压。
目前普通的液晶控制器都是由存储器和控制器组成,由一块MCU 接收上位机发送过来的显示数据,并由该MCU分配存储地址,生成时序信号,把数据存入存储器中,而后由液晶显示模块读取存储器中的数据。存储器的存取速度较慢,在读写大批量数据时很费时,很难匹配LCOS的响应速度,并且当更换不同分辨率的LCOS显示模块后还需要有新的控制器,存在成本太高且过程烦琐的缺点。
有鉴于此,本文提出了基于SOPC 设计LCOS控制器的思路,即在FPGA 内构建一个NIOSⅡ软核处理器和SRAM 存储器,把SRAM映射到LCOS显示模块的数据缓冲区,将NIOSⅡ与PDIUSBD12以DMA 的方式连接,将NIOSⅡ与上位机以串口的方式连接,通过设置LCOS参数和存储器规模参数在内的各种参数,适应不同分辨率的LCOS;通过DMA方式节省传输时间;通过把SRAM 映射到显示数据缓冲区节省存储器的存取时间。如图1所示。
图1 LCOS系统原理图。
3 系统设计
3.1 系统引脚信号时序分析
一般来说,LCM 引脚都具有如表1所示的功能描述。
表1 LCM 引脚信号功能
每个CP移位脉冲信号都是通过一系列CP脉冲,把完整的一行显示数据(D0~D7)存入移位寄存器中。移位寄存器与锁存器并口相接,当完整的一行显示数据被存入移位寄存器后,在锁存信号LP的作用下,该行数据被锁存到锁存器内,并输出给列电极。因此LP的周期应为一个行周期。当一帧图像的一行显示数据存入移位寄存器后,FLM 帧扫描信号变成高电平,其脉宽维持超过一个LP脉宽。因此FLM 的周期应为一帧图像的时间,即各行LP的周期和。M 是液晶显示模块的交流驱动信号,每一帧时间改变波形的极性,可以防止液晶显示的单方向扭曲变形。更为详细的引脚信号时序关系如图2和图3所示。
图2 引脚信号的时序关系1。
图3 引脚信号的时序关系2。
3.2 参数确定
在设计通用分辨率的LCOS控制器之前,先要确定某些参数。这些参数包括LCOS的分辨率m×n,LCOS的灰度级2u(一般情况下LCOS的灰度为256),LCOS显示器的刷新频率a Hz,信号CP的频率b MHz等。这些参数由上位机通过串口发送到NIOSⅡ处理器中。根据这些参数,由NIOSⅡ计算得到如下关系:每一帧的周期为103/a(ms);每一行的周期为106a-1 n-1(us);将一行显示数据写入寄存器的时间为m/b (μs);每一行的空时间[106a-1n-1]-[m/b]us),这一项应当不小于0。依据计算后的数据和图2、图3所示的信号关系,使用定时器和脉宽调制器(PWM)生成LCOS的逻辑控制信号。同样在NIOSⅡ中还要完成SRAM 内存的设计,内存的实现是依靠FPGA 中的逻辑门阵列来实现的。设计所遵循的原则是SRAM 的容量能至少装下完整的2帧数据,即2m×n×2u,一帧数据存储区用于当前显示,另一帧数据存储区同时接收下一帧要显示的数据,这样的策略虽然耗费了大量的逻辑门数量,却可以使低速的存储器和高速的LCOS显示器相匹配,同时更好地发挥USB的速度优势。
4 实例设计
在实际应用中,以256×256分辨率、256灰度级的LCOS为例来设计LCOS控制器。
首先根据已有的LCOS计算各种参数。对于256×256的LCOS,其刷新频率为200Hz,时钟信号CLKB的频率为20MHz。因此,每一帧的周期为5ms,每一行的周期为19.53μs(相当于391个CLKB时钟周期时间),将一行显示数据写入寄存器的时间为12.8μs(相当于256个CLKB时钟周期时间),每一行的空时间为6.73μs(相当于135个CLKB时钟周期时间)。如果设计时发现每一行的空时间小于0,则要提高时钟信号CLKB的频率。
接下来是设计SRAM 存储器,SRAM 容量的设计原则是能装下完整的2帧数据,即2×256×256×256就能装下完整的2帧数据,但为了便于CPU还可以完成其他计算的需要,内存的设计要比2帧数据大一些,这里取3帧数据容量,同时设定固定的区域为显示缓冲区。
将USB的数据输入缓冲区同样设在该显示缓冲区域,这样通过USB端口输入的待显示数据直接存储在显示缓冲区域。
然后是将外部的LCOS显示器的数据输入端口作为NIOSⅡ处理器的I/O 映射地址,通过DMA处理,使NIOSⅡ内存的显示缓冲区以DMA的方式通过AHB总线与LCOS显示器的数据输入端口直接输入。使用DMA和总线的好处是既简便快速,传输又很稳定。
在QuartusⅡ6.0环境下对NIOSⅡ控制器进行功能仿真测试,仿真的波形如图4所示。该控制器的时序信号符合设计要求。完成功能仿真后,经过综合生成门级网表,到ALTERA公司Cyclone系列EP1C6Q240C8器件中。
图4 NIOSⅡ控制器的功能仿真波形。
5 结 论
利用SOPC和USB设计了一种LCOS通用控制器。通常LCOS的价格较高且不能通用,利用本文的方法可以限度地降低材料成本和设计成本,并且可以根据应用的需要,通过发送不同的参数适应于不同的LCOS显示器。由于采用软核处理器,系统的稳定性稍差一些,并且PDIUSBD12的速度仅为12MB/s。为了提高系统的稳定性,可以使用ARM9 处理器;为了发挥USB2.0 的全速480 MB/s,可以使用新一代CH375USB控制器。这样就可以使LCOS通用控制器拥有更的性能。
[1]. PDIUSBD12 datasheet https://www.dzsc.com/datasheet/PDIUSBD12_544412.html.
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。