如何在FPGA上使用HDMI端口(基本)


8

两个问题。

我有一个Xilinx Spartan 6 FPGA,它只有HDMI输入和输出。是否可以使用某种指南或预先编写的代码开始将图像发送到屏幕?我不知道如何开始,也找不到资源。

其次,我这样做的原因是因为我想使用和修改在带有VGA的Spartan 3E上实现的家伙的Atari 2600代码。甚至可以轻松地调整项目的视频方面吗?

任何帮助,资源或建议,将不胜感激!


这是商业开发板吗?如果是这样,应使用什么模型并检查其随附的参考设计。
2012年

这是董事会:digilentinc.com/Products/… 它没有附带任何内容。
ballaw 2012年

@ballaw-Digilent产品提供了很好的支持。滚动到您刚刚链接到的页面的底部,您将在线看到一大堆文档和示例项目:i.stack.imgur.com/F0TgY.png。在线现在算作“附带”。您可能还希望在板上找到其他部件的数据表,例如XC6SLX45 FPGA和TMDS141RHAR HDM​​I缓冲器,它们在Internet上的其他位置。
凯文·维米尔

Answers:


12

Atlys板使用TDMS输入,因此您需要一个HDMI解码器,该解码器接受这些输入并产生VSYNC,HSYNC,DE和DATA。Xilinx在一些应用笔记中详细介绍了DVI编码和解码过程。这些都带有示例代码,需要xilinx登录:

示例代码在verilog中,但是如果愿意,可以将顶层转换为VHDL,这是相对琐碎的练习。

这是摘自第一篇应用笔记的图,显示了接收器的基本前提:

来自Xilinx应用笔记

由于Spartan 6具有内置的SERDES硬件,因此可以将它们用作反序列化过程的一部分。有一个同步过程可以恢复时钟并确保所有通道都处于同步状态。最后,应用8b / 10b解码以生成RGB通道数据。

恢复视频信号后,您便可以将这些信号转发到您要执行的任何处理,或转发到编码器,该编码器将再次将其从HDMI端口发送出去。

如果您有TFTMOD显示器,那么将数据转发到显示器就像将DE和DATA信号连接到适当的FPGA引脚一样简单。 TFT板参考手册对于显示的时序信息很有用,尽管我发现解串器的输出时序很好。

您可以将本项目中的UCF文件用于HDMI 约束,如果使用该板,则可以将该项目用于MODTFT约束。

唯一需要注意的是Xilinx示例不处理EDID信息。如果您只是使用开发板来转发数据,则可以直接路由EDID线路,并称之为一天。其他情况可能需要在FPGA上处理EDID数据。基本上只是I2C。该OpenCores的I2C接口是非常稳固,或者在您自己的代码。据我所知,关于EDID 1.3数据格式的Wikipedia表是准确的。


4

只是为了补充先前的答案所解释的内容:

DVI / HDMI发送器可以是一个很好的起点,因为您可以直接获得一些视频。

如图1所示,通过TMDS链路进行的HDMI / DVI视频传输在逻辑上分为多个阶段:图1:在Spartan-6 FPGA实现TMDS视频接口的 TMDS发送器设计

在此处输入图片说明

  1. TMDS编码器:将来自视频源的像素数据,HDMI辅助/音频数据以及HSYNC和VSYNC转换为三个10位符号流

  2. 串行器(10:5齿轮箱和OSERDES2 5:1转换)分两个阶段对所有三个流执行10位并行并行转换,然后将它们发送到差分输出对的三个通道(TMDS缓冲器)。

这两个阶段都需要一个时钟电路来适当地生成(PLL)和分配(BUFPLL,BUFG)时钟信号(具有像素参考时钟的频率及其倍数)。

当然,发送器的核心是编码器模块。您可以从DVI编码器开始,因为它比HDMI编码器简单。HDMI和DVI有很多共同点,包括物理TMDS链接,活动视频编码算法和控制令牌定义。

该应用笔记还提供了2种设计。一个简单但很好的入门方法是“带有可编程视频定时的SMPTE HD彩条生成”。它通过多种屏幕模式发送彩条生成器视频,可以通过滑动开关进行选择。这种设计很有用,因为我们可以使用其他视频源更改彩条生成器,并且仍然能够获得保留原始发送器块的某些视频。

我希望这有帮助!


2
不鼓励仅使用链接的答案,因为如果Xilinx将来重新组织其站点,并且链接消失,则对将来的访问者没有任何帮助。也许您可以添加应用笔记描述的一般方法的一些额外细节?
PeterJ

谢谢,您完全正确。我已经添加了更多有关它的细节。
L30nardo SV。

3

以下是参考设计的文本,您可以从链接到的电路板页面下载该参考设计:

DSD-0000326 12/13/11此zip文件包含一个EDK演示项目,该项目演示了如何在Genesys板上使用HDMI。它接受HDMI输入,将输入帧缓冲到内存中,然后将缓冲输出到另一个HDMI端口。这是使用PLB总线实现的。 下载

您还可以查看Xilinx spartan 6工业视频处理套件随附的参考设计。 http://www.em.avnet.com/zh-CN/design/drc/Pages/Xilinx-Spartan-6-FPGA-Industrial-Video-Processing-Kit.aspx (单击支持文件链接,需要avnet登录)。

可能还有更多针对不同fpgas的参考设计。

另外,除非您要实施音频或加密,否则hdmi与dvi基本相同。


谢谢。我看到了,但是我不太确定如何使用它,因为它使用了我没有的EDK,因为它不是免费的。在其中使用vhd文件会很简单吗?我对此表示怀疑,因为下载中还有很多其他内容,其中大多数我不知道它们是什么。
ballaw 2012年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.