module apb_sram
#(
parameter DATA_WIDTH=5'd16,
parameter DATA_DEPTH=3'd5,
parameter ADDR_WIDTH=7'd32
)
(
input PCLK,
input PSEL,
input PENABLE,
input PWRITE,
input [DATA_WIDTH-1:0] PWDATA,
input [ADDR_WIDTH-1:0] PADDR,
input PRESETn,
output CEN,
output reg [DATA_WIDTH-1:0] PRDATA
);
integer i;
reg [DATA_WIDTH-1:0] SRAM [DATA_DEPTH-1:0];//二维数组定义
assign CEN=PSEL&&PENABLE;//片??信?
always@(posedge PCLK or negedge PRESETn)
begin
if(!PRESETn)
begin //SRAN复位,内部清?
for(i=0;i<DATA_DEPTH;i=i+1)
begin
SRAM [i]<=16'b 0000_0000_0000_0000;
end
PRDATA<=0;
end
else
begin //非复?
if(CEN==1&&PWRITE==1) //SRAM写操?
begin
SRAM [PADDR]<=PWDATA;
end
else if(CEN==1&&PWRITE==0) //SRAM读操?
begin
PRDATA<=SRAM[PADDR];
end
else
begin
PRDATA<=PRDATA;
end
end
end
endmodule
<
SOC设计之APB接口的简易SRAM
最新推荐文章于 2024-07-20 22:31:46 发布
本文探讨了系统级芯片(SOC)设计中APB(Advanced Peripheral Bus)接口的简易静态随机存取内存(SRAM)实现。通过分析APB协议,详细介绍了如何将SRAM与APB接口相结合,实现数据的读写操作。示例中展示了写4个数据项后,进行读取2个数据的波形图,以直观展示APB接口SRAM的工作流程。
摘要由CSDN通过智能技术生成