wiki:WARPLab/Changelog

WARPLab 7: Changelog

This page is a detailed changelog of WARPLab 7 development updates.

7.7.1 Release:

Download: WARPLab_Reference_Design_7.7.1.zip

Release Details:

Hardware Release Date Posted SVN Rev. ISE Ver. Arch MATLAB Ver. RF Interface Support
WARP v3 7.7.1 29-Aug-2016 5627 14.4 MB/AXI 2011a or later 1-2: WARP v3 on-board interfaces
3-4: Requires FMC-RF-2X245

Important Notes:

  • This release only updates C and M code. The XPS hardware project is identical to v7.7.0.
  • The C software in this release requires an updated edk_user_repository. You must update your edk_user_repository to revision 5627 or later before compiling the reference C code

Changes:

  • Updated to latest channel / center frequency map in radio_controller driver. This changes channel numbers for 5 GHz channels! Refer to the channel interface command docs for the current mapping.
  • Added new rx_lpf_corn_freq_fine interface command to control the MAX2829 Rx LPF fine corner frequency (refer to the center plot on pg. 23 of the MAX2829 datasheet for the corresponding frequency responses)

Bug Fixes:

  • Fixed bug in AGC reset-per-Rx code. Previous release delayed the AGC reset to 232 samples ignoring the actual rx_length
  • Fixed bug in WARP_ip_udp library that miscalculated the addresses for Ethernet Rx buffers, resulting in overlapping buffers that could corrupt received payloads when using jumbo frames for write_iq
  • Added floor() to rssi_length calculation in example scripts to handle rx_length values that are not multiples of 4

7.7.0 Release:

Download: WARPLab_Reference_Design_7.7.0.zip

Release Details:

Hardware Release Date Posted SVN Rev. ISE Ver. Arch MATLAB Ver. RF Interface Support
WARP v3 7.7.0 18-Dec-2015 4985 14.4 MB/AXI 2011a or later 1-2: WARP v3 on-board interfaces
3-4: Requires FMC-RF-2X245

You must SVN update your local edk_user_repository before compiling the SDK software project or building the XPS hardware project

  • Updated MEX transport; WARPLab 7.7 requires MEX transport version 1.04.a (included in zip archive)
  • Added sampling frequency offset (SFO) estimation and correction to the SISO OFDM and MIMO OFDM examples
  • Updated AGC core and code
    • Removed fixed-duration "timeout" from AGC reset logic, replaced with "reset per Rx" mode. When enabled this mode will reset the AGC state after the Rx buffers core has completed its sample capture. The AGC reset timing is automatically aligned with the buffers Rx state timing.
    • Fixed issue in the IIR High Pass Filter where the handover between the two data streams was not temporally aligned
    • Moved AGC C defines to baseband.h
    • Added AGC commands:
  • Updated the trigger processor core
    • Added downsample blocks to Ethernet trigger inputs; this change fixes one source of uncertainty in the sample-level timing of two nodes sharing a trigger.
    • Increased trigger output delay range for all trigger outputs. Delay maximum is now 409593.75 ns (65535 steps with a 6.25 ns step size).
    • Additional error checking for input and output trigger IDs in m code
    • Added IDELAY/ODELAY instances to all off-chip trigger I/O. These blocks allow sub-nsec tuning of delays through the IOBs, allowing easier avoidance of setup/hold violations for inter-board trigger signals. The per-pin IDELAY/ODELAY values are controlled with new commands:
  • Added new node commands for reading/writing arbitrary memory addresses:
  • Updated buffers core:
    • Added counters for the number of times the Tx / Rx state machine has run. Counter values are accessed and reset with new commands:
    • Fixed unexpected behavior in the TX state machine on a node when the node is triggered when no TX buffers are enabled, then a TX buffer is enabled and the node is triggered again (more info in this forum thread).
  • Added transport check for "stale" IQ reads. This check allows detection of multiple read_iq commands retrieving the same waveform, likely an indication of improper trigger configuration.
  • Replaced 'enable' / 'disable' magic strings with true/false in command arguments:

7.6.0 Release:

Download: WARPLab_Reference_Design_7.6.0.zip

Release Details:

