单色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 ...
随机推荐
- 让 QtWebkit 支持跨域CROS - nowboy的CSDN博客 - 博客频道 - CSDN.NET
让 QtWebkit 支持跨域CROS - nowboy的CSDN博客 - 博客频道 - CSDN.NET 让 QtWebkit 支持跨域CROS 2013-05-23 22:05 450人阅读 评论 ...
- 学习pthreads,给线程传递多个參数
上篇博文中.boss线程给其它线程传递的仅仅有一个參数,那么假如是多个參数呢?怎么传递呢?也许你会有这种疑问,带着这个疑问,我们进入本文的世界,这里传递多个參数,採用结构体,为什么呢?由于结构体里能够 ...
- linux网络编程涉及的函数
常用的网络命令: netstat 命令netstat是用来显示网络的连接,路由表和接口统计等网络的信息. netstat有许多的选项我们常用的选项是-an用来显示详细的网络状态.至于其它选项我们使用帮 ...
- linux 知识整理1linux 常见的目录
linux 系统现在也是搭配啦图形操作界面. 本人初次学习linux,不是为工作,我的工作是玩Asp.net 的.学习linux 也算是知识的储备吧. 学习linux必须知道一些基本的知识. 目录 用 ...
- Objective-c 中的变量
OC中的语言变量,按作用域可分为两种:局部变量和全局变量. 局部变量:也称为内部变量,局部变量是在方法内部声明的.其作用域仅限于方法内,离开该方法再使用这个变量就是非法的. 全局变量:也称为外部变量, ...
- UVa340 Master-Mind Hints
#include <stdio.h>#include <string.h> #define MIN(a,b) (((a) < (b)) ? (a) : (b)) int ...
- jackson的简单实用实例(json)
一个json格式的字符串比如: {"status":10001,"code":"HDkGzI","pubkey":&qu ...
- scrapy写爬虫是出现no module named win32api错误
windows下利用scrapy(python2.7)写爬虫,运行 scrapy crawl dmoz 命令时提示:exceptions.ImportError: No module named wi ...
- web压缩gzip响应
String data = "ggrgrgw4gergergregerge"; byte b[] = data.getBytes(); String gzipValue = req ...
- AssetManager中的路径参数不能包含"assets/"
String path = “music/bg.mp3”: //正确的参数 //String path = “assets/music/bg.mp3”: //错误的参数 //String path = ...