WARPLab 7
- Downloads
Getting Started
- Sample Buffer Sizes
- Automatic Gain Control
- Examples
- Extending WARPLab
- Debugging Errors
- Porting Code
- Benchmarks
WARPLab 7 Framework
WARPLab 7 Reference Design
Reference Design Modules
- Node
Interface Group
Baseband
Transport
Trigger Manager
Hardware
Cooperative Partial Detection
Background
In cooperative systems, the relay helps a direct source-destination link. Cooperative communication with multi-antenna relays can significantly increase the reliability and speed. However, cooperative MIMO detection would impose considerable complexity overhead onto the relay if a full detect-and-forward (FDF) strategy is employed. In order to address this challenge, we propose a novel cooperative partial detection (CPD) strategy to partition the detection task between the relay and the destination. CPD utilizes the inherent structure of the tree-based sphere detectors, and modifies the tree traversal so that instead of visiting all the levels of the tree, only a subset of the levels, thus a subset of the transmitted streams, are visited. Based on this methodology, the destination combines the source signal and the partial relay signal to perform the detection step.
More information regarding our work and results are available here.
Using the WARPLab platform, we show that with the CPD approach, the relay can avoid the considerable overhead of MIMO detection while helping the source-destination link to improve its performance.
WARPLab Experiments of Cooperative Partial Detection
In this setup, multiple WARP boards are connected to a host PC through an Ethernet switch. A set of boards are designated as the transmitters and a set of boards are designated as the receivers through the WARPLab framework. To transmit, raw samples (I/Q) values are generated in MATLAB and uploaded to the transmit boards via Ethernet. When the host PC sends a trigger signal to all nodes via Ethernet, the transmit boards modulate the raw samples in the FPGA transmit buffers to the 2.4 GHz frequency signals, and transmit them through the radio boards of the transmit boards. The receive boards capture the incoming RF signals, downconvert them to the baseband samples and store them in the receive buffers of the FPGA. The host PC, in MATLAB, reads and process the values in the receive buffers via Ethernet. Note that the relay's baseband physical layer is a highly parallel architecture, and therefore, can effectively utilize FPGA's resources. As part of the future work, we will transfer parts of these processing from the host PC to the FPGA.
Our test setup is a 2 x 2 three node cooperative system. A total of three WARP boards are connected to a host computer through an Ethernet switch. Experiments are conducted using an Azimuth ACE 400 WB wireless channel emulator. The emulator can support up to a 4 x 4 setup, and has four inputs and four outputs and 16 bidirectional links. For the 2 x 2 full MIMO relay setup, we use 2 inputs, 4 outputs and 12 paths. For the first time slot, we designate one node as the source, one node as the relay, and one node as the destination. Four forward links are used to connect the source node to the relay node. Similarly, four other links are used to connect the source node to the destination node. Since all processing is done at the host computer, we can use the reverse link (which can be independent from the forward link) for the relay to destination link. We designate one node as the relay and one node as the destination and connect the two nodes with four reverse links.
Setting Up the Azimuth Channel Emulator
Figure below shows our 2 x 2 three node cooperative system setup. The three WARP boards are connected to a PC through Ethernet. In order to emulate channel behavior, an Azimuth ACE 400 WB wireless channel emulator is used. The emulator can support a range of channel models, including the TGn models as well as a subset of winner channel models. Moreover, custom channel models can be defined and emulated using the emulator's software interface.
The parameters of the Azimuth channel emulator can be controlled through Azimuth Director software. The figure below shows one screenshot of the node topology in this software used for the cooperative partial detection setup. Port B corresponds to the source transmitter in the first time slot. Also, A1 and A4 correspond to the relay two receive antennas in the first time slot, and A2 and A3 correspond to the destination receive antenna in the first time slot. In the second time slot, A2 and A3 are the relay transmit antennas and port B serves as the destination receiver:
The input transmit power of the WARP radio boards is set to 40 in the coop_setup.m file, and the input power of the emulator ports are accordingly fixed using the WARPLab continuous transmission mode. The path loss factors can, then, be computed as described in the earlier chapters using the following formulae:
Figure below represents one particular representations, where the power losses on different paths correspond to P_{loss, SR} = 17dB, P_{loss, SD} = 33dB and P_{loss, RD} = 28dB.
MATLAB Files and FPGA Bitstreams
The MATLAB reference files for this setup is available here. The FPGA bitsreams, which are based on the "2x2 MIMO bitstream for FPGA Version 1", is available here, and the XPS project can be downloaded from here.
In order to ensure that the reference design properly works, make sure that:
- The three WARP nodes should each have two two radio boards on slots 2 and 3.
- The WARP nodes should be given 0, 1 and 2 IDs. These IDs is controlled through the dip switches on the main board right below the FPGA.
- Node with ID '0' should be connected to B2 and B3 ports on the channel emulator. This node will act as the source in the first time slot and the destination in the second time slot,
- Node with ID '1' should be connected to A2 and A3 ports on the channel emulator. This node will act as the destination in the first time slot and the relay in the second time slot,
- Node with ID '2' should be connected to A1 and A4 ports on the channel emulator. This node will act as the relay in the first time slot and is not used in the second time slot.