⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sync_gen_50m.v

📁 本示例演示了VGA的控制方法
💻 V
字号:
////////////////////////////////////////////////////////////////////////////////
//                __     ___ _               ___ ____                         //
//                \ \   / (_) |__   ___  ___|_ _/ ___|                        //
//                 \ \ / /| | '_ \ / _ \/ __|| | |                            //
//                  \ V / | | |_) |  __/\__ \| | |___                         //
//                   \_/  |_|_.__/ \___||___/___\____|                        //
//                                                                            //
////////////////////////////////////////////////////////////////////////////////
// 	   Copyright (C) 2003-2006 VibesIC, Inc.   All rights reserved.           //
//----------------------------------------------------------------------------//
// This source code is provided by VibesIC, and be verified on VibesIC FPGA   //
// development kit. The source code may be used and distributed without       //
// restriction provided that this copyright statement is not removed from the //
// file and that any derivative work contains the original copyright notice   //
// and the associated disclaimer.                                             //
//----------------------------------------------------------------------------//
// THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED     //
// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF       //
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL THE//
// AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,     //
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES(INCLUDING, BUT NOT LIMITED TO,//
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,OR PROFITS; //
// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,   //
// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR    //
// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF     //
// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.                                 //
//----------------------------------------------------------------------------//
// 本设计由威百仕( VibesIC )提供,并在其产品中验证通过,您可以在此基础上修改,//
// 复制并分发,但请您保留版权声明部分。我们并不承诺本设计可以用做商业产品,同时//
// 我们不保证设计的通用性。为了方便更新以及修改请保留设计的版本信息,并对自行 //
// 修改部分添加足够的注释。对设计如有其他建议,请到网站进行讨论。              //
//                                                                            //
////////////////////////////////////////////////////////////////////////////////
//  Company:       www.richic.com                                             //
//  Company bbs:   www.edacn.net                                              //
//  Engineer:      mail007 (Gavin.xue)                                        //
//                                                                            //
//  Target Device: XC3S400-PQ208                                              //
//  Tool versions: Simulation:    ModelSim SE 6.2a                            //
//                 Synthesis:     XST(ise8.1...sp3)                           //
//                 Place&Routing: ISE8.1...sp3                                //
//                 Others tools:  UltraEdit-32 12.10a                         //
//  Create Date:   2005-9-6 10:59                                             //
//  Description:                                                              //
//                                                                            //
//  LOG:                                                                      //
//       1. Revision 1.0 (Initial version)  2005-9-6 10:59    mail007         //
//                                                                            //
//       2. Revision 1.1  2006-12-27 17:12   alex_yang                        //
//          Updata ISE version from v6.3 to v8.1                              //
//          Modify for VX-SP306                                               //

////////////////////////////////////////////////////////////////////////////////
module sync_gen_50m(
                    clk,
                    rst_n,
                    hsync,
                    vsync,
                    valid,
                    x_cnt,
                    y_cnt
                    );

input           clk;
input           rst_n;
output          hsync;
output          vsync;
output          valid;
output  [9:0]   x_cnt;
output  [9:0]   y_cnt;

reg             hsync;
reg             vsync;
reg             valid;
reg     [9:0]   x_cnt;
reg     [9:0]   y_cnt;

  // ---------------------------------------------------------------------------
  // 两个Always 中可以使用相同的判断条件
  // ---------------------------------------------------------------------------
  always @ ( posedge clk or negedge rst_n )
    if ( !rst_n )
      x_cnt <= 10'd0;
    else if ( x_cnt == 10'd1000 )
      x_cnt <= 10'd0;
    else
      x_cnt <= x_cnt + 1'b1;
          
  always @ ( posedge clk or negedge rst_n )
    if ( !rst_n )
      y_cnt <= 10'd0;
    else if ( y_cnt == 10'd665 )
      y_cnt <= 10'd0;    
    else if ( x_cnt == 10'd1000 )
      y_cnt <= y_cnt + 1'b1;    

  // ---------------------------------------------------------------------------
  // hsync <= x_cnt <= 10'd50;中第一个“<=”为赋值语句,第二个“<=”为比较语句
  // 本代码的操作为:比较后再赋值。
  // ---------------------------------------------------------------------------        
  always @ ( posedge clk or negedge rst_n )
    if ( !rst_n )
      begin
        hsync <= 1'b0;
        vsync <= 1'b0;
      end
    else
      begin
        hsync <= x_cnt <= 10'd50;  //产生hsync信号
        vsync <= y_cnt <= 10'd6;   //产生vsync信号
      end    
  
  always @ ( posedge clk or negedge rst_n )                     
    if ( !rst_n )
      valid <= 1'b0;
    else
      valid <= ( ( x_cnt > 10'd180 ) && ( x_cnt < 10'd980) &&
                 ( y_cnt > 10'd35)   && ( y_cnt < 10'd635) ); 
                      
endmodule 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -