单色VGA显示verilogHDL通用代码
今天做VGA,真是拼凑了好久啊。唉,总算完成了。
本来想偷懒移植,最后还是自己写的代码。
- //2015/12/13
- //designer : pengxiaoen
- //function : vga control
- /*备注:
- 1,三个test pin 是用来测试pll是否工作
- 2,r,g,b 三色分别对应三个不同的key 以及三个led进行显示
- 3,因为这个板子的 r ,g ,b 分别只有一个pin ,显示色彩有限
- */
- module vga_top (
- clock ,
- rst_n ,
- key_r,key_g,key_b ,
- clk_vga ,clk_board, clk_500k , //test pin
- led_r ,led_g,led_b ,
- vga_hs ,vga_vs,vga_r,vga_g,vga_b
- );
- input clock ;
- input rst_n ;
- input key_r,key_g,key_b ;
- output vga_hs ;
- output vga_vs ;
- output vga_r ;
- output vga_g ;
- output vga_b ;
- output clk_vga ;
- output clk_board ;
- output clk_500k ;
- output led_r,led_g,led_b ;
- wire clk_65m ;
- altera_pll_peng pll_U(
- .areset (!rst_n),
- .inclk0 (clock),
- .c0 (clk_65m),
- .c1 (clk_500k)
- );
- vga_driver vga_dri_U
- (
- .pix_clk (clk_65m),
- .rst_n (rst_n),
- .key_r (key_r),
- .key_g (key_g),
- .key_b (key_b),
- .vga_r (vga_r),
- .vga_g (vga_g),
- .vga_b (vga_b),
- .vga_hs (vga_hs),
- .vga_vs (vga_vs)
- );
- // for test or display
- assign clk_board = clock ;
- assign clk_vga = clk_65m ;
- assign led_r = key_r ;
- assign led_g = key_g ;
- assign led_b = key_b ;
- endmodule
子模块
- module vga_driver
- (
- pix_clk ,
- rst_n ,
- key_r,
- key_g,
- key_b,
- vga_r,
- vga_g,
- vga_b,
- vga_hs,
- vga_vs
- );
- input pix_clk ; // VGA像素时钟
- input rst_n ; // 异步复位信号
- input key_b,key_g,key_r ;
- output vga_r ;
- output vga_g ;
- output vga_b ;
- output vga_hs ; // VGA管脚 行同步
- output vga_vs ; // VGA管脚 场同步
- //定义VGA_1024_768_65M_60HZ显示协议标准
- // pix_clk 65m
- parameter H_SYNC = 'd136; // 同步脉冲 vga_hs
- parameter H_BACK = 'd160; // 显示后沿
- parameter H_DISP = 'd1024; // 显示时序
- parameter H_FRONT = 'd24; // 显示前沿
- parameter H_TOTAL = 'd1344; // 时序帧长 ---hs_cnt
- parameter V_SYNC = 'd6; // 同步脉冲 vga_vs
- parameter V_BACK = 'd29; // 显示后沿
- parameter V_DISP = 'd768; // 显示时序
- parameter V_FRONT = 'd3; // 显示前沿
- parameter V_TOTAL = 'd806; // 时序帧长 --- vs_cnt
- //------------------------------------------
- reg [:] hs_cnt ;
- reg [:] vs_cnt ;
- always @ (posedge pix_clk )
- if(!rst_n) hs_cnt <= 'd0;
- else if(hs_cnt == H_TOTAL-) hs_cnt <= 'd0 ;
- else hs_cnt <= hs_cnt + 'd1 ;
- always @(posedge pix_clk)
- if(!rst_n) vs_cnt <= 'd0 ;
- else if (vs_cnt == V_TOTAL-) vs_cnt <= 'd0 ;
- else if (hs_cnt == H_TOTAL-) vs_cnt <= vs_cnt + 'd1 ;
- reg hsync_r,vsync_r; //同步信号
- //-------------------------------------------------
- always @ (posedge pix_clk)
- if(!rst_n) hsync_r <= 'b1;
- else if(hs_cnt == 'd0) hsync_r <= 1'b0; //产生hsync信号
- else if(hs_cnt == H_SYNC-) hsync_r <= 'b1;
- always @ (posedge pix_clk )
- if(!rst_n) vsync_r <= 'b1;
- else if(vs_cnt == 'd0) vsync_r <= 1'b0; //产生vsync信号
- else if(vs_cnt == V_SYNC-) vsync_r <= 'b1;
- assign vga_hs = hsync_r;
- assign vga_vs = vsync_r;
- //--------------------------------------------------------------------------
- //有效信号范围
- reg x_en ,y_en ;
- always @ (posedge pix_clk)
- if(!rst_n) x_en <= 'd0 ;
- else if (hs_cnt==(H_SYNC + H_BACK)) x_en <= 'd1 ;
- else if (hs_cnt==(H_SYNC + H_BACK + H_DISP)) x_en <= 'd0 ;
- always @ (posedge pix_clk)
- if(!rst_n) y_en <= 'd0 ;
- else if (vs_cnt == (V_SYNC + V_BACK)) y_en <= 'd1 ;
- else if (vs_cnt == (V_SYNC + V_BACK + V_DISP)) y_en <= 'd0 ;
- assign vga_r = (x_en&y_en) ? key_r: 'd0 ;
- assign vga_g = (x_en&y_en) ? key_g: 'd0 ;
- assign vga_b = (x_en&y_en) ? key_b: 'd0 ;
- endmodule
单色VGA显示verilogHDL通用代码的更多相关文章
- VmodCAM图像采集 VGA显示
先上图 总体框图 效果图 效果不是很好,因为暂时用的是zedboard自带的VGA,其只能RGB只有3*3*3的彩色度 VmodCAM原理图 VmodCAM的zedboard管脚约束见:http:// ...
- 基于FPGA的VGA显示静态图片
终于熬到暑假了,记过三四周的突击带考试,终于为我的大二画上了一个完整的句号,接下来终于可以静心去做自己想做的事情了,前一阵子报了一个线上培训班,学学Sobel边缘检测,之前一直在学习图像处理,但是因为 ...
- 基于FPGA的Uart接收图像数据至VGA显示
系统框图 前面我们设计了基于FPGA的静态图片显示,接下来我们来做做基于FPGA的动态图片显示,本实验内容为:由PC端上位机软件通过串口发送一幅图像数据至FPGA,FPGA内部将图像数据存储,最后扫描 ...
- 纠错:基于FPGA串口发送彩色图片数据至VGA显示
今天这篇文章是要修改之前的一个错误,前面我写过一篇基于FPGA的串口发送图片数据至VGA显示的文章,最后是显示成功了,但是显示的效果图,看起来确实灰度图,当时我默认我使用的MATLAB代码将图片数据转 ...
- 基于FPGA驱动VGA显示图片的小问题
学习VGA显示图片的过程中,遇到了一个小问题,我在显示屏上开了一个60x60的框,放了一张图片进去显示,但是最终的结果如下图所示. 出现了一个竖黑边,看了看代码,分析了一下逻辑没问题,然而看这个显示那 ...
- FPGA驱动VGA显示静态图片
一 .前言 本文设计思想采用明德扬至简设计法.VGA是最常见的视频显示接口,时序也较为简单.本文从利用显示屏通过VGA方式显示测试图案及静态图片着手带大家接触图像显示应用,算是为后续VGA显示摄像头采 ...
- verilog实现VGA显示方块屏幕保护
verilog实现VGA显示方块屏幕保护 输入和输出 时钟信号 clk 复位信号 reset rgb三颜色输出 [2:0] r,g, [1:0] b 行信号输出 hs 列信号输出 vs 参数设定 设定 ...
- 基于FPGA的VGA显示设计(二)
上一篇:基于FPGA的VGA显示设计(一) 参照 CrazyBingo 的 基于FPGA的VGA可移植模块终极设计代码 的工程代码风格,模块化处理了上一篇的代码,并增加了一点其它图形. 顶层 ...
- 基于FPGA的VGA显示设计(一)
前言 FPGA主要运用于芯片验证.通信.图像处理.显示VGA接口的显示器是最基本的要求了. 原理 首先需要了解 : (1)VGA接口协议:VGA端子_维基百科 .VGA视频传输标准_百度 引脚1 RE ...
随机推荐
- Uva 1612 Guess
Thinking about it: 题目要求最后一名(也就是第N位)的分数要尽量的大,那么就一定要求第N-1名的分数也要尽量大.假如N-1可以取400和500,那么N-1应该取500,如果取400, ...
- BZOJ 无数据题集合
题目 http://www.lydsy.com/JudgeOnline/problem.php?id=1142 http://www.lydsy.com/JudgeOnline/problem.php ...
- hdoj 2620 Bone Collector(0-1背包)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2602 思路分析:该问题为经典的0-1背包问题:假设状态dp[i][v]表示前i件物品恰放入一个容量为v ...
- 基于 dbms_redefinition 在线重定义表
Oracle 支持在线重定义表,也就是说我们可以在修改表结构(DDL)的同时进行相关的DQL.DML操作,使得前端的DML根本感觉不到表结构实际上已经发生了变化,对于用户而言是完全透明的.当然在线重定 ...
- zoj 2229 Ride to School
所有车子到达的总时间算出来,然后从小到大排序,如果:1. 开始时间 < 0 的,不予考虑,太快的赶不上,太慢的赶上也没用.2. 开始时间 > 0 的,Charley 和最早到达的车子一起到 ...
- npm 安装
1.https://nodejs.org/en/ 下载node.js 控制台,查看node版本 C:\WINDOWS\system32>node --version 出现版本表示安装成功 2 ...
- BZOJ 2440: [中山市选2011]完全平方数( 二分答案 + 容斥原理 + 莫比乌斯函数 )
先二分答案m,<=m的有m-∑(m/pi*pi)+∑(m/pi*pi*pj*pj)-……个符合题意的(容斥原理), 容斥系数就是莫比乌斯函数μ(预处理)... ----------------- ...
- Oracle10g--plSql命令
每天学点Oracle10g--plSql命令 附录B SQL*PLUS Sql*plus 中使用绑定变量: sql> variable x number; sql> exec :x := ...
- my.ini配置
在家里写点东西,需要配置mysql windows版本,linux版本我一般都是直接编译后,有模板文件可以编辑,新下载的5.6没有,我用的是zip的. 在网上找了两篇博客,写的很详细: http:// ...
- 模拟美萍加密狗--Rockey2虚拟狗(二)
按好了WDK,看了一天的DSF例子GenericHID,直接头大了,就能改个VID,PID让美萍识别成R2的狗.其他的什么各种描述符,根本无从下手,怪不得网上没有驱动模拟的加密狗,确实太复杂了,特别像 ...