找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2780|回复: 3
打印 上一主题 下一主题
收起左侧

这是我做的基于FPGA的VGA显示源码

[复制链接]
跳转到指定楼层
楼主
ID:425202 发表于 2018-11-12 19:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
里面有详细的设计过程包括代码、visio画的时序图


fpga源程序如下:
  1. module vga_ctrl(
  2. sclk,
  3. rst_n,
  4. hsync,
  5. vsync,
  6. rgb_data
  7. );
  8. input sclk;
  9. input rst_n;
  10. output hsync;
  11. output vsync;
  12. output [7:0]rgb_data;


  13. reg clk;
  14. reg hsync;
  15. reg vsync;
  16. reg [9:0]cnt_h;
  17. reg [9:0]cnt_v;
  18. reg [7:0]rgb_data;
  19. /* wire [7:0]out_data;
  20. reg  [13:0]rd_addr; */

  21. /* my_pll        my_pll_inst (
  22.         .inclk0 ( sclk ),
  23.         .c0 ( clk )
  24.         );
  25. */
  26. always@(posedge sclk or negedge rst_n)
  27.     if(rst_n==1'b0)
  28.     clk<=0;
  29.     else
  30.     clk<=~clk;
  31.          
  32.          
  33.          
  34. //cnt_h;
  35. always@(posedge clk or negedge rst_n)
  36.     if(rst_n==1'b0)
  37.         cnt_h<=0;
  38.     else if(cnt_h==799)
  39.         cnt_h<=0;
  40.     else
  41.         cnt_h<=cnt_h+1;
  42.                   
  43. always@(posedge clk or negedge rst_n)
  44.     if(rst_n==1'b0)
  45.         cnt_v<=0;
  46.     else if(cnt_v==524&&cnt_h==799)
  47.         cnt_v<=0;
  48.     else if(cnt_h==799)
  49.         cnt_v<=cnt_v+1;
  50.                   
  51. always@(posedge clk or negedge rst_n)
  52.     if(rst_n==1'b0)  
  53.         hsync<=1;
  54.     else if(cnt_h==95)
  55.         hsync<=1;
  56.     else if(cnt_h==799)
  57.         hsync<=0;
  58.                   
  59. always@(posedge clk or negedge rst_n)
  60.     if(rst_n==1'b0)
  61.       vsync<=1;
  62.     else if(cnt_h==799&&cnt_v==1)
  63.       vsync<=1;
  64.     else if(cnt_h==799&&cnt_v==524)
  65.       vsync<=0;
  66.                
  67.                
  68. always@(posedge clk or negedge rst_n)
  69.     if(rst_n==1'b0)
  70.      rgb_data<=0;
  71.     else if( cnt_h>=143&&cnt_h<243&&cnt_v>=34&&cnt_v<134)
  72.      rgb_data<=8'b0011_1111;
  73.     else if(cnt_h>=143&&cnt_h<783&&cnt_v>=34&&cnt_v<194)
  74.      rgb_data<=8'b111_000_00;
  75.     else if(cnt_h>=143&&cnt_h<783&&cnt_v>=194&&cnt_v<354)
  76.      rgb_data<=8'b000_111_00;
  77.     else if(cnt_h>=143&&cnt_h<783&&cnt_v>=354&&cnt_v<514)
  78.      rgb_data<=8'b000_000_11;
  79.     else
  80.      rgb_data<=8'b0;



  81. /* my_ram        my_ram_inst (
  82.         .clock ( clk ),
  83.         .data ( 0 ),
  84.         .rdaddress ( rd_addr ),
  85.         .wraddress ( 0 ),
  86.         .wren ( 0 ),
  87.         .q ( out_data )
  88.         ); */
  89. /*
  90. always@(posedge clk or negedge rst_n)
  91.     if(rst_n==1'b0)
  92.          rd_addr<=0;
  93.          else if(cnt_h>=143&&cnt_h<243&&cnt_v>=34&&cnt_v<134)
  94.          begin
  95.             if(rd_addr==9999)
  96.               rd_addr<=0;
  97.             else
  98.               rd_addr<=rd_addr+1;
  99.           end
  100.           */
  101. endmodule
复制代码

所有资料51hei提供下载:
VGA.zip (4.39 MB, 下载次数: 41)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:420321 发表于 2018-11-25 17:08 | 只看该作者
楼主你是把图片的数据存在ROM中的吗?我现在在学习VGA显示图像,想和你谈论一下
回复

使用道具 举报

板凳
ID:356472 发表于 2018-12-16 22:21 | 只看该作者
Mr_Dai 发表于 2018-11-25 17:08
楼主你是把图片的数据存在ROM中的吗?我现在在学习VGA显示图像,想和你谈论一下

我存过,但显示的不太稳定,正在找原因。
回复

使用道具 举报

地板
ID:356472 发表于 2018-12-27 19:33 | 只看该作者
tutuwxy2 发表于 2018-12-16 22:21
我存过,但显示的不太稳定,正在找原因。

我的已经很成功了,显示图像和字符
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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