0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何用FPGA实现4K视频的输入输出与处理

FPGA研究院 来源:OpenFPGA 2025-10-15 10:47 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

以下文章来源于OpenFPGA,作者碎碎思OpenFPGA

在游戏、影视和显示领域,4K 已经成为标配。而今天,我们就来聊聊——如何用 FPGA 实现 4K 视频的输入输出与处理。

HDMI 1.4 到 HDMI 2.0:瓶颈与突破

目前,大多数基于 HDMI 的 FPGA 图像处理方案,通常采用两种思路:

直接用 FPGA IO 管脚配置为 TMDS 接收/发送模式,详见下面链接;

https://github.com/Digilent/vivado-library

通过外部 HDMI PHY 收发芯片,将并行视频数据与 TMDS 信号互转。

这些方案在 HDMI 1.4 时代已经相当成熟,能够实现:

最高 4K@24Hz 视频输入输出

或者 1080p@120Hz 的高帧率显示

这样的性能足以满足多数中低速应用,比如工业检测、嵌入式显示屏等。

但问题来了——

要实现更流畅的 4K@60Hz 视频传输,就必须迈入 HDMI 2.0 时代。

挑战:18 Gbps 的带宽压力

HDMI 2.0 标准要求带宽高达 18 Gbps,这远远超过传统 FPGA I/O 能承受的速率。

而在这类高带宽设计中,高速串行收发器(GTH/GTY) 就成了关键。

在这方面,AMD Artix UltraScale+ FPGA 表现亮眼。 它内部集成的 GTH 收发器 可支持 最高 6 Gbps 的速率,完全能胜任 4K@60Hz 的传输需求。

这也意味着:我们终于能在一块 FPGA 上,完整跑通 HDMI 2.0 的 4K 视频链路!

架构设计:从输入到输出,一气呵成

本项目的目标,是构建一个简洁高效的 4K 视频直通参考设计(Pass-through Design)。

简单来说,就是——

从相机或笔记本电脑输入 HDMI 视频 → FPGA 处理 → 输出到显示器,实时显示高分辨率画面。

整个系统由以下几个关键模块组成:

AMD MicroBlaze 软核处理器

负责初始化与配置各个 IP 核;

通过串口菜单提供简易的系统控制界面;

控制时钟发生器(Clock Wizard)和视频参数。

HDMI RX 1.4 / 2.0 子系统

接收来自外部源(相机/笔记本)的 HDMI 信号;

将 TMDS 信号解码为 FPGA 可处理的视频流格式。

HDMI TX 1.4 / 2.0 子系统

将处理后的视频流重新编码为 TMDS 信号;

输出到 HDMI 显示设备(如 4K 显示器)。

视频物理层控制器(PHY Controller)

负责 HDMI 子系统与 FPGA 内部 GTH 收发器之间的接口

管理数据传输与时钟同步。

视频测试模式生成器(TPG)

当没有外部视频输入时,可自动生成测试图案;

便于验证 HDMI 输出链路是否工作正常。

实践:基于 AMD 官方参考设计

整个方案的实现基于 AMD 官方 HDMI 参考设计,在此基础上进行了调整与优化:

增加了对 HDMI 2.0 帧率与分辨率的支持;

通过 MicroBlaze 实现灵活的软件可配置控制;

充分利用 Artix UltraScale+ 的 GTH 特性,实现稳定的高速传输。

许可

我不清楚我电脑里Vivado为啥都有license,如果没有的话可以通过官网申请试用,详见:

xilinx_ip_license申请

这里提供一个网络下载的license,我电脑里应该时安装了这个,大家可以尝试一下:

分享一波“各种各样”的资源

c70e070a-a88d-11f0-8c8f-92fbcf53809c.png

创建参考设计

在 AMD Vivado 设计套件中创建设计之前,我们打开一个针对 VCU118 的项目。

c76d8b62-a88d-11f0-8c8f-92fbcf53809c.png

项目打开后,打开 IP 库并选择 HDMI 1.4 / 2.0 接收器子系统。

c7cb9856-a88d-11f0-8c8f-92fbcf53809c.png

这会将 IP 添加到项目中。选择 IP。

c8261f42-a88d-11f0-8c8f-92fbcf53809c.png

右键单击选定的 IP,然后选择“打开 IP 示例设计”。

c8803734-a88d-11f0-8c8f-92fbcf53809c.png

对话框打开后,选择要存储项目的位置。

c8d95d96-a88d-11f0-8c8f-92fbcf53809c.png

