wiki:OFDMReferenceDesign/Changelog

Version 33 (modified by murphpo, 15 years ago) (diff)

--

OFDM Reference Design History

OFDM Reference Design v12.0 (2009-Apr-9)

The code and models for this design correspond to svn rev 1171.
This project requires the latest versions of the Xilinx tools (ISE 10.1.03 + IP2, EDK 10.1.03, Sysgen 10.1.3.1386).
Download the full XPS project: OFDM_ReferenceDesign_v12_0.zip

Hardware Changes

  • Packet detector updates
    • Integrated the RSSI-based packet detector core into the OFDM transceiver.
    • Removed the I/Q-based packet detector that was previously present. This is now only used in simulation.
    • The integrated detector's registers were rearranged (relative to the older separate detector core)
    • Added a minimum duration requirement to the packet detector. This block requires the average RSSI exceed the programmed energy threshold for a minimum number of cycles before the packet detecting output is asserted. The required minimum duration is programmable via a register.
    • Added logic to de-assert the IDLE for DIFS output whenever the transceiver is actively transmitting or receiving a packet. When either Tx or Rx is active, the medium is known to be busy, so the IDLE signal can safely be forced low, independent of RSSI readings.
  • Interrupt changes
    • Removed all interrupts in the hardware design
    • The transceiver now asserts register bits for reception events (good/bad header, good/bad packet); the MAC polls this register.
    • The user I/O and UART interrupts were replaced by polling the GPIO and UARTLITE registers.
    • The OFDM timer interrupts were replaced by polling the status of each timer in the core.
  • Upgraded EEPROM controller core HDL with better clocking design. Instead of generating a slow clock, the core generates a slow clock enable and uses the fast clock for all synchronous elements. This fixes the long-standing, intermittent timing error.
  • Fixed the PHY's handling of packet errors when all received bytes are zero. Previously this caused an erroneous good packet interrupt; now it correctly asserts the bad header and bad packet status bits.
  • Added a programmable saturating scale factor after the IFFT in the transmitter. This can increase the average transmission power at the cost of increased clipping. This scale factor has been defaulted to a value that jointly maximizes transmission power while minimizing transmitted EVM.

Software Changes

  • Updated WARPPHY and WARPMAC with register map for integrated transceiver and packet detector.
  • Updated EEPROM driver to match new hardware.
  • Replaced warpmac_pollEthernet with the more general warpmac_pollPeripherals
    • This function polls the timer, the PHY, and the Ethernet
    • One of the four timers in the warp_timer core is dedicated to the polling of the UART and User I/O buttons
  • Fixed bug in the function for setting random backoff timers found by forum user domenique (See post here). Previously the minimum contention window was [0,7]. This is now [0,15] like 802.11
  • Lowered packet detection threshold from 9000 to 3400. This should improve low SNR detection
  • Raised CSMA threshold from 6000 to 8192. This is more in line with 802.11 and should make nodes more aggressive in the presence of non-decodable interference

