zoukankan      html  css  js  c++  java
  • a

    // ********************************************************************* //
    // Filename: vga_controller.v                                            //
    // Projects: vga generator pattern                                       //
    //           without  external clock                                     //
    // Function:                                       //
    //                                              //           
    // Author  : Leo                                            //
    // Date    : 2011-12-30                                                  //
    // Version : 1.0                                                         //
    // Company :                                                             //
    // ********************************************************************* //

    module vga_controller(
    // input
    input vga_clk,rst_n,
    input i_RGB_EN,iRed,iGreen,iBlue,
    // output
    output reg vga_hs,vga_vs,vga_blank_n,vga_r,vga_b,vga_g
    );

    /***************************parameter define****************************/
    `define VGA_640_480_60FPS_25MHz
    //`define VGA_800_600_60FPS_50MHz
    //`define VGA_1024_768_60FPS_65MHz

    `ifdef VGA_640_480_60FPS_25MHz
    // Horizontal & Vertical parameter
    parameter H_SYNC = 96;
    parameter H_BACK = 48;
    parameter H_ACT  = 640;
    parameter H_FRONT = 16;
    parameter H_TOTAL = 800;
    parameter V_SYNC = 2;
    parameter V_BACK =48;
    parameter V_ACT = 480;
    parameter V_FRONT = 10;
    parameter V_TOTAL = 525;
    // Start Offset
    parameter X_Start = H_SYNC+H_BACK;
    parameter Y_Start = V_SYNC+V_BACK;
    `endif

    `ifdef VGA_800_600_60FPS_25MHz
    //Horizontal & Vertical Parameter
    parameter H_SYNC = 120;
    parameter H_BACK = 64;
    parameter H_ACT  = 800;
    parameter H_FRONT= 56;
    parameter H_TOTAL= 1040;
    parameter V_SYNC = 6;
    parameter V_BACK = 23;
    parameter V_ACT  = 600;
    parameter V_FRONT= 37;
    parameter V_TOTAL= 666; 
    //Start Offset
    parameter X_Start=H_SYNC+H_BACK+H_FRONT;
    parameter Y_Start= V_SYNC+V_BACK+V_FRONT;
    `endif
     
    `ifdef VGA_1024_768_60FPS_65MHz
    //Horizontal & Vertical Parameter
    parameter H_SYNC = 136;
    parameter H_BACK = 160;
    parameter H_ACT  = 1024;
    parameter H_FRONT= 24;
    parameter H_TOTAL= 1344;
    parameter V_SYNC = 6;
    parameter V_BACK = 29;
    parameter V_ACT  = 768;
    parameter V_FRONT= 3;
    parameter V_TOTAL= 806; 
    //Start Offset
    parameter X_Start=H_SYNC+H_BACK+H_FRONT;
    parameter Y_Start= V_SYNC+V_BACK+V_FRONT;
    `endif
    /*****************************video_sync_generator***************************/
    reg[10:0] h_cnt;
    reg[10:0] v_cnt;
    always@(posedge vga_clk or negedge rst_n)
     begin
      if(!rst_n)
       begin
        h_cnt <= 11'd0;
        v_cnt <= 11'd0;
       end
      else
       begin
        if(h_cnt==H_TOTAL-1)
         begin
          h_cnt <= 11'd0;
          if(v_cnt==V_TOTAL-1)
           v_cnt <= 11'd0;
          else
           v_cnt <= v_cnt+11'd1;
         end
        else
         h_cnt <= h_cnt+11'd1;
       end
     end
     
    wire cHD,cVD,hori_valid,vert_valid,cDEN;
    assign cHD = (h_cnt<H_SYNC)?1'b0:1'b1;
    assign cVD = (v_cnt<V_SYNC)?1'b0:1'b1;
    assign hori_valid = (h_cnt<(H_TOTAL-H_FRONT)&& h_cnt>=H_BACK)?1'b1:1'b0;
    assign vert_valid = (v_cnt<(V_TOTAL-V_FRONT)&& v_cnt>=V_BACK)?1'b1:1'b0;
    assign cDEN = hori_valid && vert_valid;

    always@(negedge vga_clk)
     begin
      vga_hs <= cHD;
      vga_vs <= cVD;
      vga_blank_n <= cDEN;
     end
     
    /*************************video_disp_generator******************************/
    reg[10:0] vga_xpos;
    reg[10:0] vga_ypos;
    reg valid;
    wire[21:0] vga_result = vga_xpos*vga_ypos;
    always@(posedge vga_clk or negedge rst_n)
     begin
      if(!rst_n)
       begin
        vga_r <= 0;
        vga_g <= 0;
        vga_b <= 0;
       end
      else if(valid)
       {vga_r,vga_g,vga_b} <= vga_result;
      else
       {vga_r,vga_g,vga_b} <= 24'h000000;
     end

    endmodule
     

  • 相关阅读:
    Cookie&Session会话跟踪技术
    JS前端数据多条件筛选(商品搜索)
    vue数据传递的特殊实现技巧
    Vue2.x directive自定义指令
    vue 自定义组件使用v-model
    Array.prototype.slice.call(arguments)探究
    webstorm快捷键汇总
    表单添加缩略图及截图js代码
    CSS水平垂直居中的几种方法
    下载页面判断客户端
  • 原文地址:https://www.cnblogs.com/spartan/p/2307664.html
Copyright © 2011-2022 走看看