Changes between Version 6 and Version 7 of 802.11/MAC/Support_HW


Ignore:
Timestamp:
Apr 17, 2016, 12:19:30 PM (8 years ago)
Author:
murphpo
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • 802.11/MAC/Support_HW

    v6 v7  
    22
    33= MAC Support Core =
     4The software implementation of the lower-level MAC in CPU Low operates in real time. A key requirement of the lower-level MAC is to monitor the medium and react to Tx and Rx events on precise time boundaries relative to medium events. In order to simplify the MAC software implementation we use a small core in the FPGA. This core implements various timers and simple state machines which facilitate real-time operation of the lower-level MAC.
    45
    5 In addition to the state implemented in the CPU_LOW processor, certain time critical MAC behaviors are implemented directly in the FPGA fabric via the MAC Support Core. This core was designed to meet the needs of the DCF implementation of 802.11 while still remaining flexible for custom applications. There are three basic components to the peripheral: Timers, MAC Tx Controller A, MAC Tx Controller B.
     6The MAC support core is '''not''' a fixed DCF implementation. All behaviors in the MAC core are defined by software. The primitives implemented in the core enable our DCF implementation, but the same primitives can be used for a wide variety of specialized MAC protocols.
    67
    7 == Timers ==
     8The core is named {{{wlan_mac_hw}}} and is designed in System Generator. The source model is in the repository at [browser:/ReferenceDesigns/w3_802.11/sysgen/wlan_mac_hw /ReferenceDesigns/w3_802.11/sysgen/wlan_mac_hw].
     9
     10A few of the key subsystems in the {{{wlan_mac_hw}}} core are described in detail below.
     11
     12== Post Tx/Rx Timers ==
    813
    914Many MAC algorithms require precise scheduling of transmissions relative to some preceding transmission or reception event. Examples in the DCF include the following:
     
    1217* Contention windows must begin a timeout interval after a previous unsuccessful transmission
    1318
    14 To enable these and other custom applications, we have designed the hardware with 4 independent timers that can be configured via software in CPU_LOW:
     19The {{{wlan_mac_hw}}} core implements dedicated post Tx/Rx timers. There are 4 times total, 2 each for post-Tx and post-Rx. The timers start automatically following Tx/Rx event. The timer durations are programmed from software in CPU Low. When a timer expires it can trigger Tx events via the Tx Controllers described below.
    1520
    16 1.  '''postRxTimer1'''
    17 1.  '''postRxTimer2'''
    18 1.  '''postTxTimer1'''
    19 1.  '''postTxTimer2'''
     21The MAC Low Framework provides macros for configuring the 4 timers and checking whether a timer is currently running:
    2022
    21 These timers each independently begin after the prior transmission or reception. They count until a user-specified interval of time has elapsed and then assert an output to the MAC Tx Controller A and MAC Tx Controller B subsystems. In the stock DCF implementation of the Mango 802.11 Reference Design, only '''postTxTimer2''' and '''postRxTimer1''' are used. Their durations are set to a ACK timeout and a SIFS respectively. One future straightforward extension to the design would be to use '''postTxTimer1''' to enable the "burst" transmission capabilities introduced in the 802.11e amendment where each transmission is separated by a deterministic SIFS or RIFS interval.
     23{{{#!c
     24
     25// Set the "count to" value for the post Tx/Rx timers
     26//  Argument d is in units of 100nsec
     27wlan_mac_set_postTx_timer1(d);
     28wlan_mac_set_postTx_timer2(d);
     29wlan_mac_set_postRx_timer1(d);
     30wlan_mac_set_postRx_timer2(d);
     31
     32// Enable/Disable post Tx/Rx timers
     33//  Argument x should be 0 (disable) or 1 (enable)
     34//  A timer only runs if it is enabled and has a non-zero "count to" value
     35wlan_mac_postTx_timer1_en(x);
     36wlan_mac_postTx_timer2_en(x);
     37wlan_mac_postRx_timer1_en(x);
     38wlan_mac_postRx_timer2_en(x);
     39
     40// Check if a post Tx/Rx timer is running
     41wlan_mac_get_tx_ctrl_status() & WLAN_MAC_TXCTRL_STATUS_MASK_POSTTX_TIMER1_RUNNING;
     42wlan_mac_get_tx_ctrl_status() & WLAN_MAC_TXCTRL_STATUS_MASK_POSTTX_TIMER2_RUNNING;
     43wlan_mac_get_tx_ctrl_status() & WLAN_MAC_TXCTRL_STATUS_MASK_POSTRX_TIMER1_RUNNING;
     44wlan_mac_get_tx_ctrl_status() & WLAN_MAC_TXCTRL_STATUS_MASK_POSTRX_TIMER2_RUNNING;
     45}}}
     46
     47The reference DCF implementation uses two timers:
     48 * postTx_timer2: timeout timer, indicates timeout following RTS and DATA transmissions
     49 * postRx_timer1: SIFS timer, triggers CTS/DATA/ACK Tx following RTS/CTS/DATA receptions
     50
     51== MAC Core Tx Controllers ==
    2252
    2353== MAC Tx Controller A ==