[wiki:Component SocLib Components General Index] = !PibusBcu = == 1) Functional Description == This hardware component is a PIBUS controller. It can be used in conjunction with the [wiki:Component/VciPiInitiatorWrapper VciPiInitiatorWrapper] and the [wiki:Component/VciPiTargetWrapper VciPiInitiatorWrapper] to build a system using a PIBus interconnect. The tree basic functionalities ot the BCU are : * arbitration between simultaneous initiator requests. * selection of the adressed target, by decoding the MSB address bits. * time-out, when the selected target does not complete the transaction. The main features are the following : * The default master mechanism is not supported. * The supported PIBUS response codes are PI_ACK_RDY, PI_ACK_WAT, and PI_ACK_ERR. * The arbitration policy between initiators is round-robin. * This component uses the [wiki:Component/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. * The COUNT_REQ[i] register counts the total number of transactions for initiator i. * The COUNT_WAIT[i] register counts the total number of wait cycles for initiator i. == 2) Component definition & usage == source:trunk/soclib/soclib/module/network_component/pibus_bcu/caba/metadata/pibus_bcu.sd {{{ Uses( 'pibus_bcu' ) }}} == 3) CABA Implementation == === CABA sources === * interface : source:trunk/soclib/soclib/module/network_component/pibus_bcu/caba/source/include/pibus_bcu.h * implementation : source:trunk/soclib/soclib/module/network_component/pibus_bcu/caba/source/src/pibus_bcu.cpp === CABA Constructor parameters === {{{ PiBcu( sc_module_name name, // Instance Name const soclib::common::MappingTable &mp, // Mapping Table size_t nb_master, // Number of initiators size_t nb-slave, // Number of targets uint32_t time_out); // Time-out (number of cycles) }}} === CABA Ports === * sc_in '''p_resetn''' : Global system reset * sc_in '''p_clk''' : Global system clock * sc_out '''*p_gnt''' : Pointer to the grant ports array * sc_in '''*p_req''' : Pointer to the request ports array * sc_out '''*p_sel''' : Pointer to the select ports array * sc_in > '''p_a''' : Pibus address * sc_in '''lock''' : Pibus lock (used for bursts) * sc_in > '''p_ack''' : Pibus response code * sc_out '''p_tout''' : Pibus Time-out == 4) TLM-T Implementation == There is no TLM-T implementation for this component.