FPGA学习之 RAM
Posted 满足没有
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FPGA学习之 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的主要内容,如果未能解决你的问题,请参考以下文章