当前位置: 首页 > news >正文

HDMI字符显示实验

FPGA教程学习

第十五章 HDMI字符显示实验

文章目录

  • FPGA教程学习
  • 前言
  • 实验原理
  • 程序设计
    • 像素点坐标模块
    • 字符叠加模块
  • 实验结果
  • 知识点
  • 总结


前言

在HDMI输出彩条的基础上输出osd叠加信息。


实验原理

实验通过字符转换工具将字符转换为 16 进制 coe 文件存放到单端口的 ROM IP 核中,再从
ROM 中把转换后的数据读取出来显示到 HDMI 上。
大致过程是将视频时序再经过一次处理模块,替换其中特定位置的数据,除了数据其余均不发生变化。

程序设计

在这里插入图片描述
与之前的彩条显示多了一个osd叠加模块。

像素点坐标模块

该模块输入信号和输出信号一致,主要是为了计数像素的坐标。

module timing_gen_xy(input                   rst_n,   input                   clk,input                   i_hs,    input                   i_vs,    input                   i_de,    input[23:0]             i_data,  output                  o_hs,    output                  o_vs,    output                  o_de,    output[23:0]            o_data,  output[11:0]            x,        // video position Xoutput[11:0]            y         // video position y
);

计数的原理:
场信号在前肩到同步时是上升沿,表示是一副图像的开始,可以根据场信号的上升沿(或者下降沿,一个就行)来将行计数清零,即第零行。行递增计数的话使用DE信号的下降沿进行计数,当DE变为无效时,说明已经输出了一行像素点。
而行信号表示是一行的开始,这里没有用到,直接使用了DE信号,DE信号表示像素点有效,即有效像素点的开始,跳过行前肩+行同步+行后肩,用来计数一行的像素点。

注意数据也需要进行两次延时。

字符叠加模块

由上面的模块已经获取到了当前的坐标,接下来只要知道字符起始位置和需要叠加的字符,将输出的数据进行替换即可。如果当前坐标(像素点)需要叠加,就设置为需要的颜色,否则保持不变即可。

确定区域位置,使用一个寄存器表示,坐标在叠加区域的话就设置为有效。

//OSD区域设置,起始坐标为(9,9),区域大小根据生成的字符长宽设置
always@(posedge pclk)
beginif(pos_y >= 12'd9 && pos_y <= 12'd9 + OSD_HEGIHT - 12'd1 && pos_x >= 12'd9 && pos_x  <= 12'd9 + OSD_WIDTH - 12'd1)region_active <= 1'b1;elseregion_active <= 1'b0;
end

rom读取,在叠加区域内开始计数,实际计数的是像素点,但是一次读取数据为8bit,所以将低三位去掉即可。

