Changes between Version 6 and Version 7 of 802.11/MAC/Support_HW
- Timestamp:
- Apr 17, 2016, 12:19:30 PM (8 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
802.11/MAC/Support_HW
v6 v7 2 2 3 3 = MAC Support Core = 4 The 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. 4 5 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.6 The 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. 6 7 7 == Timers == 8 The 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 10 A few of the key subsystems in the {{{wlan_mac_hw}}} core are described in detail below. 11 12 == Post Tx/Rx Timers == 8 13 9 14 Many MAC algorithms require precise scheduling of transmissions relative to some preceding transmission or reception event. Examples in the DCF include the following: … … 12 17 * Contention windows must begin a timeout interval after a previous unsuccessful transmission 13 18 14 T o enable these and other custom applications, we have designed the hardware with 4 independent timers that can be configured via software in CPU_LOW:19 The {{{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. 15 20 16 1. '''postRxTimer1''' 17 1. '''postRxTimer2''' 18 1. '''postTxTimer1''' 19 1. '''postTxTimer2''' 21 The MAC Low Framework provides macros for configuring the 4 timers and checking whether a timer is currently running: 20 22 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 27 wlan_mac_set_postTx_timer1(d); 28 wlan_mac_set_postTx_timer2(d); 29 wlan_mac_set_postRx_timer1(d); 30 wlan_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 35 wlan_mac_postTx_timer1_en(x); 36 wlan_mac_postTx_timer2_en(x); 37 wlan_mac_postRx_timer1_en(x); 38 wlan_mac_postRx_timer2_en(x); 39 40 // Check if a post Tx/Rx timer is running 41 wlan_mac_get_tx_ctrl_status() & WLAN_MAC_TXCTRL_STATUS_MASK_POSTTX_TIMER1_RUNNING; 42 wlan_mac_get_tx_ctrl_status() & WLAN_MAC_TXCTRL_STATUS_MASK_POSTTX_TIMER2_RUNNING; 43 wlan_mac_get_tx_ctrl_status() & WLAN_MAC_TXCTRL_STATUS_MASK_POSTRX_TIMER1_RUNNING; 44 wlan_mac_get_tx_ctrl_status() & WLAN_MAC_TXCTRL_STATUS_MASK_POSTRX_TIMER2_RUNNING; 45 }}} 46 47 The 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 == 22 52 23 53 == MAC Tx Controller A ==