这将打开一个针对 VCU118 的示例设计。我们需要将目标板更改为自己的开发板。

c93345d6-a88d-11f0-8c8f-92fbcf53809c.png

更换FPGA芯片IP会被锁定,需要更新:

c99278a8-a88d-11f0-8c8f-92fbcf53809c.png

更新选定的 IP 并重新运行 IP 状态报告,IP 现在应该显示为最新的。

c9edd7ac-a88d-11f0-8c8f-92fbcf53809c.png

下一步是对视频 PHY 控制器进行修改,以更新 AMD Artix UltraScale+ 设备上提供的 GTHE4。确保将时钟原语设置为 PLL。

ca4ed052-a88d-11f0-8c8f-92fbcf53809c.png

设计应如下所示。

caab83f6-a88d-11f0-8c8f-92fbcf53809c.png

在本设计中,视频通过 TGP 从 HDMI Rx 传输到 HDMI Tx。为了确保能够支持最高的分辨率和帧率,视频像素以每时钟 2 像素或每时钟 4 像素的速率提供(取决于模块的配置)。

该设计的架构如下所示。外部传输路径使用 Display Port 转 HDMI 转换器,接收器使用 TMDS 重定时器

cb079f56-a88d-11f0-8c8f-92fbcf53809c.png

在内部,视频物理层控制器(Video Phy Controller)与 GTH 收发器相连,用于发送(Tx)和接收(Rx)操作,并为 HDMI 发送端和接收端各提供 3 条数据通道(data lane)。这些通道与 HDMI 子系统相互连接。

cb5ffafc-a88d-11f0-8c8f-92fbcf53809c.png

HDMI 解决方案需要多个 IIC 接口用于连接 HDMI Tx 和 Rx 的 DDC,这些 DDC 直接连接或来自 HDMI Tx/Rx 子系统。这些解决方案还需要 IIC 接口用于 SN65DP159RGZT 和 TMS181(驱动和均衡芯片),用于改善输入和输出 GTH 信号。

我们还需要第二个通道 AXI IIC 连接到时钟发生器。该时钟发生器提供 GTH 参考时钟。

本次板卡的 IIC 网络如下所示。

cbbfb7f8-a88d-11f0-8c8f-92fbcf53809c.png

在 AMD MicroBlaze 处理器模块内,添加第二个 AXI IIC 并将其信号连接到外部。

cc198c9c-a88d-11f0-8c8f-92fbcf53809c.png

修改约束后就可以进行综合实现了~

从 AMD Vivado 设计套件导出 XSA,有了 XSA,我们可以在 AMD Vitis 统一软件平台中创建一个简单的 Hello World 应用程序。这个 Hello World 应用程序将创建一个平台和一个应用程序。编译并运行 Hello World 应用程序确保我们能够在 AMD MicroBlaze 处理器上生成并运行应用程序。

cc7aa6b2-a88d-11f0-8c8f-92fbcf53809c.png

现在我们知道我们有一个可行的系统,并且可以在 AMD MicroBlaze 处理器上执行程序,我们需要为 HDMI 直通创建应用软件。

在平台中,打开 platform.spr 文件并选择板级支持包 (Board Support Package)。在板级支持包下,向下滚动找到 v_hdmi_rx_ss 驱动程序,然后选择导入示例。

ccd98cfe-a88d-11f0-8c8f-92fbcf53809c.png

这将为我们提供一系列应用示例。在本例中,我们将使用 Passthrough_MicroBlaze。

cd357988-a88d-11f0-8c8f-92fbcf53809c.png

这样就创建好了应用程序。不过,我们需要对主应用程序示例进行一些修改,确保时钟发生器芯片配置正确。

主要的修改是对条件编译进行修改,更改正在编程I2C 时钟发生器类型。默认情况下,软件预期编程 Si5324 设备,而 我们的开发板具有瑞萨 8T49N24 时钟发生器设备。

