因为SRAM的代码不是PPU需要关心的,因此仿真模型直接由项目提供。本次使用到的SRAM为真双读写SRAM,即两组接口均可进行独立的读写操作。对于写操作,数据在使能的下一拍写入sram中;对于读操作,数据在使能的下一拍读出。
仿真所使用的代码如下:
odule sram (
input sram_clk,
input SRAM_CS_A_N, //双端口,端口A,片选读写地址,写(进)读(出)信号
input SRAM_WE_A_N,
input [9:0]SRAM_ADDR_A,
input [23:0]SRAM_WDATA_A,
output reg [23:0]SRAM_RDATA_A,
input SRAM_CS_B_N, //双端口,端口B
input SRAM_WE_B_N,
input [9:0]SRAM_ADDR_B,
input [23:0]SRAM_WDATA_B,
output reg [23:0]SRAM_RDATA_B
);
reg[23:0] Mem[1023:0];
always@(posedge sram_clk)
if(!SRAM_CS_A_N & !SRAM_WE_A_N)
Mem[SRAM_ADDR_A] <= SRAM_WDATA_A;
always@(posedge sram_clk)
if(!SRAM_CS_A_N & SRAM_WE_A_N)
SRAM_RDATA_A <= Mem[SRAM_ADDR_A];
always@(posedge sram_clk)
if(!SRAM_CS_B_N & !SRAM_WE_B_N)
Mem[SRAM_ADDR_B] <= SRAM_WDATA_B;
always@(posedge sram_clk)
if(!SRAM_CS_B_N & SRAM_WE_B_N)
SRAM_RDATA_B <= Mem[SRAM_ADDR_B];
endmodule