www.pudn.com > SRAM_WR.rar > sram_wr.v, change:2010-11-05,size:1735b


module sram_wr(	iSW, 
				iRW, 
				oledi, 
				iclk, 
				oSram_addr, 
				oSram_dq, 
				oSram_be_n, 
				oSram_we_n, 
				oSram_oe_n, 
				oSram_ce_n, 
				oledo	); 
input 	[3:0] 	iSW; 
input  			iRW; 
output 	[3:0] 	oledi; 
input 			iclk; 
inout 	[15:0]  oSram_dq; 
output 	[17:0]  oSram_addr; 
output 	[1:0]   oSram_be_n; 
output  		oSram_we_n, 
				oSram_oe_n, 
				oSram_ce_n; 
output	[3:0]   oledo; 
 
 
reg   [17:0]    oSram_addr   ; 
reg             oSram_we_n;   
reg   [15:0]    Sram_dq_reg;     //定义数据寄存器 
reg   [3:0]  	oledo_reg; 
wire 			clk;             //SRAM clock  
 
 
assign oledi = iSW; 
assign oledo = oledo_reg; 
//CE、OE、UB、LB to low 
assign  oSram_be_n = 2'b00;      
assign  oSram_ce_n = 1'b0;      
assign  oSram_oe_n = 1'b0;  
// write iSW to SRAM 
assign  oSram_dq=Sram_dq_reg ;   //把要写入的值给数据线 
 
 
reg [24:0] count; 
always @ (posedge iclk) 
count=count+1; 
assign clk=count[24]; 
 
 
always @(posedge clk or negedge iRW) 
if(!iRW) 
begin 
oSram_we_n 		 <= 1'b0;      //WE信号拉低,写SRAM 
Sram_dq_reg[3:0] <= iSW;       //把要写入的值给数据寄存器,最低4位是4'h5(或4'b0101), 
                               //所以写入SRAM数据线的最低4位就是:  Sram_dq[3]=0;Sram_dq[2]=1;Sram_dq[1]=0;Sram_dq[0]=1; 
oSram_addr		 <= 18'hFF;    // 给出要写入的地址               
end 
else 
begin    
oSram_addr		<= 18'hFF;  // 给出要读SRAM的地址,即可读SRAM 
oledo_reg		<= oSram_dq[3:0];  //把读出的数据线的最后4位输出到led上     
                     //写入SRAM数据线的最低4位是:  Sram_dq[3]=0;Sram_dq[2]=1;Sram_dq[1]=0;Sram_dq[0]=1; 
                     //所以对应的led就是:oLed[3]=0;oLed[2]=1;oLed[1]=0;oLed[0]=1;  (对应DD4灭、 DD3亮、 DD2灭、 DD1亮) 
end 
endmodule