优秀的 Verilog/FPGA开源项目介绍(九)- DP(增改版)
在相量子的建议下修改了一下文章及更改了部分内容,同时增加了新的分享内容。
DP即DisplayPort,是一种高清数字显示接口标准,可以连接电脑和显示器,也可以连接连接电脑和家庭影院。2006年5月视频电子标准协会(VESA)推出了1.0版本。
DP各个接口(来源:知乎)
官网
❝https://vesa.org/❞
VESA 是一家由董事会领导的国际非营利性公司,该公司代表了全球超过 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协议。
连接时序
整个过程和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的时序基本也是这样的,在调试过程中,如果无法显示或者输出,参考上诉流程,确定每个物理信号是否正常。
参考文章
❝https://www.eet-china.com/news/202102250353.html❞
❝https://blog.csdn.net/CSDN1013/article/details/106992157?spm=1001.2101.3001.6650.2&utm_medium=distribute.wap_relevant.none-task-blog-2~default~BlogCommendFromBaidu~default-2.wap_blog_relevant_default&depth_1-utm_source=distribute.wap_relevant.none-task-blog-2~default~BlogCommendFromBaidu~default-2.wap_blog_relevant_default❞
❝https://blog.csdn.net/qq_22326895/article/details/106127537?spm=1001.2101.3001.6650.2&utm_medium=distribute.wap_relevant.none-task-blog-2~default~CTRLIST~default-2.wap_blog_relevant_default&depth_1-utm_source=distribute.wap_relevant.none-task-blog-2~default~CTRLIST~default-2.wap_blog_relevant_default❞
上面的文章可以参考,作为入门科普是比较好的文章。
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 板的布局一起使用。
优化资源使用- 完成- 通过仅使用一个加扰器 LFSR 并为所有通道使用它来优化资源使用 -完成
项目参考
下面是针对这个项目一些前辈写的文章(相量子提供)
❝https://blog.csdn.net/weixin_36590806/category_10892678.html❞
❝https://blog.csdn.net/m0400220334?t=1❞
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的协议(增加了很多由相量子提供的资料),有兴趣可以去学习。