基于FPGA的LCoS驱动和图像处理系统设计 (2)
1.6 行场时序控制器模块
内设水平计数器hcnt和垂直计数器vcnt。由于显示屏每个时钟周期锁存8个像素值,所以显示1 024个像素值所需行周期为128个Tclk(行时钟周期)。当hcnt计数器值为HBP时表示行有效显示区域开始,hcnt计数器值为HBP128时表示行有效显示区域结束,hent计数器值为HSYN-Ccycle时,完成一行显示,vcnt计数器加1。当vcnt计数器值为VBP时,垂直有效显示区域开始,当vcnt计数器值为VBP768时,垂直有效显示区域结束,当vcnt计数器值为VSYNC cycle时,完成一帧图像显示。行场时序关系如图3所示。
1.7 FFT模块
FFTV 9.1 IP核采用Cooley-Tukey基-2 DIF算法,其FFT变换原始公式为:
因为采用了数据流模式,经过变换的数据可以连续输出,即输出数据不会因为图像数据的输入而停止数据输出,同时输入数据也不会因为处理后的数据正在输出而停止继续输入,保证了数据转换和传输的连续性,提高了数据处理的速度和效率。因为FFT通过异步FIFO向屏幕输出数据,而FIFO的读数据是写数据的4倍速,假如读时钟和写时钟都为100 MHz,那么有可能会在某一行里出现FIFO被取空,而无法向屏幕输出有效数据的情况。为保证FIFO向屏幕输出图像数据的连续性,就要充分利用VBP,VFP,HBP和HFP的时间,在每一行的开始,如果FIFO没满,那么启动FFT进行数据转换。若图像的分辨率为M×N并且在VBP期间FIFO已被写满,则FIFO,FFT核、行场周期以及图像分辨率间关系的计算公式如下:
式中:Deepth是异步FIFO的数据深度,单位为B;THSYNC cycle是行周期;Tclk是异步FIFO,FFT核、行场时序控制器模块的驱动时钟周期。当△>O时,系统会连续实时地处理图像;当△0。
2 实验仿真结果和测量结果分析
图4是采用Modelsim 6.5b进行功能仿真的结果。利用QuartusⅡV9.1自带的TimeQuest Timing Analyzer进行时序约束后,在实验板上的场信号测量结果如图5所示,场扫描频率已达到368 Hz,经测量其他引脚输出信号也均满足时序要求。由于FPGA器件资源限制,对图像做了256点FFT变换,经实验验证,该设计能够实现图像的实时处理,代码达到了预期设计效果。
3 结语
采用Himax的LCoS屏HX7308BTJFA作为显示器件,其尺寸为14.43mm×10.69mm,大小可跟1枚1元硬币相比拟,很容易实现三维投影微显示。因VerilogHDL有很强的可移植性,便于以后对代码的升级和维护。FPGA内部资源毕竟有限,文中叙述可知,若显示分辨率较大的图像,光靠内部资源实现异步FIFO是不可能的,所以在此提出两种方案:第一,换一片性能较高的芯片,满足写FIFO速率等于读FIFO速率的要求,这样就能达到读/写数据的动态平衡,保证了图像的连续显示;第二,采用外部存储器SDRAM存储源图像和FFT处理后的数据,采用DDRII技术读取数据,使读/写FIFO的速率匹配。受FPGA芯片资源限制,该设计采用分辨率为176×144的图像进行了系统功能验证,尚未实现图像滤波以及FFT逆变换,未来可将代码移植在高端的FPGA芯片上继续开发数据处理功能。