单色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 ...
随机推荐
- iptables 规则预设置为新centos系统
1,新os iptables预设置脚本
- josscrowcroft / Simple-JavaScript-DOM-Inspector
josscrowcroft / Simple-JavaScript-DOM-Inspector josscrowcroft / Simple-JavaScript-DOM-Inspector
- SpringMVC入门一:helloWorld
玩了一下SpringMVC, 感觉挺清爽的 好像没有struts那么臃肿( 可能是高级的东西我还不会用 哈 ) 例子中一共有俩方法: 一个Controller直接返回字串的方法, 另一个通过Dao层返 ...
- poj1637Sightseeing tour(混合图欧拉回路)
题目请戳这里 题目大意:求混合图欧拉回路. 题目分析:最大流.竟然用网络流求混合图的欧拉回路,涨姿势了啊啊.. 其实仔细一想也是那么回事.欧拉回路是遍历所有边一次又回到起点的回路.双向图只要每个点度数 ...
- Boost源代码学习---shared_ptr.hpp
最近观看Boost库源代码.Boost功能强大的库,但它的许多源代码,十一细读太费时间,毕竟,还有其他东西要学.所以我决定脱脂感兴趣的章节,他们的设计思路和难以理解的地方记录. shared_ptr是 ...
- 【HDU】病毒侵袭持续中(AC自己主动机+map)
一開始一直WA,之后发现这道题不止一组输入,改成多组输入之后就过了. 利用map把每一个字符串映射到它相应的结点上即可了. 11909467 2014-10-19 11:54:00 Accepted ...
- python 序列(list,tuple,str)基本操作
添加元素: mylist.append() mylist.extend([1, 2]) mylist.insert(1, "pos") 删除元素: mylist.remove(va ...
- SQLHelper简单版(基础版)
using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; usin ...
- SQL数据库关键字和列名冲突处理
在设计SQL数据库的时候可能由于考虑不全,使列名和数据库内关键字冲突,可能导致Query不能被正确识别,对列名要加[]处理.
- hdu 4619 Warm up 2 二分图匹配
题目链接 给两种长方形, 水平的和垂直的, 大小都为1*2, n个水平的, m个垂直的, 给出它们的坐标. 水平的和垂直的可以相互覆盖, 但是同种类型的没有覆盖. 去掉一些长方形, 使得剩下的全部都没 ...