社区导航

 

搜索
查看: 495|回复: 6

[资源共享] FPGA实验(三)基于HDL语言的VGA彩条信号显示

[复制链接]

395

TA的帖子

7

TA的资源

版主

Rank: 6Rank: 6

发表于 2019-4-13 15:31 | 显示全部楼层 |阅读模式
    本次通过FPGA来实现VGA图像显示控制器,用来显示一些图形、文字或图像。本次效果实现横彩条、竖彩条、和棋盘格,先给大家展示一下效果:
横彩条:

1.jpg

竖彩条:


2.jpg

棋盘格:


3.jpg

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


4.png

5.png

6.png

7.png

8.png

VGA实际接口图:

a.jpg

b.jpg

c.jpg

下面附上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, 下载次数: 2)


回复

使用道具 举报

34

TA的帖子

3

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2019-4-13 19:22 | 显示全部楼层
优秀,等你来一个图像


回复

使用道具 举报

1347

TA的帖子

6

TA的资源

版主

Rank: 6Rank: 6

发表于 2019-4-13 22:23 | 显示全部楼层
厉害了,回头可以搞一下HDMI,MIPI等接口的

点评

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


回复

使用道具 举报

395

TA的帖子

7

TA的资源

版主

Rank: 6Rank: 6

 楼主| 发表于 2019-4-14 21:42 | 显示全部楼层
懒猫爱飞 发表于 2019-4-13 22:23
厉害了,回头可以搞一下HDMI,MIPI等接口的

好的,谢谢


回复

使用道具 举报

395

TA的帖子

7

TA的资源

版主

Rank: 6Rank: 6

 楼主| 发表于 2019-4-14 21:42 | 显示全部楼层
Mr_Dai 发表于 2019-4-13 19:22
优秀,等你来一个图像



回复

使用道具 举报

173

TA的帖子

0

TA的资源

宇宙尘埃

发表于 2019-4-15 10:29 | 显示全部楼层
谢谢分享!


回复

使用道具 举报

1

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 昨天 18:43 | 显示全部楼层

请问input MD 是什么意思?



回复

使用道具 举报

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

关闭

站长推荐上一条 /1 下一条

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2019-7-16 06:40 , Processed in 0.240798 second(s), 29 queries , Gzip On, MemCache On.

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