提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 1. 前言
    • 1.1 HDMI介绍
    • 1.2 TMDS介绍
    • 1.3 HDMI传输周期
  • 2. Vivado工程的编写
  • 3. Vitis工程的编写
  • A. 工程源码下载

1. 前言

1.1 HDMI介绍

HDMI是(High Definition Multimedia Interface)的缩写,意思是高清晰度多媒体接口,是一种数字化视频/音频接口技术,适合影像传输的专用型数字化接口,可同时传送音频和影像信号,最高数据传输速度为48Gbps(2.1版)。

本实验使用FPGA通过HDMI接口输出彩条、色带、方块等图像。实验使用的硬件平台为ZedBoard,ZedBoard开发板使用了ADV7511 HDMI编码芯片,硬件框图如下。

1.2 TMDS介绍

HDMI采用和DVI相同的传输原理——TMDS(Transition Minimized Differential signal),最小化传输差分信号。

TMDS传输系统分为分为两个部分:发送端和接收端。 TMDS发送端收到HDMI 接口传来的表示RGB信号的24位并行数据(TMDS对每个像素的RGB三原色分别按8bit编码,即R信号有8位,G信号有8位,B信号有8位),然后对这些数据进行编码和并/串转换,再将表示3个RGB信号的数据分别分配到独立的传输通道发送出去。接收端接收来自发送端的串行信号,对其进行解码和串/并转换,然后发送到显示器的控制端。与此同时也接收时钟信号,以实现同步。

HDMI TMDS传输的数据类型有三种(加上Hsync与Vsync就算4种):
(1) Preamble(控制信息),主要用于控制接下来传输的数据是Data Island或者Video Data
(2) Data Island(数据包),各种类型的包信息,包括音频数据包,图像信息包等
(3) Video Data (视频信息),视频像素数据,HDMI可以传输RGB与YUV两种格式的像素数据
(4) 还有Hsync与Vsync

如果是8bit的数据进入TMDS编码器,得到抗干扰性强的10bit TMDS信号,然后再进行串行化输出;在接收端收到串行的HDMI信号后,进行信号复原,得到10bit的TMDS信号,最后用TMDS解码器解码得到原来的8bit数据。

HDMI的数据传输有TMDS0,TMDS1,TMDS2三个通道,每个通道的传输流程都是一样的:

(1)如果传输的是Video Data,并且格式为RGB,那么会占用三个通道的所有24bit输入,Channel0[7:0]用于传输B,Channel1[7:0]用于传输G,Channel2[7:0]用于传输R。
(2)如果传输的是Data Island,则占用三个通道共10bit输入,Channel0[3:2]用于传输Data Island Header(包头),Channel1[0:3]与Channel2[0:3]用于传输Data Island Content(包内数据)。
(3)如果传输的是Preamble,则占用1,2两个通道共4bit输入,Channel1[1:0]与Channel2[1:0]分别为CTL0,CTL1,CTL2,CTL3,用于判断接下来输入的是Video Data或者Data Island。

1.3 HDMI传输周期

HDMI的TMDS数据传输可以分为三个传输周期:

(1) Control Period期间会传输Hsync,Vsync,并且在该时期的最后阶段会传输Preamble
(2) Data Island Period期间会传输Data Island(数据包),也会有Hsync与Vsync
(3) Video Data Period期间会传输Video Data(视频像素数据)

某帧的总体周期如下:

三个传输周期示意图如下:

(1) 左边是Control Period,传输有Hsync,Vsync与Preamble
(2) 中间是Data Island Period,传输有Hsync,Vsync,以及两个Packet Header与Packet(每32个clock 一个packet);另外Data Island的两端会用Guard Band保护并隔开Data Island的数据,因为这个阶段传输的数据大多是非常重要的,比如其中就有图像分辨率,决定后面的Video Data数据的显示方式
(3) 右边是Video Data Island,传输视频像素数据,在该时期的开头也有Guard Band

2. Vivado工程的编写

(1)本实验使用的Vivado工程如下:

