单色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 ...
随机推荐
- Mirantis Certification summary
preface Mirantis Certification (MCA100 )summary roughly question types handy remain by Ruiy!
- J2EE项目中异常处理
为什么要在J2EE项目中谈异常处理呢?可能许多java初学者都想说:“异常处理不就是try….catch…finally吗?这谁都会啊!”.笔者在初学java时也是这样认为的.如何在一个多层的j2e ...
- Mybatis上路_05-使用命令行自动生成【转】
http://my.oschina.net/vigiles/blog/125127 Mybatis上路_05-使用命令行自动生成 1人收藏此文章, 我要收藏 发表于1个月前(2013-04-24 ...
- zoj 1083 Frame Stacking
其实就是一个拓补排序.(动态记录第i个之上的j存不存在,反过来就是第j个之下的i) 首先确立每个框的位置(题目明确说了每一边都不会被完全覆盖)./*可以通过搜索,搜索到该框的所有四个角*/||如果题目 ...
- C实现二叉树(模块化集成,遍历的递归与非递归实现)
C实现二叉树模块化集成 实验源码介绍(源代码的总体介绍):header.h : 头文件链栈,循环队列,二叉树的结构声明和相关函数的声明.LinkStack.c : 链栈的相关操作函数定义.Queue. ...
- Ubuntu 14.10 编译 qt4.8.6
0. 假设你已经可以在上面写基本的C++程序.(即:c/C++开发环境已经就绪)1. $ sudo apt-get build-dep libqt4-dev 2. $ sudo apt-get ins ...
- Java Socket编程 标准范例(多线程)
链接地址:http://blog.csdn.net/benweizhu/article/details/6615542 服务器端(Server)非多线程 package com.zeph.server ...
- QT中QWidget、QDialog及QMainWindow的区别
本文转自http://www.cnblogs.com/aqxin/archive/2011/05/23/2054156.html QWidget类是所有用户界面对象的基类. 窗口部件是用户界面的一个基 ...
- Spring Annotation vs XML - 示例
来源: http://hanqunfeng.iteye.com/blog/2113820 作者hanqunfeng的示例文件: (可下载) web-mvc.zip
- PHP的排列组合问题 分别从每一个集合中取出一个元素进行组合,问有多少种组合?
首先说明这是一个数学的排列组合问题C(m,n) = m!/(n!*(m-n)!) 比如:有集合('粉色','红色','蓝色','黑色'),('38码','39码','40码'),('大号','中号') ...