Hardware Release Date Posted SVN Rev. ISE Ver. Arch MATLAB Ver. RF Interface Support
WARP v3 7.6.0 11-Sept-2015 4713 14.4 MB/AXI 2009b or later 1-2: WARP v3 on-board interfaces
3-4: Requires FMC-RF-2X245

WARPLab 7.6.0 requires an SVN update to your edk_user_repository before compiling the reference software project

WARPLab 7.6.0 provides transport improvements to the existing WARPLab 7.5.1 design and better M compatibility with earlier WARPLab releases.

NOTE: There is unexpected behavior in the TX state machine on a node when the node is triggered and none of the TX buffers are enabled and then a TX buffer is enabled and the node is triggered again before the node is re-initialized (i.e. initNodes() or wl_nodeCmd('initialize') is run). The problem and workarounds are detailed in this forum post. This will be addressed in WARPLab 7.7.0.

Other changes:

  • Added MIMO OFDM Communication Example
  • Updated transport infrastructure on the node
    • Allows Read IQ / Write IQ commands to be processed while the node is transmitting or receiving (removes the restriction introduced in WARPLab 7.5.x)
    • Replaced WARPxilnet with ''WARP IP/UDP v1.00a'' Ethernet packet processing library.
  • Updated MEX transport (see Benchmarks) - WARPLab 7.6.0 requires MEX 1.0.3a
  • Updated radio controller core to fix minor bugs
    • Changed default parameters to match the 802.11 reference design
  • Updated Ethernet behaviour
    • By default, nodes do not link with non-1000BASE-T Ethernet devices.
    • WARPLab waits for Ethernet device to be ready before completing boot.
    • Consolidated Ethernet behaviour options in wl_common.h
  • Added WARPLab command to control the RX HPF cutoff frequency
  • Fixed bug when using CM-PLL input / output triggers
  • Introduced new syntax for trigger and interface IDs; refer (see Porting guide for more information)
  • Cleaned up C code and added more comments
  • Cleaned up M code examples

7.5.1 Release:

Download: WARPLab_Reference_Design_7.5.1.zip

Release Details:

Hardware Release Date Posted SVN Rev. ISE Ver. Arch MATLAB Ver. RF Interface Support
WARP v3 7.5.1 12-Mar-2015 4487 14.4 MB/AXI 2009b or later 1-2: WARP v3 on-board interfaces
3-4: Requires FMC-RF-2X245
WARP v2 7.5.1 12-Mar-2015 4487 14.4 PPC/PLB 2009b or later 1-2: Radios in slots 2 & 3
3-4: Radios in slots 1 & 4

WARPLab 7.5.1 for WARP v2 aligns the WARP v2 peripherals with the WARPLab 7.5.0 WARP v3 peripherals.

  • Updated the Porting Guide with new scripting conventions. In 7.5, these changes are optional so old scripts will work as-is. In future releases, these changes will be enforced.
  • Replaced the old WARPLab AGC core with a new core derived from the wlan_agc core in the 802.11 Reference Design. The System Generator model for the new core is available in the repository: warplab_agc_v3.
  • Updated to version 3.04.a of the WARPxilnet library - be sure to update your edk_user_repository before compiling the reference software project
    • NOTE: When rebuilding the BSP with the WARPxilnet library, in the Board Support Package Settings, the "ETH_B_uses_xilnet" should be set to zero (0) under the WARPxilnet settings since WARP v2 does not have a second Ethernet port.
  • Updated mapping of debug pins - see the WARPLab WARP v2 hardware usage for details
  • Due to hardware limitations, WARP v2 still only supports 16 kB buffer sizes

WARPLab 7.5.1 for WARP v3 provides transport improvements to the existing WARPLab 7.5.0 design.