其中“design_1_wrapper.v”为顶层例化代码、“hdmi_data_gen.v”负责产生用于HDMI输出的图像(图像包括纯色块、渐变条、彩色带等)、“design_1.bd”模块为block design模块,负责将RGB信号转换为TMDS信号以及提供ADV7511 HDMI芯片的底层驱动。

(2)“design_1.bd”模块的设计如下:

“clk_wiz_0”为时钟产生模块,输出时钟给HDMI模块使用。
“hdmi_display_0”为RGB信号转换为TMDS信号模块,是一个自定义IP核。
“processing_system7_0”为ARM核。

(3)“hdmi_data_gen.v”文件中定义了1280*720P的视频时序参数,

(4)Vivado工程建立方式可以参考文章《ZYNQ 串口打印输出——FPGA Vitis篇》。

3. Vitis工程的编写

(1)点击 Vivado 菜单“Tools-> Launch Vitis IDE”,启动 Vitis。
(2)新建 Vitis平台工程。Vitis工程的建立可以参考以前的文章《ZYNQ串口打印输出——FPGA Vitis篇》。
(3)新建 Vitis应用工程。该工程主要用于通过I2C总线配置ADV7511寄存器来实现该HDMI芯片的驱动。
(4)配置ADV7511寄存器需要参考官方手册“ADV7511_Programming_Guide”。可以着重先看手册中“SECTION3 – QUICK START GUIDE”。根据该“快速开始”步骤来配置ADV7511的寄存器。

(5)最后建立的Vitis工程如下,“EMIO_init.x”为EMIO设备驱动、“I2C_ctrl.x”为I2C总线驱动、“helloworld.c”为“main”函数所在文件。

(6)Vitis工程的实现流程很简单,主要是初始化EMIO接口、通过I2C总线读取ADV7511芯片ID号、配置ADV7511的寄存器、程序结束。

(7)编译工程,将工程下载到硬件板卡上(编译和下载方式见《ZYNQ 串口打印输出——FPGA Vitis篇》)。
实验结果为:通过按图中的按钮,可以切换HDMI输出的图像。

以下为HDMI显示结果:


A. 工程源码下载

如果大家对我们的文章感兴趣,可以关注我们的公众号:“FpgaHome”:
该工程对应的 源码 以及 “ADV7511_Programming_Guide.pdf” 文档可以通过关注该微信公众号,在公众号输入 ZYNQ_HDMI 来获取工程的下载链接,工程采用的是Vivado2021.1版本。


参考文献:
[1] http://www.alinx.com.cn/.
[2]《 ZYNQ 串口打印输出——FPGA Vitis 篇》 . 图灵研究院
[3]《HDMI 介绍——ADV7511 设计》 . 打怪升级 ing. CSDN
[4]《ADV7511_Programming_Guide》 . ANALOG DEVICES

