[wiki:Component SocLib Components General Index] = !VciPiInitiatorWrapper = == 1) Functional Description == This hardware component is a VCI/PIBUS protocol converter for a VCI initiator. It behaves as an intitiator on the PIBUS interface, and behaves as a target on the VCI interface. It can be used by a VCI initiator to interface a PIBUS based system on chip. * The VCI address and DATA fields must have 32 bits. * The VCI fields PLEN, CONTIG, CONS, WRAP, CFIXED, CLEN are ignored. * The supported PIBU response codes are PI_ACK_RDY, PI_ACK_WAT, and PI_ACK_ERR. * The VCI initiator is supposed to be "fair" : when a command packet starts, the CMDVAL signal is true until the last word of the VCI packet (marqued by the EOP signal), and the RSPACK signal is supposed to be always true. * The VCI command packet can have any length, but the VCI commands VCI_READLOCK & VCI_NOP are not supported. * Most output ports, including PI.A, PI.LOCK, VCI.RDATA, and VCI.RERROR are Mealy signals. == 2) Component definition& usage == source:trunk/soclib/soclib/module/network_component/vci_pi_initiator_wrapper/caba/metadata/vci_pi_initiator_wrapper.sd See [wiki:SoclibCc/VciParameters SoclibCc/VciParameters] {{{ Uses( 'vci_pi_initiator_wrapper', **vci_parameters ) }}} == 3) CABA Implementation == === CABA sources === * interface : source:trunk/soclib/soclib/module/network_component/ring_register/caba/source/include/ring_register.h * implementation : source:trunk/soclib/soclib/module/network_component/ring_register/caba/source/src/ring_register.cpp === CABA Constructor parameters === {{{ VciPiInitiatorWrapper( sc_module_name name); // Instance Name }}} == Ports == * sc_in '''p_resetn''' : Global system reset * sc_in '''p_clk''' : Global system clock * sc_in '''p_gnt''' : bus grant port (from the PIBUS contrioller) * sc_out '''p_req''' : bus request port (to the PIBUS controller) * soclib::caba::!VciTarget '''p_vci''' : The VCI port * soclib::caba::!PibusInitiator '''p_pi''' : The PIBUS port