Other changes:

  • Updated the radio controller core - be sure to update your edk_user_repository before compiling the reference software project
  • Updated the Tigger Manager to split Ethernet and SW triggers. The SW trigger is not used by the reference design and is dedicated for use by custom user C code.
  • Updated MEX transport (see Benchmarks) - WARPLab 7.5.x requires MEX 1.0.2a
    • Improved Write IQ performance
    • Removed performance penalty when calling 'read_IQ' / 'write_IQ' with multiple buffers (ie when the transport had to iterate over multiple buffers in one call)
  • Updated Java transport (see Benchmarks)
    • Improved Write IQ performance
    • Improved Read IQ performance and removed performance issue for larger buffers
  • Added ability to auto-negotiate the Ethernet link speed. This feature is disabled by default because it added 1 to 2 seconds for the node to boot. To enable the feature, change the WL_NEGOTIATE_ETH_LINK_SPEED define to 1 in node.c
  • Implemented fix for AXI Ethernet v3.01.a bug detailed in Xilinx AR# 56158. If rebuilding, the WARP v3 XPS project, it is suggested that users patch the AXI Ethernet core in their installation. The diff of the changes in the Ethernet core are:
    $ diff axi_ethernet_v3_01_a_v6_rx_axi_intf.v axi_ethernet_v3_01_a_v6_rx_axi_intf.orig
    155c155
    <       if ((rx_good_frame | rx_bad_frame) && (rx_state != IDLE)) begin
    ---
    >       if (rx_good_frame | rx_bad_frame) begin
    
  • Cleaned up the code split between WARP v3 and WARP v2 hardware within the C code
  • Cleaned up code examples and added more comments

7.5.0 Release:

Download: WARPLab_Reference_Design_7.5.0.zip

Release Details:

Hardware Release Date Posted SVN Rev. ISE Ver. Arch MATLAB Ver. RF Interface Support
WARP v3 7.5.0 11-Feb-2015 4388 14.4 MB/AXI 2009b or later 1-2: WARP v3 on-board interfaces
3-4: Requires FMC-RF-2X245
WARP v2 7.5.0 Coming Soon

WARPLab 7.5 for WARP v3 adds support for storing Tx/Rx samples in the on-board 2GB DRAM. Using the DRAM enables Tx and Rx waveforms with more than 1000x the number of samples as previous WARPLab releases. See the Sample Buffer Sizes page for details on the new waveform length limits.

We extend our thanks to Matthias Schulz at TU Darmstadt for sharing results from his early exploration of a DRAM-enabled WARPLab design. The success of this approach in his application provided the impetus for re-designing the WARPLab FPGA architecture to support DRAM-backed sample buffers for all RF interfaces in the official reference design.

Other changes:

  • Updated the Porting Guide with new scripting conventions. In 7.5, these changes are optional so old scripts will work as-is. In future releases, these changes will be enforced.
  • Updates to the FPGA Architecture.
  • Replaced the old WARPLab AGC core with a new core derived from the wlan_agc core in the 802.11 Reference Design. The System Generator model for the new core is available in the repository: warplab_agc_v3.
  • Updated to version 3.04.a of the WARPXilnet library - be sure to update your edk_user_repository before compiling the reference software project
  • Added new spectrogram Rx example (WARPLab Spectrogram Example)
  • Updated all other examples to adopt new conventions for setting Tx/Rx waveform lengths
  • Added support for receiving Ethernet triggers on ETH B on WARP v3 hardware
  • Tweaked mex auto-compilation code to not require specific version of Microsoft tools
  • Updated mapping of debug pins - see the WARPLab WARP v3 hardware usage for details
  • Added support for the CM-PLL clock module
  • Upgraded to the latest w3_clock_controller_axi core
    • WARPLab assumes you have not written custom clock configurations to the EEPROM (see w3_clock_controller). If you have customized the clock configurations in the EEPROM be sure to update node_clk_initialize() in wl_node.c to match.
    • NOTE: the updated core changes the interpretation of the clock module switches! See the WARPLab WARP v3 hardware usage page for details on the new interpretation of the CM-PLL and CM-MMCX switches.
  • Added trigger inputs/outputs for the CM-PLL board-to-board cables. The 4 inputs and 4 outputs mirror the corresponding trigger signals on the debug header.
  • Updated all examples to explicitly configure trigger inputs/outputs. User scripts should mimic this approach of not relying on the at-boot default trigger configurations.

7.4.0 Release:

Download: WARPLab_Reference_Design_7.4.0.zip

Release Details:

