如何用FPGA逻辑来驱动VGA显示器

如果能够用fpga能够驱动显示器,就可以做不少与视频相关的实验,很多fpga开发板使用了比较简单的vga接口,连接非常简单,如下图:
只需要5跟线就可以连接vga显示器
连接vga的原理图
vga连接器
然后我们就可以用fpga的逻辑来做各种游戏了:
经典的pong游戏
关于如何用fpga逻辑来驱动vga显示器,可以参考页面:
然而,现在的显示器基本上都使用的是hdmi连接器,vga接口的显示器只能在古老的实验室里才有。所以我们要做视频的一些项目,就要用fpga来输出hdmi的信号,hdmi的连接器有不同大小,常用的体积比较大,信号线的定义如下图:
hdmi连接器
hdmi的信号线
标准的hmdi连接器有19个管脚,只有其中的8根是以差分信号的方式来传输高速视频信息的,所以只需要8根fpga的管脚,配制成7对差分tmds输出即可。
那时钟的速率需要多快呢?如果我们要生成一个640*480 rgb 24bpp的视频信号,刷新频率为60hz,每帧有307200个像素,每一个像素为24位(r|g、b各8位),需要0.44gbps的又用数据才能传输。再考虑一些屏外区域的信息,实际的分辨率需要大一些,比如800*525.
一个像素需要3 * 8位来传输,实际上hdmi还需要添加2bits以便对数据进行加扰,也就是需要3*10位来传输,每个像素需要30bits。
加扰用的额外数据用于接收端对接收到的数据进行同步,下面是tmds差分信号的时序:
对于640*480分辨率的显示,我们需要至少250mhz的时钟信号,如果要获得更高的分辨率则需要更高的时钟频率,小脚丫fpga模块中使用的lattice的xo2-4000hc系列fpga以及intel的max10器件内部的时钟通过锁相环生成,可以达到400mhz。支持640*480分辨率是没有问题的,如果要获得更高的分辨率可以采用ddr输出的方式。
显示驱动逻辑
屏幕的分布
通过逻辑编程,可以在显示屏上实现如下的效果:
用hdmi显示器实现的pong游戏,比vga实现的要效果好很多
pacman游戏
具体的代码实现可以参考页面
讲完了fpga驱动hdmi,有没有可能用单片机/微控制器也能实现同样的效果呢?一般的mcu真的够呛,但树莓派基金会推出的rp2040却是可以做到的:
虽然rp2040的标称时钟为125mhz,但可以轻松超频到250mhz,能够满足640*480分辨率的时钟要求了
rp2040的pio可以通过编程配置称为4对差分输出的串行信号
具体如何实现,看一下技术大神luke wren在rp2040上用gpio通过bitbang的方式得到的dvi接口
下面是他的电路原理图(用kicad绘制的,有源文件)
有位小哥使用他的代码,在sparkfun的rp2040板上实现的效果:
在显示屏上显示文字:
显示月亮:
当然也可以播放视频
有人专门制作了一个板子,rp2040超频到252mhz
关于用rp2040驱动hdmi的更多资源可以在github搜索hdmi rp2040.
原文标题:用fpga/树莓派rp2040驱动hdmi的资源
文章出处:【微信公众号:电子森林】欢迎添加关注!文章转载请注明出处。


高能进阶,畅酷体验,铠侠NVMe™ 固态硬盘系列新成员上线
立磨磨辊磨损量过大原因及处理方法
安泰测试:DG535脉冲信号发生器好不好?
思亚诺推出ISDB-T数字电视接收芯片SMS2270
德国研制机器人手臂 可轻松破解肿瘤活检难题
如何用FPGA逻辑来驱动VGA显示器
惠普星14全能轻薄本绝了,牛配显卡+轻薄
我国OTT终端规模快速增长,2020年OTT总激活规模有望突破3亿台
浅谈Mini LED现有的技术难点
三星Galxy Fold国行版正式开售该机搭载骁龙855平台配备6颗摄像头
11,000名工程师获世强硬创电商2021VIP大奖!维氏瑞士军刀&极简都市双肩背包
浅谈高压小车开关柜中无线测温系统设计与应用
中国通信需要中兴回归 世界通信也需要中兴
通用型电脑板替代壁挂式空调控制板的方法
Waymo自动驾驶汽车进入试运营,不用司机可以接客
基于ZigBee和PLC技术的社区监护系统设计
智能油烟机触控面板中应用的电容式触摸芯片
3款7nm手机芯片发布,你看好谁?
冲水实验装置简介
集成480Mbps高速USB2.0协议的接口芯片CH348简介