6588|7

693

帖子

7

TA的资源

版主

楼主
 

FPGA实验(三)基于HDL语言的VGA彩条信号显示 [复制链接]

    本次通过FPGA来实现VGA图像显示控制器,用来显示一些图形、文字或图像。本次效果实现横彩条、竖彩条、和棋盘格,先给大家展示一下效果:
横彩条:



竖彩条:




棋盘格:




为了节省存储空间,我们只选择了这样三种样式,这三种格式可以用一个按键来切换选择,其他的颜色和图像我们也可以自由扩展。
看了上述效果,我们也来熟悉一下原理:计算机显示器的显示有多重标准,常见的有VGA、SVGA等,一般这些显示控制都用专用的显示控制器(如6845)。常见的彩色显示器一般由CRT(阴极射线管)构成,彩色是由三原色R、G、B组成, 用逐行扫描的方式解决图像显示。阴极射线枪发出电子束,打在涂有荧光粉的荧光屏上,产生R、G、B三基色合成一个彩色像素。扫描是从屏幕的右上方开始的,从左到右,从上到下进行扫描,每扫完一行,电子束回到屏幕的左边下一行的起始位置。在这期间CRT对电子束进行消隐,每行结束时,用行同步信号进行行同步;扫描完所有行,用场同步信号进行场同步,并使扫描回到屏幕的左上方,同时进行场消隐,预备下一场的扫描。












VGA实际接口图:







下面附上HDL语言的VGA彩条控制实验代码:


  1. module VGA(CLK,MD,HS,VS,R,G,B); //VGA显 示器 彩条发生器
  2. input CLK;input MD;output HS,VS,R,G,B;   
  3. wire R,G,B,VS,HS;         //红、绿、蓝,场同步,行同步信号
  4. wire FCLK,CCLK;
  5. reg HS1,VS1;reg [1:0]MMD;reg [5:0]FS;
  6. reg [4:0]CC;    //行同步,竖彩条生成
  7. reg [8:0]LL;    //场同步,横彩条生成
  8. reg [3:1]GRBX,GRBY,GRBP;
  9. wire[3:1]GRB;
  10. assign GRB[2]=(GRBP[2]^MD)&HS1&VS1;
  11. assign GRB[3]=(GRBP[3]^MD)&HS1&VS1;
  12. assign GRB[1]=(GRBP[1]^MD)&HS1&VS1;
  13. always @(posedge MD)begin
  14.      if (MMD==2'b10)MMD<=2'b00;else MMD<=MMD+1;end
  15. always @(MMD) begin
  16.      if (MMD==2'b00)GRBP<=GRBX; //选择竖彩条
  17. else if (MMD==2'b01)GRBP<=GRBY; //选择横彩条
  18. else if (MMD==2'b10)GRBP<=GRBX^GRBY; //选择棋盘格
  19. else GRBP<=3'b000;end
  20. always @(posedge CLK)begin      //20MHz    21分频
  21.      if (FS==49)FS<=0;else FS<=(FS+1); end
  22. always @(posedge FCLK)begin
  23.      if (CC==29)CC<=0;else CC<=CC+1; end
  24. always @(posedge CCLK)begin
  25.      if (LL==481)LL<=0;else LL<=LL+1; end
  26. always @(CC or LL)begin
  27.      if (CC>23)HS1<=1'b0;else HS1<=1'b1;  //行同步
  28.      if (LL>479)VS1<=1'b0;else VS1<=1'b1;end  //场同步
  29. always @(CC or LL)begin
  30.      if (CC<3)GRBX<=3'b111;      //竖彩条
  31. else if (CC<6)GRBX<=3'b110;
  32. else if (CC<9)GRBX<=3'b101;
  33. else if (CC<12)GRBX<=3'b100;
  34. else if (CC<15)GRBX<=3'b011;
  35. else if (CC<18)GRBX<=3'b010;
  36. else if (CC<21)GRBX<=3'b001;
  37. else GRBX<=3'b000;
  38. if (LL<60)GRBY<=3'b111;      //横彩条
  39. else if (LL<120)GRBY<=3'b110;
  40. else if (LL<180)GRBY<=3'b101;
  41. else if (LL<240)GRBY<=3'b100;
  42. else if (LL<300)GRBY<=3'b011;
  43. else if (LL<360)GRBY<=3'b010;
  44. else if (LL<420)GRBY<=3'b001;
  45. else GRBY<=0; end
  46. assign HS=HS1; assign FCLK=FS[5];
  47. assign HS=HS1;assign VS=VS1;assign R=GRB[2];
  48. assign G=GRB[3];assign B=GRB[1];assign CCLK=CC[4];
  49. endmodule
复制代码



下面再附上工程文件,方便大家操作: VGA彩条信号显示HDL语言.rar (366.75 KB, 下载次数: 68)

            参考文献:潘松,黄继业.EDA技术实用教程——Verilog HDL版(第五版)
此帖出自创意市集论坛

最新回复

lrj
请问input MD 是什么意思?   详情 回复 发表于 2019-7-15 18:43
点赞 关注
 
 

回复
举报

33

帖子

3

TA的资源

一粒金砂(中级)

沙发
 
优秀,等你来一个图像
此帖出自创意市集论坛
 
 
 

回复

1372

帖子

6

TA的资源

版主

板凳
 
厉害了,回头可以搞一下HDMI,MIPI等接口的
此帖出自创意市集论坛

点评

好的,谢谢  详情 回复 发表于 2019-4-14 21:42
个人签名专注智能产品的研究与开发,专注于电子电路的生产与制造……QQ:2912615383,电子爱好者群: void
 
 
 

回复

693

帖子

7

TA的资源

版主

4
 
懒猫爱飞 发表于 2019-4-13 22:23
厉害了,回头可以搞一下HDMI,MIPI等接口的

好的,谢谢
此帖出自创意市集论坛
 
 
 

回复

693

帖子

7

TA的资源

版主

5
 
Mr_Dai 发表于 2019-4-13 19:22
优秀,等你来一个图像

此帖出自创意市集论坛
 
 
 

回复

173

帖子

0

TA的资源

宇宙尘埃

6
 
谢谢分享!
此帖出自创意市集论坛
个人签名服务器大全
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

7
 

请问input MD 是什么意思?

此帖出自创意市集论坛

点评

MD为模式选择输入  详情 回复 发表于 2019-7-16 18:56
 
 
 

回复

693

帖子

7

TA的资源

版主

8
 
lrj 发表于 2019-7-15 18:43 请问input MD 是什么意思?

MD为模式选择输入

此帖出自创意市集论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表