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

Subversion Repositories oops

[/] [oops/] [trunk/] [rtl/] [dp_sram.v] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 smjoshua
/*
2
  Josh Smith
3
 
4
  File: dp_sram.v
5
  Description: Module for SRAM slice.  This is written
6
  as a generic dual-port SRAM, so should be inferred as SRAM by
7
  tool.
8
*/
9
 
10
`include "ooops_defs.v"
11
 
12
module dp_sram
13
  #(parameter DW      = `DATA_SZ,
14
    parameter IW      = `TAG_SZ,
15
    parameter ENTRIES = (1 << IW)
16
   )
17
  (
18
  input wire            clk,
19
 
20
  // Port A
21
  input wire  [IW-1:0]  a_addr,
22
  output wire [DW-1:0]  a_dout,
23
 
24
  // Port B
25
  input wire  [IW-1:0]  b_addr,
26
  input wire            b_wren,
27
  input wire  [DW-1:0]  b_din
28
  );
29
 
30
  reg [DW-1:0]  rf_data [ENTRIES-1:0];
31
  reg [IW-1:0]  a_addr_q;
32
  reg [IW-1:0]  b_addr_q;
33
 
34
  // Port A
35
  always @(posedge clk) begin
36
    a_addr_q <= `SD a_addr;
37
  end
38
  assign a_dout = rf_data[a_addr_q];
39
 
40
  // Port B
41
  always @(posedge clk) begin
42
    if (b_wren) begin
43
      rf_data[b_addr] <= `SD b_din;
44
    end
45
  end
46
endmodule
47
 

powered by: WebSVN 2.1.0

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