int I2cClk(u32 InFreq, u32 OutFreq)
{
int Status;

//#if(!defined XPS_BOARD_ZCU104)
#if(defined XPS_BOARD_ZCU104)
/* Free running mode */
if(InFreq == 0) {

 Status = Si5324_SetClock((XPAR_IIC_0_BASEADDR),
   (I2C_CLK_ADDR),
          (SI5324_CLKSRC_XTAL),
   (SI5324_XTAL_FREQ),
   OutFreq);
if(Status != (SI5324_SUCCESS)) {
 xil_printf("Error programming SI5324
");
 return0;
 }
}

/* Locked mode */
else{
 Status = Si5324_SetClock((XPAR_IIC_0_BASEADDR),
   (I2C_CLK_ADDR),
   (SI5324_CLKSRC_CLK1),
   InFreq,
   OutFreq);

if(Status != (SI5324_SUCCESS)) {
 xil_printf("Error programming SI5324
");
 return0;
 }
}
#else
/* Reset I2C controller before issuing new transaction.
 * This is required torecover the IIC controllerincasea previous
 * transaction is pending.
 */
XIic_WriteReg(XPAR_IIC_0_BASEADDR, XIIC_RESETR_OFFSET,
   XIIC_RESET_MASK);

/* Free running mode */
if(InFreq == 0) {
 Status = IDT_8T49N24x_SetClock((XPAR_IIC_0_BASEADDR),
      (I2C_CLK_ADDR),
      (IDT_8T49N24X_XTAL_FREQ),
      OutFreq,
      TRUE);

if(Status != (XST_SUCCESS)) {
 print("Error programming IDT_8T49N241
");
 return0;
 }
}

/* Locked mode */
else{
 Status = IDT_8T49N24x_SetClock((XPAR_IIC_0_BASEADDR),
      (I2C_CLK_ADDR),
      InFreq,
      OutFreq,
      FALSE);

if(Status != (XST_SUCCESS)) {
 print("Error programming IDT_8T49N241
");
 return0;
 }
}
#endif
return1;
}

为了确保软件应用程序能够适应所提供的 256KB 内存,将优化级别设置为 O1。

cd971698-a88d-11f0-8c8f-92fbcf53809c.png

完成这些更改后,我们就可以构建应用程序并在开发板上进行调试。完整的源代码可以在 git 项目中获取。

https://github.com/ATaylorCEngFIET/4K-at-60Hz

下板测试

测试非常简单。我们需要提供一个 HDMI 接收器和一个 HDMI 源。

初始测试的 HDMI 接收器是一台支持 4K 的显示器和一台支持 1080p 的小型显示器。HDMI 源是一台 4K 运动相机,它也可以切换输出模式。

cdf14ea6-a88d-11f0-8c8f-92fbcf53809c.jpg

打开电路板并下载应用程序进行调试。

ce4c2e0c-a88d-11f0-8c8f-92fbcf53809c.png

运行应用程序,将 HDMI 接收器和源连接到摄像头,并将分辨率设置为 1080P。它会显示正在传输的图像。

ceaec3d2-a88d-11f0-8c8f-92fbcf53809c.jpg

运行该应用程序将通过 UART 输出一个菜单。通过此菜单,我们可以控制在 AMD MicroBlaze 处理器上运行的应用程序。此外,我们还可以提取有关图像处理流水线的配置和性能的信息。

cf0df9d8-a88d-11f0-8c8f-92fbcf53809c.png

按“i”将提供有关 HDMI TX 和 RX 子系统的信息。

cf68db32-a88d-11f0-8c8f-92fbcf53809c.png

cfc06a3c-a88d-11f0-8c8f-92fbcf53809c.png

d01a0dc6-a88d-11f0-8c8f-92fbcf53809c.png

我们还可以通过终端提取 GTH 日志。

d0715c0c-a88d-11f0-8c8f-92fbcf53809c.png

将 HDMI 接收器连接到支持 4K 的显示器后,我们可以看到更新后的分辨率。

最终结果

这套设计能在 FPGA 平台上轻松实现 4K@60Hz 视频输入输出,为高性能视觉系统、视频采集卡、显示控制器等应用提供了强大支撑。

总结:FPGA,让 4K 不再遥远

过去,4K 视频处理常被认为是 GPU 或专用芯片的“主场”。 但如今,借助 AMD FPGA 强大的可编程逻辑与高速收发器, 4K@60Hz 视频系统 已能在单片 FPGA 上灵活实现。

未来,我们可以想象更多:

视频叠加、AI 视觉检测、HDR 动态调节……

这些都可以通过硬件逻辑实时完成。

参考设计

https://github.com/ATaylorCEngFIET/4K-at-60Hz

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1655

    文章

    22283

    浏览量

    630282
  • 视频
    +关注

    关注

    6

    文章

    1999

    浏览量

    74647
  • 图像处理
    +关注

    关注

    28

    文章

    1340

    浏览量

    59177

原文标题:FPGA 玩转 4K 视频输入输出:让图像处理更“丝滑”

文章出处:【微信号:FPGA研究院,微信公众号:FPGA研究院】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    4K H265高清播放开发板, 支持4K输入输出

    :HDMI 输入, 支持4K 信号,然后你可以进行美女人像识别,二维码扫描识别等各种图像处理, 也可以编码保存HDR, 是目前电视产品中最受关注的画质增强技术 (更多介绍猛击http
    发表于 03-07 00:39

    Thunderbolt 2如何实现4k视频分辨率

    方面。它支持 4K 视频的高带宽,因此使用大量当前接口技术来采集、编辑和查看是一项非常艰难的任务。这些当前接口无法优化内容创建过程,使得未来原生 4k 编程难以实现。对于 60Hz 下
    发表于 09-14 15:35

    哪个FPGA板能够显示4k视频

    嗨,我想知道哪个基于Xilinx FPGA的开发板可以使用单个hdmi或displayport连接器/电缆在25-30Hz或更高频率下输出4k(2160p)? (我可能看起来像
    发表于 03-29 13:14

    Spartan 6是否能够在60hz处理4k输入视频流?

    大家好,我对LOGiCORE DisplayPort很感兴趣,我需要知道Spartan 6(Or Virtex 6)是否能够在60hz处理4k输入视频流?所以基本上我需要验证
    发表于 04-10 14:04

    玩转FPGA边缘视觉——4k视频图像抓取

    随着现代图像及视频处理技术的不断发展,人们对图像处理提出了新的要求,最近几年,图像的分辨率和扫描频率都有了较大范围的提升,1080P分辨率的视频已经非常流行,2
    发表于 05-09 18:00

    玩转FPGA边缘视觉——4k视频图像抓取

    随着现代图像及视频处理技术的不断发展,人们对图像处理提出了新的要求,最近几年,图像的分辨率和扫描频率都有了较大范围的提升,1080P分辨率的视频已经非常流行,2
    发表于 05-13 17:15

    DVD视频刻录机的输入输出接口

    DVD视频刻录机的输入输出接口   输入输出接口         
    发表于 12-23 09:49 2279次阅读

    视频打印机的输入输出

    视频打印机的输入输出            输入输出指的是产品输入输出
    发表于 12-31 10:38 1752次阅读

    Thunderbolt2 实现 4k 视频查看与编辑

    1080p 视频屏幕分辨率现已出现在几乎每个家庭,与当前其它技术一样,该技术也在快速发展进入 4k 视频新阶段。这为我们的设计师朋友们带来了众多挑战,尤其是在内容创建方面。它支持 4K
    发表于 04-18 14:54 1328次阅读
    Thunderbolt2 <b class='flag-5'>实现</b> <b class='flag-5'>4k</b> <b class='flag-5'>视频</b>查看与编辑

    盘点2019最受欢迎的4k视频软件

    随着科技的进步,4k电视也逐渐走进了家家户户。对于4k电视而言,4k资源是极其重要的。现如今很多视频网站纷纷加入了4k资源,但还是有很多用户
    发表于 05-17 10:50 2723次阅读

    Thunderbolt™ 2 如何实现 4k 视频分辨率

    Thunderbolt™ 2 如何实现 4k 视频分辨率
    发表于 11-04 09:52 0次下载
    Thunderbolt™ 2 如何<b class='flag-5'>实现</b> <b class='flag-5'>4k</b> <b class='flag-5'>视频</b>分辨率

    支持 4K 和 8K 视频处理FPGA 技术

    支持 4K 和 8K 视频处理FPGA 技术
    的头像 发表于 12-28 09:51 3396次阅读

    从高清到4K,矩阵切换器带你畅享极致视频体验

    随着科技的发展,高清和4K视频已经成为主流,越来越多的观众追求更高的视频质量和更细腻的画质。而矩阵切换器作为视频处理的重要设备,可以
    的头像 发表于 09-01 15:59 1203次阅读

    使用dp接口播放4K视频的技巧

    在数字时代,4K视频已经成为家庭娱乐和专业领域中越来越常见的格式。4K视频提供了比传统1080p视频更高的分辨率和更丰富的细节,为观众带来了
    的头像 发表于 10-30 13:56 2809次阅读

    HDMI接口如何实现4K视频传输

    随着科技的不断进步,人们对视频质量的要求也越来越高。4K视频以其超高清的分辨率和细腻的画质逐渐成为主流。HDMI作为连接显示器和视频源的标准接口,其在
    的头像 发表于 11-27 14:37 4830次阅读