【紫光同创国产FPGA教程】——【PGL22G第八章】HDMI输出彩条实验例程

news2024/10/6 14:24:09

本原创教程由深圳市小眼睛科技有限公司创作,版权归本公司所有,如需转载,需授权并注明出处
 

适用于板卡型号:

紫光同创PGL22G开发平台(盘古22K)

一:盘古22K开发板(紫光同创PGL22G开发平台)简介

盘古22K开发板是基于紫光同创Logos系列PGL22G芯片设计的一款FPGA开发板,全面实现国产化方案,板载资源丰富,高容量、高带宽,外围接口丰富,不仅适用于高校教学,还可以用于实验项目、项目开发,一板多用,满足多方位的开发需求。

二:实验目的
FPGA 输出 HDMI 图像信号(分辨率为 1280*720@60),实现彩条显示。22K 开发板需要通
过代码加原语的方式模拟产生 HDMI 信号并输出。

三:实验原理 

TMDS传输简介

HDMI重点就在TMDS通道,TMDS传输HDMI接口的音视频数据,TMDS通道各个通路的数据结构组成如下:

HMDI的Source端输入数据主要有像素点数据、行场同步、控制信号、辅助信号(音频)。显示器上一整幅画面由多个像素点组成,实际的显示过程是很快速的把显示器的各个像素点点亮。

显示时序标准

若下图表示一个5*5的画面,图中每个格子表示一个像素点,显示图像时像素点快速点亮的过程按表格中编号的顺序逐个点亮,从左到右,从上到下,按图中箭头方向的“Z”字形顺序.

以上图为例,每行5个像素点,每完成一行信号的传输,会转到下一行信号传输,直到完成第五行数据的传输,就完成了一个画面的数据传输了,一个画面也称为一场或一帧,显示每秒中刷新的帧数称为帧率。比如1920*1080P像素,就是1行有效像素点1920,一场有效行为1080行。

每个像素点的像素值数据,对应每个像素点的颜色。常见的像素值表示格式比如:RGB888,RGB分别代表:红R,绿G,蓝B,888是指R、G、B分别有8bit,也就是R、G、B每一色光有28=256级阶调,通 过RGB三色光的 不 同 组 合 ,一 个 像 素 上 最多 可显 示24位的256*256*256=16,777,216色。

像素数据源源不断输送进来,行、场的切换通过行场同步信号来控制,即hsync(行同步)和vsync(场同步信号)。

上图中Addressable部分内容是在显示器中可看到的区域,像素点是否有效通过DE信号标识;Border可理解为显示黑边或者显示边框,通常Border显示的像素值是0(黑色)。行、场切换过程都是在用户感受不到的区域进行的,这个区域就是Blanking部分,称为消隐区间。同步信号上升沿表示新的一行/一场开始,Hsync对应行,Vsync对应场。

下图是HDMI显示的720X480分辨率的TMDS编码帧结构。

本实验只考虑 video 信号的传输,实现图像的 TMDS 编码时只需要 Video data Period 和 control period。
完整的信号链路如下:

每个 channel 链路如下:

Color_bar 产生

HDMI 显示的数据源采用 verilog 编写的 color_bar 模块产生。根据像素点所在位置,即列数和行数确定像素值,实现彩条图案。另外 color_bar 需实现上图的时序要求。
本实验采用 1280*720@60 的视频规格,详细时序参数如下:

彩条分成 8 列 1 横条,竖条图案向右规律性移动,横条图案上下摆动。

TMDS 编码
TMDS 的编码会把 D[7:0]或 C[1:0]编码成 10bit 的数据,编码的目的是为了是 TMDS 在传输过程中维持直流平衡,也就是说传输的 0 和 1 的数量保持基本一致。下图是 TMDS 编码的流程图。

四: 实验源码
实验源码详见参考例程。
五:实验现象
HDMI_OUT 接口接上支持对应分辨率(1280*720P@60)的屏后,显示彩条图案,且彩条图案
规律性移动(竖条图案向右规律性移动,横条图案上下摆动)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1004429.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构与算法基础-学习-34-基数排序(桶排序)

目录 一、基本思想 二、算法思路 1、个位排序 (1)分配 (2)收集 2、十分位排序 (1)分配 (2)收集 三、源码分享 1、InitMyBucket 2、DestroyMyBucket 3、ClearMyBucket 4、…

Linux内核分析与应用6-系统调用

本系列是对 陈莉君 老师 Linux 内核分析与应用[1] 的学习与记录。讲的非常之好,推荐观看 留此记录,蜻蜓点水,可作抛砖引玉 6.1 Linux中的各种API LSB (Linux Standards Base) POSIX: 可移植操作系统接口(Portable Operating System Interface of UNIX) L…

如何用手机号注册亚马逊买家账号

注册亚马逊买家号可以用手机号,也可以用邮箱进行注册。想要用手机号注册买家号,那么打开相应的官网后填写手机号、设置密码、接收短信验证即可。 而如果想要批量注册亚马逊买家号,可以使用亚马逊鲲鹏系统进行操作,亚马逊鲲鹏系统也…

playwright自动化上传附件

需求 自动设置上传头像 过程 1. 首先保存本地一个文件,例如 aaa.php file_path files/aaa.png 2. 获取输入类型为 "file" 的按钮 file_input_element page.locator(input[typefile]) 3. 将本地保存的图片路径赋值 file_input_element.set_input_…

