Changes between Version 15 and Version 16 of Component/Vci Avalon Bus
- Timestamp:
- Jan 21, 2009, 11:10:59 AM (15 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Component/Vci Avalon Bus
v15 v16 6 6 7 7 This hardware component is a generic Avalon switch fabric allowing the interconnection of ''Nb_Master'' Avalon masters and ''Nb_Slave'' Avalon slaves. The master-to-slave relationship can be one-to-one, one-to-many, many-to-one, or many-to-many. Masters and slaves have the same data and address widths and operate in the same clock domain. 8 It can be used in conjunction with the VciAvalonInitiatorWrapper and the VciAvalonTargetWrapper to build a system using an Avalon interconnect.8 It can be used in conjunction with the VciAvalonInitiatorWrapper and the VciAvalonTargetWrapper wrappers to build a system using an Avalon interconnect. 9 9 10 VCI-Avalon wrappers do not require to support full Avalon features, so not all Avalon slave and master ports are supported ([ wiki:Component/AvalonSwitchMaster AvalonSwitchMaster], [wiki:Component/AvalonSwitchSlave AvalonSwitchSlave]).10 VCI-Avalon wrappers do not require to support full Avalon features, so not all Avalon slave and master ports are supported ([source:trunk/soclib/soclib/communication/avalonbus/caba/source/include/avalon_switch_slave.h], [source:trunk/soclib/soclib/communication/avalonbus/caba/source/include/avalon_switch_master.h]). 11 11 12 12 Implemented functionnalities : … … 26 26 27 27 28 Address decoding logic , !ADLin the system interconnect fabric distributes an appropriate address and produces a chipselect signal for each slave.28 Address decoding logic (ADL) ([source:trunk/soclib/soclib/module/network_component/avalon_switch_fabric/caba/source/include/avalon_address_decoding_logic.h]) in the system interconnect fabric distributes an appropriate address and produces a chipselect signal for each slave. 29 29 30 Datapath multiplexing , !MUX (!AvalonMux)in the system interconnect fabric drives the ''writedata'' signal from the granted master to the selected slave, and the ''readdata'' signal from the selected slave back to the requesting master.30 Datapath multiplexing (MUX) ([source:trunk/soclib/soclib/module/network_component/avalon_switch_fabric/caba/source/include/avalon_mux.h]) in the system interconnect fabric drives the ''writedata'' signal from the granted master to the selected slave, and the ''readdata'' signal from the selected slave back to the requesting master. 31 31 32 32 Multiple Avalon masters can simultaneously perform transfers with independent slaves. The system interconnect fabric provides shared access to slaves using a technique 33 called slave-side arbitration. Slave-side arbitration moves the arbitration logic (A rbiter) (AvalonArbiter) close to the slave, such that the algorithm that determines which master gains access to a specific slave in the event that multiple masters attempt to access the same slave at the same time. The arbiter grants shares in a round-robin order.33 called slave-side arbitration. Slave-side arbitration moves the arbitration logic (ARBITER) ([source:trunk/soclib/soclib/module/network_component/avalon_arbiter/caba/source/include/avalon_arbiter.h]) close to the slave. The arbiter grants shares in a round-robin order. 34 34 35 AvalonSwitchConfig describes the implemented switch fabric.35 The switch fabric implementation is described through the following example: [source:trunk/soclib/soclib/communication/avalonbus/caba/source/include/avalon_switch_config.h_multimer_nios2]. 36 36 37 37 == 2) Component definition & usage == … … 47 47 48 48 {{{ 49 AvalonSwitchFabric<Nb_Master, Nb_Slave, avalon_param> SwitchFabric("SwitchFabric", config_switch); 49 AvalonSwitchFabric(sc_module_name insname, 50 AvalonSwitchConfig<NB_MASTER, NB_SLAVE> config) ; 50 51 }}} 51 52 … … 54 55 * sc_in<bool> '''p_resetn''' : Global system reset 55 56 * sc_in<bool> '''p_clk''' : Global system clock 56 * AvalonSwitch_Master '''*p_avalon_master''': Nb_Master ports from Avalon masters57 * AvalonSwitch_Slave '''*p_avalon_slave''': Nb_Slave ports to Avalon slaves57 * !AvalonSwitch_Master '''*p_avalon_master''': Nb_Master ports from Avalon masters 58 * !AvalonSwitch_Slave '''*p_avalon_slave''': Nb_Slave ports to Avalon slaves 58 59 59 60 === CABA Implementation Notes === 60 61 61 62 62 The configuration of the switch fabric is platform dependant. The AvalonSwitchConfig component is used for this purpose.63 The configuration of the switch fabric is platform dependant. The !AvalonSwitchConfig component ([source:trunk/soclib/soclib/communication/avalonbus/caba/source/include/avalon_switch_config.h_multimer_nios2) is used to configure the switch for a specific platform. 63 64 64 65 {{{ … … 66 67 }}} 67 68 68 where ''Nb_Master, Nb_slave'' :defined in the platform description ('''top.cpp''' file).69 where ''Nb_Master, Nb_slave'' are parameters defined in the platform description ('''top.cpp''' file). 69 70 70 For each master the routing table SwitchFabricParam_Master[0]->route[] describes the connection between this given master and the slaves. 71 SwitchFabricParam_Master[]->mux_n_slave is the number of slaves connected to this master (number of MUX inputs). 71 For each master the routing table !SwitchFabricParam_Master![0]->route[] describes the connection between this given master and the slaves. 72 73 !SwitchFabricParam_Master[]->mux_n_slave is the number of slaves connected to this master (number of MUX inputs). 72 74 73 75 [[Image(SwitchFabric.png, nolink, align=right, width=14cm)]] 74 76 75 For each slave the routing table SwitchFabricParam_Slave[0]->route[] describes the connection between this slave and the masters. 76 SwitchFabricParam_Slave[]->arbiter_n_master is the number of masters connected to this slave (number of Arbiter inputs). 77 SwitchFabricParam_Slave[]->Base_Address, SwitchFabricParam_Slave[]->Address_Span is the addressing space of this slave (decoded in ADL) 77 For each slave the routing table !SwitchFabricParam_Slave![0]->route[] describes the connection between this slave and the masters. 78 * !SwitchFabricParam_Slave[]->arbiter_n_master is the number of masters connected to this slave (number of ARBITER inputs). 79 * !SwitchFabricParam_Slave[]->Base_Address, 80 * !SwitchFabricParam_Slave[]->Address_Span is the addressing space of this slave (decoded in the ADL module) 78 81 79 82