基于FPGA的立体视频转换系统
当某一帧数据到来时,输入端的数据不停地从双端口RAM的一个端口写入SRAM_Rx。每当检测到DE的下降沿,说明已经有一行的数据写入完毕,则从另外一个端口将SRAM_Rx的数据写入DDR用于保存当前帧数据的存储区。写入一行结束时,输入端要等到下一个DE下降沿到来才会再次有读写SDRAM的需求。也就是说SDRAM此时处于空闲期,于是马上从之前保存好的上一帧数据中读出相应的一行数据写入SRAM_Tx,输出端则在写入SRAM_Tx一行完毕后从SRAM_Tx的另一个端口读出数据。这样一直到一帧结束。当下一帧数据到来时,交换读写所指向的帧存储区,这样保证了原视频信号的帧率不变。
为了使设计简单,DDR控制器模块DDR_IF使DDR工作在BL(Burst Length)即数据突发长度等于2的状态[4],并且以行为单位完成一次读写流程。每次要写入或者读出一行数据时,主控制模块MAIN_CTL向DDR_IF发送读写请求,然后发送一行数据所需要传送的突发长度的数量BL_CNT,以及该行数据要存入DDR的bank地址、行起始地址、列起始地址。之后,MAIN_CTL和DDR_IF进入读写流程。一行数据读写操作的Modelsim时序仿真如图6所示,图中以一行数据有3个像素为例。
根据以上分析,DDR在一行数据的时间内被复用,理论上只要满足写入一行加读出一行数据的时间小于一行数据的持续时间Th即可。在1 600×1 200@60 Hz的分辨率下,行周期Th=13.3 ?滋s,当DDR工作在165 MHz时,其读一行数据加写一行数据的时间为:Tl=1 600×2/165 M×2=9.7 ?滋sTh。即使考虑到DDR在读写之外的其他操作上花费的额外时间,也能够满足要求。
2.3 格式转换
2.3.1 3D模式
2.3.2 2D模式
对于本文设计的系统,对程序稍作修改即可实现2D/3D兼容。只须在输入端,第k个像素到达时,各分量分别存入地址addr=k即可。
本文介绍的立体视频转换系统能够在不影响帧率的情况下进行实时转换,并且满足2D/3D兼容的需要。该系统目前已应用于立体显示器格式转换。DVI接口的使用,使得该系统有着广泛的兼容性。此外,系统用一片SDRAM实现了帧缓冲的功能,在充分利用系统资源的同时,使得整个系统的设计更为简洁,有利于减小体积和降低成本。同时,该系统实际上构建了一个通用的视频处理架构,具有很好的扩展性,程序只需稍作修改即可用于其他尺寸、其他格式视频源(如上下格式、时分格式)、其他立体实现方式(如按行或者按列分割左右图像)的立体显示器。
- 在采用FPGA设计DSP系统中仿真的重要性 (06-21)
- 基于 DSP Builder的FIR滤波器的设计与实现(06-21)
- 基于FPGA的快速并行FFT及其在空间太阳望远镜图像锁定系统中的应用(06-21)
- 3DES算法的FPGA高速实现(06-21)
- 用FPGA实现FFT算法(06-21)
- FPGA的DSP性能揭秘(06-16)