今天做VGA,真是拼凑了好久啊。唉,总算完成了。

  本来想偷懒移植,最后还是自己写的代码。

  1. //2015/12/13
  2. //designer : pengxiaoen
  3. //function : vga control
  4. /*备注:
  5. 1,三个test pin 是用来测试pll是否工作
  6. 2,r,g,b 三色分别对应三个不同的key 以及三个led进行显示
  7. 3,因为这个板子的 r ,g ,b 分别只有一个pin ,显示色彩有限
  8. */
  9. module vga_top (
  10. clock ,
  11. rst_n ,
  12. key_r,key_g,key_b ,
  13.  
  14. clk_vga ,clk_board, clk_500k , //test pin
  15. led_r ,led_g,led_b ,
  16.  
  17. vga_hs ,vga_vs,vga_r,vga_g,vga_b
  18.  
  19. );
  20. input clock ;
  21. input rst_n ;
  22. input key_r,key_g,key_b ;
  23.  
  24. output vga_hs ;
  25. output vga_vs ;
  26. output vga_r ;
  27. output vga_g ;
  28. output vga_b ;
  29.  
  30. output clk_vga ;
  31. output clk_board ;
  32. output clk_500k ;
  33. output led_r,led_g,led_b ;
  34.  
  35. wire clk_65m ;
  36.  
  37. altera_pll_peng pll_U(
  38. .areset (!rst_n),
  39. .inclk0 (clock),
  40. .c0 (clk_65m),
  41. .c1 (clk_500k)
  42. );
  43.  
  44. vga_driver vga_dri_U
  45. (
  46. .pix_clk (clk_65m),
  47. .rst_n (rst_n),
  48. .key_r (key_r),
  49. .key_g (key_g),
  50. .key_b (key_b),
  51.  
  52. .vga_r (vga_r),
  53. .vga_g (vga_g),
  54. .vga_b (vga_b),
  55. .vga_hs (vga_hs),
  56. .vga_vs (vga_vs)
  57. );
  58.  
  59. // for test or display
  60. assign clk_board = clock ;
  61. assign clk_vga = clk_65m ;
  62. assign led_r = key_r ;
  63. assign led_g = key_g ;
  64. assign led_b = key_b ;
  65.  
  66. endmodule

