FPGA学习之 RAM

Posted 满足没有

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FPGA学习之 RAM相关的知识,希望对你有一定的参考价值。

参考:

FPGA中ROM与RAM相关知识总结

代码部分:

module ram #(parameter RAM_WIDTH = 8 , RAM_DEPTH = 128)(
        clk         ,
        rst         ,

        wr_en       ,
        wr_din      ,
        wr_addr     ,

        rd_en       ,
        rd_addr     ,
        rd_dout
);


//定义一个求2的对数,求位宽
function log2b(input integer data)
begin
    for(log2b = 0;data > 0;log2b = log2b + 1)begin
        data = data >> 1;
    end
end  
endfunction

//端口信号定义 
 input                              clk         ;
 input                              rst         ;
 input                              wr_en       ;
 input  [RAM_WIDTH-1:0]             wr_din      ;
 input  [log2b(RAM_DEPTH)-2:0]      wr_addr     ;
 input                              rd_en       ;
 input  [log2b(RAM_DEPTH)-2:0]      rd_addr     ;
 output reg [RAM_WIDTH-1:0]         rd_dout     ;


//定义内部信号


reg     [RAM_WIDTH-1:0]     mem     [RAM_DEPTH-1:0];
integer i;

always @(posedge clk or negedge rst)begin 
    if(!rst)begin
        for(i=0;i<RAM_DEPTH;i=i+1)
            mem[i] <= 0;
    end 
    else if(wr_en) begin 
            mem[wr_addr] <= wr_din;
    end
end


always @(posedge clk or negedge rst)begin 
    if(!rst)begin
        rd_dout <= 0;
    end 
    else if(rd_en) begin 
        rd_dout <= mem[rd_addr];
    end
end

endmodule

以上是关于FPGA学习之 RAM的主要内容,如果未能解决你的问题,请参考以下文章

FPGA学习之 RAM

FPGA学习之 RAM

FPGA学习之 呼吸灯

FPGA学习之 呼吸灯

FPGA学习之 呼吸灯

第二篇-FPGA学习之RoadMap