塞巴斯蒂安 发表于 2021-12-12 14:39:08

优秀的 Verilog/FPGA开源项目介绍(九)- DP

本帖最后由 塞巴斯蒂安 于 2021-12-12 14:38 编辑

优秀的 Verilog/FPGA开源项目介绍(九)- DP
DP即DisplayPort,是一种高清数字显示接口标准,可以连接电脑和显示器,也可以连接连接电脑和家庭影院。2006年5月视频电子标准协会(VESA)推出了1.0版本。
DP各个版本接口(来源:知乎)

官网

❝ https://vesa.org/ ❞

ESA 是一家由董事会领导的国际非营利性公司,该公司代表了全球超过 285 家具有投票权的公司成员。
VESA 支持并为 PC、工作站和消费电子行业制定行业范围的接口标准。

VESA 提供了一个论坛来开发、促进和支持显示行业的开放标准。

❝ https://www.displayport.org/ ❞

DP协议简析

在《【科普】HDMI vs DisplayPort vs DVI傻傻分不清楚》中我们简单介绍了DP接口协议,得到以下几点:
1、DP是在HDMI及DVI基础上提出的;
2、DP是基于微报文形式进行数据传输;
3、DP借鉴了以太网、PCIe、USB协议。

从以上几点可以简单推导一下DP协议的特点:
1、DP是一个协议,肯定也是会参考OSI参考模型的,即会采用分层结构,最低层肯定是物理层;
DP标准的文章标题 协议(标准)、总线、接口区别
2、DP的EDID、DDC通道(这里猜测是错误的,后续会纠正)也是必不可少的;

3、DP接口借鉴以太网、PCIe、USB协议,所以时钟信号是可有可无的。

综上,我们在从宏观上看下DP标准:
上图就是分层结构框图,可以看出有两层分层结构:1、Link层;2、PHY(物理层)层。同时,无时钟网络,增加了AUX数据链路(HDMI还有随路时钟,而DP没有采用了,因此物理上多一路数据通道。另外DP多了一路AUX配置通道。)

HDMI TYPE A接口定义 DP接口定义
PS:虽然上述接口都是比较常见的接口,但是标准里并没有强制规定接口类型,例如现在的TYPE-C接口(雷电协议)走的就是DP协议。

Link层
链路层提供如下链路/设备服务和同步传输服务:

链接和设备服务
o 链接服务用于发现、配置和维护链接。对 DPCD(DisplayPort 配置数据)字段的 AUX CH 读/写访问。
o 设备服务支持设备级应用,例如 EDID 和 MCCS 访问。

此外,设备服务可以选择性地包括内容保护。

在这两者中,Link Services 将在 DisplayPort 一致性测试中进行测试。就设备服务而言,仅测试了 I2C-to-AUX CH 流。

同步传输服务
等时传输服务使用一组规则将视频和音频流映射到 DisplayPort 主链路,以便可以将流正确重建为接收设备中的原始格式和时基。等时传输服务提供以下内容:
1.流数据进出主链路通道的映射
o 包装/拆包
o 填充/不填充
o 框架/取消框架
o 车道间偏斜和去偏斜

2.流时钟恢复

3.插入主流属性数据

上述所有同步传输服务功能都在 DisplayPort 一致性测试中进行了测试。源 DUT 直接连接到参考接收器设备。接收器 DUT 直接连接到参考源。分支 DUT(例如电缆延长器)连接到参考源和接收器设备。

PHY层

DisplayPort PHY 层指定了上游设备上的端口(即 DP 源或分支设备上的 AV 输出端口)和下游设备上的端口(即 DP 接收器或分支设备)。它将数据传输电气规范与 DisplayPort 链路层分离,从而为未来链路层特定设计增强以及传输媒体类型的未来变化(例如混合设备的使用)提供模块化。PHY层进一步细分为逻辑和电功能子块,如图3-1所示
这部分,主要的物理信号包括:HPD AUX MAIN-LINK,下面简单介绍一下:

HPD

热插拔检测电路

PHY 层负责检测 Hot plug/Unplug 和通知链路层:

1、逻辑子块——将热插拔事件通知上层;2、电气子块 – 检测热插拔事件。

AUX 通道电路

PHY 层使用 1Mbps Manchester-II 编码为链路配置或维护 EDID 访问等服务提供半双工双向 AUX 通道

主链路电路

PHY 层为同步流和辅助数据包的传输提供单向主链路。

逻辑子块
• 加扰和解扰
• ANSI 8b/10b 编码/解码
• 序列化和反序列化
• 链路训练和链路状态监视器
• 根据需要调整链路速率、扩展、驱动电流电平和预加重电平
• 用于可测试性的链路质量测量

电气子块
• 最多包含四个差分对
• 发射器
• 以符合主链路发射器电气规范的方式驱动双端接交流耦合差分对
• 接收者
• 接收输入的差分信号并使用其链路 CDR(时钟和数据恢复)电路提取数据

