Changes between Version 5 and Version 6 of OFDM/MIMO/Docs/ModelSharedMem


Ignore:
Timestamp:
Jan 8, 2007, 2:31:40 PM (17 years ago)
Author:
murphpo
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • OFDM/MIMO/Docs/ModelSharedMem

    v5 v6  
    11== [wiki:OFDM/MIMO MIMO OFDM] | [wiki:OFDM/MIMO#Documentation Documentation] | Shared Memory Spaces ==
    22
    3 [wiki:sysgen2opb sysgen2opb]
     3The WARP MIMO OFDM core is an OPB-compliant peripheral core, created using our [wiki:sysgen2opb sysgen2opb] tool. The core utilizes sysgen2opb's shared memory block support, which creates memory blocks in the core which are directly mapped into the address space of the host processor. The OFDM core has four of these shared memory blocks, which are desribed in detail below.
     4
     5= Packet Buffers =
     6The first two shared memory blocks function as packet buffers. The OFDM core uses separate buffers for the transmit and receive paths.
     7
     8== Transmit Packet Buffer ==
     9The transmit packet buffer is the memory block used for a packet which the user application needs to send over the air. This memory space is a write-only memory block with 4096 bytes of storage (0x1000 bytes). The user application must write an integral number of 32-bit words comprising a packet before enabling transmission. The memory block is accessed by directly writing to the base address of the block's address space. The OFDM core's driver provides a C macro ([source:/PlatformSupport/CustomPeripherals/drivers/ofdm_TxRx_mimo_opbw_v1_07_a/src/ofdm_TxRx_mimo.h@L#L141 ofdm_TxRx_mimo_SMWO_TxPktBuffer_OFFSET]) which specifies this address relative to the core's base address. The core's base address is provided as a C macro by the EDK during compilation and will usually be named XPAR_OFDM_TXRX_MIMO_OPBW_0_BASEADDR.
     10
     11This C-code example below illustrates one way of interfacing to the transmit packet buffer. This code is adapted from the OFDM core's driver ([source:/PlatformSupport/CustomPeripherals/drivers/ofdm_TxRx_mimo_opbw_v1_07_a/src/ofdm_Tx_mimo.h@L#L44 ofdm_Tx_mimo.h]).
     12{{{
     13#!c
     14memcpy (
     15        (unsigned int*)(XPAR_OFDM_TXRX_MIMO_OPBW_0_BASEADDR + ofdm_TxRx_mimo_SMWO_TxPktBuffer_OFFSET),
     16        (unsigned int*)myPacketPointer,
     17        myPacketLength
     18);
     19}}}
     20
     21
     22
     23== Receive Packet Buffer ==
     24The receive packet buffer is the memory block used by the user application for reading a packet which which has been received over the air. This memory space is a read-only memory block with 4096 bytes of storage (0x1000 bytes). The user application must read an integral number of 32-bit words comprising a packet. The memory block is accessed by directly read the base address of the block's address space. The OFDM core's driver provides a C macro ([source:/PlatformSupport/CustomPeripherals/drivers/ofdm_TxRx_mimo_opbw_v1_07_a/src/ofdm_TxRx_mimo.h@L#L141 ofdm_TxRx_mimo_SMRO_RxPktBuffer_OFFSET]) which specifies this address relative to the core's base address. The core's base address is provided as a C macro by the EDK during compilation and will usually be named XPAR_OFDM_TXRX_MIMO_OPBW_0_BASEADDR.
     25
     26This C-code example below illustrates one way of interfacing to the receive packet buffer. This code is adapted from the OFDM core's driver ([source:/PlatformSupport/CustomPeripherals/drivers/ofdm_TxRx_mimo_opbw_v1_07_a/src/ofdm_Rx_mimo.h@L#L55 ofdm_Rx_mimo.h]).
     27{{{
     28#!c
     29memcpy (
     30        (unsigned int*)myPacketPointer,
     31        (unsigned int*)(XPAR_OFDM_TXRX_MIMO_OPBW_0_BASEADDR + ofdm_TxRx_mimo_SMRO_RxPktBuffer_OFFSET),
     32        myPacketLength
     33);
     34}}}
    435
    536= Programmable Modulation Schemes =
    6 The WARP MIMO OFDM core implements a flexible modulation scheme. The core allows any combination of modulation schemes across subcarriers and antennas to be used in a given packet. The schemes are programmed by writing a modulation selection for each subcarrier to a shared memory block in the core. Unique schemes can be programmed for the full-rate symbols at antennas A and B and for the base-rate symbols; see [wiki:OFDM/MIMO/Docs/PHYDetails/FrameFormat OFDM Frame Format] for more details about base- and full-rate symbols.
     37The second pair of shared memory blocks is used for programming the OFDM core's modulation settings. The WARP MIMO OFDM core implements a flexible modulation scheme. The core allows any combination of modulation schemes across subcarriers and antennas to be used in a given packet. The schemes are programmed by writing a modulation selection for each subcarrier to a shared memory block in the core. Unique schemes can be programmed for the full-rate symbols at antennas A and B and for the base-rate symbols; see [wiki:OFDM/MIMO/Docs/PHYDetails/FrameFormat OFDM Frame Format] for more details about base- and full-rate symbols.
    738
    839The current version of the OFDM core requires the modulation schemes to be pre-programmed at both the transmitterand receiver. A future revision will include the ability to communicate this information with the header of each packet.
    940
    10 The transmitter and receiver sections of the core have separate modulation selection memory blocks. The organization of these two memory blocks are identical. The C-code below illustrates the memory organization and how user-code can write to these memory blocks. The macros ''ofdm_TxRx_mimo_SMWO_TxModulation_OFFSET'' and ''ofdm_TxRx_mimo_SMWO_TxModulation_OFFSET'' represent the address offsets (relative to the OFDM core's base address) for the two memory blocks. These macros are defined in the OFDM core's driver ([source:/PlatformSupport/CustomPeripherals/drivers/ofdm_TxRx_mimo_opbw_v1_07_a/src/ofdm_TxRx_mimo.h@449#L141 ofdm_TxRx_mimo.h]).
     41The transmitter and receiver sections of the core have separate modulation selection memory blocks. The organization of these two memory blocks are identical. The C-code below illustrates the memory organization and how user-code can write to these memory blocks. The macros ''ofdm_TxRx_mimo_SMWO_TxModulation_OFFSET'' and ''ofdm_TxRx_mimo_SMWO_TxModulation_OFFSET'' represent the address offsets (relative to the OFDM core's base address) for the two memory blocks. These macros are defined in the OFDM core's driver ([source:/PlatformSupport/CustomPeripherals/drivers/ofdm_TxRx_mimo_opbw_v1_07_a/src/ofdm_TxRx_mimo.h@L#L141 ofdm_TxRx_mimo.h]).
    1142
    1243{{{
     
    6293}}}
    6394
    64 == Receive Packet Buffer ==
    65 === Address: 0x10000 ===
    66 
    67 
    68 == Transmit Packet Buffer ==
    69 === Address: 0x30000 ===
    70 
    71