zoukankan      html  css  js  c++  java
  • vga_drive

    
    
    module    vga_qudong(
            clk,rst_n,
            vga_clk,vga_b,
            vga_g,vga_r,
            vga_blank,vga_sync,
            vga_hs,vga_vs,
            value_x,value_y,
            rgb
    );
    input                    clk;
    input                    rst_n;
    input            [23:0]    rgb;
    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;
    output    reg        [10:0]    value_x;
    output    reg        [10:0]    value_y;
    
    parameter        X_ALL = 11'd1056;
    parameter        XA = 11'd80,XB = 11'd160,XC = 11'd800,XD = 11'd16;
    parameter        Y_ALL = 11'd625;
    parameter        YO = 11'd3,YP = 11'd21,YQ = 11'd600,YR = 11'd1;
    
    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 + 1'd1;
            
    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 + 1'b1;
            
    
    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 <= 1'd1;
        else
            isvalue <= 1'd0;
            
    always @(posedge clk or negedge rst_n)
        if(!rst_n)
            value_x <= 'd0;
        else if(isvalue)
            value_x <= x_cnt - XA - XB;
        else
            value_x <= 'd0;
    
    always @(posedge clk or negedge rst_n)
        if(!rst_n)
            value_y <= 'd0;
        else if(isvalue)
            value_y <= y_cnt - YO - YP;
        else
            value_y <= 'd0;        
    
    wire     xs,ys;   
    assign xs =(x_cnt <= XA)? 1'b0 : 1'b1;
    assign ys =(y_cnt <= YO)? 1'b0 : 1'b1;    
            
    assign  vga_blank    =    xs;
    assign  vga_sync    =    ys;
    assign  vga_clk        =    clk;
    assign  vga_vs        =    ys;
    assign  vga_hs        =    xs;    
    
    assign    vga_r = isvalue ? rgb[23:16]: 8'd0;
    assign    vga_g = isvalue ? rgb[15:8] : 8'd0;
    assign    vga_b = isvalue ? rgb[7:0]  : 8'd0;
    
    endmodule
            
            
            
            
            
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
     
    
    
    
    
    
    ***************************************************************
    module    vga_control(
            clk,rst_n,
            value_x,value_y,
            rgb
    );
    input                clk;
    input                rst_n;
    input        [10:0]    value_x;
    input        [10:0]    value_y;
    output    reg    [23:0]    rgb;
    
    reg            [7:0]    addr;
    wire        [7:0]    sin_data;
    
    rom_fft    rom_fft_inst (
        .address ( addr ),
        .clock ( clk ),
        .q ( sin_data )
        );
        
    /**********display*************/
    reg                    is_ready;
    always @(posedge clk or negedge rst_n)
        if(!rst_n)begin
            addr <= 'd0;
            is_ready <= 'd0;
        end
        else if((value_x >= 0 && value_x < 256)&&(value_y >= 0 && value_y < 256))begin
            addr <= value_x;
            is_ready <= 1'd1;
        end
        else    
            is_ready <= 'd0;
    always @(posedge clk or negedge rst_n)
        if(!rst_n)
            rgb <= 'd0;
        else if(is_ready && value_y == sin_data)
            rgb <= 24'hFF0000;
        else 
            rgb <= 24'hBBFFFF;
            
    endmodule
    
        ***********************************************************
    module    pro_fft(
            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;
    wire    [10:0]    value_x;
    wire    [10:0]    value_y;
    wire    [23:0]    rgb;
    vga_qudong        U1(
            .clk(clk),
            .rst_n(rst_n),
            .vga_clk(vga_clk),
            .vga_b(vga_b),
            .vga_g(vga_g),
            .vga_r(vga_r),
            .vga_blank(vga_blank),
            .vga_sync(vga_sync),
            .vga_hs(vga_hs),
            .vga_vs(vga_vs),
            .rgb(rgb),
            .value_x(value_x),
            .value_y(value_y)
    );
    
    vga_control        U2(
            .clk(clk),
            .rst_n(rst_n),
            .value_x(value_x),
            .value_y(value_y),
            .rgb(rgb)
    );
    
    
    
    endmodule
    
    
    
    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 = 11'd1056;
    parameter        XA = 11'd80,XB = 11'd160,XC = 11'd800,XD = 11'd16;
    parameter        Y_ALL = 11'd625;
    parameter        YO = 11'd3,YP = 11'd21,YQ = 11'd600,YR = 11'd1;
    parameter        rgb = 24'he0eeee;
    
    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 + 1'd1;
            
    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 + 1'b1;
            
    
    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 <= 1'd1;
        else
            isvalue <= 1'd0;
            
        
    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 <= 24'h008bff;
        else if(isvalue)
            vga_s <= 24'h008b00;  //绿
    
    
    
    wire     xs,ys;   
    assign xs =(x_cnt <= XA)? 1'b0 : 1'b1;
    assign ys =(y_cnt <= YO)? 1'b0 : 1'b1;    
            
    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]: 8'd0;
    assign    vga_g = isvalue ? vga_s[15:8] : 8'd0;
    assign    vga_b = isvalue ? vga_s[7:0]  : 8'd0;
    
    endmodule
            
            
            
            
            
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
     
  • 相关阅读:
    PostgreSQL在Update时使用Substring函数截取字符串并且加上CASE WHEN THEN条件判断
    清理Visual Studio 2017的项目历史记录或手工修改Visual Studio 2017的注册表设置
    基于ABP模块组件与依赖注入组件的项目插件开发
    jenkins git can't work ERROR: Timeout after 10 minutes ERROR: Error fetching remote repo 'origin'
    SV randomize
    SV class
    SV coverage
    uvm设计分析——reg
    shell bash-shell
    scrapy的安装
  • 原文地址:https://www.cnblogs.com/bixiaopengblog/p/6561540.html
Copyright © 2011-2022 走看看