连接时序
整个过程和HDMI类似:
1、先是检查HPD信号;
2、读取EDID(通过AUX通道,不是DDC);
3、Link Training(DPCD)(确认链路的参数,如lane的数目、链接速率、电压摆幅、预加重、均衡,还有时钟恢复);
DHCP过程(图片来源:知乎https://zhuanlan.zhihu.com/p/150644951?ivk_sa=1024320u)
4、HDCP-如果传输的内容是受保护的,即需要通过HDCP协议进行沟通;
HDCP过程(图片来源:知乎https://zhuanlan.zhihu.com/p/150644951?ivk_sa=1024320u)

PS:HDMI的时序基本也是这样的,在调试过程中,如果无法显示或者输出,参考上诉流程,确定每个物理信号是否正常。

VHDL FPGA_DisplayPort

❝ https://github.com/hamsternz/FPGA_DisplayPort ❞

验证板卡

Digilent Nexys 视频开发板上的 Xilinx Artix-7 FPGA
Nomato Labs Opsis 板上的 Spartan 6 LX45T

状态

在一个、两个或四个 2.70Gb/s 通道上实现 800x600 显示(取决于实际电路板的设计)。它还可以通过双通道接口显示 3840x2160@30Hz YCC 422。还有一个测试源可以显示超过 800x600 的颜色条。

为 Artix-7 和 Spartan-6 LXT FPGA 提供低级收发器模块。这些将需要修改以与您的特定 FPGA 板的布局一起使用。

TODO

[*]支持 1.62Gb/s 链接速度
[*]增强 FSM 以正确处理电压和预加重更改请求。
[*]使热插拔正常工作 - 目前只是每秒查询 EDID 寄存器作为 HPD 的代理
[*]制作合理的视频接口 - 视频时钟不需要锁定到像素时钟(耶!)
[*]音频/辅助数据包支持
[*]可以整理 Spartan 6 收发器模块 - 例如关闭未使用的部分
[*]获得对 Artix-7 上实现的 8b/10b 的硬件支持 - 完成
[*]获得对 Spartan-6 上实现的 8b/10b 的硬件支持
[*]删除调试存根
[*]添加 4k60 样本和 4k30 444 样本流
[*]添加对至少一个 Kintex-7 板的支持
[*]通过折叠一些流水线阶段来

优化资源使用- 完成- 通过仅使用一个加扰器 LFSR 并为所有通道使用它来优化资源使用 -完成

[*]放入时序异常以获得清晰的时序报告
[*]所有活动通道在同一周期内传输 K 个符号(不包括流水线末端的 2 个周期偏移),因此可以共享一个公共 K 信号,将 72 位减少到 65管道。

VERILOG FPGA_DisplayPort

❝ https://github.com/hamsternz/DisplayPort_Verilog ❞

上一个项目的Verilog版本,进度上稍微有点不同

上两个项目的部分代码解析(非官方)

❝ https://blog.csdn.net/m0400220334?t=1 ❞

ultra96v2/KV260 imx219_to_displayport
ultra96板卡
KV260板卡项目地址:
❝ https://github.com/gtaylormb/ultra96v2_imx219_to_displayport ❞
❝ https://github.com/ATaylorCEngFIET/Ultra96V2_DisplayPort/tree/master/display_port ❞
❝ https://github.com/ATaylorCEngFIET/Ultra96V2_DisplayPort/tree/master/display_port ❞

这两个板卡的DP接口都是接在PS端的,所以本项目对于想用FPGA实现的朋友没有什么参考价值,适合只是想体验一下DP接口的朋友。

Genesys_ZU_MIPI_PCAM

❝ https://github.com/ATaylorCEngFIET/Genesys_ZU_MIPI_PCAM ❞
Genesys_ZU板卡和上面项目一样。

总结

DP接口的项目很少,主要是有种“吃力不讨好”的感觉,很复杂的协议用FPGA实现没什么太大的意义(目前来看),不仅需要占用GTx的资源,而且目前没有很多的应用场景。将来从3D等领域来看还是很值得推广的,目前官方也有自己的IP。但是目前这种IP就类似SDI这种接口,不适合大众的使用场景,目前还是有很多BUG(使用人少)。
官方GTX接口的DP模板DP IP
所以这一篇文章只是简单介绍一下两个DP的开源项目,适合学习一下接口协议,最后就分享一下DP 1.4的协议,有兴趣可以去学习。

链接:https://pan.baidu.com/s/1hAOGKhbSQgAn6U0eUNFbIA
提取码:cnin

最后,还是感谢各个大佬开源的项目,让我们受益匪浅。


页: [1]
查看完整版本: 优秀的 Verilog/FPGA开源项目介绍(九)- DP