8 | | The above figure shows how these 5 modules relate to one another in the context of a typical WARPLab example script. Additionally, the figure shows another framework element, the {{{Trigger}}}, which is not a part of a WARPLab node, but is one way of coordinating action among the multiple nodes in a WARPLab experiment. |
| 8 | The above figure shows how these 5 modules relate to one another in the context of a typical WARPLab example script. A module generally consists of two paired components: a software and hardware design that runs on the board coupled with a MATLAB class that is used to issue commands and handle responses from the hardware/software pair that runs on the board. |
| 9 | |
| 10 | Additionally, the figure shows another framework element, the {{{Trigger}}}, which is not a part of a WARPLab node, but is one way of coordinating action among the multiple nodes in a WARPLab experiment. |
17 | | A {{{Trigger}}} is an object from the [browser:ResearchApps/PHY/WARPLAB/WARPLab7/M_Code_Reference/classes/wl_trigger.m wl_trigger.m] abstract class. Currently, the only class that subclasses from this abstract class is [browser:ResearchApps/PHY/WARPLAB/WARPLab7/M_Code_Reference/classes/wl_trigger_eth_udp_broadcast.m wl_trigger_eth_udp_broadcast.m]. This is a simple class that contains an ID (provided by [browser:ResearchApps/PHY/WARPLAB/WARPLab7/M_Code_Reference/classes/wl_trigger_IDs.m wl_trigger_IDs.m]) and a method for sending the trigger through a broadcast {{{Transport}}} object. |
| 18 | A {{{Baseband}}} module is the processing component that is meant to deal with the samples being sent to and from the radio interfaces available to a node. The WARPLab Reference Design's implementations of a {{{Baseband}}} modules are [wiki:../../Reference/Baseband described here]. |
| 19 | |
| 20 | The MATLAB implementation of {{{Baseband}}} modules are intended to inherit from the [browser:ResearchApps/PHY/WARPLAB/WARPLab7/M_Code_Reference/classes/wl_baseband.m wl_baseband.m] abstract class. |
| 21 | |
| 22 | === Interface Group === |
| 23 | |
| 24 | An {{{Interface Group}}} module is the processing component that deals with configuring radio interfaces. The WARPLab Reference Design's implementations of a {{{Interface Group}}} modules are [wiki:../../Reference/Interface described here]. |
| 25 | |
| 26 | The MATLAB implementation of {{{Interface Group}}} modules are intended to inherit from the [browser:ResearchApps/PHY/WARPLAB/WARPLab7/M_Code_Reference/classes/wl_interface_group.m wl_interface_group.m] abstract class. |
28 | | Broadcast Transports: |
29 | | * [browser:ResearchApps/PHY/WARPLAB/WARPLab7/M_Code_Reference/classes/wl_transport_eth_udp_java_bcast.m wl_transport_eth_udp_java_bcast.m] |
30 | | * [browser:ResearchApps/PHY/WARPLAB/WARPLab7/M_Code_Reference/classes/wl_transport_eth_udp_pnet_bcast.m wl_transport_eth_udp_pnet_bcast.m] |
31 | | |
32 | | The pnet/java variants are functionally identical, but use either compiled Mex code or built-in java code, respectively, for opening UDP sockets. The unicast and broadcast variants serve different purposes: |
33 | | |
34 | | ==== Unicast Transport ==== |
35 | | A Unicast {{{Transport}}} object is attached to the {{{Node}}} and is responsible for sending to and receiving from a specific IP address and port associated with a WARP node. Additionally, the unicast objects will process [wiki:../../Commands/Transport#CommandListandDocumentation transport commands] brokered by the {{{Node}}}. |
36 | | |
37 | | ==== Broadcast Transport ==== |
38 | | A Broadcast {{{Transport}}} object does not process any commands, but contains a method for transmitting to more than one WARP node at once. This is used by the {{{Trigger}}} object as well as the [wiki:../../Utility#wl_initNodes wl_initNodes] utility function. |
39 | | |
40 | | === Interface Group === |
41 | | [[Image(interface.png,width=800)]] |
42 | | |
43 | | An {{{Interface Group}}} is an object from the [browser:ResearchApps/PHY/WARPLAB/WARPLab7/M_Code_Reference/classes/wl_interface_group.m wl_interface_group.m] abstract class. Currently, the only subclass of wl_interface_group is [browser:ResearchApps/PHY/WARPLAB/WARPLab7/M_Code_Reference/classes/wl_interface_group_X245.m wl_interface_group_X245.m], which allows control over the 2.4/5GHz transceivers available on WARP. An "interface group" is a collection of multiple identical interfaces. For example, on WARP v3 hardware, a single wl_interface_group_X245 object is used to control both of the on-board interfaces (RFA and RFB) and the two extra interfaces (RFC and RFD) provided by the [wiki:HardwareUsersGuides/FMC-RF-2X245 FMC-RF-2X245 card] if it is mounted on the WARP v3 carrier. |
44 | | |
45 | | === Baseband === |
46 | | [[Image(baseband.png,width=800)]] |
47 | | |
48 | | A {{{Baseband}}} is an object from the [browser:ResearchApps/PHY/WARPLAB/WARPLab7/M_Code_Reference/classes/wl_baseband.m wl_baseband.m] abstract class. For the WARPLab Reference Design, we provide the [browser:ResearchApps/PHY/WARPLAB/WARPLab7/M_Code_Reference/classes/wl_baseband_buffers.m wl_baseband_buffers.m] subclass that provides buffers for sending and receiving custom I/Q waveforms provided by MATLAB. [wiki:../../../Extensions#AdvancedExtensions Advanced user extensions] are intended to replace wl_baseband_buffers with custom classes that support user-added baseband processing running on WARP hardware. |
| 34 | A {{{Transport}}} is an object from the [browser:ResearchApps/PHY/WARPLAB/WARPLab7/M_Code_Reference/classes/wl_transport.m wl_transport] abstract class. |