zoukankan      html  css  js  c++  java
  • 【iCore1S 双核心板_FPGA】例程十二:基于单口RAM的ARM+FPGA数据存取实验

    实验现象:

    核心代码:

    module single_port_ram(
                                        input CLK_12M,
                                        input WR,
                                        input RD,
                                        input CS0,
                                        inout [15:0]DB,
                                        input [24:16]A,
                                        output FPGA_LEDR,
                                        output FPGA_LEDG,
                                        output FPGA_LEDB
                                    );
    //----------------------------pll-------------------------------//
        /*实例化MY_PLL模块,输出48M时钟*/
        my_pll    u1(
                        .inclk0(CLK_12M),
                        .c0(PLL_48M)
                        );
    
    //---------------------------rst_n----------------------------//                            
        /*复位信号,10个周期后rst_n置1*/    
        reg [3:0]cnt_rst=4'd0;
        reg rst_n;
        
        always@(posedge CLK_12M)
            begin
                if(cnt_rst==4'd10)
                    begin
                        rst_n <= 1'd1;
                        cnt_rst <= 4'd10;
                    end
                else     cnt_rst <= cnt_rst + 1'd1;
            end
            
    //-------------------------fsmc-----------------------------//
        wire rd =(CS0|RD);//    提取读信号
        wire wr =(CS0|WR);//    提取写信号
        reg wr_clk1,wr_clk2;
        
        always@(posedge PLL_48M or negedge rst_n)
            begin
                if(!rst_n)
                    begin
                        wr_clk1 <= 1'd1;
                        wr_clk2 <= 1'd1;
                    end 
                else {wr_clk2,wr_clk1} <= {wr_clk1,wr};
            end 
        
        wire clk = (!wr_clk2|!rd);  //将读写信号转化为时钟信号
        assign DB = !rd?DB_OUT :16'hzzzz;
        
    //---------------------------ram-------------------------------//
        /*实例化ram块*/
        wire [15:0]DB_OUT;
        
        my_ram u2(
                        .address(A),
                        .clock(clk),
                        .data(DB),
                        .wren(!wr),
                        .rden(!rd),
                        .q(DB_OUT)
                    );
                    
    //--------------------------led----------------------------//    
    
        assign FPGA_LEDR = 1'd1;
        assign FPGA_LEDG = 1'd0;
        assign FPGA_LEDB = 1'd1;
        
    //-----------------------endmodule-------------------------//
    endmodule     

    实验方法及指导书:

    链接:http://pan.baidu.com/s/1jIBXsSu 密码:38q7

  • 相关阅读:
    二进制编译http
    http服务
    FTP服务
    DAY01
    直流电机调速作业
    机械大楼电梯控制项目
    仿真作业
    第六周作业
    第五周作业
    第四周仿真作业
  • 原文地址:https://www.cnblogs.com/xiaomagee/p/7513213.html
Copyright © 2011-2022 走看看