sram分同步和异步两种,同步运行受时钟控制速度比异步sram快,异步sram没有时钟线,数据、地址、控制信号只要遵循一定的时序就可以运行。
下面是一款sram的结构框图:
由于器件引脚有限,所以厂商将数据的输入和输出做到了一起,在verilog内部实现过程中没必要这么做,用inout双向端口反而会引起一些麻烦
module sram(cs,read,write,data_in,data_out,add);
input cs,read,write;
input [3:0]add;
input [7:0]data_in;
output [7:0]data_out;
reg[7:0]data_out;
reg[7:0]sram[15:0];
always@(cs or read or write or add or data_in)
begin
if(write==1'b1)
begin
if((cs==1'b1)&&(read==1'b0))
sram[add]<=data_in;//写数据
end
else if(read==1'b1)
begin
if((cs==1'b1)&&(write==1'b0))
data_out<=sram[add];//读数据
end
end
endmodule