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

Subversion Repositories srdydrdy_lib

[/] [srdydrdy_lib/] [trunk/] [examples/] [bridge/] [rtl/] [packet_buffer.v] - Rev 31

Compare with Previous | Blame | View Log

module packet_buffer
  (
   input          clk,
   input          reset,
 
   input [3:0]    pbra_srdy,
   output [3:0]   pbra_drdy,
   input [`PBR_SZ-1:0] pbra_data_0,            // From p0 of port_macro.v
   input [`PBR_SZ-1:0] pbra_data_1,            // From p1 of port_macro.v
   input [`PBR_SZ-1:0] pbra_data_2,            // From p2 of port_macro.v
   input [`PBR_SZ-1:0] pbra_data_3,            // From p3 of port_macro.v
   input [`PBR_SZ-1:0] pbrd_data_0,            // From p0 of port_macro.v
   input [`PBR_SZ-1:0] pbrd_data_1,            // From p1 of port_macro.v
   input [`PBR_SZ-1:0] pbrd_data_2,            // From p2 of port_macro.v
   input [`PBR_SZ-1:0] pbrd_data_3,            // From p3 of port_macro.v
   input [3:0]    pbrd_srdy,
   output [3:0]   pbrd_drdy,
 
   output [3:0]   pbrr_srdy,
   input [3:0]    pbrr_drdy,
   output [`PFW_SZ-1:0]  pbrr_data
   );
 
  wire [`PBR_SZ-1:0]     pbi_data;
  wire [`NUM_PORTS*2-1:0] pbi_grant;
  wire                    pbi_srdy;
  wire                    pbi_drdy;
 
  wire                    pbo_srdy;
  wire                    pbo_drdy;
  wire [`PORT_ASZ-1:0]    pbo_portnum;
  wire [`PFW_SZ-1:0]      pbo_data;
  wire [`NUM_PORTS-1:0]   pbo_portsel;
 
  assign pbo_portsel = 1 << pbo_portnum;
 
  sd_rrmux #(
              // Parameters
              .width                    (`PBR_SZ),
              .inputs                   (`NUM_PORTS*2),
              .mode                     (0),
              .fast_arb                 (1)) fib_arb
    (
     // Outputs
     .p_data                            (pbi_data[`PBR_SZ-1:0]),
     .p_grant                           (pbi_grant[(`NUM_PORTS*2)-1:0]),
     .p_srdy                            (pbi_srdy),
     // Inputs
     .clk                               (clk),
     .reset                             (reset),
 
     .c_data   ({pbra_data_3,pbra_data_2,pbra_data_1,pbra_data_0,
                 pbrd_data_3,pbrd_data_2,pbrd_data_1,pbrd_data_0}),
     .c_srdy                            ({pbra_srdy,pbrd_srdy}),
     .c_drdy                            ({pbra_drdy,pbrd_drdy}),
 
     .c_rearb                           (1'b1),
     .p_drdy                            (pbi_drdy));
 
  sd_scoreboard #(
                  // Parameters
                  .width                (`PFW_SZ),
                  .items                (`PB_DEPTH),
                  .use_txid             (1),
                  .use_mask             (0),
                  .txid_sz              (`PORT_ASZ),
                  .asz                  (`PB_ASZ)) pbmem
    (
     // Outputs
     .c_drdy                            (pbi_drdy),
     .p_srdy                            (pbo_srdy),
     .p_txid                            (pbo_portnum),
     .p_data                            (pbo_data),
     // Inputs
     .clk                               (clk),
     .reset                             (reset),
     .c_srdy                            (pbi_srdy),
     .c_req_type                        (pbi_data[`PBR_WRITE]),
     .c_txid                            (pbi_data[`PBR_PORT]),
     .c_mask                            ({`PFW_SZ{1'b1}}),
     .c_data                            (pbi_data[`PBR_DATA]),
     .c_itemid                          (pbi_data[`PBR_ADDR]),
     .p_drdy                            (pbo_drdy));
 
  sd_mirror #(.mirror (`NUM_PORTS), .width(`PFW_SZ)) pbo_mirror
    (
     // Outputs
     .c_drdy                            (pbo_drdy),
     .p_srdy                            (pbrr_srdy),
     .p_data                            (pbrr_data),
     // Inputs
     .clk                               (clk),
     .reset                             (reset),
     .c_srdy                            (pbo_srdy),
     .c_data                            (pbo_data),
     .c_dst_vld                         (pbo_portsel),
     .p_drdy                            (pbrr_drdy));
 
endmodule // packet_buffer
// Local Variables:
// verilog-library-directories:("." "../../../rtl/verilog/closure" "../../../rtl/verilog/buffers" "../../../rtl/verilog/utility" "../../../rtl/verilog/forks")
// End:  
 

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

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