FPGA 视频数据输入输出直通工程:
- 屏:13.2吋8bit色深,屏幕分辨率为1440*1920@60,具有两个Port,每个Port有4个差分数据对与1个差分时钟对,差分对均支持LVDS协议
- 芯片:Cyclone V系列FPGA
- 目的:通过FPGA的LVDS SerDes RX接口输入8bit 色深RGB图像数据,然后再通过LVDS SerDes TX接口输出8bit 色深RGB图像数据,是个直通工程
一、13.2吋屏
1.1 13.2吋屏参数:
DCLK frequency = horizontal line*vertical field*60=783*1962*60=92_174_760Hz≈ 92.17MHz
DCLK(即,Data Clock)就是Pixel Clock。
1.2 屏的数据传输格式:
该屏有两个Port,是8bit 色深图像,传输的数据格式如下图:
由图可知:
- 该屏有两个Port,分奇偶Port(即,Odd Port与Even Port)
- 每个Port有4个差分数据对与1个时钟差分对
- 每个Port的LVDS数据格式相同
- 差分时钟的占空比为4/7,且差分时钟频率与数据速率为1:7
- 差分时钟与差分数据对之间的相位关系,即,差分时钟高电平中间时刻对应一个像素周期的开始时刻
通过VESA的标准协议可知,VESA的10bit屏的接口兼容8bit屏接口。如下图:
VESA:单port 8bit 屏:4个数据差分对+一个像素时钟差分对Pixel Clock | |||||||
数据差分对 | T1 | T2 | T3 | T4 | T5 | T6 | T7 |
0+/- | R0 | R1 | R2 | R3 | R4 | R5 | G0 |
1+/- | G1 | G2 | G3 | G4 | G5 | B0 | B1 |
2+/- | B2 | B3 | B4 | B5 | HS | VS | DE |
3+/- | R6 | R7 | G6 | G7 | B6 | B7 | XX |
VESA:单port 10bit 屏:4个数据差分对+一个像素时钟差分对Pixel Clock | |||||||
数据差分对 | T1 | T2 | T3 | T4 | T5 | T6 | T7 |
0+/- | R0 | R1 | R2 | R3 | R4 | R5 | G0 |
1+/- | G1 | G2 | G3 | G4 | G5 | B0 | B1 |
2+/- | B2 | B3 | B4 | B5 | HS | VS | DE |
3+/- | R6 | R7 | G6 | G7 | B6 | B7 | XX |
4+/- | R8 | R9 | G8 | G9 | B8 | B9 | XX |
参考:LVDS电平标准与LCD屏的LVDS数据格式-CSDN博客
为了提高FPGA系统兼容性,在编写Verilog程序时,用10bit 色深的VESA标准协议。
二、Cyclone V的LVDS SerDes结构
2.1 LVDS Receiver结构
2.2 LVDS Transmitter结构
三、Intel FPGA的LVDS SerDes IP配置
3.1 添加LVDS SerDes IP
IP添加方式:在IP Catalog中输入LVDS+回车,可选择ALTLVDS_RX与ALTLVDS_TX两个LVDS SerDes IP进行参数设置。
3.2 rx_serdes_ip
3.2.1 rx_serdes_ip参数设置
3.2.2 例化rx_serdes:
//定义接口
reg [4:0] rx_datao_p;
reg [4:0] rx_datae_p;reg pixel_clk_in;
wire [69:0] rx_out;
wire pixel_clk_out;
//例化
lvds_rx_1 u1_lvds_rx_1(
.rx_in ({rx_datao_p, rx_datae_p}),
.rx_inclock (pixel_clk_in),
.rx_out (rx_out),
.rx_outclock (pixel_clk_out)
);
3.3 tx_serdes
3.3.1 tx_serdes_ip参数设置
3.3.2 例化tx_serdes
reg [34:0] tx_datao;
reg [34:0] tx_datae;
wire [4:0] tx_datao_p;wire [4:0] tx_datae_p;
lvds_tx u1_lvds_tx (
.pll_areset (tx_reset),
.tx_in ({7'b1100011, tx_datao, 7'b1100011, tx_datae}),
.tx_inclock (pixel_clk_out),
.tx_out ({tx_cko_p, tx_datao_p, tx_cke_p, tx_datae_p}));
注意: {7'b1100011, tx_datao, 7'b1100011, tx_datae}中的两个7'b1100011是两个TX Port的Pixel Clock,结合LVDS Transmitter中的Serializer工作机制即可理解。
四、附件参考
Cyclone® V Device Handbook Volume 1: Device Interfaces and Integration