求大神帮忙。。FPGA控制VGA 能唤醒屏幕,但是没颜 {MOD}啊 DE1-SOC 的板子

2019-07-15 21:15发布

module vga(clk,hsync,vsync,rgb_r,rgb_g,rgb_b,CLK,VGA_SYNC,VGA_BLANK,TD_DATA,TD_VS,TD_HS,TD_CLK,TD_RESET_N);
     input               TD_VS;
   input        [7:0]  TD_DATA;
   input               TD_HS;
   input               TD_CLK;
   input               clk;
   output              TD_RESET_N;
   output   reg        hsync;
   output   reg        vsync;
   output   wire [7:0]  rgb_r ;
   output   wire [7:0]  rgb_g ;
   output   wire [7:0]  rgb_b ;
   output   reg        CLK;
   output              VGA_SYNC;
   output              VGA_BLANK;
   
   
   reg       [10:0]  x_cnt;
   reg       [10:0]  y_cnt;
   reg               valid;
   wire      [9:0]   xpos;
   wire      [9:0]   ypos;
     wire              a_dis;
   wire              b_dis;
   wire              c_dis;
   wire              d_dis;
     wire              e_rdy;
//  reg               clk_n;
   assign    TD_RESET_N = 1'B1;
   assign    VGA_SYNC   = 1'b1;
   assign    vga_BLANK  = ~((x_cnt<H_BLANK)||(y_cnt<V_BLANK));
   assign    ypos= y_cnt-11'd35;
   assign    xpos= x_cnt-11'd144;
   parameter H_FRONT = 16;
     parameter H_SYNC = 96;
     parameter H_BACK = 48;
     parameter H_ACT = 640;
     parameter H_BLANK = H_FRONT+H_SYNC+H_BACK;
     parameter H_TOTAL = H_FRONT+H_SYNC+H_BACK+H_ACT;
   
     parameter V_FRONT = 11;
     parameter V_SYNC = 2;
     parameter V_BACK = 31;
     parameter V_ACT = 480;
     parameter V_BLANK = V_FRONT+V_SYNC+V_BACK;
     parameter V_TOTAL = V_FRONT+V_SYNC+V_BACK+V_ACT;
   initial
   begin
//  rgb_r = 0;
//  rgb_g = 0;
//  rgb_b = 0;
   hsync = 1'b1;
   vsync = 1'b1;
   x_cnt = 0;
   y_cnt = 0;
   end      
   always @(posedge clk)
   begin
   CLK = ~CLK ;
   end
     always @(posedge CLK)
   begin
   if(x_cnt < H_TOTAL) x_cnt = x_cnt + 1'b1;
   else if(x_cnt == H_TOTAL )x_cnt = 11'd0;
   
   if(x_cnt == H_FRONT-1) hsync <= 1'b0;
   else if (x_cnt == H_FRONT+H_SYNC-1)hsync <= 1'b1;
   end
   always @(posedge hsync)
   begin
   if(y_cnt < V_TOTAL) y_cnt = y_cnt + 1'd1;
   else if(y_cnt == V_TOTAL)   y_cnt = 11'd0;
   
   if(y_cnt == V_FRONT-1) vsync <= 1'b0;
   else if(y_cnt == V_FRONT+V_SYNC-1) vsync <=1'b1;
   end
   always @ ( posedge CLK )
     begin                     
        valid <=    ( ( x_cnt >= 11'd50 ) && ( x_cnt <= 11'd640) && ( y_cnt >= 11'd35)   && ( y_cnt <= 11'd480) );  
     end
   assign rgb_r=valid?8'hff:0;
     assign rgb_g=valid?8'hff:0;
     assign rgb_b=valid?0:8'hff;
   endmodule
   
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。