DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 82|回复: 0
打印 上一主题 下一主题

使用 FPGA 控制 VGA 显示

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-17 14:59:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
??? 显示器因为其输出信息量大,输出形式多样等特点已经成为现在大多数设计的常用输出设备。在? FPGA? 的设计中可以使用很少的资源,就产生? VGA 各种控制信号。这个示例在 RHicSP2200B? FPGA? 开发板/学习板上使用? VGA? 接口在显示器上显示了文字以及简单的图形,可以作为VGA 显示设计的参考,如果在使用这个例子的过程中有任何问题都可以通过邮件?

?说明:有效时间包括? 6? 列过扫描边界列,有些时序表将这几列加在后沿和前沿中表 2? 垂直时序

说明:有效时间包括? 4? 行过扫描边界行,有些时序表中将这几行加在后沿和前沿中。*当有效时间增加时,它超过了 vsync 信号的上升沿,因此前沿为-1??????? 在实际设计中如何通过不同的系统频率确定适当的显示模式 ? 例如在 RhicSP2200? 开发板中FPGA? 的系统时钟频率为? 50MHz。这个时钟频率可以用来设计 显示? 800X600? 模式,为了显示器显示效果好,采用场频(刷新频率)75Hz,那么帧长可以确定为? 666,而行总长设计为? 1000? 像素。?????? 根据以上所述,我们可以设计如Examples1类似HDL代码,使用这段代码在Valid 有效期间对RGB 中 Blue 两位赋值1,得到一个蓝色屏幕显示边界如图1 所示。

????? 色彩原理??????? RGB? 色彩模式是工业界的一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色 通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB? 即是代表红、 绿、蓝三个通道的颜色,通过三种基本颜色亮度值从 0"255 不同产生出其他各种颜色,这种模式叫加色模式。为什么叫加色模式呢,举个例子,通常使用的电视屏幕和电脑 屏幕上的显示就是这样的模式,在没有图象时,屏幕是黑的,若R,G,B 三色亮度都为255? 时混合叠加打在屏幕上时则显示成白色。就是加起来是白色的意思,叫加色模式。这个标准几乎包括了人类视力所能感知的所有颜色,是目前运用最广的颜色系统之 一。
                          
                       
                          
                                ??????? 而与我们电脑相关的地方,就是目前的显示器大都是采用了 RGB 颜色标准,这就是为什么它对我们来说这么重要了。?????? 在显示器上,是通过电子枪打在屏幕的红、绿、蓝三色发光极上来产生色彩的,目前的电脑一般都能显示? 32? 位颜色,约有一百万种以上的颜色。如果说它所显示的颜色 还不能完全吻合自然界中的某种色彩的话,那已经几乎是我们肉眼所不能分辩出来的了。?????? 而? RhicSP2200? 开发板系统中每一个色 彩都是使 用?? 2bit?? 来 表示的,因 此可见 RhicSP2200? 系统可以出现64? 种不同的颜 色。其他色彩的使用请在实际工作中更多的加以体会。????? 显示 ??????? 通过以上的讲述,已经可以在计算机显示器上显示一个有颜色的区域了,在这个小节中我们再举一个简单的例子,在显示器中显示两个镶嵌的正方形,字符等显示与其类似,可以参考瑞芯科技其他设计示例。 例如我们可以在 xpos 与 ypos 的某一区间给 RGB 信号赋不同的值将得到如图2 所示的显示效果。

例子? 1:使用? 50MHz? 时钟频率产生的 VGA 同步脉冲以及视频有效信号module sync_gen_50m( ??? rst_n,// synthesis attribute clock_buffer of rst_n is ibufg; ??? clk, ???? ??? hsync, ??? vsync, ??? valid, ??? x_cnt, ??? y_cnt ??? ); input?????????? rst_n?? ; input?????????? clk???? ; ?output????????? hsync?? ; output????????? vsync?? ; output????????? valid?? ; output? [9:0]?? x_cnt?? ; output? [9:0]?? y_cnt?? ; ?reg???????????? hsync?? ; reg???????????? vsync?? ; reg???????????? valid?? ; reg???? [9:0]?? x_cnt?? ; reg???? [9:0]?? y_cnt?? ; ?always @ ( posedge clk or negedge rst_n ) ??? if ( !rst_n ) ??????? x_cnt  10'd180 ) && ( x_cnt  10'd35)?? && ( y_cnt < 10'd635) );? ???????????????????? endmodule
                          
                       
                          
                               
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-11-14 05:43 , 耗时 0.089114 秒, 19 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表