ZYNQ HDMI输出实验——FPGA Vitis篇相关推荐

  1. ZYNQ AXI GPIO中断实验——FPGA Vitis篇

    文章目录 1. 前言 2. Vivado工程的编写 2.1 Block Design工程设计 2.2 创建XDC管脚约束 3. Vitis工程的编写 4. 实验小结 5. 工程源码下载 1. 前言 使 ...

  2. ZYNQ PS端MIO的使用——FPGA Vitis篇

    文章目录 1. 前言 2. MIO介绍 3. Vivado工程编写 4. Vitis工程编写 5. 实验小结 A. 附录 B. 工程源码下载 1. 前言 本实验介绍如何使用ZYNQ芯片PS端的MIO. ...

  3. 自定义AXI IP核实验——FPGA Vitis篇

    文章目录 1. 前言 2. Vivado工程的编写 2.1 创建自定义IP 2.2 添加自定义IP到工程 3. Vitis工程的编写 A. 工程源码下载 1. 前言 Xilinx官方为大家提供了很多I ...

  4. activiti高亮显示图片_【正点原子FPGA连载】第二十章SD卡读BMP图片HDMI显示实验领航者 ZYNQ 之嵌入式开发指南...

    1)实验平台:正点原子领航者ZYNQ开发板 2)平台购买地址:https://item.taobao.com/item.htm?&id=606160108761 3)全套实验源码+手册+视频下 ...

  5. zynq 7000 的HDMI 显示实验

    用了很多年的zynq 7000,一直就没做hdmi 显示实验.前几天终于做了这个实验,也就做一个总结. 我的实验是在微相的z7-lite下根据他们的教程完成的.平台是windows 10 , Viva ...

  6. PYNQ-Z2 HDMI输出图形实验

    在本文中作者使用Xilinx的IP搭建一个HDMI输出图形的平台.在这个平台上设计目标是输出800*600像素的图像,本实验没有使用DDR缓存图像数据.本次实验使用到的工具: 开发板:PYNQ-Z2: ...

  7. ZYNQ(1): PL端HDMI输出

    用的开发板是microzus,因为ZYNQ PL 侧的 IO 结构是支持 TMDS,可以用 FPGA 直接驱动 HDMI 信号.HDMI显示主要是用的IP核实现的,这个不是官方的,所以需要另外下载,在 ...

  8. 【正点原子FPGA连载】第四十四章MT9V034摄像头HDMI显示实验 -摘自【正点原子】新起点之FPGA开发指南_V2.1

    1)实验平台:正点原子新起点V2开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=609758951113 2)全套实验源码+手册+视频下载地址:ht ...

  9. 【正点原子FPGA连载】 第三十五章双目OV5640摄像头HDMI显示实验 摘自【正点原子】DFZU2EG/4EV MPSoC 之FPGA开发指南V1.0

    1)实验平台:正点原子MPSoC开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=692450874670 3)全套实验源码+手册+视频下载地址: h ...

最新文章

  1. 使用HAProxy、PHP、Redis和MySQL支撑10亿请求每周架构细节
  2. c语言读取一个图像文件格式,求指导,如何用c语言实现读取*.raw格式图像
  3. day04 : SQL_DDL, 表创建及管理
  4. android+studio+选择+苹方字体,启动欢迎页面时,Android Studio设置全屏Activity
  5. 总帐科目的批量传输与复制
  6. php 正则去除script,javascript正则实现php中的加入和去除反斜杠函数效果
  7. TensorFlow学习笔记(二十七)CNN的9大模型之Dan CiresanNet
  8. Account group 0170 reserved for consumers
  9. mysql数据库进阶_MySQL T2-数据库进阶?
  10. P3704-[SDOI2017]数字表格【莫比乌斯反演】
  11. 爬虫最基本的工作流程:内涵社区网站为例
  12. Spring框架知识复习之二
  13. [转载]url带中文参数显示乱码的问题
  14. VALSE学习(五):看图说话-Visual Question Answering as Reading Comprehension
  15. 外参矩阵转四元数,左右手坐标系转化1
  16. matlab2020面板介绍
  17. 计算机软件系统由程序和相应的文档组成,ab计算机软件
  18. 【ArcGIS Pro微课1000例】0009:ArcGIS Pro地理配准完整教程(建议收藏)
  19. 你一定要收藏的全网最完整CAD快捷键大全!
  20. 在Qt中配置海康工业相机SDK及遇到的问题(报错)

热门文章

  1. 微信7.0.16 for iOS测试版新增隐藏会话功能
  2. python全国天气信息爬取
  3. JSP javaweb餐厅点餐系统源码(点餐系统)点餐系统网上订餐系统在线订餐系统
  4. C语言--编程将递增数列10、20、30、40、50、60、70、80、90、100保存到数组中,再从键盘输入一个整数,插入到该数列中,使之成为一个递增数列。
  5. espwho-esp32cam-vscode开发使用
  6. 计算机主板最新芯片组品牌,最新的主板芯片组排行榜【详解】
  7. 【无标题】Java实现进度条代码
  8. 一文读懂——光纤通信技术
  9. 中兴网络设备交换机路由器查看MAC地址表项命令方法
  10. Java程序员-日常工作技能清单