关闭

verilog简单驱动VGA

标签: DE2vga
145人阅读 评论(0) 收藏 举报
分类:
/*
2017.9.19 gy DE2 
vga  640x480   60hz  
ADV7123 D/A 
输入时钟50MHz 低电平复位

时序:
              水平同步参数h 行扫描
          同步 后沿 有效视屏 前沿  总
时间us    3.8   1.9    25.4     0.6   31.7 
计数      96    48    640(l)    16    800

              垂直同步参数v 列扫描          
	      同步 后沿 有效视屏 前沿  总
行数      2    33     480(w)    10    525
时间us = 行数X扫描一行所需要的时间

像素时钟25MHz yue=800x525x60
总时间 =31.7usX525X60 yue=1s
计一个数的时间为 1/25MHz or 3.8/96
*/
module vga(
      clk,rst_n,                         //input
      vga_sync,vga_blank,vga_clk,        //output ADV7123 
      vga_r,vga_g,vga_b,vga_hs,vga_vs    //output VGA     
);
input clk,rst_n;
output reg [7:0] vga_r,vga_g,vga_b;
output reg vga_clk,vga_hs,vga_vs;
output vga_blank,vga_sync;
//-------------------分频-------------------------
always @(posedge clk or negedge rst_n)
       if (!rst_n)
		  vga_clk<=1'b0;
       else vga_clk<=~vga_clk;

//---------------下面的时钟为vga_clk--------------
//---------------时序参数800x525------------------
parameter H_SYNC=96;
parameter H_BACK=48;
parameter H_LENGTH=640;
parameter H_FRONT=16;

parameter V_SYNC=2;
parameter V_BACK=33;
parameter V_WIDTH=480;
parameter V_FRONT=10;

reg [9:0] x,y;
//不用SOG(sync on green 同步信号只在绿色信号中出现)
assign vga_sync=1'b0;
//---------------------计数-----------------------
always@(posedge vga_clk or negedge rst_n)
begin 
     if(!rst_n) x<=10'd0;
     else if(x==800) x<=0;
     else x<=x+1'b1;
end
always@(posedge vga_clk or negedge rst_n)
begin 
     if(!rst_n) y<=10'd0;
     else if(y==525) y<=0;
     else if(x==800) y<=y+1'b1;
end 
//------------通过计的数字输出同步信号---------
always@(posedge vga_clk or negedge rst_n)
begin 
     if(!rst_n) vga_hs<=1'b1;
     else if(x==0) vga_hs<=1'b0;
     else if(x==H_SYNC) vga_hs<=1'b1;
end
always@(posedge vga_clk or negedge rst_n)
begin
     if(!rst_n) vga_vs<=1'b1;
     else if(y==0) vga_vs<=1'b0;
     else if(y==V_SYNC) vga_vs<=1'b1;
end
//----------通过横纵坐标x,y计算出显示的区域---
reg [9:0] vga_x,vga_y;
always@(posedge vga_clk)
begin
       vga_x=x-H_SYNC-H_BACK;
       vga_y=y-V_SYNC-V_BACK;
end
//---------------进行同步时消隐------------------
assign vga_blank=vga_x<H_LENGTH && vga_y<V_WIDTH;
//----------通过vga_x,vga_y显示相应颜色----------
always @(posedge vga_clk or negedge rst_n)
    if (!rst_n)
          begin
             vga_r=8'b00000000;
             vga_g=8'b00000000;
             vga_b=8'b00000000;
          end
    else if(300<vga_x&&vga_x<340&&220<vga_y&&vga_y<260)
          begin
             vga_r=8'b00000000;
             vga_g=8'b00000000;
             vga_b=8'b00000000;
          end
    else
          begin 
             vga_r=8'b11111111;
             vga_g=8'b11111111;
             vga_b=8'b11111111;
          end 
//----------------------结束-----------------------
endmodule 

0
0
查看评论

尝试用Verilog驱动VGA

VGA的原理及Verilog代码
  • u013793399
  • u013793399
  • 2016-05-04 23:50
  • 5309

Verilog编写VGA显示的小游戏

引言这是我的数字集成电路课程设计。实现的是一个我们都玩过的小游戏:一块移动挡板,一个飞来飞去的球,挡板需要把球挡住,没挡住就算输。 代码已上传github,地址是 https://github.com/Wujh1995/Verilog-VGA-game 开发平台:Xilinx ISE 开发语言:...
  • u013793399
  • u013793399
  • 2016-05-29 00:02
  • 5770

数字电路设计之VGA显示条形图的verilog实现

`timescale 1ns / 1ps ////////////////////////////////////////////////////////////////////////////////// // Engineer: ChenYu // Create Date: 1...
  • c602273091
  • c602273091
  • 2014-11-07 19:31
  • 1899

verilog实现的VGA显示自反弹移动小方块

使用 Nexys3 Xilinx Spartan-6 LX16 FPGA 开发板的VGA模块完成简单的video control。
  • august717
  • august717
  • 2015-05-29 08:56
  • 1771

FPGA 学习笔记(十一) VGA驱动的实现

基于FPGA的VGA驱动实现
  • GOGOmusic
  • GOGOmusic
  • 2017-02-15 20:42
  • 3906

关于VGA的显示原理和Verilog语言实现/学习笔记

首先: VGA驱动显示器用的是扫描的方式,逐行扫描the HS (Horizontal Synchronization) 逐行扫描是扫描从屏幕的左上角一点开始,由左向右逐点扫描,每扫描完一行,电子束回到屏幕的左边下一行的起始位置, 在这期间CRT(阴极射线显像管)对电子束进行消隐,每行结束时,用行同...
  • csg3140100993
  • csg3140100993
  • 2016-12-30 15:20
  • 2253

Verilog实现VGA显示控制器

Verilog实现VGA显示控制器 具体原理就不详细讲了,这里给出完整的代码以及Nexys3开发板的引脚文件。 最终实现的效果是: 以 640*480 的分辨率在显示器屏幕显示一个矩形方块,方块在屏幕中以 45 度的角度、60 像素/秒的速度移动,到...
  • u013058160
  • u013058160
  • 2014-12-15 17:28
  • 2653

数字电路设计之VGA的字母显示的verilog实现

module vga_initials_top( mclk, btn, sw, hsync, vsync, red, green, blue ); input wire mclk; input wire btn; input wire...
  • c602273091
  • c602273091
  • 2014-11-07 21:14
  • 3200

VERILOG代码:VGA显示字符串的解读

`timescale 1ns/1ns module lcd_display (  input     clk,  //system clock  input    rst_...
  • USB_ABC
  • USB_ABC
  • 2016-09-10 14:48
  • 924

7-2 Verilog VGA驱动

Verilog 学习过程 VGA驱动设计
  • hyhop150
  • hyhop150
  • 2016-04-27 23:12
  • 556
    个人资料
    • 访问:9612次
    • 积分:686
    • 等级:
    • 排名:千里之外
    • 原创:59篇
    • 转载:0篇
    • 译文:0篇
    • 评论:1条
    文章分类
    最新评论