发 帖  
【四旋翼飞行器】76小时吃透四轴算法!史上最强软硬结合实战项目,👉戳此立抢👈

[经验] HDMI FrameBuffer示例设计

2019-1-3 09:34:09  295 HDMI FPGA
分享
1
HDMI FrameBuffer示例设计2018.1
目录1概述
2软件工具和系统要求
2.1硬件
2.2软件
2.3许可
3设计
3.1硬件
3.2软件应用
3.3设计组件
4教程
4.1电路板设置
4.2构建和运行流程
4.2.1硬件
4.2.2 PetaLinux BSP
4.2.3软件应用
运行流程教程
5其他信息
5.1已知问题
5.2限制
6支持
相关链接

1概述
Zynq UltraScale + MPSOC HDMI(高带宽数字多媒体接口)示例设计是在APU和PL上运行的嵌入式视频应用,通过可选的HDCP(高带宽数字内容保护)功能展示Linux下的连接解决方​​案。

该设计演示了PL中实现的HDMI接口的捕获和显示功能,使用户能够相对轻松地将视频数据输入和输出FPGA,并使用HDCP Revision 1.4 / 2.2安全地从/向其发送视听数据。 HDCP保护源/接收器。通常,HDCP 2.2用于加密超高清(UHD)的内容,而HDCP 1.4用作较低分辨率的传统加密方案。


2软件工具和系统要求
2.1硬件
需要:
  • 具有生产芯片的ZCU102评估板(Rev 1.0)
  • 使用高达UHD分辨率的HDMI输入进行监听(3840x2160 @ 60Hz)
  • HDMI Premium认证电缆
  • Micro-USB线,连接到笔记本电脑或台式机,用于终端仿真
  • SD卡

2.2软件
需要:
  • 带有Ubuntu 16.04 LTS的Linux主机,适用于所有工具流程教程(有关详细的操作系统要求,请参阅UG1144)
  • Vivado Design Suite版本2018.1
  • PetaLinux Tools版本2018.1(有关安装说明,请参阅UG1144)
  • Git分布式版本控制系统
  • Silicon Labs四路CP210x USB转UART桥接驱动器
  • 串行终端仿真器,例如Teraterm
  • 参考设计Zip文件
  • ZCU102 rev 1.0包括所有源代码和项目文件。


2.3许可
  • 重要提示:本参考设计中的某些材料由第三方单独许可,可能受GNU通用公共许可证第2版,GNU宽通用许可证版本2.1或其他许可证的约束。该第三方库源 zip文件规定,不包含在参考设计单独许可材料的副本。[TODO:指向HDMI TPL源的更新链接]
  • 您只需要Vivado Design Suite许可即可构建设计。您可以评估30天或在此处购买。
  • 您还需要HDMI IP Core评估许可证才能构建此设计。您可以在此处申请IP评估许可证
  • 该设计有两种风格 - 一种具有HDCP功能,另一种没有。要使用HDCP功能,用户需要拥有自己的HDCP密钥。此外,用户还需要实施HDCP IP。Xilinx提供IP来实现HDCP加密模块,但在法律上只能为使用HDCP2.2的用户提供IP - HDCP采用者列表在此验证https://www.digital-cp.com/licensee-list。如果您或您的公司不是HDCP采用者,我们建议使用非HDCP版本的设计。

生成许可证的步骤:
  • 使用您的工作登录此处电子邮件地址(如果您还没有帐户,请按照创建帐户下的步骤操作)
  • 通过选中“Vivado Design Suite,30天评估许可证”,从“创建新许可证”生成许可证


  • 在系统信息下,提供主机详细信息。
  • 继续,直到您获得许可协议并接受它。
  • 许可证(.lic文件)将被发送到登录详细信息中提到的email-id。
  • 在本地复制许可证文件,并在SDSoC许可证管理器中提供相同的路径。

3设计
3.1硬件
2种参考设计可提供不同的IP配置,以演示目标功能
  • 2个像素/时钟,8位色深,无HDCP
  • 2个像素/时钟,10位色深,带HDCP 1.4和2.2(显示深色和HDCP功能)

该示例设计围绕HDMI 1.4 / 2.0发送器子系统(HDMI_TX_SS),HDMI 1.4 / 2.0接收器子系统(HDMI_RX_SS),视频PHY(VPHY)控制器内核构建,并利用现有的Xilinx IP内核构成完整的系统。VPHY控制器内核已针对HDMI应用进行了配置,允许与板载HDMI 2.0电路之间传输和接收HDMI视频/音频。




