• ad_封装_ads828


    module    ad_ctrl(
            clk,rst_n,ad_clk,
            ad_data,value_x,value_y,q_sig,wren,r_addr,w_addr
    );
    
    input                clk;    
    input                rst_n;
    input        [10:0]    value_x;
    input        [10:0]    value_y;
    output                ad_clk;
    input        [9:0]    ad_data;
    output                wren;
    output        [7:0]    q_sig;
    output    reg    [8:0]    r_addr;
    output    reg    [8:0]    w_addr;
    
    assign        ad_clk = ~clk;
    
    
    
    
    wire        [7:0]    data_sig;
    assign        data_sig = ad_data[9:2];
    ram_ad    ram_ad_inst (
        .clock ( clk ),
        .data ( data_sig ),
        .rdaddress ( r_addr ),
        .wraddress ( w_addr ),
        .wren ( wren ),
        .q ( q_sig )
        );
    
    //read ram
    always @(posedge clk or negedge rst_n)
        if(!rst_n)
            r_addr <= 'd0;
        else if((value_x >= 0 && value_x < 512) && (value_y >= 0 && value_y <256))
            r_addr <= value_x[8:0];
        else 
            r_addr <= 'd0;
    //write ram
    reg        [1:0]    state;
    always @(posedge clk or negedge rst_n)
        if(!rst_n)begin
            w_addr <= 'd0;
            state <= 'd0;
        end
        else if((value_x >= 0 && value_x < 512) && (value_y >= 256 && value_y <260))begin
            case(state)
            2'd0:begin
                if(data_sig > 128)
                    state <= 1;
                else
                    state <= 'd0;
            end
            2'd1:begin
                if(w_addr > 510)begin
                    state <= 'd0;
                    w_addr <= 'd0;
                end
                else begin
                    w_addr <= w_addr + 1'd1;
                    state <= 2'd1;
                end
            end
            default:state <= 'd0;
            endcase
        end
        else
            w_addr <= 'd0;
            
    //wren
    reg        wren_r;
    always @(posedge clk or negedge rst_n)
        if(!rst_n)
            wren_r <= 1'd0;
        else if((value_x >= 0 && value_x < 512) && (value_y >= 0 && value_y <256))
            wren_r <= 1'd0;
        else if((value_x >= 0 && value_x < 512) && (value_y >= 256 && value_y <260))
            wren_r <= 1'd1;
        else
            wren_r <= 1'd0;
    assign    wren = wren_r;
    endmodule

    set_location_assignment PIN_AF14  -to clk

    set_location_assignment PIN_AA14 -to rst_n
    set_location_assignment PIN_AF26 -to ad_data[0] 
    set_location_assignment PIN_AG25 -to ad_data[1]
                                 
    set_location_assignment PIN_AE24 -to ad_data[2] 
    set_location_assignment PIN_AF25 -to ad_data[3]
                              
    set_location_assignment PIN_AD24 -to ad_data[4] 
    set_location_assignment PIN_AE23 -to ad_data[5]
                            
    set_location_assignment PIN_AB21 -to ad_data[6]
    set_location_assignment PIN_AC23 -to ad_data[7]
                                
    set_location_assignment PIN_AB17 -to ad_data[8]
    set_location_assignment PIN_AA21 -to ad_data[9]

    set_location_assignment PIN_AG26 -to ad_clk
    set_location_assignment PIN_B13 -to vga_b[0]
    set_location_assignment PIN_G13 -to vga_b[1]
    set_location_assignment PIN_H13 -to vga_b[2]
    set_location_assignment PIN_F14 -to vga_b[3]
    set_location_assignment PIN_H14 -to vga_b[4]
    set_location_assignment PIN_F15 -to vga_b[5]
    set_location_assignment PIN_G15 -to vga_b[6]
    set_location_assignment PIN_J14 -to vga_b[7]
    set_location_assignment PIN_F10 -to vga_blank
    set_location_assignment PIN_A11 -to vga_clk
    set_location_assignment PIN_J9  -to vga_g[0]
    set_location_assignment PIN_J10 -to vga_g[1]
    set_location_assignment PIN_H12 -to vga_g[2]
    set_location_assignment PIN_G10 -to vga_g[3]
    set_location_assignment PIN_G11 -to vga_g[4]
    set_location_assignment PIN_G12 -to vga_g[5]
    set_location_assignment PIN_F11 -to vga_g[6]
    set_location_assignment PIN_E11 -to vga_g[7]
    set_location_assignment PIN_B11 -to vga_hs
    set_location_assignment PIN_A13 -to vga_r[0]
    set_location_assignment PIN_C13 -to vga_r[1]
    set_location_assignment PIN_E13 -to vga_r[2]
    set_location_assignment PIN_B12 -to vga_r[3]
    set_location_assignment PIN_C12 -to vga_r[4]
    set_location_assignment PIN_D12 -to vga_r[5]
    set_location_assignment PIN_E12 -to vga_r[6]
    set_location_assignment PIN_F13 -to vga_r[7]
    set_location_assignment PIN_C10 -to vga_sync
    set_location_assignment PIN_D11 -to vga_vs

  • 相关阅读:
    BERT安装与使用
    32(2).层次聚类---BIRCH
    32(1).层次聚类---AGNES
    31(2).密度聚类---Mean-Shift算法
    31(1).密度聚类---DBSCAN算法
    linux环境变量
    Linux 中“一切都是文件”概念和相应的文件类型
    Linux 服务器如何禁止 ping 以及开启 ping
    如何用3个月零基础入门机器学习?
    28款GitHub最流行的开源机器学习项目
  • 原文地址:https://www.cnblogs.com/bixiaopengblog/p/6617045.html
Copyright © 2020-2023  润新知