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

Subversion Repositories ram_wb

[/] [ram_wb/] [trunk/] [rtl/] [verilog/] [ram_wb.v] - Blame information for rev 2

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 unneback
 
2
 
3
module RAM_wb ( dat_i, dat_o, adr_i, we_i, sel_i, cyc_i, stb_i, ack_o, cti_i, clk_i, rst_i);
4
 
5
   parameter ram_wb_adr_width = `RAM_WB_ADR_WIDTH;
6
   parameter ram_wb_mem_size  = `RAM_WB_MEM_SIZE;
7
   parameter ram_wb_dat_width = `RAM_WB_DAT_WIDTH;
8
 
9
   // wishbone signals
10
   input [31:0]      dat_i;
11
   output [31:0]     dat_o;
12
   input [ram_wb_adr_width-1:2] adr_i;
13
   input                    we_i;
14
   input [3:0]               sel_i;
15
   input                    cyc_i;
16
   input                    stb_i;
17
   output reg               ack_o;
18
   input [2:0]               cti_i;
19
 
20
   // clock
21
   input                    clk_i;
22
   // async reset
23
   input                    rst_i;
24
 
25
   wire [31:0]     wr_data;
26
 
27
   // mux for data to ram
28
   assign wr_data[31:24] = sel_i[3] ? dat_i[31:24] : dat_o[31:24];
29
   assign wr_data[23:16] = sel_i[2] ? dat_i[23:16] : dat_o[23:16];
30
   assign wr_data[15: 8] = sel_i[1] ? dat_i[15: 8] : dat_o[15: 8];
31
   assign wr_data[ 7: 0] = sel_i[0] ? dat_i[ 7: 0] : dat_o[ 7: 0];
32
 
33
 
34
   //vfifo_dual_port_ram_sc_dw
35
   ram_wb_sc_dw
36
     /* #
37
     (
38
      .DATA_WIDTH(32),
39
      .ADDR_WIDTH(11)
40
      )*/
41
     ram
42
     (
43
      .d_a(wr_data),
44
      .q_a(),
45
      .adr_a(adr_i),
46
      .we_a(we_i & ack_o),
47
      .q_b(dat_o),
48
      .adr_b(adr_i),
49
      .d_b(32'h0),
50
      .we_b(1'b0),
51
      .clk(clk_i)
52
      );
53
 
54
 
55
   // ack_o
56
   always @ (posedge clk_i or posedge rst_i)
57
     if (rst_i)
58
       ack_o <= 1'b0;
59
     else
60
       if (!ack_o)
61
         if (cyc_i & stb_i)
62
           ack_o <= 1'b1;
63
         else
64
           if ((sel_i != 4'b1111) | (ct_i == 3'b000) | (cti_i == 3'b111))
65
             ack_o <= 1'b0;
66
 
67
endmodule
68
 
69
 

powered by: WebSVN 2.1.0

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