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