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

Subversion Repositories srdydrdy_lib

[/] [srdydrdy_lib/] [trunk/] [examples/] [bridge/] [rtl/] [packet_buffer.v] - Blame information for rev 31

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 31 ghutchis
module packet_buffer
2
  (
3
   input          clk,
4
   input          reset,
5
 
6
   input [3:0]    pbra_srdy,
7
   output [3:0]   pbra_drdy,
8
   input [`PBR_SZ-1:0] pbra_data_0,            // From p0 of port_macro.v
9
   input [`PBR_SZ-1:0] pbra_data_1,            // From p1 of port_macro.v
10
   input [`PBR_SZ-1:0] pbra_data_2,            // From p2 of port_macro.v
11
   input [`PBR_SZ-1:0] pbra_data_3,            // From p3 of port_macro.v
12
   input [`PBR_SZ-1:0] pbrd_data_0,            // From p0 of port_macro.v
13
   input [`PBR_SZ-1:0] pbrd_data_1,            // From p1 of port_macro.v
14
   input [`PBR_SZ-1:0] pbrd_data_2,            // From p2 of port_macro.v
15
   input [`PBR_SZ-1:0] pbrd_data_3,            // From p3 of port_macro.v
16
   input [3:0]    pbrd_srdy,
17
   output [3:0]   pbrd_drdy,
18
 
19
   output [3:0]   pbrr_srdy,
20
   input [3:0]    pbrr_drdy,
21
   output [`PFW_SZ-1:0]  pbrr_data
22
   );
23
 
24
  wire [`PBR_SZ-1:0]     pbi_data;
25
  wire [`NUM_PORTS*2-1:0] pbi_grant;
26
  wire                    pbi_srdy;
27
  wire                    pbi_drdy;
28
 
29
  wire                    pbo_srdy;
30
  wire                    pbo_drdy;
31
  wire [`PORT_ASZ-1:0]    pbo_portnum;
32
  wire [`PFW_SZ-1:0]      pbo_data;
33
  wire [`NUM_PORTS-1:0]   pbo_portsel;
34
 
35
  assign pbo_portsel = 1 << pbo_portnum;
36
 
37
  sd_rrmux #(
38
              // Parameters
39
              .width                    (`PBR_SZ),
40
              .inputs                   (`NUM_PORTS*2),
41
              .mode                     (0),
42
              .fast_arb                 (1)) fib_arb
43
    (
44
     // Outputs
45
     .p_data                            (pbi_data[`PBR_SZ-1:0]),
46
     .p_grant                           (pbi_grant[(`NUM_PORTS*2)-1:0]),
47
     .p_srdy                            (pbi_srdy),
48
     // Inputs
49
     .clk                               (clk),
50
     .reset                             (reset),
51
 
52
     .c_data   ({pbra_data_3,pbra_data_2,pbra_data_1,pbra_data_0,
53
                 pbrd_data_3,pbrd_data_2,pbrd_data_1,pbrd_data_0}),
54
     .c_srdy                            ({pbra_srdy,pbrd_srdy}),
55
     .c_drdy                            ({pbra_drdy,pbrd_drdy}),
56
 
57
     .c_rearb                           (1'b1),
58
     .p_drdy                            (pbi_drdy));
59
 
60
  sd_scoreboard #(
61
                  // Parameters
62
                  .width                (`PFW_SZ),
63
                  .items                (`PB_DEPTH),
64
                  .use_txid             (1),
65
                  .use_mask             (0),
66
                  .txid_sz              (`PORT_ASZ),
67
                  .asz                  (`PB_ASZ)) pbmem
68
    (
69
     // Outputs
70
     .c_drdy                            (pbi_drdy),
71
     .p_srdy                            (pbo_srdy),
72
     .p_txid                            (pbo_portnum),
73
     .p_data                            (pbo_data),
74
     // Inputs
75
     .clk                               (clk),
76
     .reset                             (reset),
77
     .c_srdy                            (pbi_srdy),
78
     .c_req_type                        (pbi_data[`PBR_WRITE]),
79
     .c_txid                            (pbi_data[`PBR_PORT]),
80
     .c_mask                            ({`PFW_SZ{1'b1}}),
81
     .c_data                            (pbi_data[`PBR_DATA]),
82
     .c_itemid                          (pbi_data[`PBR_ADDR]),
83
     .p_drdy                            (pbo_drdy));
84
 
85
  sd_mirror #(.mirror (`NUM_PORTS), .width(`PFW_SZ)) pbo_mirror
86
    (
87
     // Outputs
88
     .c_drdy                            (pbo_drdy),
89
     .p_srdy                            (pbrr_srdy),
90
     .p_data                            (pbrr_data),
91
     // Inputs
92
     .clk                               (clk),
93
     .reset                             (reset),
94
     .c_srdy                            (pbo_srdy),
95
     .c_data                            (pbo_data),
96
     .c_dst_vld                         (pbo_portsel),
97
     .p_drdy                            (pbrr_drdy));
98
 
99
endmodule // packet_buffer
100
// Local Variables:
101
// verilog-library-directories:("." "../../../rtl/verilog/closure" "../../../rtl/verilog/buffers" "../../../rtl/verilog/utility" "../../../rtl/verilog/forks")
102
// End:  

powered by: WebSVN 2.1.0

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