Hardware Release Date Posted SVN Rev. ISE Ver. Arch MATLAB Ver. RF Interface Support
WARP v3 7.4.0 25-Feb-2014 2886 14.4 MB/AXI 2009b or later 1-2: WARP v3 on-board interfaces
3-4: Requires FMC-RF-2X245
WARP v2 7.4.0 25-Feb-2014 2886 14.4 PPC/PLB 2009b or later 1-2: Radios in slots 2 & 3
3-4: Radios in slots 1 & 4
  • Added OFDM Comm Example
    • Implements a simple OFDM transmitter and receiver.
    • Can run with or without WARP hardware in the loop and does not require any extra MATLAB toolboxes.
  • Updates to WARPLab cores:
    • Updated the WARPLab Buffers core in both WARP v2 and v3 (w2_warplab_buffers_plbw_v2_04_a and w3_warplab_buffers_axiw_v2_04_a) to honor the TxLength field in continuous transmit mode.
    • Updated the WARPLab AGC core in both WARP v2 and v3 (w2_warplab_agc_plbw_v2_01_a and w3_warplab_agc_axiw_v2_01_a) to allow for finer control of when the AGC resets.
      • Added MATLAB commands:
        • wl_basebandCmd(nodes, 'agc_reset_on_timeout', <true, false>);
        • wl_basebandCmd(nodes, 'agc_reset_timeout_value', <time in microseconds>);
      • By default, the AGC will reset on timeout and the timeout value is set to be just longer than a IQ receive. This is the same behavior as previous WARPLab releases.
    • Updated WARPLab User IO core in WARP v3 (w3_userio_axi_v1_01_a) to add a PWM for autonomous control of LEDs.
  • Updates to MEX transport:
    • If using the MEX transport, WARPLab 7.4.0 requires MEX 1.0.1a
    • Fixed some minor bugs in Read IQ fragmentation for small rx buffers.
    • Added ability from M to throttle Read / Write IQ and suppress timeout warnings for the transport.
      • wl_mex_udp_transport('write_iq_set_pkt_wait_time', wait_time)
        • Sets the inter-packet wait time for Write IQ to slow it down
      • wl_mex_udp_transport('read_iq_set_max_request_size', size)
        • Sets the maximum Read IQ request size in bytes to allow the transport to fragment Read IQ requests.
      • wl_mex_udp_transport('suppress_iq_warnings')
        • Suppresses all Read IQ / Write IQ timeout warnings.
    • NOTE: All of the new functions affect the global state of the MEX transport (ie all nodes will be affected that use the MEX transport). Also, the only way to turn them off is to terminate and reload the MEX transport (can be done using clear all).
  • Fixed bugs:
    • Fixed trigger manager reset / hold issue described here
    • Added warning when Write IQ sees samples vector with abs(I) or abs(Q) > 1.0 (can be turned off using: node.baseband.check_write_iq_clipping = 0)
    • Added checks in C for valid DMA buffers (issue when sections are not placed correctly when regenerating linker command files)
  • NOTE:
    • PNET was removed in the WARPLab 7.4.0 release. Please use the new wl_mex_udp_transport instead.

7.3.0 Release:

Download: WARPLab_Reference_Design_7.3.0.zip

Release Details:

Hardware Release Date Posted SVN Rev. ISE Ver. Arch MATLAB Ver. RF Interface Support
WARP v3 7.3.0 26-Aug-2013 2180 14.4 MB/AXI 2009b or later 1-2: WARP v3 on-board interfaces
3-4: Requires FMC-RF-2X245
WARP v2 7.3.0 26-Aug-2013 2180 14.4 PPC/PLB 2009b or later 1-2: Radios in slots 2 & 3
3-4: Radios in slots 1 & 4
  • Requires use of WARPXilnet library 3.02.a
  • Improved Read IQ / Write IQ performance by over 10x with a new Transport layer: wl_transport_eth_udp_mex.
    • This uses the MATLAB EXecutable format, or MEX. To compile the transport for your platform, please refer to the MEX Compilation Guide.
    • To see the performance improvements, please refer to the benchmarks
  • Updated FPGA HW design
    • Updated the WARPLab Buffers core (w3_warplab_buffers_axiw_v2_03_a) which moved the memories outside of the core for the Read / Write IQ samples
      • Allowed for the use of the DMA for sample transfers vs memcpy
    • Updated bus architecture to improve performance
  • Added wl_benchmark utility
    • Allows user to do performance testing of Read IQ / Write IQ on their system
  • Fixed bugs:
    • Addressed WARPLab 7.2.0 issue where there were checksum mismatches in Write IQ which would revert the Transport to "slow write" and reduce performance.
  • NOTE:
    • PNET will be deprecated in the WARPLab 7.4.0 release. Please use the new wl_mex_udp_transport instead.