在直通模式下,VPHY Controller核心恢复高速串行视频流,将其转换为并行数据流,然后将其转发到HDMI_RX_SS核心,从核心流中提取视频并将其转换为AXI流。AXI视频连接到帧缓冲区写入IP,以用户指定的存储器格式将此数据写入DDR。在显示器侧,帧缓冲读取IP从DDR读取数据并将其发送到HDMI_TX_SS内核,后者将AXI视频转换回HDMI流,然后由VPHY Controller内核作为高速串行数据流进行传输。

3.2软件应用
HDMI传递应用程序aka video_cmd是一个用户空间应用程序,用于演示显示管道的端到端捕获。不对存储在存储器中的帧执行视频处理。在初始化期间,video_cmd可以检测插入RX端口的视频源,然后进入直通模式。如果video_cmd找不到任何源,它将以TPG模式启动并开始流式传输SMPTE色条(由集成到软件应用程序中的开源模式测试实用程序生成)。video_cmd还可以检测输入中的任何变化,如视频源热插拔,视频源断开,分辨率更改,颜色格式更改,用户输入等,并相应地进行调整。

如果用户在支持HDCP的设计上运行此应用程序,则应用程序需要在EEPROM上提供生产HDCP密钥(有关详细信息,请参阅HDMI IP产品指南pg235 / 236),并提示用户在初始化期间输入密码。如果用户输入正确的密码,应用程序将从EEPROM中检索HDCP密钥并将其加载到IP中并启用HDCP功能。提供3次尝试输入正确的密码,失败导致应用程序启动HDCP功能被禁用。

video_cmd是一个交互式工具,用户可以从以下菜单中选择操作:

---------------------
--- MAIN MENU ---
---------------------
i - Info
=> Displays HDMI info.
h - HDCP Info
=> Displays HDCP info.
d - Display Logs
=> Display HDMI and HDCP logs.
c - Colorbar
=> Displays the colorbar on the source output.
r - Resolution
=> Change the video resolution of the testpattern.
f - Pixel-Format
=> Change the pixel-format of the testpattern.
p - Pass-through
=> Passes the HDMI sink input to source output.
t - Tiles-pattern
=> Displays a tile-pattern on the source output.
e - EDID
=> Display and set edid.
99 - Exit







3.3设计组件
顶级目录结构显示主要设计组件。提供预先构建的SD卡图像以及基本README和法律声明文件
zcu102-hdmi_fb_10b_exdes_2018.1
|---- apu
|     |---- hdmi_passthrough_app
|     |           |---- modetest
|     |           |---- video_lib
|     |---- petalinux_bsp
|
|---- images
|
|---- pl
      |---- design
      |---- imports
      |---- repos






下图显示了相关的设计组件以及相互依赖关系和生成的输出产品







4教程
4.1电路板设置
需要:
  • 电源连接到12V电源连接器。
  • 将HDMI电缆连接到电路板上的HDMI Rx连接器(底部); 将另一端连接到HDMI源
  • 显示屏 - 将HDMI电缆连接至主板上的HDMI Tx连接器(顶部); 将另一端连接到显示器
  • 将micro-USB线连接到USB-UART连接器; 使用以下设置为您的终端模拟器:
    • 波特率:115200
    • 数据:8位
    • 平价:无
    • 停止:1位
    • 流量控制:无
  • 插入SD卡(FAT格式),其中包含从$ HDMI_HOME / images目录复制的二进制文件。

跳线和开关:
  • 将启动模式设置为SD卡:
    • Rev 1.0:SW6 [4:1] - 关闭,关闭,关闭,开启



要为设计运行预先构建的SD卡映像,请按照此处的说明进行操作。

4.2构建和运行流程
以下教程假设$ HDMI_HOME环境变量已设置如下

% export HDMI_HOME=<path/to/downloaded/zip-file>/zcu102_hdmi_<n>b_[hdcp]_exdes_2018_1/






4.2.1硬件
Vivado TCL脚本包含在存档文件中,使用户可以从头开始创建HDMI硬件设计。要执行该脚本,请确保vivado 2018.1工具可用且已在shell中获取
% cd $HDMI_HOME/pl
% vivado -s ./design/setup.tcl






