| 1 | [wiki:Component SocLib Components General Index] |
| 2 | |
| 3 | = !PibusBcu Functional Description = |
| 4 | |
| 5 | This hardware component is a PIBUS controller. |
| 6 | The tree basic functionalities are : |
| 7 | * arbitration between simultaneous initiator requests. |
| 8 | * selection of the adressed target, by decoding the MSB address bits. |
| 9 | * time-out, when the selected target does not complete the transaction. |
| 10 | The main features are the following : |
| 11 | * The default master mechanism is not supported. |
| 12 | *, The supported PIBUS response codes are PI_ACK_RDY, PI_ACK_WAT, and PI_ACK_ERR. |
| 13 | * The arbitration policy between initiators is round-robin. |
| 14 | * This component uses the [wiki:MappingTable mapping table] to build the ROM that decodes the address MSB bits and give the target index used to activate the proper p_sel[i] signal. |
| 15 | * The COUNT_REQ[i] register counts the total number of transactions for initiator i. |
| 16 | * The COUNT_WAIT[i] register counts the total number of wait cycles for initiator i. |
| 17 | |
| 18 | = !PibusBcu CABA Implementation = |
| 19 | |
| 20 | The caba implementation is in |
| 21 | * source:trunk/soclib/systemc/include/caba/interconnect/pibus_bcu.h |
| 22 | * source:trunk/soclib/systemc/src/caba/interconnect/pibus_bcu.cc |
| 23 | |
| 24 | == Template parameters == |
| 25 | |
| 26 | template<typename vci_param> |
| 27 | |
| 28 | == Constructor parameters == |
| 29 | {{{ |
| 30 | VciPiInitiatorWrapper( |
| 31 | sc_module_name name, // Instance Name |
| 32 | const soclib::common::MappingTable &mp, // Mapping Table |
| 33 | size_t nb_master, // Number of initiators |
| 34 | size_t nb-slave, // Number of targets |
| 35 | uint32_t time_out); // Time-out (number of cycles) |
| 36 | }}} |
| 37 | |
| 38 | == Ports == |
| 39 | |
| 40 | * sc_in<bool> '''p_resetn''' : Global system reset |
| 41 | * sc_in<bool> '''p_clk''' : Global system clock |
| 42 | * sc_out<bool> '''*p_gnt''' : Pointer to the grant ports array |
| 43 | * sc_in<bool> '''*p_req''' : Pointer to the request ports array |
| 44 | * sc_out<bool> '''*p_sel''' : Pointer to the select ports array |
| 45 | * sc_in<sc_uint<32> > '''p_a''' : Pibus address |
| 46 | * sc_in<bool> '''lock''' : Pibus lock (used for bursts) |
| 47 | * sc_in<sc_uint<2> > '''p_ack''' : Pibus response code |
| 48 | * sc_out<bool> '''p_tout''' : Pibus Time-out |