基于SOPC适用于不同规格LCOS的控制器设计

图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器件中。
NIOSⅡ控制器的功能仿真波形
图4 NIOSⅡ控制器的功能仿真波形。
5 结 论
利用SOPC和USB设计了一种LCOS通用控制器。通常LCOS的价格较高且不能通用,利用本文的方法可以最大限度地降低材料成本和设计成本,并且可以根据应用的需要,通过发送不同的参数适应于不同的LCOS显示器。由于采用软核处理器,系统的稳定性稍差一些,并且PDIUSBD12的速度仅为12MB/s。为了提高系统的稳定性,可以使用ARM9 处理器;为了发挥USB2.0 的全速480 MB/s,可以使用新一代CH375USB控制器。这样就可以使LCOS通用控制器拥有更优秀的性能。
评论