单色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-699 Not so Mobile (杠杆,巧妙递归)
Not so Mobile Before being an ubiquous communications gadget, a mobile was just a structure made ...
- JavaScript中你可能不知道的九件事
今天凑巧去W3School扫了一遍JavaScript教程,发现从中看到了不少自己曾经没有注意过的细节. 我这些细节列在这里.分享给可能相同不知道的朋友: 1.使用 document.write() ...
- 教你使用python获得字符串的md5值
最近需要使用python获取字符串的md5值. 今天把代码贴出来和大家分享一下. 01 #!/usr/bin/env python 02 # -*- coding: cp936 -*- 03 impo ...
- Windows下Oracle服务介绍
如图,截取的是11gR2下RAC其中一个节点的Oracle服务列表. oracle在处理一般事务时并不需要全部启动其后台的所有服务由于oracle服务所占用系统资源比较大,一般情况下,对于单实例的OR ...
- Linux下并发网络设计之I/O复用
I/O 流: 首先我们来定义流的概念,一个流可以是文件,socket,pipe等等可以进行I/O操作的内核对象. 不管是文件,还是套接字,还是管道,我们都可以把他们看作流. 之后我们来讨论I/O的操作 ...
- Dos关闭进程命令
netstat -ao 查找占用端口的进程 taskkikk /pid 端口pid /f
- C++ 字符串指针与字符串数组
在做面试100题中第21题时,发现char *astr="abcdefghijk\0";和char astr[]={"abcdefghijk"};有点区别,以前 ...
- BZOJ 1878: [SDOI2009]HH的项链( BIT )
离线处理 , 记下询问的左右端点并排序 , 然后可以利用树状数组 , 保证查询区间时每种颜色只计算一次 ------------------------------------------------ ...
- C#中小函数的应用
今天看到的一段函数 StringBuilder sb = new StringBuilder("sselect * from table where 1=1"); if(TextB ...
- java生成随机字符串
学习java comparable特性时候,定义如下Student类,需要需要随机添加学生姓名以及学号和成绩,这是java如何随机生成名字,根据我的查询,我找到目前java库支持两种方法. 1. or ...