算法训练营day49|动态规划 part10:(LeetCode 121. 买卖股票的最佳时机、122.买卖股票的最佳时机II)

121. 买卖股票的最佳时机 题目链接🔥 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大…

堆排序与TopK问题

一、堆排序 堆排序(升序):堆排序的思想就是先用数组模拟建大堆,然后把根结点与最后一个结点值交换,最后一个结点的值就是最大值,然后再把前(n-1)个元素重新建大堆,然后根结点与最后一个结点值交换,就找出了…

javac不是内部或外部命令也不是可运行的程序如何解决?

小伙伴们你们有没有遇到过javac不是内部或外部命令,也不是可运行的程序这样的问题呢?大家遇到这样的问题不要慌,只要学会以下的操作你就可以轻松的解决了,具体的步骤操作就在下方,小伙伴们可以认真的看一看吧! 1.首先…

cad文件如何转换成pdf?=

cad文件如何转换成pdf?在现代机械制造和建筑装饰领域中,CAD(计算机辅助设计)软件的应用非常普遍。然而,在与他人共享设计文件时,会发现cad文件的使用并不方便,首先它需要专用的软件才能将其打开…

webpack实战:某网站RSA登录加密逆向分析

文章目录 1. 写在前面2. 抓包分析3. 定位分析4. 构建webpack 1. 写在前面 回过头看,已慢慢将JS爬虫逆向类型的文章从0建设到了1,文章所有案例真实且内容有效,加密类型丰富。收获了很多粉丝的关注与支持,非常感谢大家! …

奥康的高尔夫鞋,圈不住投资者的心

文 | 螳螂观察 作者 | 青月 鞋服行业终于熬过了“寒冬”,2023年行业景气度开始逐步回暖。 东方财富Choice数据显示,截至8月17日,已有28家鞋帽服装类上市公司发布了2023年中期业绩预告或快报,其中,9家预增&#xff0…

TCP的滑动窗口与拥塞控制

客户端每发送的一个包,服务器端都应该有个回复,如果服务器端超过一定的时间没有回复,客户端就会重新发送这个包,直到有回复。 为了保证顺序性,每一个包都有一个 ID。在建立连接的时候,会商定起始的 ID 是什…

Python 数据库——链表

基本概念 链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的 。链表在逻辑上是连续的,但是在物理空间上可能是不连续的,因为链表的内存都是临时申请的,不一定会申请到连续的…

作物模型与遥感反演值同化建模的程序化实现

目录 专题一 遥感基础理论知识 专题二 作物长势监测与产量估算国内外研究进展 专题三 Fortran编程语言 专题四 作物参数遥感反演基本原理 专题五 PROSAIL模型 专题六 参数敏感性分析 专题七 遥感反演过程中的代价函数求解问题 专题八 基于查找表方法PROSAIL模型的作物参…

antd react 文件上传只允许上传一个文件且上传后隐藏上传按钮

antd react 文件上传只允许上传一个文件且上传后隐藏上传按钮 效果图代码解析 效果图 代码解析 import { Form, Upload, message } from antd; import { PlusOutlined } from ant-design/icons; import { useState, useEffect } from react; import { BASE_URL } from /utils/…

IOMesh 为 KubeVirt 提供高效稳定的持久化存储支持(附用户实践)

7 月 11 日,KubeVirt 社区正式宣布发布 Kubernetes 原生虚拟机管理插件 KubeVirt v1.0。这一版本发布不仅标志着 KubeVirt 已进化为生产就绪的虚拟机管理解决方案,也为正在使用虚拟化环境的用户提供了更多元的云化转型路线:搭配 Kubernetes 持…

vue3的params传参失效的解决方案state

vue3使用vue-router4.0,但是使用router.push的params传参,一直拿不到参数 查阅资料如下: —————————————————————————————————————————— state方案如下: 要传参的组件 import { u…

【C++模拟实现】手撕红黑树(含图解)

【C模拟实现】手撕红黑树(含图解) 目录 【C模拟实现】手撕红黑树(含图解)红黑树的介绍(百度百科)简介特征(十分重要,红黑树的基础) 红黑树的实现代码(insert部…

运营商大数据合作方合作流程和具体服务流程是什么?

运营商大数据合作方合作的流程分为好几个阶段。首先是要进行合作咨询,咨询完成了以后,再直接对相关的数据进行相应的评估。接着再把资源整合起来,然后再对数据进行清洗,接着直接将产品进行包装,然后给数据定价&#xf…

Linux时区配置

Linux时区配置 timedatectl设置时区和时间启用自动同步NTP时间设置UTC或RTC时间查看UTC时间 查看所有可用时区查看当前时区设置系统时区启用夏令时timedatectl修改当前日期时间 通用设置时区方法使用tzselect设置时区 timedatectl设置时区和时间 timedatectl是一个系统工具&am…

解决微信小程序报错:“SyntaxError:Unexpected end of JSON input”

1. 报错原因: 如果对象的参数或数组的元素中遇到地址,地址中包括?、&这些特殊符号时,对象/数组先要通过JSON.stringify转化为字符串再通过encodeURIComponent编码;接收时,先通过decodeURIComponent解码再通过JSON…