WARPLab 7 Example: 8x2 Array

File: wl_example_8x2_array.m

This example shows how WARPLab can be used for array communications even when the number of antennas exceeds what can be supported on a single WARP board. This example uses two separate WARP boards to act as a single many-antenna transmitter while a third board receives their transmissions.

This example uses 3 nodes:

  • A node that acts as a primary transmitter. This node uses its own on-board clocks for sampling and RF clocking.
  • A node that acts as a secondary transmitter. This node uses the primary transmitter's clocks as the sources for sampling and RF. Furthermore, the Trigger Manager core is used such that the secondary transmitter is triggered by an external twisted pair cable assembly.
  • A node to act as a receiver.



NOTE: Setup is shown for CM-MMCX modules since that setup is more complicated. If using the CM-PLL module, attach the CM-PLL cable from the OUT header from the primary transmitter to the IN header of the secondary transmitter.

To run this example, you must set up your experiment as follows:

  1. Mount the CM-MMCX or CM-PLL modules on each WARP v3 node. Power must be off when mounting/unmounting a clock module.
  2. Mount the FMC-RF-2X245 modules on the same two WARP v3 nodes. For assistance installing an FMC-RF-2X245, see the FMC Installation How-To.
  3. Set the CM-MMCX or CM-PLL switches on each node (see Clock Configuration settings); one node will be the clock source, the other will be the clock sink.
  4. Connect clock modules:
    1. If using the CM-MMCX modules, connect MMCX cables from the outputs of the source node to the inputs of the sink node. Then, connect the twisted pair cable between the debug headers of the WARP v3 boards. Pin 8 of the source node should connect to pin 15 of the sink node. Use the other conductor of the cable to connect ground between nodes (see figure below).
    2. If using the CM-PLL modules, connect the cable between the Board-to-board Header OUT of the source node and the Board-to-board Header IN of the sink node.
  5. Set the DIP switches on the WARP v3 boards to 0000 (clock source node) and 0001 (clock sink node).
  6. Power on the two WARP v3 nodes
  7. Download the 4RF WARPLab reference bitstream to both nodes (clock source node first). Both nodes should boot, with the source node showing "01" on the hex displays and the sink showing "02".
  8. Set the DIP switch on the third WARP v3 board to 0010.
  9. Power on the third WARP v3 board and download the 2RF WARPLab reference bitstream. The node should boot and show "03" on the hex displays.

Please refer to the WARPLab Hardware Configuration user guide for more details on each of these steps.

Primary Transmitter Configuration Secondary Transmitter Configuration

Photos of Setup

Once the hardware is connected and programmed you can run the example m code: wl_example_8x2_array.m.

Example Overview

In this example, we use each of the 8 transmit antennas to generate noise that is bandlimited to 1 MHz and digitally mixed to one of 8 different frequencies [-12, -8.5714, -5.1429, -1.7143, 1.7143, 5.1429, 8.5714, 12] MHz. Note: these are frequencies relative to baseband, so 0 MHz corresponds to the center frequency of the radio (Channel 11 of the 2.4 GHz band by default). These 8 different signals are all transmitted simultaneously and are then captured through two receive antennas on the receiving board. Visualizations of those receptions are then plotted.

The purpose of this example is to show how multiple transmit nodes should be synchronized. This technique can scale to arrays even larger than 8 transmit antennas. A similar technique was used in the Rice University Argos Project.


When you run the example script, it will produce a plot that looks like this

The top-left subplot shows the real part of the received waveform through interface RFA on the board. The top-right subplot shows the real part of the received waveform through interface RFB. The two plots below those show the magnitudes of the signals after FFTs are taken, allowing us to see the 8 different 1 MHz-wide noise signals that were transmitted. Note that the heights (magnitudes) of each of these 8 signals are different due to frequency selective fading. If you change line 15 of wl_example_8x2_array.m to "true," then the script will loop and repeatedly transmit, receive, and produce plots until any key is pressed on the keyboard of the host PC that is running MATLAB. While it is running, you can move antennas around and walk through the room for an interesting animated visualization of frequency selective fading.

Last modified 3 years ago Last modified on Dec 1, 2015, 10:32:30 AM

Attachments (9)

Download all attachments as: .zip