//产生ROM的读地址,在region_active有效时,地址加1
always@(posedge pclk)
beginif(pos_vs_d1 == 1'b1 && pos_vs_d0 == 1'b0)osd_ram_addr <= 16'd0;else if(region_active == 1'b1)osd_ram_addr <= osd_ram_addr + 16'd1;
endosd_rom osd_rom_m0 (.clka                       (pclk                    ),   .ena                        (1'b1                    ),     .addra                      (osd_ram_addr[15:3]      ), 	//生成的字符一个点为1bit,由于数据宽度为8bit,因此8个周期检查一次数据.douta                      (q                       )  
);

有了字符叠加区域和字符值,可以进行数据替换,注意这里是依次将8位数据替换,osd_x是像素的横坐标,取低三位作为像素点的计数下标即可。

always@(posedge pclk)
beginif(region_active_d0 == 1'b1)if(q[osd_x[2:0]] == 1'b1)  //检查bit位是否是1,如果是1,将此像素设为红色v_data <= 24'hff0000;elsev_data <= pos_data;	   //否则保持原来的值elsev_data <= pos_data;
end

实验结果

直接跑的demo,这里截个官方的图放在这里。
在这里插入图片描述

知识点

  1. rom的创建和初始数据(coe文件设置)的设置。
  2. rom的读时序。
  3. 视频时序。
  4. 边沿检测。
    当前一状态和当前状态不同的时候,可认为采样到了边沿信号。
    当前一状态为高电平,当前状态为低电平时,说明是下降沿。
    当前一状态为低电平,当前状态为高电平时,说明是下降沿。

i_vs,vs_d0 ,vs_d1三个信号去分析的话,要把整个过程理解成并行的,vs_d0 、vs_d1是两个记录状态的寄存器,理解成串行vs->d0->d1是错的。d0是vs的上一个状态,d1是d0上一个状态的记录,或者说,d0是vs延时一个周期的信号,d1是d0延时一个周期的信号。d0可以看作最新的状态,d1是上一个状态,d0&~d1是上升沿。同理可以分析DE的边沿。
在这里插入图片描述

assign vs_edge 		= vs_d0 & ~vs_d1;  		//VS posedge
assign de_falling 	= ~de_d0 & de_d1;		//DE negedge
always@(posedge clk)
beginde_d0 		<= i_de;de_d1 		<= de_d0;vs_d0 		<= i_vs;vs_d1 		<= vs_d0;hs_d0 		<= i_hs;hs_d1 		<= hs_d0;
end

总结

本实验在HDMI显示彩条的基础上,通过对视频时序的处理以及像素数据的替换,将rom中的字模叠加到画面中,实现了OSD信息的叠加。

相关文章:

HDMI字符显示实验

FPGA教程学习 第十五章 HDMI字符显示实验 文章目录 FPGA教程学习前言实验原理程序设计像素点坐标模块字符叠加模块 实验结果知识点总结 前言 在HDMI输出彩条的基础上输出osd叠加信息。 实验原理 实验通过字符转换工具将字符转换为 16 进制 coe 文件存放到单端口的 ROM IP 核…...

Spring Cloud 框架搭建

Spring Cloud 框架搭建之一基础框架 创建父项目创建子项目 创建父项目 第一步&#xff1a;新建项目&#xff0c;填写基础信息 第二步&#xff1a;这里不需要其他组件直接点next即可。 第三步&#xff1a;pom文件添加下述代码&#xff0c;将父项目设置为pom文件形式打包&#…...

20个非常有用的单行Python代码片段

1. 写在前面 继上篇&#xff0c;继续在本文分享 20 个 Python 单行代码&#xff0c;可以在 30 秒或更短时间内轻松学会。这些单行代码不仅可以提高效率&#xff0c;同时使代码看起来更整洁、更易读。&#xff1a;&#xff09; 个人博客&#xff1a; https://jianpengzhang.git…...

【LangChain系列 9】Prompt模版——MessagePromptTemplate

原文地址&#xff1a;【LangChain系列 9】Prompt模版——MessagePromptTemplate 本文速读&#xff1a; MessagePromptTemplate MessagesPlaceholder 在对话模型(chat model) 中&#xff0c; prompt主要是封装在Message中&#xff0c;LangChain提供了一些MessagePromptTemplat…...

ROS2的学习路径

学习ROS2的建议学习路径&#xff1a; 理解基础知识&#xff1a; 熟悉机器人操作系统&#xff08;ROS&#xff09;的概念及其架构。了解ROS2相对于ROS1的优势以及其提供的关键功能。 安装和配置&#xff1a; 在你选择的操作系统上安装ROS2&#xff08;如Ubuntu、Windows、macOS…...

Maintaining leader role through timed lease mechanism

Continuous understanding of distributed systems design On the one hand 基于定时的租约机制来保持leader角色 基于定时的租约机制来保持leader角色的设计思想是一种在分布式系统中确保高可用性和系统一致性的解决方法。 在分布式系统中&#xff0c;通常会有一个角色被选举…...

Mysql InnoDB引擎 的hash索引

Mysql InnoDB引擎不支持hash索引&#xff0c;但是在内存结构中有一个自适应hash索引&#xff0c;来提高查询性能 当设置hash索引时会自动转换成btree索引 查一下mysql官方文档&#xff1a;https://dev.mysql.com/doc/refman/5.7/en/create-index.html innodb_adaptive_hash_i…...

23年PMP考试如何备考?

接下来我要分享的备考建议分为三个部分&#xff0c;考试相关、备考期间注意和刷题建议。 1、PMP考试相关 PMP考试时间一定不能忘记&#xff0c;要密切关注&#xff0c;或许会出现延期的情况。考试教材现在是第七版教材&#xff0c;建议买一本或者用pdf电子版打印出来&#xf…...

mysql数据库增量备份方案、备份计划(InsCode AI 创作助手)

一、备份计划 以下是MySQL数据库增量备份的一般计划&#xff1a; 创建完整备份&#xff1a;在自动备份计划开始前&#xff0c;先创建一次完整备份。这个备份将包含所有数据和表结构。保存增量备份&#xff1a;在每次备份计划完成后&#xff0c;保存增量备份。这个备份将包含从…...

【Flink】FlinkCDC获取mysql数据时间类型差8小时时区解决方案

1、背景: 在我们使用FlinkCDC采集mysql数据的时候,日期类型是我们很常见的类型,但是FlinkCDC读取出来会和数据库的日期时间不一致,情况如下 FlinkCDC获取的数据中create_time字段1694597238000转换为时间戳2023-09-13 17:27:18 而数据库中原始数据如下,并没有到下午5点…...

Javas | DecimalFormat类、BigDecimal类、Random类

目录&#xff1a; 1.DecimalFormat类2.BigDecimal类3.Random类4.需求&#xff1a;编写程序&#xff0c;生成5个不重复的随机数 1.DecimalFormat类 DecimalFormat 是 NumberFormat 的一个具体子类&#xff0c;用于格式十进制数字。 /*** 关于数字的格式化*/ public class Decima…...

机器学习 实战系列 总目录

1、机器学习实战-系列教程1&#xff1a;线性回归入门教程&#xff08;项目实战、原理解读、源码解读&#xff09; 机器学习实战-系列教程1&#xff1a;线性回归入门教程&#xff08;项目实战、原理解读、源码解读&#xff09; 2、机器学习实战-系列教程2&#xff1a;手撕线性回…...

机器学习——贝叶斯(三种分布)/鸢尾花分类分界图/文本分类应用

0、前言&#xff1a; 机器学习中的贝叶斯的理论基础是数学当中的贝叶斯公式。这篇博客强调使用方法&#xff0c;至于理论未作深究。机器学习中三种类型的贝叶斯公式&#xff1a;高斯分布&#xff08;多分类&#xff09;、多项式分布&#xff08;文本分类&#xff09;、伯努利分…...

SOLIDWORKS Composer位置关键帧的使用

SOLIDWORKS Composer是专业的SOLIDWORKS及3D文件处理的动画制作软件&#xff0c;作为SOLIDWORKS 产品线下的一个明星存在。 SOLIDWORKS Composer几乎可以处理任何SOLIDWORKS的模型文件并将之转化成可以动作的机械动画&#xff0c;可以引用在企业的网站、产品说明书以及工作指导…...

PostgreSQL 流复制搭建与维护

文章目录 前言1. 配置环境1.1 环境介绍1.2 主库白名单1.3 主库参数配置 2. 流复制搭建2.1 备份恢复2.2 创建复制用户2.3 参数修改2.4 启动并检查2.5 同步流复制2.6 同步复制级别 3. 流复制监控3.1 角色判断3.2 主库查看流复制3.3 延迟监控3.4 备库查询复制信息 前言 PostgreSQ…...

【Redis】关于过期数据清除的一些策略

这里要讨论的为过期的数据是如何被清除的&#xff0c;也就是网上常常讨论的过期清除策略。 需要注意的是&#xff0c;redis除了会对过期的数据进行淘汰&#xff0c;也可以通过对内存大小进行限制&#xff0c;并对超出内存限制后进行数据淘汰。此时淘汰的数据未必是过期的&…...

动态SQL

Mybatis框架的动态SQL技术是一种根据特定条件动态拼装SQL语句的功能&#xff0c;它存在的意义是为了解决拼接SQL语句字符串时的痛点问题。 1、if if标签可通过test属性的表达式进行判断&#xff0c;若表达式的结果为true&#xff0c;则标签中的内容会执行&#xff1b;反之标签…...

uniapp:OCR识别身份证上传原图失败,问题解决

1、上传普通图片成功 2、上传>4M | >5M图片失败检查&#xff1a;1、uni.uploadFile自身没有文件大小限制。然而&#xff0c;这仍然取决于你的应用程序所在的平台和存储空间容量。 2、上传照片后不在fail&#xff0c;在sucess 提交照片-3 {"data": "<h…...

shell循环和函数

目录 1.for循环2.while循环3.until循环4.函数 1.for循环 for循环是固定循环&#xff0c;也就是在循环时就已经知道需要进行几次的循环&#xff0c;有事也把for循环成为计数循环。for的语法如下两种&#xff1a; 语法一 for 变量 in 值1 值2 值3 …(可以是一个文件等)do程序do…...

京东详情api

简要描述 根据商品id获取详情数据 请求URL http://xxx.xxx.xxx.xxx:xxxx/jd.get.item 请求方式 get 请求Query参数 参数名示例值必选类型说明itemid100016034386是string商品idtokenadmin.api是string权限token 成功返回示例 部分数据展示&#xff1a; {"data&qu…...

MySQL最新版8.1.0安装配置教程

目录 目录 前言 安装流程图 1&#xff0c;MySQL数据库是什么? 2&#xff0c;下载zip压缩包 3&#xff0c;解压到要安装的目录 4,添加环境变量 4.1,找到环境变量 4.2,进行环境变量的添加 5.新建mysql 配置文件 6、安装mysql服务 7、初始化数据文件 8、启动mysql …...

5G试题_1

1、 全息技术属于对5G三大类应用场景网络需求中的哪一种&#xff1f;&#xff08;A&#xff09; A. 增强移动宽带 B. 海量大连接 C. 低时延高可靠 D. 低时延大带宽 2、 在5G时代&#xff0c;不同领域的不同设备大量接入网络&#xff0c;其实引用传统的组网方式和服务提供形式也…...

正规股票配资网站的三个明显特点分析

随着股票市场的快速发展&#xff0c;越来越多的投资者开始考虑使用股票配资来增加自己的资金流动性和收益率。然而&#xff0c;在选择股票配资网站时&#xff0c;投资者往往难以辨别哪些网站是正规的&#xff0c;哪些网站存在风险。因此&#xff0c;以下将分析正规股票配资网站…...

质疑苹果5G信号造假成为闹剧,反而将运营商置于尴尬境地

在iPhone15发布会处于热点之际&#xff0c;一位号称通信专家的人士指责iPhone的5G信号造假&#xff0c;一度闹得沸沸扬扬&#xff0c;导致舆论一开始都是质疑苹果造假&#xff0c;然而在知乎却有更多专业人士指出这位专家不了解5G技术&#xff0c;这个问题或许反而出在运营商身…...

vue 预览zip

ZIP的数据从接口传递数据流过来。解析数据流&#xff0c;并将zip的目录绑定到tree中。 1.引入插件jszip&#xff1a; yarn add jszip 2.在需要引用的页面引用&#xff1a; import JSZip from jszip 3. 实现代码 api(option).then((res)>{ // 接口获取zip的数据流 l…...

人先自辱,而后人辱之

语出《孟 子.离娄上》“夫人必自街&#xff0c;而后人懈之;家必自毁&#xff0c;而后人毁之"。 自己不把自己当人看&#xff0c;别人肯定也不会。善待自己&#xff0c;接纳自己。 过去的不再留恋。 心平气和&#xff0c;气定神闲。 政治论述题&#xff0c;每一个题目&a…...

web端三维重建算法-colmap++

vismap vismap 是colmap 版本 &#xff08;1&#xff09; 支持superpoint superglue &#xff08;2&#xff09; 支持netvlad 图像检索 &#xff08;3&#xff09;支持特征点尺度定权 &#xff08;4&#xff09;支持二维码定位 &#xff08;5&#xff09;支持融合gps &#x…...

MyBatisPlus(二)基础Mapperr接口:增删改查

MyBatisPlus&#xff1a;基础Mapper接口&#xff1a;增删改查 插入一条数据 代码 Testpublic void insert() {User user new User();user.setId(6L);user.setName("张三");user.setAge(25);user.setEmail("zhangsanexample.com");userMapper.insert(use…...

基础项目实用案例

文章目录 倒计时动态生成表格发布留言密码框验证模态框拖拽 倒计时 function countDown(time) {var nowTime new Date();var inputTime new Date(time);var times (inputTime - nowTime) / 1000;var d parseInt(times / 60 / 60 / 24);d d < 10 ? 0 d : d;var h par…...

sprngboot整合kabana

Spring Boot是一个开源框架&#xff0c;可以基于Spring框架快速开发和构建生产级别的应用程序。Kibana是一个可视化和交互式分析平台&#xff0c;用于检索和分析Elasticsearch集群中存储的数据。 下面是Spring Boot整合Kibana的基本步骤&#xff1a; 添加Maven依赖 在pom.xm…...

网站页面制作视频/互联网广告营销

Amazon DynamoDB 全局表 为部署多区域、多主机数据库提供了完全托管的解决方案&#xff0c;而不必构建和维护您自己的复制解决方案。在创建全局表时&#xff0c;指定要在其中提供表的 AWS 区域。DynamoDB 执行在这些区域中创建相同的表并将持续数据更改传播到所有这些表所必需的…...

5 还有网站的域/手机系统优化软件

软件开发的发展历程 软件是用计算机语言编写的。计算机语言的发展经历了从机器语言、汇编语言到高级语言的历程。 HTML&#xff08;Hyper Text Markup Language 超文本标识语言&#xff09; 是一种用来制作超文本文档的简单标记语言。 用HTML编写的超文本文件称为HTML文件&a…...

太原制作网站的公司/今日热点

1.如何将网站从http升级到https? 到CA机构申请SSL证书&#xff0c;将SSL证书部署到服务器端(在服务器上安装SSL证书)&#xff0c;这样就可以实现https网站。 2.把网站配置成https的话&#xff0c;客户端一定需要安装证书吗? 如果你购买了SSL证书&#xff0c;只要在服务器上安…...

自学服装设计该怎么入手/seo收索引擎优化

Vue项目怎么上传到云服务器 内容精选换一换购买服务及配置特性时&#xff0c;操作步骤中未框选的配置项请保持默认值。申请服务时&#xff0c;未开通企业管理的用户页面无“企业项目”参数项&#xff0c;无需进行配置。如需开通企业项目&#xff0c;请参考如何开通企业项目/企业…...

淘宝联盟网上的网站建设/服装品牌策划及营销推广方案

OSPF协议原理Ospf路由协议是一种链路状态路由协议&#xff0c;一般用于同一个路由域内&#xff0c;是一种基于SPF算法的路由协议。作为一种链路状态路由协议&#xff0c;ospf将链路状态广播数据包传递给某一区域的所有路由器&#xff0c;这一点与距离矢量路由协议不同。运行距离…...

推广游戏网站怎么做/淘宝排名查询

网络视频通讯标准分类-- 通信标准&#xff1a;ITU-TH.323、SIP视频标准&#xff1a;&#xff1b;其它ITU标准?H.221通讯协议&#xff1b;H.224/H.281远端摄像机控制 H.32&#xff1b; H.460NAT/防火墙穿越&#xff1b;视频会议有两大结构体系&#xff1a;H.320和H.323&#xf…...