码迷,mamicode.com
首页 > 其他好文 > 详细

vga_drive

时间:2017-03-16 22:04:49      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:input   nbsp   mod   val   div   ram   parameter   out   pre   

module    vga_qudong(
        clk,rst_n,
        vga_clk,vga_b,
        vga_g,vga_r,
        vga_blank,vga_sync,
        vga_hs,vga_vs        
);
input                    clk;
input                    rst_n;
output                    vga_clk;
output    wire    [7:0]    vga_b;
output    wire    [7:0]    vga_g;
output    wire    [7:0]    vga_r;
output    wire            vga_blank;
output    wire            vga_sync;
output    wire            vga_hs;
output    wire            vga_vs;

parameter        X_ALL = 11d1056;
parameter        XA = 11d80,XB = 11d160,XC = 11d800,XD = 11d16;
parameter        Y_ALL = 11d625;
parameter        YO = 11d3,YP = 11d21,YQ = 11d600,YR = 11d1;
parameter        rgb = 24he0eeee;

reg        [10:0]            x_cnt;
always @(posedge clk or negedge rst_n)
    if(!rst_n)
        x_cnt <= d0;
    else if(x_cnt == X_ALL)
        x_cnt <= d0;
    else 
        x_cnt <= x_cnt + 1d1;
        
reg        [9:0]            y_cnt;
always    @(posedge clk or negedge rst_n)
    if(!rst_n)
        y_cnt <= d0;
    else if(y_cnt == Y_ALL)
        y_cnt <= d0;
    else if(x_cnt == X_ALL)
        y_cnt <= y_cnt + 1b1;
        

reg                        isvalue;
always @(posedge clk or negedge rst_n)
    if(!rst_n)
        isvalue <= d0;
    else if((x_cnt > XA + XB && x_cnt < XA + XB + XC)&&(y_cnt > YO + YP && y_cnt < YO + YP + YQ))
        isvalue <= 1d1;
    else
        isvalue <= 1d0;
        
    
wire    [10:0]            value_x,value_y;
assign    value_x = isvalue ? x_cnt - XA - XB : d0;
assign    value_y = isvalue ? y_cnt - YO - YP : d0;

reg    [23:0]    vga_s;
always @(posedge clk or negedge rst_n)
    if(!rst_n)
        vga_s <= d0;
    else if(value_x > 500 && isvalue)
        vga_s <= 24h008bff;
    else if(isvalue)
        vga_s <= 24h008b00;  //绿



wire     xs,ys;   
assign xs =(x_cnt <= XA)? 1b0 : 1b1;
assign ys =(y_cnt <= YO)? 1b0 : 1b1;    
        
assign  vga_blank    =    xs;
assign  vga_sync    =    ys;
assign  vga_clk        =    clk;
assign  vga_vs        =    ys;
assign  vga_hs        =    xs;    

assign    vga_r = isvalue ? vga_s[23:16]: 8d0;
assign    vga_g = isvalue ? vga_s[15:8] : 8d0;
assign    vga_b = isvalue ? vga_s[7:0]  : 8d0;

endmodule
        
        
        
        
        
















 

 

vga_drive

标签:input   nbsp   mod   val   div   ram   parameter   out   pre   

原文地址:http://www.cnblogs.com/bixiaopengblog/p/6561540.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!