| | 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 |