OpenCores
URL https://opencores.org/ocsvn/wb2axi4/wb2axi4/trunk

Subversion Repositories wb2axi4

[/] [wb2axi4/] [trunk/] [model/] [sram_model.sv] - Blame information for rev 3

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 3 alzhang
module sram_model (
2
CLK,
3
NCE,   //Wr and Rd Select signal
4
NWRT,
5
NOE,
6
DIN,
7
ADDR,
8
DOUT
9
);
10
parameter MEM_ADDR_W = 10;
11
parameter MEM_DATA_W = 32;
12
localparam MEM_DEPTH = 1<
13
input                   CLK;
14
input                   NCE;
15
input                   NWRT;
16
input                   NOE;
17
input [MEM_ADDR_W-1:0]  ADDR;
18
input [MEM_DATA_W-1:0]  DIN;
19
output [MEM_DATA_W-1:0] DOUT;
20
 
21
reg [MEM_DATA_W-1:0]  r_din;
22
reg [MEM_DATA_W-1:0]  write_data;
23
reg [MEM_DATA_W-1:0]  do_reg;
24
reg [MEM_ADDR_W-1:0]  r_addr;
25
reg                   r_nwrt;
26
reg                   r_nce;
27
 
28
 
29
reg [MEM_DATA_W-1:0]  array[MEM_DEPTH-1:0];
30
 
31
event write, read;
32
 
33
always @(posedge CLK) begin
34
  r_din = DIN;
35
  r_addr = ADDR;
36
  r_nce  = NCE;
37
  r_nwrt = NWRT;
38
  if (!r_nce && !r_nwrt)
39
    ->write;
40
  if (!r_nce &&  r_nwrt)
41
    ->read;
42
end
43
always @(write) begin
44
   write_data = r_din;
45
   array[r_addr] = write_data;
46
end
47
 
48
always @(read) begin
49
  do_reg = array[r_addr];
50
end
51
 
52
wire [MEM_DATA_W-1:0]  BDO;
53
genvar i;
54
generate for (i=0; i
55
            buf (BDO[i], do_reg[i]);
56
            bufif0 (DOUT[i], BDO[i], NOE);
57
         end
58
endgenerate
59
 
60
 
61
endmodule

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.