今天做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通用代码的更多相关文章

  1. VmodCAM图像采集 VGA显示

    先上图 总体框图 效果图 效果不是很好,因为暂时用的是zedboard自带的VGA,其只能RGB只有3*3*3的彩色度 VmodCAM原理图 VmodCAM的zedboard管脚约束见:http:// ...

  2. 基于FPGA的VGA显示静态图片

    终于熬到暑假了,记过三四周的突击带考试,终于为我的大二画上了一个完整的句号,接下来终于可以静心去做自己想做的事情了,前一阵子报了一个线上培训班,学学Sobel边缘检测,之前一直在学习图像处理,但是因为 ...

  3. 基于FPGA的Uart接收图像数据至VGA显示

    系统框图 前面我们设计了基于FPGA的静态图片显示,接下来我们来做做基于FPGA的动态图片显示,本实验内容为:由PC端上位机软件通过串口发送一幅图像数据至FPGA,FPGA内部将图像数据存储,最后扫描 ...

  4. 纠错:基于FPGA串口发送彩色图片数据至VGA显示

    今天这篇文章是要修改之前的一个错误,前面我写过一篇基于FPGA的串口发送图片数据至VGA显示的文章,最后是显示成功了,但是显示的效果图,看起来确实灰度图,当时我默认我使用的MATLAB代码将图片数据转 ...

  5. 基于FPGA驱动VGA显示图片的小问题

    学习VGA显示图片的过程中,遇到了一个小问题,我在显示屏上开了一个60x60的框,放了一张图片进去显示,但是最终的结果如下图所示. 出现了一个竖黑边,看了看代码,分析了一下逻辑没问题,然而看这个显示那 ...

  6. FPGA驱动VGA显示静态图片

    一 .前言 本文设计思想采用明德扬至简设计法.VGA是最常见的视频显示接口,时序也较为简单.本文从利用显示屏通过VGA方式显示测试图案及静态图片着手带大家接触图像显示应用,算是为后续VGA显示摄像头采 ...

  7. verilog实现VGA显示方块屏幕保护

    verilog实现VGA显示方块屏幕保护 输入和输出 时钟信号 clk 复位信号 reset rgb三颜色输出 [2:0] r,g, [1:0] b 行信号输出 hs 列信号输出 vs 参数设定 设定 ...

  8. 基于FPGA的VGA显示设计(二)

    上一篇:基于FPGA的VGA显示设计(一)     参照 CrazyBingo 的 基于FPGA的VGA可移植模块终极设计代码  的工程代码风格,模块化处理了上一篇的代码,并增加了一点其它图形. 顶层 ...

  9. 基于FPGA的VGA显示设计(一)

    前言 FPGA主要运用于芯片验证.通信.图像处理.显示VGA接口的显示器是最基本的要求了. 原理 首先需要了解 : (1)VGA接口协议:VGA端子_维基百科 .VGA视频传输标准_百度 引脚1 RE ...

随机推荐

  1. 自己动手写RTP服务器——传输所有格式的视频

    上一篇文章我们介绍了如何用一个简单的UDP socket搭建一个RTP服务器.我把这份80行的代码呈现到客户面前的时候,就有人不满意了. 还有人在参考的时候会问:“楼主你的TS格式的文件是哪里来的?应 ...

  2. Uber 司机有话说:你以为当个 Uber 司机很轻松?大错特错!

    Uber 最近的负面新闻越来越多.各方成员都在抨击.斥责.揭露 Uber 公司的各种黑幕.今天,来自 Uber 公司的司机为您讲述咱「拼车老司机」自己的故事.你以为开着自己的私家车出去满城市的晃悠接客 ...

  3. SQL基础查询实战

    总结: 一.单表查询的情况: 1.where.....group by .. Having count(..) 2.Group by haing min(..)条件and max(..)条件(查询最低 ...

  4. [HDU 4741]Save Labman No.004[计算几何][精度]

    题意: 求两条空间直线的距离,以及对应那条距离线段的两端点坐标. 思路: 有一个参数方程算最短距离的公式, 代入求即可. 但是这题卡精度... 用另外的公式(先算出a直线上到b最近的点p的坐标, 再算 ...

  5. Java 程序中的多线程

    概述 synchronized  关键字,代表这个方法加锁,相当于不管哪一个线程(例如线程A),运行到这个方法时,都要检查有没有其它线程B(或者C. D等)正在用这个方法,有的话要等正在使用synch ...

  6. 自己动手写处理器之第一阶段(3)——MIPS32指令集架构简单介绍

    将陆续上传本人写的新书<自己动手写处理器>(尚未出版).今天是第四篇.我尽量每周四篇 1.4 MIPS32指令集架构简单介绍 本书设计的处理器遵循MIPS32 Release 1架构,所以 ...

  7. VS2008下直接安装使用Boost库1.46.1版本号

    Boost库是一个可移植.提供源码的C++库,作为标准库的后备,是C++标准化进程的发动机之中的一个. Boost库由C++标准委员会库工作组成员发起,当中有些内容有望成为下一代C++标准库内容.在C ...

  8. 3. 表单输入框 在 IE 中 会有 “X” 和 类似wifi图标的图标出现

    原因: IE 自动给 input加了伪类 ::ms-clear 和 ::ms-reveal 解决: input::ms-clear, input::ms-reveal { display: none; ...

  9. String VS Cstring(字符串)

    #include<string> 与 #include<string.h> 这是两个完全不同的头文件,前者用于C++,后者用于C,一般把这两个头文件都包括进去. 越来越觉得需要 ...

  10. HTTP协议头部与Keep-Alive模式详解

    HTTP协议头部与Keep-Alive模式详解 .什么是Keep-Alive模式? 我们知道HTTP协议采用“请求-应答”模式,当使用普通模式,即非KeepAlive模式时,每个请求/应答客户和服务器 ...