子模块

  1. module vga_driver
  2. (
  3. pix_clk ,
  4. rst_n ,
  5. key_r,
  6. key_g,
  7. key_b,
  8.  
  9. vga_r,
  10. vga_g,
  11. vga_b,
  12. vga_hs,
  13. vga_vs
  14. );
  15. input pix_clk ; // VGA像素时钟
  16. input rst_n ; // 异步复位信号
  17. input key_b,key_g,key_r ;
  18.  
  19. output vga_r ;
  20. output vga_g ;
  21. output vga_b ;
  22. output vga_hs ; // VGA管脚 行同步
  23. output vga_vs ; // VGA管脚 场同步
  24.  
  25. //定义VGA_1024_768_65M_60HZ显示协议标准
  26. // pix_clk 65m
  27.  
  28. parameter H_SYNC = 'd136; // 同步脉冲 vga_hs
  29. parameter H_BACK = 'd160; // 显示后沿
  30. parameter H_DISP = 'd1024; // 显示时序
  31. parameter H_FRONT = 'd24; // 显示前沿
  32. parameter H_TOTAL = 'd1344; // 时序帧长 ---hs_cnt
  33.  
  34. parameter V_SYNC = 'd6; // 同步脉冲 vga_vs
  35. parameter V_BACK = 'd29; // 显示后沿
  36. parameter V_DISP = 'd768; // 显示时序
  37. parameter V_FRONT = 'd3; // 显示前沿
  38. parameter V_TOTAL = 'd806; // 时序帧长 --- vs_cnt
  39. //------------------------------------------
  40. reg [:] hs_cnt ;
  41. reg [:] vs_cnt ;
  42. always @ (posedge pix_clk )
  43. if(!rst_n) hs_cnt <= 'd0;
  44. else if(hs_cnt == H_TOTAL-) hs_cnt <= 'd0 ;
  45. else hs_cnt <= hs_cnt + 'd1 ;
  46. always @(posedge pix_clk)
  47. if(!rst_n) vs_cnt <= 'd0 ;
  48. else if (vs_cnt == V_TOTAL-) vs_cnt <= 'd0 ;
  49. else if (hs_cnt == H_TOTAL-) vs_cnt <= vs_cnt + 'd1 ;
  50.  
  51. reg hsync_r,vsync_r; //同步信号
  52. //-------------------------------------------------
  53. always @ (posedge pix_clk)
  54. if(!rst_n) hsync_r <= 'b1;
  55. else if(hs_cnt == 'd0) hsync_r <= 1'b0; //产生hsync信号
  56. else if(hs_cnt == H_SYNC-) hsync_r <= 'b1;
  57.  
  58. always @ (posedge pix_clk )
  59. if(!rst_n) vsync_r <= 'b1;
  60. else if(vs_cnt == 'd0) vsync_r <= 1'b0; //产生vsync信号
  61. else if(vs_cnt == V_SYNC-) vsync_r <= 'b1;
  62.  
  63. assign vga_hs = hsync_r;
  64. assign vga_vs = vsync_r;
  65.  
  66. //--------------------------------------------------------------------------
  67. //有效信号范围
  68. reg x_en ,y_en ;
  69. always @ (posedge pix_clk)
  70. if(!rst_n) x_en <= 'd0 ;
  71. else if (hs_cnt==(H_SYNC + H_BACK)) x_en <= 'd1 ;
  72. else if (hs_cnt==(H_SYNC + H_BACK + H_DISP)) x_en <= 'd0 ;
  73.  
  74. always @ (posedge pix_clk)
  75. if(!rst_n) y_en <= 'd0 ;
  76. else if (vs_cnt == (V_SYNC + V_BACK)) y_en <= 'd1 ;
  77. else if (vs_cnt == (V_SYNC + V_BACK + V_DISP)) y_en <= 'd0 ;
  78.  
  79. assign vga_r = (x_en&y_en) ? key_r: 'd0 ;
  80. assign vga_g = (x_en&y_en) ? key_g: 'd0 ;
  81. assign vga_b = (x_en&y_en) ? key_b: 'd0 ;
  82.  
  83. endmodule

单色VGA显示verilogHDL通用代码的更多相关文章

  1. VmodCAM图像采集 VGA显示

    先上图 总体框图 效果图 效果不是很好,因为暂时用的是zedboard自带的VGA,其只能RGB只有3*3*3的彩色度 VmodCAM原理图 VmodCAM的zedboard管脚约束见:http:// ...

  2. 基于FPGA的VGA显示静态图片

    终于熬到暑假了,记过三四周的突击带考试,终于为我的大二画上了一个完整的句号,接下来终于可以静心去做自己想做的事情了,前一阵子报了一个线上培训班,学学Sobel边缘检测,之前一直在学习图像处理,但是因为 ...

  3. 基于FPGA的Uart接收图像数据至VGA显示

    系统框图 前面我们设计了基于FPGA的静态图片显示,接下来我们来做做基于FPGA的动态图片显示,本实验内容为:由PC端上位机软件通过串口发送一幅图像数据至FPGA,FPGA内部将图像数据存储,最后扫描 ...

  4. 纠错:基于FPGA串口发送彩色图片数据至VGA显示

    今天这篇文章是要修改之前的一个错误,前面我写过一篇基于FPGA的串口发送图片数据至VGA显示的文章,最后是显示成功了,但是显示的效果图,看起来确实灰度图,当时我默认我使用的MATLAB代码将图片数据转 ...

  5. 基于FPGA驱动VGA显示图片的小问题

    学习VGA显示图片的过程中,遇到了一个小问题,我在显示屏上开了一个60x60的框,放了一张图片进去显示,但是最终的结果如下图所示. 出现了一个竖黑边,看了看代码,分析了一下逻辑没问题,然而看这个显示那 ...

  6. FPGA驱动VGA显示静态图片

    一 .前言 本文设计思想采用明德扬至简设计法.VGA是最常见的视频显示接口,时序也较为简单.本文从利用显示屏通过VGA方式显示测试图案及静态图片着手带大家接触图像显示应用,算是为后续VGA显示摄像头采 ...

  7. verilog实现VGA显示方块屏幕保护

    verilog实现VGA显示方块屏幕保护 输入和输出 时钟信号 clk 复位信号 reset rgb三颜色输出 [2:0] r,g, [1:0] b 行信号输出 hs 列信号输出 vs 参数设定 设定 ...

  8. 基于FPGA的VGA显示设计(二)

    上一篇:基于FPGA的VGA显示设计(一)     参照 CrazyBingo 的 基于FPGA的VGA可移植模块终极设计代码  的工程代码风格,模块化处理了上一篇的代码,并增加了一点其它图形. 顶层 ...

  9. 基于FPGA的VGA显示设计(一)

    前言 FPGA主要运用于芯片验证.通信.图像处理.显示VGA接口的显示器是最基本的要求了. 原理 首先需要了解 : (1)VGA接口协议:VGA端子_维基百科 .VGA视频传输标准_百度 引脚1 RE ...

随机推荐

  1. Uva 1612 Guess

    Thinking about it: 题目要求最后一名(也就是第N位)的分数要尽量的大,那么就一定要求第N-1名的分数也要尽量大.假如N-1可以取400和500,那么N-1应该取500,如果取400, ...

  2. BZOJ 无数据题集合

    题目 http://www.lydsy.com/JudgeOnline/problem.php?id=1142 http://www.lydsy.com/JudgeOnline/problem.php ...

  3. hdoj 2620 Bone Collector(0-1背包)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2602 思路分析:该问题为经典的0-1背包问题:假设状态dp[i][v]表示前i件物品恰放入一个容量为v ...

  4. 基于 dbms_redefinition 在线重定义表

    Oracle 支持在线重定义表,也就是说我们可以在修改表结构(DDL)的同时进行相关的DQL.DML操作,使得前端的DML根本感觉不到表结构实际上已经发生了变化,对于用户而言是完全透明的.当然在线重定 ...

  5. zoj 2229 Ride to School

    所有车子到达的总时间算出来,然后从小到大排序,如果:1. 开始时间 < 0 的,不予考虑,太快的赶不上,太慢的赶上也没用.2. 开始时间 > 0 的,Charley 和最早到达的车子一起到 ...

  6. npm 安装

    1.https://nodejs.org/en/  下载node.js 控制台,查看node版本 C:\WINDOWS\system32>node --version  出现版本表示安装成功 2 ...

  7. BZOJ 2440: [中山市选2011]完全平方数( 二分答案 + 容斥原理 + 莫比乌斯函数 )

    先二分答案m,<=m的有m-∑(m/pi*pi)+∑(m/pi*pi*pj*pj)-……个符合题意的(容斥原理), 容斥系数就是莫比乌斯函数μ(预处理)... ----------------- ...

  8. Oracle10g--plSql命令

    每天学点Oracle10g--plSql命令 附录B SQL*PLUS Sql*plus 中使用绑定变量: sql> variable x number; sql> exec :x := ...

  9. my.ini配置

    在家里写点东西,需要配置mysql windows版本,linux版本我一般都是直接编译后,有模板文件可以编辑,新下载的5.6没有,我用的是zip的. 在网上找了两篇博客,写的很详细: http:// ...

  10. 模拟美萍加密狗--Rockey2虚拟狗(二)

    按好了WDK,看了一天的DSF例子GenericHID,直接头大了,就能改个VID,PID让美萍识别成R2的狗.其他的什么各种描述符,根本无从下手,怪不得网上没有驱动模拟的加密狗,确实太复杂了,特别像 ...