[[TracNav(WARPLab/TOC)]] = WARPLab 7: Changelog = This page is a detailed changelog of WARPLab 7 development updates. == 7.7.1 Release: == '''Download: [http://warpproject.org/dl/refdes/warplab/v7/release/WARPLab_Reference_Design_7.7.1.zip 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 || [browser:ResearchApps/PHY/WARPLAB/WARPLab7?rev=5627 5627] || 14.4 || MB/AXI || 2011a or later || 1-2: WARP v3 on-board interfaces [[BR]] 3-4: Requires [wiki:HardwareUsersGuides/FMC-RF-2X245 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 [wiki:edk_user_repository 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 [wiki:../Reference/Interface/X245#channel 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 [https://datasheets.maximintegrated.com/en/ds/MAX2828-MAX2829.pdf MAX2829 datasheet] for the corresponding frequency responses) '''Bug Fixes:''' * Fixed bug in AGC reset-per-Rx code. Previous release delayed the AGC reset to 2^32^ 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: [http://warpproject.org/dl/refdes/warplab/v7/release/WARPLab_Reference_Design_7.7.0.zip 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 || [browser:ResearchApps/PHY/WARPLAB/WARPLab7?rev=4985 4985] || 14.4 || MB/AXI || 2011a or later || 1-2: WARP v3 on-board interfaces [[BR]] 3-4: Requires [wiki:HardwareUsersGuides/FMC-RF-2X245 FMC-RF-2X245] || '''You must SVN update your local [wiki:edk_user_repository 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 [wiki:../Examples/OFDM SISO OFDM] and [wiki:../Examples/MIMO_OFDM MIMO OFDM] examples * Updated AGC core and code * Removed fixed-duration "timeout" from AGC reset logic, replaced with "[wiki:WARPLab/Reference/Baseband/Buffers#agc_reset_per_rx 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 [http://warpproject.org/trac/browser/ResearchApps/PHY/WARPLAB/WARPLab7/C_Code_Reference/include/wl_baseband.h?rev=4982#L385 baseband.h] * Added AGC commands: * [wiki:WARPLab/Reference/Baseband/Buffers#agc_config agc_config] * [wiki:WARPLab/Reference/Baseband/Buffers#agc_iir_hpf agc_iir_hpf] * [wiki:WARPLab/Reference/Baseband/Buffers#agc_rf_gain_threshold agc_rf_gain_threshold] * [wiki:WARPLab/Reference/Baseband/Buffers#agc_timing agc_timing] * [wiki:WARPLab/Reference/Baseband/Buffers#agc_dco_timing agc_dco_timing] * 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: * [wiki:WARPLab/Reference/TriggerManager/TriggerProcessor#input_config_idelay input_config_idelay] * [wiki:WARPLab/Reference/TriggerManager/TriggerProcessor#output_config_odelay output_config_odelay] * Added new node commands for reading/writing arbitrary memory addresses: * [wiki:WARPLab/Reference/Node#node_mem_write node_mem_write] * [wiki:WARPLab/Reference/Node#node_mem_read node_mem_read] * 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: * [wiki:WARPLab/Reference/Baseband/Buffers#get_tx_count get_tx_count] * [wiki:WARPLab/Reference/Baseband/Buffers#get_rx_count get_rx_count] * [wiki:WARPLab/Reference/Baseband/Buffers#reset_tx_count reset_tx_count] * [wiki:WARPLab/Reference/Baseband/Buffers#reset_rx_count reset_rx_count] * 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 [//forums/viewtopic.php?id=2978 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: * Trigger Manager - [wiki:WARPLab/Reference/TriggerManager/TriggerProcessor#output_config_hold_mode output_config_hold_mode], [wiki:WARPLab/Reference/TriggerManager/TriggerProcessor#input_config_debounce_mode input_config_debounce_mode] * Interface - [wiki:WARPLab/Reference/Interface/X245#rx_rxhp rx_rxhp] ---- == 7.6.0 Release: == '''Download: [http://warpproject.org/dl/refdes/warplab/v7/release/WARPLab_Reference_Design_7.6.0.zip 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 || [browser:ResearchApps/PHY/WARPLAB/WARPLab7?rev=4713 4713] || 14.4 || MB/AXI || 2009b or later || 1-2: WARP v3 on-board interfaces [[BR]] 3-4: Requires [wiki:HardwareUsersGuides/FMC-RF-2X245 FMC-RF-2X245] || '''WARPLab 7.6.0 requires an SVN update to your [wiki:edk_user_repository 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 [http://warpproject.org/forums/viewtopic.php?pid=14265#p14265 this forum post]. This will be addressed in WARPLab 7.7.0. Other changes: * Added [wiki:WARPLab/Examples/MIMO_OFDM 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 [http://warpproject.org/trac/browser/edk_user_repository/WARP/sw_services/WARP_ip_udp_v1_00_a?rev=4713 '''WARP IP/UDP v1.00a'''] Ethernet packet processing library. * Updated MEX transport (see [wiki:WARPLab/Benchmarks 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 [http://warpproject.org/trac/browser/ResearchApps/PHY/WARPLAB/WARPLab7/C_Code_Reference/include/wl_common.h?rev=4708 wl_common.h] * Added WARPLab command to control the [wiki:WARPLab/Reference/Interface/X245#rx_hpf_corn_freq RX HPF cutoff frequency] * Fixed bug when using CM-PLL input / output triggers * Introduced new syntax for trigger and interface IDs; refer (see [wiki:WARPLab/Porting#ChangesinWARPLab7.6 Porting guide] for more information) * Cleaned up C code and added more comments * Cleaned up M code examples ---- == 7.5.1 Release: == '''Download: [http://warpproject.org/dl/refdes/warplab/v7/release/WARPLab_Reference_Design_7.5.1.zip 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 || [browser:ResearchApps/PHY/WARPLAB/WARPLab7?rev=4487 4487] || 14.4 || MB/AXI || 2009b or later || 1-2: WARP v3 on-board interfaces [[BR]] 3-4: Requires [wiki:HardwareUsersGuides/FMC-RF-2X245 FMC-RF-2X245] || || WARP v2 || 7.5.1 || 12-Mar-2015 || [browser:ResearchApps/PHY/WARPLAB/WARPLab7?rev=4487 4487] || 14.4 || PPC/PLB || 2009b or later || 1-2: Radios in slots 2 & 3 [[BR]] 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 [wiki:WARPLab/Porting#NewScriptConventionsinWARPLab7.5andBeyond 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: [browser:ResearchApps/PHY/WARPLAB/WARPLab7/Sysgen_Reference/w2/warplab_agc_v3 warplab_agc_v3]. * Updated to version 3.04.a of the WARPxilnet library - be sure to update your [wiki:edk_user_repository 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 [wiki:../HardwareConfiguration/WARPv2 WARP v2 hardware] usage for details * Due to hardware limitations, WARP v2 still only supports 16 kB [wiki:WARPLab/BufferSizes 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 [wiki:edk_user_repository 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 [wiki:WARPLab/Benchmarks 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 [wiki:WARPLab/Benchmarks 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 [http://warpproject.org/trac/browser/ResearchApps/PHY/WARPLAB/WARPLab7/C_Code_Reference/wl_node.c?rev=4487#L46 node.c] * Implemented fix for AXI Ethernet v3.01.a bug detailed in [http://www.xilinx.com/support/answers/56158.html 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 [http://warpproject.org/trac/browser/ResearchApps/PHY/WARPLAB/WARPLab7/C_Code_Reference?rev=4487 C code] * Cleaned up code examples and added more comments ---- == 7.5.0 Release: == '''Download: [http://warpproject.org/dl/refdes/warplab/v7/release/WARPLab_Reference_Design_7.5.0.zip 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 || [browser:ResearchApps/PHY/WARPLAB/WARPLab7?rev=4388 4388] || 14.4 || MB/AXI || 2009b or later || 1-2: WARP v3 on-board interfaces [[BR]] 3-4: Requires [wiki:HardwareUsersGuides/FMC-RF-2X245 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 [wiki:../BufferSizes Sample Buffer Sizes] page for details on the new waveform length limits. We extend our thanks to [https://www.seemoo.tu-darmstadt.de/team/matthias-schulz/ 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 [wiki:WARPLab/Porting#NewScriptConventionsinWARPLab7.5andBeyond 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 [wiki:WARPLab/FPGAArchitecture/WARPLAB_7_5_0 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: [browser:ResearchApps/PHY/WARPLAB/WARPLab7/Sysgen_Reference/w3/warplab_agc_v3 warplab_agc_v3]. * Updated to version 3.04.a of the WARPXilnet library - be sure to update your [wiki:edk_user_repository edk_user_repository] before compiling the reference software project * Added new spectrogram Rx example ([wiki:WARPLab/Examples/Spectrogram 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 [wiki:../HardwareConfiguration/WARPv3 WARP v3 hardware] usage for details * Added support for the CM-PLL clock module * Upgraded to the latest [wiki:cores/w3_clock_controller w3_clock_controller_axi] core * WARPLab assumes you have not written custom clock configurations to the EEPROM (see [wiki:cores/w3_clock_controller#Pre-BootConfiguration w3_clock_controller]). If you have customized the clock configurations in the EEPROM be sure to update {{{node_clk_initialize()}}} in [browser:/ResearchApps/PHY/WARPLAB/WARPLab7/C_Code_Reference/wl_node.c#L544 wl_node.c] to match. * '''NOTE:''' the updated core changes the interpretation of the clock module switches! See the WARPLab [wiki:../HardwareConfiguration/WARPv3 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: [http://warpproject.org/dl/refdes/warplab/v7/release/WARPLab_Reference_Design_7.4.0.zip 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 || [browser:ResearchApps/PHY/WARPLAB/WARPLab7?rev=2886 2886] || 14.4 || MB/AXI || 2009b or later || 1-2: WARP v3 on-board interfaces [[BR]] 3-4: Requires [wiki:HardwareUsersGuides/FMC-RF-2X245 FMC-RF-2X245] || || WARP v2 || 7.4.0 || 25-Feb-2014 || [browser:ResearchApps/PHY/WARPLAB/WARPLab7?rev=2886 2886] || 14.4 || PPC/PLB || 2009b or later || 1-2: Radios in slots 2 & 3 [[BR]] 3-4: Radios in slots 1 & 4 || * '''Requires use of WARPXilnet library 3.03.a''' - [wiki:edk_user_repository update your edk_user_repository] before compiling the reference software project * '''Added [wiki:WARPLab/Examples/OFDM 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', );}}} * {{{wl_basebandCmd(nodes, 'agc_reset_timeout_value',