7.2.0 Release:

Download: WARPLab_Reference_Design_7.2.0.zip

Release Details:

Hardware Release Date Posted SVN Rev. ISE Ver. Arch MATLAB Ver. RF Interface Support
WARP v3 7.2.0 10-July-2013 2081 14.4 MB/AXI 2009b or later 1-2: WARP v3 on-board interfaces
3-4: Requires FMC-RF-2X245
WARP v2 7.2.0 10-July-2013 2081 14.4 PPC/PLB 2009b or later 1-2: Radios in slots 2 & 3
3-4: Radios in slots 1 & 4
  • Requires use of new WARPXilnet library 3.02.a
  • Added support for broadcast write-only commands via a wl_node subclass called wl_node_group.
  • Updated Ethernet processing - reduced both transmit and receive processing times
    • Updated Ethernet A interface from AXI FIFO to AXI DMA
  • Updated FPGA HW design
    • Added support for 1GB of DDR to reference design
    • Updated bus architecture to improve performance
  • Updated Trigger Manager to reduce input delay jitter. Adds 1 additional cycle of latency to all Trigger Manager debug inputs.
  • Added additional mode to wl_ver:
    • Ability to pass a string as an argument to wl_ver. Will issue a warning if the current framework is newer than the version. Will issue an error if the current framework is older than the version.
    • Ability to pass a node object as an argument to wl_ver. Will issue an error if version does not match.
  • Fixed bugs:
    • Added global initialization back to wl_initNodes
    • Updated 'output_config_delay' command in the Trigger Manager to print the actual delay configured in the hardware
    • Removed print statement in ifc_init()
    • Fixed issue in EEPROM code described in this forum post

7.1.0 Release:

Download: WARPLab_Reference_Design_7.1.0.zip

Release Details:

Hardware Release Date Posted SVN Rev. ISE Ver. Arch MATLAB Ver. RF Interface Support
WARP v3 7.1.0 8-May-2013 2035 14.4 MB/AXI 2009b or later 1-2: WARP v3 on-board interfaces
3-4: Requires FMC-RF-2X245
WARP v2 7.1.0 8-May-2013 2035 14.4 PPC/PLB 2009b or later 1-2: Radios in slots 2 & 3
3-4: Radios in slots 1 & 4
  • May 8: minor bug fix to a problem that prevented wl_initNodes from testing broadcast triggers. This change will not affect user code, so it was an in-place upgrade to the 7.1.0 release. (svn 2034)
  • Added support for WARP v2
  • Added support for text file configuration of node IDs based on serial number. This configuration option is a replacement of the usual DIP switch configuration
  • Added new trigger processor core to handle a variety of kinds of triggers: Ethernet, External Port, Energy Detection (svn 2010)

7.0.2 Release:

Download: WARPLab_Reference_Design_7.0.2.zip

Release Details:

Hardware Release Date Posted SVN Rev. ISE Ver. Arch MATLAB Ver. RF Interface Support
WARP v3 7.0.2 22-Apr-2013 2004 14.4 MB/AXI 2009b or later 1-2: WARP v3 on-board interfaces
3-4: Requires FMC-RF-2X245
  • APR 22: re-released 7.0.2 so that it includes the required wl_trigger_manager file
  • Added support for AXI System Monitor. Allows user M-scripts to read temperature out of FPGA. (svn 2003)
  • Fixed a bug where SIP switches were Endian-flipped on CM-MMCX module. (svn 2003)

7.0.1 Release:

Download: WARPLab_Reference_Design_7.0.1.zip

Release Details:

Hardware Release Date Posted SVN Rev. ISE Ver. Arch MATLAB Ver. RF Interface Support
WARP v3 7.0.1 10-Apr-2013 2002 14.4 MB/AXI 2009b or later 1-2: WARP v3 on-board interfaces
3-4: Requires FMC-RF-2X245
  • Added support for custom basebands and trigger managers (rev 2002)
  • Fixed minor bug in wl_setup where the java transport wasn't correctly used by default. This resulted in an error in wl_setup if the user did not manually type in a transport selection. (svn rev 2001)

7.0.0 Release:

Download: WARPLab_Reference_Design_7.0.0.zip

Release Details:

Hardware Release Date Posted SVN Rev. ISE Ver. Arch MATLAB Ver. RF Interface Support
WARP v3 7.0.0 29-Mar-2013 1998 14.4 MB/AXI 2009b or later 1-2: WARP v3 on-board interfaces
3-4: Requires FMC-RF-2X245

Changes from previously released beta:

  • Added support for jumbo frames to both M and hardware project (svn rev 1991)
    • support for jumbo frames is limited to certain NICs and Ethernet switches. Check documentation for your PC's NIC to see if it is supported. If your PC hardware is compatible, all you should need to do is increase the MTU on your NIC to less than or equal to 9014 bytes.
  • Several bug fixes (svn rev 1987)
    • Overflowing sequence numbers
    • Checksum calculation in write_IQ command was wrong... this bug fix also relates to hardware, so make sure to use the latest Mar. 22 bitstreams
  • Renamed the wl_ifcGroup_X245 class to wl_interface_group_X245 and added new command documentation to wl_baseband_buffers (svn rev 1973)
  • Added command to read RSSI sample period so that user scripts can figure out the length of samples they need to read from the RSSI buffer. (svn rev 1972)
    • SISO example script has been updated with this functionality.
  • Small bug fix to handle chicken and egg problem of maximum payload size (svn rev 1970)
  • Small bug fix to handle rare event where only one packet is needed to write a sample buffer (svn rev 1969)
  • Updated both M and C to calculate write_iq checksums on the last sample of every packet. This change makes truncated sample packets detectable so the M code can error out (svn rev 1967)
    • NOTE: This update to M was compatability-breaking! You must download the new March 19 bitstreams for it to work. The M_Code_Example scripts are unchanged.
  • Minor change to wl_config_read to check interface setup against the ini configuration file (svn rev 1966)
  • Updated both M and C to support "payload size sounding" where a node objects figures out the maximum possible payload that can be received by the board (svn rev 1965)
    • NOTE: This update to M was compatability-breaking! You must download the new March 18 bitstreams for it to work. The M_Code_Example scripts are unchanged.
  • Minimized packet drops in "burst" read_iq mode. Now, the read_iq command won't request more packets than the OS's packet buffer size can handle. (svn rev 1963)
  • Renamed the following (svn rev 1960):
    • "interfaces" property to "interfaceGroups"
    • changed the wl_interface abstract class to wl_interface_group
  • Added new 'RF_ALL' syntax for easier manipulation of nodes with differing number of interfaces (e.g. a base WARP v3 and a WARP v3 with an FMC radio both in the same experiment). Check the updated wl_example_siso_txrx example for details (svn rev 1959)
  • Replaced all four bin/bit files (2 each for 2/4 RF designs) with versions matching latest C/M code
  • Added bin/bit files for 4RF verison (svn rev 1956)
    • m code is ready for 4RF; just add RFC, RFD to getInterfaceIDs
    • C code works for both 2RF, 4RF; comment in #define WARPLAB_4RF in wl_common.h to compile 4-radio support
  • Re-worked read_baseband_buffers (svn rev 1952)
    • Now handles dropped packets more gracefully
    • Added fail-safe timeout, to prevent an infinite loop when indexing issues occur
  • Renamed the following methods in m-code (svn rev 1951). Examples are updated; custom user scripts will need to be updated manually
    • wl_bbCmd -> wl_basebandCmd
    • wl_ifcCmd -> wl_interfaceCmd
    • wl_transCmd -> wl_transportCmd
    • wl_trigMngrCmd -> wl_triggerManagerCmd
Last modified 5 months ago Last modified on Aug 30, 2016, 10:19:22 AM