这将打开Vivado GUI并生成硬件设计。
  • 单击“PROGRAM AND DEBUG”选项卡下的“Generate Bitstream”,然后等待生成比特流。
  • 单击“文件 - >导出 - >导出硬件”。选中“包含比特流”框,然后单击“确定”。这将在以下位置生成存档文件(.hdf)hdmi_project / hdmi_example_zcu102.sdk / hdmi_example_zcu102_wrapper.hdf
  • 将生成的hdf文件复制到PetaLinux hw-description文件夹并重命名为system.hdf
% cp hdmi_project/hdmi_example_zcu102.sdk/hdmi_example_zcu102_wrapper.hdf $HDMI_HOME/apu/petalinux_bsp/project-spec/hw-description/system.hdf





4.2.2 PetaLinux BSP
本教程介绍如何使用PetaLinux构建工具构建Linux映像和引导映像
  • 将2018.1内核下载到本地文件夹并签出xlnx_rebase_v4.14分支
% git clone https://github.com/Xilinx/linux-xlnx.git
% cd linux-xlnx
% git checkout xlnx_rebase_v4.14





  • 配置petalinux以使用下载的内核源
% cd $HDMI_HOME/apu/petalinux_bsp
% petalinux-config
     Linux Components Selection--->linux-kernel ---> Select "ext-local-src"
     Linux Components Selection--->External Linux-kernel local source settings---> Enter the folder path where the kernel sources were downloaded
  
Save and exit
  
//Note: Default local folder setting in bsp is set to /home/2018.1/kernel/Linux-xlnx//





  • HDMI驱动程序可用作树外内核模块。petalinux_bsp / project-spec / meta-user / recipes-hdmi / hdmi中包含一个配方,它将在构建过程中自动从github获取hdmi驱动程序
  • 设计硬件文件应该在hw-description文件夹中可用
  • 与rootfs一起构建项目映像文件
% petalinux-build





  • 创建启动映像
% cd images/linux
% petalinux-package --boot --fpga system.bit --fsbl zynqmp_fsbl.elf --pmufw pmufw.elf --u-boot





  • 将生成的BOOT.BIN和image.ub文件复制到SD卡目录
% cp BOOT.BIN image.ub $HDMI_HOME/images






4.2.3软件应用
HDMI传递应用程序是一个用户空间应用程序,它实现和管理视频管道(捕获到显示)并动态响应输入的变化以相应地调整输出。

要编译此应用程序,请参阅apu / hdmi_passthrough_app文件夹中提供的README.md文件中提供的说明
  • 将生成的应用程序二进制文件复制到SD卡目录
% cp video_cmd $HDMI_HOME/images






运行流程教程
  • 请参阅此处了解电路板设置说明
  • 将所有文件从$ HDMI_HOME / images SD卡目录复制到FAT格式的SD卡。
  • 打开电路板以启动图像; 确保INIT_B,已完成和所有电源轨LED指示灯呈绿色亮起。
  • 大约20秒后,显示屏将亮起,应用程序将自动启动,目标是显示器支持的最大分辨率。应用程序将检测输入源是否连接到HDMI Rx。如果检测到有效输入,应用程序将自动切换到Rx并更新输出分辨率以跟随输入。如果未检测到源,则SMPTE Colorbars将以显示器的原始分辨率显示



5其他信息
5.1已知问题
  • 使用video_cmd应用程序时,Sink Hot-Plug(HDMI-Tx-> Monitor / Tv)测试时间很长(约为10秒)。这是因为应用程序通过轮询机制监视连接器状态。在Tx电缆插拔事件应用程序检测状态变化(约5秒检测时间),并将通过UART向用户提供检测到的状态的文本反馈。此延迟问题将在2018.3中修复。Sink电缆拔出/插头的步骤如下
    • 拔下Tx线
    • 等待应用程序检测电缆状态(通过UART上的文本反馈提供确认)
    • 插上Tx线。应用程序将检测电缆状态,如果连接了有效的Rx源或将切换到TPG模式,将切换到直通模式。
  • 上述问题还会导致某些HDCP接收器和HDCP一致性测试出现问题
  • 在EDID中使用减少的消隐时序参数时,某些HDMI Tx监视器可能无法在4K60处可靠地同步。
    • 飞利浦BDM 4350UC / 61

5.2限制
  • 该应用程序不支持音频
  • 该应用程序不支持隔行输入/输出视频内容

相关经验

评论

高级模式
您需要登录后才可以回帖 登录 | 注册

发经验
课程
    关闭

    站长推荐 上一条 /7 下一条

    快速回复 返回顶部 返回列表