Using the Design

  • The CSMAMAC code uses the UART to control various parameters at run time. Use a terminal emulator set to 57600bps. The following commands are implemented by default:
    • P/p : Increase/decrease the packet detection energy threshold by 100
    • D/d : Increase/decrease the packet detection required minimum energy duration by 1
    • C/c : Increase/decrease the carrier sensing energy threshold by 100
    • F/f : Increase/decrease the 2.4GHz center frequency by 1 channel
    • A/a : Use the radio in slot 3/2 for the active antenna in the SISO link
    • 1/2/4/6 : Use BPSK/QPSK/16-QAM/64-QAM for the full-rate modulation scheme for all transmitted payloads
  • The four user LEDs are programmed by default to toggle based on packet receptions. The top two LEDs will toggle for each good packet received. The bottom two LEDs will toggle for each bad header or bad payload received.
  • The right seven-segment display is programmed to show the node's ID on boot (set by the DIP switch); the right displays shows the re-transmit count of each received packet.
  • The new interrupt-free design requires some minor modifications to user code from reference design v11.2
    • Call warpphy_pollPeripherals() in the main while(1) loop (instead of warpphy_pollEthernet()).
    • User code should still register callbacks for the various events (PHY good/bad Rx, timers, UART, user I/O); WARPMAC will execute these callbacks same as before (even though it's driven by polling instead of interrupts).

OFDM Reference Design v11.2 (2008-Dec-1)

The code and models for this design correspond to svn rev 1128.
This project requires the latest versions of the Xilinx tools (ISE 10.1.03 + IP2, EDK 10.1.03, Sysgen 10.1.3.1386).
Download the full XPS project: OFDM_ReferenceDesign_v11_2.zip

Hardware Changes

  • None; hardware is identical to v11.1

Software Changes

  • Updated radio controller driver to fix SetTxTiming function; the TxStart parameter was being ignored in v11 and v11.1 (due to hardware changes not correctly reflected in the corresponding driver calls)

OFDM Reference Design v11.1 (2008-Oct-18)

The code and models for this design correspond to svn rev 1111.
This project requires the latest versions of the Xilinx tools (ISE 10.1.03 + IP2, EDK 10.1.03, Sysgen 10.1.3.1386).
Download the full XPS project: OFDM_ReferenceDesign_v11_1.zip

Hardware Changes

  • Fixed a bug in the PHY that broke MIMO mode in refdes v11, related to the faster FFT in the receiver (thanks to the Drexel guys for finding it)

Software Changes

  • Updated CSMAMAC with better "routing" table (used to map node IDs to MAC addresses)
  • Updated warpphy's MIMO/SISO mode switching code to include RxScaling updates
  • ifdef'd in/out code to support future PHY with convolutional code support (v11.1 is uncoded - v12 will be first coded release)

OFDM Reference Design v11 (2008-Sep-2)

The code and models for this design correspond to svn rev 1064.
This project requires the latest versions of the Xilinx tools (ISE 10.1.02 + IP2, EDK 10.1.02, Sysgen 10.1.2.1250).
Download the full XPS project: OFDM_ReferenceDesign_v11.zip

Hardware Changes

  • Updated clock config core to latest version (fixes bad default values for en/disabled outputs)
  • Replaced ofdm_timer with new warp_timer peripheral (now includes four independent timers)
  • Reworked PHY to clock Rx FFT at system clock (40MHz).
    • This reduces the Rx latency by ~4µsec; DATA-ACK turnaround now 19.8µsec.
    • This also helps CFO, allowing the pilot tones to apply phase corrections one OFDM symbol earlier.
  • Redesigned pilot tone phase averaging to reduce intra-symbol variance.
  • Re-added shared memories for flexible Tx/Rx modulation (these were removed in v10 due to Sysgen 10.1.00 limitations).
  • Added User I/O board controller
  • Added interrupt for UART
  • Connected reset for secondary PLB46 (fixing bug found by patel_gaurav90)

Software Changes

  • New RTS/CTS implementation by Keith Wilhelm (undergrad intern in the CMC Lab)
  • Updated WARPMAC/WARPPHY with support for PHY changes
    • Updated timer wrapper functions for new warp_timer hardware
    • Updated modulation control function for new buffer structure
    • New UART ISR and user callback registration functions
  • New debug "MAC" top-level code to control/observe/debug PHY in hardware
  • Added basic Rx statistics display via the User I/O board LCD screen
  • Moved interactive debug menu to UART interrupt callback (instead of in main while(1) loop)
  • Updated AGC thresholds to better values (based on empirical tests)
  • Fixed support for MIMO mode in WARPMAC/WARPPHY (now correctly calculates PHY parameters in either SISO or MIMO mode)

OFDM Reference Design v10 (2008-Jul-17)

  • Known issue: see this forum post for details; this will be fixed in ref design v11
  • Download the XPS project: OFDM_ReferenceDesign_v10.zip
  • Built using cores and code as of repository revision 1010
  • This design requires version 10.1.02 of the Xilinx tools
  • Data-ACK turnaround time is now 23µs (as measured by the fall of data Tx to rise of ACK Tx)

Hardware Changes

  • Xilinx deprecated the OPB and PLB34 busses. PLB46 is the new (and only) bus standard used in this design
  • The System Generator cores (OFDM transceiver, timer, packet detector & AGC) were created using Sysgen's new PLB46 export flow; sysgen2opb is no longer required
  • Xilinx did not port the plb_ethernet EMAC forward to PLB46. This design uses the xps_ethernetlite EMAC instead, customized to enable promiscuous mode (i.e. no receive address filtering)
  • The xps_centraldma pcore is used to handle DMA (since the EMAC no longer provides its own DMA)
  • The OFDM transceiver has a new interrupt output indicating the reception of a bad header
  • Fixed a few logic bugs in the transceiver's handling of multiple interrupts
  • Merged all user I/O into single GPIO core (LEDs, hex displays, push buttons & DIP switch); a header file helps with the required bit masking/shifting. The XBD files have been updated to use the same user I/O scheme.

Software Changes

  • Ethernet is now operated exclusively in a polling mode for increased performance
  • WARPMAC/WARPPHY re-architected and cleaned; the code flows for transmitting and receiving packets are now consistent across various packet types
  • A layer of register access macros was added between WARPPHY and the OFDM cores; these macros adapt the old sysgen2opb register access code to the new Sysgen PLB46 export code. These macros will retired in a future revision.

OFDM Reference Design v09 (2008-Jun-11)

  • Download the XPS project: OFDM_ReferenceDesign_v09.zip
  • Built using cores and code as of repository revision 906
  • This version assumes a different location for TxDCO calibration information in the EEPROM of the radios. Please re-calibrate before running (instructions are here)
  • This will be the last reference design that will use the version 9 Xilinx tools. Reference Design v10 will use the version 10 Xilinx tools.
  • Updated warpmac/warpphy & csmamac
    • Header interrupts are used to pipeline receive processions (i.e. an ACK is constructed and loaded into a PHY before the packet is even completely received)
    • Fall of Tx data to rise of Tx ACK turn-around time reduced from 80 microseconds to 30 microseconds
    • By default, left and right push buttons use left and right radios respectively (only for MIMO WARP kits)
    • Numerous tweaks to MAC timing parameters

OFDM Reference Design v08 (2008-Feb-08)

  • Download the XPS project: OFDM_ReferenceDesign_v08.zip
  • Built using cores and code as of repository revision 834
  • Updated OFDM PHY
    • Added support for header-only packets (like ACKs); numFullRateSymbols can be zero
    • Last two bytes of header are now a 16-bit CRC of just the header
    • Added new interrupt output for good header; asserts for non-header-only packets when header CRC passes
    • Added TxDone interrupt output; asserts when a packet transmission finishes
    • Fixed bugs in dynamic modulation mask usage
  • Updated warpmac/warpphy & csmamac
    • Changes to support new PHY features
    • Added TxDone & GoodHeader interrupt handlers; unused in this version
    • Added lots of comments to the source code to better explain various MAC/PHY interactions