随着社会的不断发展,人们对于带宽的要求不断提升,光纤接口在通信、医学、传感器、视频传输等领域被大量应用
1. 简介
在“光纤接口 8b10b 测试实验”中对 HSSTLP 的原理、8b10b 的原理等内容作了详细的介绍,如 果大家对这部分内容不是很熟悉的话,请参考“光纤接口 8b10b 测试实验”中的简介部分。本次实验我们 将在前面“光纤接口 8b10b 测试实验”的基础上学习光口的视频传输实验
2. 硬件设计
摄像头扩展接口原理图及 OV5640 模块说明与“OV5640 摄像头 TFT-LCD 显示实验”完全相同,请参考“OV5640 摄像头 TFT-LCD 显示实验”硬件设计部分。HDMI 接口部分的硬件设计请参考“HDMI 彩条显示实验”中的硬件设计部分。光口接口部分的硬件设计请参考“光纤接口 8b10b 测试实验”中的硬件设计部分(这个部分后续会补充)
3.实验任务
实验任务是使用开发板上的两个光纤接口实现视频图像的传输,视频图像由 OV5640 摄像头模块采集数据,再通过开发板上的其中两路光模块进行视频信号的光纤发送和接收,然后在 HDMI 显示器上显示出来
4. 程序设计
(1)整体模块设计
本实验包括以下模块:时钟模块、OV5640驱动模块、DDR控制模块、光口传输顶层模块、和HDMI顶层模块,总体模块框图如图:
由上图可知,时钟模块(pll_clk)为HDMI顶层模块、光口传输顶层模块、DDR控制模块以及OV5640驱动模块提供驱动时钟。OV5640驱动模块控制着传感器的开始与结束,传感器初始化完成后将采集到的数据写入光口传输顶层模块,光口传输顶层模块先发送数据在接收数据,然后将回环回来的数据在写入DDR3控制模块。HDMI顶层模块从DDR3控制模块中读出数据并驱动显示器显示,这时整个系统才完成了数据的采集、缓存与显示。需要注意的是图像数据采集模块是在DDR3和传感器都初始化完成之后才开始输出数据的,避免了在DDR3初始化过程中向里边写入数据。
FPGA顶层模块(top)例化了以下五个模块,时钟模块、OV5640驱动模块、光口传输顶层模块、DDR控制模块和HDMI顶层模块
时钟模块:时钟模块通过调用PLL IP核实现,共输出三个时钟,频率分别为50MHZ时钟、65MHZ时钟和325MHZ时钟(HDMI像素时钟的五倍频)。50MHZ时钟作为OV5640驱动模块和DDR控制模块的驱动时钟和光口传输顶层模块的DRP的输入时钟,65MHZ时钟和325M时钟(HDMI像素时钟的五倍频)负责驱动HDMI顶层模块。
OV5640驱动模块:OV5640驱动模块负责驱动OV5640SCCB接口总线,将像素时钟驱动下的传感器输出的场同步信号、行同步信号以及8位数据转换成DDR读写控制模块的写使能信号和16位写数据信号,完成对OV5640传感器图像的采集
光口传输顶层模块:光口传输顶层模块负责将摄像头采集到的数据先转化为32bit数据,然后按照8b10b的编码方式将数据发生出去,然后将光口接收到的数据按照8b10b的通信解码格式将数据解析出来,最后将32bit数据转化为16bit数据写入到DDR3中
DDR控制模块:DDR读写控制模块负责驱动DDR片外存储器,缓存图像传感器输出的图像数据。
HDMI顶层模块:HDMI顶层模块负责驱动HDMI显示器的驱动信号的输出,同时为其他模块提供显示器参数、场同步信号和数据请求信号。HDMI顶层模块例化了HDMI驱动模块和HDMI驱动转换顶层模块。HDMI驱动模块负责产生行场信号和和数据有效使能信号和像素点的横纵坐标,同时将内部信号数据请求信号输出至端口,方便从DDR控制器中读取数据,完成读出图像的数据功能
(2)光口传输顶层模块设计
光口传输顶层模块下面有四个子模块,分别是光口编码模块、光口解码模块、光口字对齐模块和hsstlp模块,其顶层模块框图如下:
光口编码模块:光口编码模块负责将摄像头输入进来的16bit数据转化为32bit数据,再按照8b10b的编码格式将数据发送到hsstlp模块
光口字对齐模块:光口字对齐模块是将接收回来不对齐的数据转化为对齐的数据,然后再输出到光口解码模块
光口解码模块:光口解码模块将对齐后的数据按照8b10b的解码格式转化为32bit的像素数据,再通过FIFO将32bit数据转化为16bit数据写入到DDR3中
Hsstlp模块:Hsstlp模块一方面负责与用户(FPGA)进行数据交互,另一方面还产生控制光口传输的各种时序,并实现对光口的通信操作。