zoukankan      html  css  js  c++  java
  • Verilog HDL VGA Driver for Xilinx Nexys 4 适用于Nexys4的VGA驱动

    /*
     * Function:    VGA Timing Generator
     * Author:      Liutianchen
     * Date:        2016-12-5
     * Version:     6.0
     * Environment: Verilog HDL with Vivado 2016.3
     */
     
     `timescale 1ns / 1ps
     
    /*
        PARAMETER:
            0: Sync
            1: Sync + Back porch
            2: Sync + Back porch + Display Area
            3: Sync + Back porch + Display Area + Front Porch
    */
    
    module vga_time_gen(
            input clk,
            input rst,
            input ena,
            output VGA_HS,
            output VGA_VS,
            output reg Ready,
            output [15:0] HCounter,
            output [15:0] VCounter);
        
        reg [15:0] cntH=0,cntV=0;
        
        reg [15:0] Hpara [0:3];
        reg [15:0] Vpara [0:3];
        
        initial begin
            ///Parameter Announcement
            
            /// 1280 x 1024@60hz    108MHz
            Hpara[0]=112;
            Hpara[1]=112+248;
            Hpara[2]=112+248+1280;
            Hpara[3]=112+248+1280+48;
            
            Vpara[0]=3;
            Vpara[1]=3+38;
            Vpara[2]=3+38+1024;
            Vpara[3]=3+38+1024+1;
            
            ////800x600@60hz        40MHz
    //      Hpara[0]=128;
    //      Hpara[1]=128+88;
    //      Hpara[2]=128+88+800;
    //      Hpara[3]=128+88+800+40;
    //      
    //      Vpara[0]=4;
    //      Vpara[1]=4+23;
    //      Vpara[2]=4+23+600;
    //      Vpara[3]=4+23+600+1;
            
            ////1024x768@85hz       94.6MHz
    //      Hpara[0]=96;
    //      Hpara[1]=96+208;
    //      Hpara[2]=96+208+1024;
    //      Hpara[3]=96+208+1024+48;
    //        
    //      Vpara[0]=3;
    //      Vpara[1]=3+36;
    //      Vpara[2]=3+36+768;
    //      Vpara[3]=3+36+768+1;
        end
        
        ///////////////Horizontal Scanning///////////////////
        
        always@(posedge clk or posedge rst) begin
            if(rst)
                cntH<=0;
            else if(cntH==Hpara[3])
                cntH<=0;
            else
                cntH<=cntH+1;
        end
        
        ///////////////Vertical Scanning/////////////////////
        
        always@(posedge clk or posedge rst) begin
            if(rst)
                cntV<=0;
            else if(cntV==Vpara[3])
                cntV<=0;
            else if(cntH==Hpara[3])
                cntV<=cntV+1;
        end
        
        ///////////////Displaying Area Ready?///////////////
        
        always@(posedge clk or posedge rst) begin
            if(rst)
                Ready<=0;
            else if(cntH>Hpara[1] && cntH<Hpara[2] &&
                    cntV>Vpara[1] && cntV<Vpara[2])
                Ready<=1;
            else
                Ready<=0;
        end
        
        
        ///////////////////Output Sync Signal///////////////
        
        assign VGA_HS=cntH<=Hpara[0]?(ena?1:0):0;
        assign VGA_VS=cntV<=Vpara[0]?(ena?1:0):0;
        
        ///////////////////Ouput Position////////////////////
        
        assign HCounter=cntH-Hpara[1];
        assign VCounter=cntV-Vpara[1];
        
    endmodule

    VGA端口时序发生器,适用于Xilinx公司Nexys4开发板。

    Nexys4开发板支持4096色RGB显示输出。

    请使用时钟IP核发生VGA显示需要的时钟频率。频率对应的时序参数表可从Tiny VGA网站查阅。

    转载请注明出处。

    原文地址:http://www.cnblogs.com/liutianchen/p/6292721.html

    如果你还没选课那请选张志峰别问为什么。。。

  • 相关阅读:
    接口问题
    鉴权 授权 验签
    adb常用命令
    cookie session
    常见http返回状态码
    Linux下mysql数据库的命令
    Linux课堂笔记--第九天
    Linux课堂随笔 -第八天
    Linux课堂笔记-第七天
    Linux课堂随笔-第六天
  • 原文地址:https://www.cnblogs.com/liutianchen/p/6292721.html
Copyright © 2011-2022 走看看