我们都知道 FPGA之所以功能强大,很重要的一个原因就是他的接口非常的丰富,本人了解vga接口就是从FPGA设计中开始,比如我们要做一些简单的工程类似图像的显示,复杂一点的类似视频显示都要用到VGA接口。
这里对VGA接口做一个简述,帮助对这个接口没有一个整体概念的朋友加深一定的了解
不知大家有没有注意到,在使用VGA接口的时候,通常RGB三根线上都会接上各种各样大小的电阻,这是为什么呢?
在讨论这个问题的时候,大家要明白VGA显示的是模拟信号,而非数字信号。那么在设计中又是怎样将数字信号转化为模拟信号的呢?
大家先看下面这张图片:
从图中可以看到,这是一个标准的VGA接口。RGB三端都接了一个270欧的电阻,这个电阻是起保护作用的,至于该接一个多大的电阻在此就不讨论了,有兴趣的朋友可以自行研究。不同的场合所接保护电阻的大小各一,在很多情况下通常接的是一个75欧的电阻,比如电视机里面通常接的就是这种。好了,言归正传,刚才我说VGA显示的模拟信号,可能有些同学会不明白,明明我们在设计的时候对RGB赋值的时候是数字信号呀,1或者0。这似乎有点自相矛盾吧?
答案是否定的,其实信号在输出的时候就已经是模拟信号了,也就是通常所说的IO口电压。说到这里,想必大家已经晃然大悟了吧! 哈哈
-------------------------------------------------------------------------------------------------------------------------------------------------
******************************************************************************************************************
--------------------------------------------------------------------------------------------------------------------------------------------------
好了,下面我们再看另外一张图:
或者很多人从来就没对此用法持怀疑态度吧!
其中G、B端都各引出了三根线,R却只引出了两根线,其中这就是我们通常所用来显示256色的(图一是8色)。这一点需要注意一下,RGB各引出几根线可以自行调节,并没有硬件的规定。假如在设计的时候你计为B(蓝色)不重要,你可以只引出一根线也是可行的,在这一点其灵活性是很强的。
那么数字信号又是怎样转换成模拟信号的呢?
呵呵,这就需要计算咯。比如IO的输出电压为3V,在设计中对B[2:0]的赋值为“101”。那么转换成模拟信号后其电压是多少呢?
其实这就是简单的分压原理的应用啦!
V(B)=3*[75/(75+470)] + 3*[75/(75+2000)]=0.52(V),这就是数字信号"101"转换为模拟信号的值啦!V(R)、V(G)原理同上。
说到这里,也说得差不多了吧 其大致的原理也就是这些,这里只是粗描淡写的描述了一下,关于VGA接口其实是一门很大的学问,读者需深究的话可自行查阅资料。