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

📄 sync_gen_50m.v

📁 基于FPGA的vga实现
💻 V
字号:
////////////////////////////////////////////////////////////////////////
//Company      : 伟杰电子                                             //                  
//Web address  : http://www.weijay.com                                //
//Engineer     : Jaylee                                               //
//QQ           : 54304441                                             //
//Email        : jay_lee2008@163.com                                  //
//实验名称     :VGA字符显示实验                                      //
//功能实现     :通过VGA显示伟杰电子FPGA开发系统                      //               
////////////////////////////////////////////////////////////////////////                                                     
//--------------------------system clk 50MHz--------------------------//
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 + -