wiki:WARPLab/Framework/Modules

Version 3 (modified by chunter, 11 years ago) (diff)

--

WARPLab Modules

The WARPLab Framework consists of 5 core modules: the Node, the Baseband, the Interface Group, the Transport, the Trigger Manager, and User Extensions.

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.

Node

A Node is responsible for broker commands to other modules within the node and collect responses to those commands to deliver back to the user. The other modules in the system belong to the Node module. Furthermore, the Node may also process commands for the node itself and not any of the other modules. The WARPLab Reference Design's implementation of a Node module is described here.

Trigger

No image "trigger.png" attached to WARPLab/Framework/Modules

A Trigger is an object from the wl_trigger.m abstract class. Currently, the only class that subclasses from this abstract class is wl_trigger_eth_udp_broadcast.m. This is a simple class that contains an ID (provided by wl_trigger_IDs.m) and a method for sending the trigger through a broadcast Transport object.

Transport

No image "transport.png" attached to WARPLab/Framework/Modules

A Transport is an object from the wl_transport abstract class. Currently, four subclasses of wl_transport exist:

Unicast Transports:

Broadcast Transports:

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:

Unicast Transport

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 transport commands? brokered by the Node.

Broadcast Transport

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 wl_initNodes? utility function.

Interface Group

No image "interface.png" attached to WARPLab/Framework/Modules

An Interface Group is an object from the wl_interface_group.m abstract class. Currently, the only subclass of wl_interface_group is 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 FMC-RF-2X245 card if it is mounted on the WARP v3 carrier.

Baseband

No image "baseband.png" attached to WARPLab/Framework/Modules

A Baseband is an object from the wl_baseband.m abstract class. For the WARPLab Reference Design, we provide the wl_baseband_buffers.m subclass that provides buffers for sending and receiving custom I/Q waveforms provided by MATLAB. Advanced user extensions? are intended to replace wl_baseband_buffers with custom classes that support user-added baseband processing running on WARP hardware.

Trigger Manager

No image "trigger_manager.png" attached to WARPLab/Framework/Modules

A Trigger Manager is an object from the wl_trigger_manager.m class. This object allows WARPLab scripts to associate or deassociate particular triggers on particular WARP nodes. For example, a WARPLab script can create two Trigger objects and have a subset of nodes be sensitive to each. This way, a Trigger need not apply to every Node in the network -- it only applies to the ones whose Trigger Manager objects have been configured to allow the Trigger.

User Extension

No image "user.png" attached to WARPLab/Framework/Modules

A User Extension is an object from the wl_user_ext.m abstract class. We do not provide any subclasses that implement this abstract; it is intended that users create their own subclasses for extending WARPLab? with new commands.

Attachments (1)

Download all attachments as: .zip