Basic Structures and Memory Initialization
[Physical Layer Reference Implementation]


Detailed Description

This module is responsible for defining and initializing the PHY variables during static configuration of OpenAirInterface.


Data Structures

struct  TX_VARS
 Data structure for transmission. More...
struct  RX_VARS
 Data structure for reception. More...
struct  PHY_MEASUREMENTS
 Measurement Variables. More...
struct  PHY_RESOURCES
 Physical Resource Descriptor. More...
struct  PHY_CONFIG
 Static Configuration Structure. More...
struct  SACH_DIAGNOSTICS
 SACH Diagnostics structure. More...
struct  PHY_VARS
 Top-level PHY Data Structure. More...

Defines

#define ZERO   0
#define ONE   1
#define FALSE   0
#define TRUE   1
#define MINUSONE   (-1)
#define WORD_SIZE   32
#define NUMBER_OF_OFDM_CARRIERS   (PHY_config->PHY_framing.Nd)
#define NUMBER_OF_SYMBOLS_PER_FRAME   (PHY_config->PHY_framing.Nsymb)
#define LOG2_NUMBER_OF_OFDM_CARRIERS   (PHY_config->PHY_framing.log2Nd)
#define NUMBER_OF_ZERO_CARRIERS   (PHY_config->PHY_framing.Nz)
#define NUMBER_OF_USEFUL_CARRIERS   (NUMBER_OF_OFDM_CARRIERS-NUMBER_OF_ZERO_CARRIERS)
#define NUMBER_OF_USEFUL_CARRIERS_BYTES   (NUMBER_OF_USEFUL_CARRIERS>>2)
#define HALF_NUMBER_OF_USEFUL_CARRIERS   (NUMBER_OF_USEFUL_CARRIERS>>1)
#define HALF_NUMBER_OF_USEFUL_CARRIERS_BYTES   (HALF_NUMBER_OF_USEFUL_CARRIERS>>2)
#define FIRST_CARRIER_OFFSET   (HALF_NUMBER_OF_USEFUL_CARRIERS+NUMBER_OF_ZERO_CARRIERS)
#define NUMBER_OF_OFDM_SYMBOLS_PER_SLOT   16
#define SLOTS_PER_FRAME   (NUMBER_OF_SYMBOLS_PER_FRAME/NUMBER_OF_OFDM_SYMBOLS_PER_SLOT)
#define CHBCH_PDU_SIZE   144
#define MRBCH_PDU_SIZE   19
#define MRSCH_INDEX   3
#define EXTENSION_TYPE   (PHY_config->PHY_framing.Extension_type)
#define NUMBER_OF_OFDM_CARRIERS_BYTES   NUMBER_OF_OFDM_CARRIERS*4
#define HALF_NUMBER_OF_USER_CARRIERS_BYTES   NUMBER_OF_USEFUL_CARRIERS/2
#define CYCLIC_PREFIX_LENGTH   (PHY_config->PHY_framing.Nc)
#define CYCLIC_PREFIX_LENGTH_SAMPLES   (CYCLIC_PREFIX_LENGTH*2)
#define CYCLIC_PREFIX_LENGTH_BYTES   (CYCLIC_PREFIX_LENGTH*4)
#define OFDM_SYMBOL_SIZE_SAMPLES   ((NUMBER_OF_OFDM_CARRIERS + CYCLIC_PREFIX_LENGTH)*2)
#define OFDM_SYMBOL_SIZE_SAMPLES_MAX   4096
#define OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES   (OFDM_SYMBOL_SIZE_SAMPLES/2)
#define OFDM_SYMBOL_SIZE_SAMPLES_NO_PREFIX   ((NUMBER_OF_OFDM_CARRIERS)*2)
#define OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES_NO_PREFIX   (OFDM_SYMBOL_SIZE_SAMPLES_NO_PREFIX/2)
#define OFDM_SYMBOL_SIZE_BYTES   (OFDM_SYMBOL_SIZE_SAMPLES*2)
#define OFDM_SYMBOL_SIZE_BYTES_NO_PREFIX   (OFDM_SYMBOL_SIZE_SAMPLES_NO_PREFIX*2)
#define SLOT_LENGTH_BYTES   (OFDM_SYMBOL_SIZE_BYTES * NUMBER_OF_OFDM_SYMBOLS_PER_SLOT)
#define SLOT_LENGTH_BYTES_NO_PREFIX   (OFDM_SYMBOL_SIZE_BYTES_NO_PREFIX * NUMBER_OF_OFDM_SYMBOLS_PER_SLOT)
#define FRAME_LENGTH_SAMPLES   (NUMBER_OF_SYMBOLS_PER_FRAME*OFDM_SYMBOL_SIZE_SAMPLES)
#define FRAME_LENGTH_COMPLEX_SAMPLES   (FRAME_LENGTH_SAMPLES/2)
#define FRAME_LENGTH_SAMPLES_NO_PREFIX   (NUMBER_OF_SYMBOLS_PER_FRAME*OFDM_SYMBOL_SIZE_SAMPLES_NO_PREFIX)
#define FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX   (FRAME_LENGTH_SAMPLES_NO_PREFIX/2)
#define NB_RACH   1
#define RACH_TIME_ALLOC   (0x01)
#define RACH0_FREQ_ALLOC   (0xffff)
#define SYMBOLS_PER_TIME_ALLOC   4
#define TIME_ALLOC_TO_SLOT_SHIFT   6
#define NUMBER_OF_SACH   (3)
#define NUMBER_OF_FREQUENCY_GROUPS   16
#define NUMBER_OF_RACH_FREQUENCY_GROUPS   16
#define NUMBER_OF_RACH_SYMBOLS   1
#define NUMBER_OF_CARRIERS_PER_GROUP   (NUMBER_OF_USEFUL_CARRIERS/NUMBER_OF_FREQUENCY_GROUPS)
#define NUMBER_OF_SACH_DATA_CARRIERS_PER_GROUP   (NUMBER_OF_CARRIERS_PER_GROUP-NUMBER_OF_SACH_PILOTS)
#define NUMBER_OF_CLUSTERS   2
#define NUMBER_OF_TERMINALS_PER_CLUSTER   7
#define NUMBER_OF_FREQBANDS   4
#define NUMBER_OF_CHSCH_SYMBOLS   (PHY_config->PHY_chsch[0].Nsymb)
#define NUMBER_OF_CHSCH   (4)
#define NUMBER_OF_CHSCH_SYMBOLS_MAX   (4)
#define NUMBER_OF_SCH_SYMBOLS   (PHY_config->PHY_sch[0].Nsymb)
#define NUMBER_OF_SCH_SYMBOLS_MAX   (4)
#define NUMBER_OF_MRSCH_SYMBOLS   (PHY_config->PHY_sch[1].Nsymb)
#define NUMBER_OF_CHBCH_SYMBOLS   (PHY_config->PHY_chbch[1].Nsymb)
#define NUMBER_OF_CHBCH_PILOTS   (PHY_config->PHY_chbch[1].Npilot)
#define NUMBER_OF_MRBCH_SYMBOLS   (PHY_config->PHY_mrbch.Nsymb)
#define NUMBER_OF_MRBCH_PILOTS   (PHY_config->PHY_mrbch.Npilot)
#define CHBCH_FREQUENCY_REUSE_FACTOR   (PHY_config->PHY_chbch[1].FreqReuse)
#define CHBCH_FREQUENCY_REUSE_IND   (PHY_config->PHY_chbch[1].FreqReuse_Ind)
#define LOG2_NUMBER_OF_CHBCH_PILOTS   4
#define LOG2_NUMBER_OF_MRBCH_PILOTS   3
#define INTDEPTH_CHBCH   (PHY_config->PHY_chbch[1].IntDepth)
#define CHBCH_PILOT_SPACING   (NUMBER_OF_USEFUL_CARRIERS/NUMBER_OF_CHBCH_PILOTS/CHBCH_FREQUENCY_REUSE_FACTOR)
#define FIRST_CHBCH_PILOT_OFFSET   (FIRST_CARRIER_OFFSET + (CHBCH_PILOT_SPACING>>1))
#define SYMBOL_OFFSET_CHBCH   (PHY_config->PHY_chbch[1].symbol)
#define SYMBOL_OFFSET_CHSCH   (PHY_config->PHY_chsch[0].symbol)
#define SYMBOL_OFFSET_MRBCH   (PHY_vars->tx_rx_switch_point+7)
#define SYMBOL_OFFSET_MRSCH   (PHY_vars->tx_rx_switch_point+6)
#define SYMBOL_OFFSET_RACH_SCH   (NUMBER_OF_SYMBOLS_PER_FRAME-SYMBOLS_PER_TIME_ALLOC-1)
#define SAMPLE_OFFSET_CHBCH   (SYMBOL_OFFSET_CHBCH*OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES)
#define SAMPLE_OFFSET_CHSCH   (SYMBOL_OFFSET_CHSCH*OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES)
#define SAMPLE_OFFSET_MRSCH   (SYMBOL_OFFSET_MRSCH*OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES)
#define SAMPLE_OFFSET_MRBCH   (SYMBOL_OFFSET_MRBCH*OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES)
#define SAMPLE_OFFSET_CHBCH_NO_PREFIX   (SYMBOL_OFFSET_CHBCH*OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES_NO_PREFIX)
#define SAMPLE_OFFSET_CHSCH_NO_PREFIX   (SYMBOL_OFFSET_CHSCH*OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES_NO_PREFIX)
#define SAMPLE_OFFSET_MRBCH_NO_PREFIX   (SYMBOL_OFFSET_MRBCH*OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES_NO_PREFIX)
#define NUMBER_OF_SACH_SYMBOLS_MAX   (NUMBER_OF_SYMBOLS_PER_FRAME)
#define NUMBER_OF_SACH_PILOTS   (PHY_config->PHY_sach.Npilot)
#define LOG2_NUMBER_OF_SACH_PILOTS   3
#define SACH_PILOT_SPACING   (1+(NUMBER_OF_USEFUL_CARRIERS/NUMBER_OF_SACH_PILOTS))
#define FIRST_SACH_PILOT_OFFSET   (FIRST_CARRIER_OFFSET + (SACH_PILOT_SPACING>>1))
#define NUMBER_OF_GUARD_RACH_SYMBOLS   4
#define NUMBER_OF_GUARD_SYMBOLS_END   4
#define NUMBER_OF_UL_CONTROL_SYMBOLS   8
#define NUMBER_OF_DL_SACH_SYMBOLS   (TX_RX_SWITCH_SYMBOL-(NUMBER_OF_CHSCH_SYMBOLS*NUMBER_OF_CHSCH)-NUMBER_OF_CHBCH_SYMBOLS)
#define NUMBER_OF_UL_SACH_SYMBOLS   (NUMBER_OF_SYMBOLS_PER_FRAME-TX_RX_SWITCH_SYMBOL-NUMBER_OF_UL_CONTROL_SYMBOLS-NUMBER_OF_GUARD_SYMBOLS_END)
#define FIRST_DL_SACH_SYMBOL   (NUMBER_OF_CHBCH_SYMBOLS+(NUMBER_OF_CHSCH_SYMBOLS*NUMBER_OF_CHSCH))
#define FIRST_UL_SACH_SYMBOL   (NUMBER_OF_UL_CONTROL_SYMBOLS+TX_RX_SWITCH_SYMBOL)
#define TX_RX_SWITCH_SYMBOL   (NUMBER_OF_SYMBOLS_PER_FRAME>>1)
#define RX_PRECISION   (16)
#define LOG2_RX_PRECISION   (4)
#define RX_OUTPUT_SHIFT   (4)
#define SAMPLE_SIZE_BYTES   2
#define FRAME_LENGTH_BYTES   (FRAME_LENGTH_SAMPLES * SAMPLE_SIZE_BYTES)
#define FRAME_LENGTH_BYTES_NO_PREFIX   (FRAME_LENGTH_SAMPLES_NO_PREFIX * SAMPLE_SIZE_BYTES)
#define FFT_SCALE_FACTOR   8
#define DMA_BLKS_PER_SLOT   (SLOT_LENGTH_BYTES/2048)
#define SLOT_TIME_NS   (SLOT_LENGTH_SAMPLES*(1e3)/7.68)
#define TARGET_RX_POWER   43
#define TARGET_RX_POWER_MAX   48
#define TARGET_RX_POWER_MIN   36
#define MAX_RF_GAIN   150
#define MIN_RF_GAIN   96
#define PHY_SYNCH_OFFSET   ((OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES)-1)
#define PHY_SYNCH_MIN_POWER   1000
#define PHY_SYNCH_THRESHOLD   100
#define FIRST_SACH_SLOT   8
#define MAX_CHBCH_ERRORS   100
#define CHSCH_AMP   1024
#define SCH_AMP   1024
#define MRSCH_AMP   1024
#define ONE_OVER_SQRT2_Q15   23170
#define LOG2_CHSCH_RX_F_AMP   7
#define PLATON_TX_SHIFT   4
#define PERROR_SHIFT   10
#define BIT8_TX_SHIFT   2
#define BIT8_TX_SHIFT_DB   12
#define CHBCH_RSSI_MIN   -75
#define NB_STREAMS_MAX   4
 Maximum number of parallel streams per slot.
#define NB_GROUPS_MAX   16
 Maximum number of frequency groups per slot.
#define NB_CNTL_BYTES_MAX   8
 Maximum number of control bytes per slot.
#define NB_DATA_BYTES_MAX   256
 Maximum number of data bytes per slot.
#define MAX_NUM_TB   32
#define MAX_TB_SIZE_BYTES   128
#define QAM16_n1   20724
 First Amplitude for QAM16 ($ 2^15 \times 2/\sqrt{10}$).
#define QAM16_n2   10362
 Second Amplitude for QAM16 ($ 2^15 \times 1/\sqrt{10}$).
#define QAM64_n1   10112
 First Amplitude for QAM64 ($ 2^14 \times 4/\sqrt{42}$).
#define QAM64_n2   5056
 Second Amplitude for QAM64 ($ 2^14 \times 2/\sqrt{42}$).
#define QAM64_n3   2528
 Third Amplitude for QAM64 ($ 2^14 \times 1/\sqrt{42}$).
#define SACCH_SIZE_BYTES   (sizeof(UL_SACCH_PDU)+4)
 Size of SACCH PDU in Bytes.
#define SACCH_SIZE_BITS   (SACCH_SIZE_BYTES<<3)
 Size of SACCH PDU in Bytes.
#define MAX_SACH_SIZE_BYTES   1024
#define SACH_ERROR   1
#define SACCH_ERROR   2
#define SACH_MISSING   3
#define SACH_PARAM_INVALID   10
#define PHY_RESOURCES_SIZE   sizeof(PHY_RESOURCES)
#define NB_CNX_CH   8
#define NB_RAB_MAX   4

Enumerations

enum  STATUS_RX {
  STATUS_RX_OFF, STATUS_RX_ON, STATUS_RX_SYNCING, STATUS_RX_CANNOT_SYNC,
  STATUS_RX_DATA_PROBLEM, STATUS_RX_LOST_SYNC, STATUS_RX_ABORT, STATUS_RX_TOO_LATE,
  STATUS_RX_CLOCK_STOPPED
}
enum  STATUS_TX {
  STATUS_TX_OFF, STATUS_TX_ON, STATUS_TX_INPUT_CORRUPT, STATUS_TX_ABORT,
  STATUS_TX_TOO_LATE, STATUS_TX_CLOCK_STOPPED
}
enum  MODE { SYNCHED, SYNCHING, NOT_SYNCHED }
enum  SCH_t { CHSCH, SCH }
 SCH Channel Enumerator. More...
enum  CHBCH_RX_t {
  MMSE, MMSE_SIC, ML, ML_SIC,
  SINGLE
}

Functions

int phy_init (unsigned char nb_antennas_tx)
 Allocate and Initialize the PHY variables after receiving static configuration.
void phy_cleanup (void)
 Cleanup the PHY variables.


Define Documentation

#define ZERO   0

#define ONE   1

#define FALSE   0

#define TRUE   1

#define MINUSONE   (-1)

#define WORD_SIZE   32

#define NUMBER_OF_OFDM_CARRIERS   (PHY_config->PHY_framing.Nd)

#define NUMBER_OF_SYMBOLS_PER_FRAME   (PHY_config->PHY_framing.Nsymb)

#define LOG2_NUMBER_OF_OFDM_CARRIERS   (PHY_config->PHY_framing.log2Nd)

#define NUMBER_OF_ZERO_CARRIERS   (PHY_config->PHY_framing.Nz)

#define NUMBER_OF_USEFUL_CARRIERS   (NUMBER_OF_OFDM_CARRIERS-NUMBER_OF_ZERO_CARRIERS)

#define NUMBER_OF_USEFUL_CARRIERS_BYTES   (NUMBER_OF_USEFUL_CARRIERS>>2)

#define HALF_NUMBER_OF_USEFUL_CARRIERS   (NUMBER_OF_USEFUL_CARRIERS>>1)

#define HALF_NUMBER_OF_USEFUL_CARRIERS_BYTES   (HALF_NUMBER_OF_USEFUL_CARRIERS>>2)

#define FIRST_CARRIER_OFFSET   (HALF_NUMBER_OF_USEFUL_CARRIERS+NUMBER_OF_ZERO_CARRIERS)

#define NUMBER_OF_OFDM_SYMBOLS_PER_SLOT   16

#define SLOTS_PER_FRAME   (NUMBER_OF_SYMBOLS_PER_FRAME/NUMBER_OF_OFDM_SYMBOLS_PER_SLOT)

#define CHBCH_PDU_SIZE   144

#define MRBCH_PDU_SIZE   19

#define MRSCH_INDEX   3

#define EXTENSION_TYPE   (PHY_config->PHY_framing.Extension_type)

#define NUMBER_OF_OFDM_CARRIERS_BYTES   NUMBER_OF_OFDM_CARRIERS*4

#define HALF_NUMBER_OF_USER_CARRIERS_BYTES   NUMBER_OF_USEFUL_CARRIERS/2

#define CYCLIC_PREFIX_LENGTH   (PHY_config->PHY_framing.Nc)

#define CYCLIC_PREFIX_LENGTH_SAMPLES   (CYCLIC_PREFIX_LENGTH*2)

#define CYCLIC_PREFIX_LENGTH_BYTES   (CYCLIC_PREFIX_LENGTH*4)

#define OFDM_SYMBOL_SIZE_SAMPLES   ((NUMBER_OF_OFDM_CARRIERS + CYCLIC_PREFIX_LENGTH)*2)

#define OFDM_SYMBOL_SIZE_SAMPLES_MAX   4096

#define OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES   (OFDM_SYMBOL_SIZE_SAMPLES/2)

#define OFDM_SYMBOL_SIZE_SAMPLES_NO_PREFIX   ((NUMBER_OF_OFDM_CARRIERS)*2)

#define OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES_NO_PREFIX   (OFDM_SYMBOL_SIZE_SAMPLES_NO_PREFIX/2)

#define OFDM_SYMBOL_SIZE_BYTES   (OFDM_SYMBOL_SIZE_SAMPLES*2)

#define OFDM_SYMBOL_SIZE_BYTES_NO_PREFIX   (OFDM_SYMBOL_SIZE_SAMPLES_NO_PREFIX*2)

#define SLOT_LENGTH_BYTES   (OFDM_SYMBOL_SIZE_BYTES * NUMBER_OF_OFDM_SYMBOLS_PER_SLOT)

#define SLOT_LENGTH_BYTES_NO_PREFIX   (OFDM_SYMBOL_SIZE_BYTES_NO_PREFIX * NUMBER_OF_OFDM_SYMBOLS_PER_SLOT)

#define FRAME_LENGTH_SAMPLES   (NUMBER_OF_SYMBOLS_PER_FRAME*OFDM_SYMBOL_SIZE_SAMPLES)

#define FRAME_LENGTH_COMPLEX_SAMPLES   (FRAME_LENGTH_SAMPLES/2)

#define FRAME_LENGTH_SAMPLES_NO_PREFIX   (NUMBER_OF_SYMBOLS_PER_FRAME*OFDM_SYMBOL_SIZE_SAMPLES_NO_PREFIX)

#define FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX   (FRAME_LENGTH_SAMPLES_NO_PREFIX/2)

#define NB_RACH   1

#define RACH_TIME_ALLOC   (0x01)

#define RACH0_FREQ_ALLOC   (0xffff)

#define SYMBOLS_PER_TIME_ALLOC   4

#define TIME_ALLOC_TO_SLOT_SHIFT   6

#define NUMBER_OF_SACH   (3)

#define NUMBER_OF_FREQUENCY_GROUPS   16

#define NUMBER_OF_RACH_FREQUENCY_GROUPS   16

#define NUMBER_OF_RACH_SYMBOLS   1

#define NUMBER_OF_CARRIERS_PER_GROUP   (NUMBER_OF_USEFUL_CARRIERS/NUMBER_OF_FREQUENCY_GROUPS)

#define NUMBER_OF_SACH_DATA_CARRIERS_PER_GROUP   (NUMBER_OF_CARRIERS_PER_GROUP-NUMBER_OF_SACH_PILOTS)

#define NUMBER_OF_CLUSTERS   2

#define NUMBER_OF_TERMINALS_PER_CLUSTER   7

#define NUMBER_OF_FREQBANDS   4

#define NUMBER_OF_CHSCH_SYMBOLS   (PHY_config->PHY_chsch[0].Nsymb)

#define NUMBER_OF_CHSCH   (4)

#define NUMBER_OF_CHSCH_SYMBOLS_MAX   (4)

#define NUMBER_OF_SCH_SYMBOLS   (PHY_config->PHY_sch[0].Nsymb)

#define NUMBER_OF_SCH_SYMBOLS_MAX   (4)

#define NUMBER_OF_MRSCH_SYMBOLS   (PHY_config->PHY_sch[1].Nsymb)

#define NUMBER_OF_CHBCH_SYMBOLS   (PHY_config->PHY_chbch[1].Nsymb)

#define NUMBER_OF_CHBCH_PILOTS   (PHY_config->PHY_chbch[1].Npilot)

#define NUMBER_OF_MRBCH_SYMBOLS   (PHY_config->PHY_mrbch.Nsymb)

#define NUMBER_OF_MRBCH_PILOTS   (PHY_config->PHY_mrbch.Npilot)

#define CHBCH_FREQUENCY_REUSE_FACTOR   (PHY_config->PHY_chbch[1].FreqReuse)

#define CHBCH_FREQUENCY_REUSE_IND   (PHY_config->PHY_chbch[1].FreqReuse_Ind)

#define LOG2_NUMBER_OF_CHBCH_PILOTS   4

#define LOG2_NUMBER_OF_MRBCH_PILOTS   3

#define INTDEPTH_CHBCH   (PHY_config->PHY_chbch[1].IntDepth)

#define CHBCH_PILOT_SPACING   (NUMBER_OF_USEFUL_CARRIERS/NUMBER_OF_CHBCH_PILOTS/CHBCH_FREQUENCY_REUSE_FACTOR)

#define FIRST_CHBCH_PILOT_OFFSET   (FIRST_CARRIER_OFFSET + (CHBCH_PILOT_SPACING>>1))

#define SYMBOL_OFFSET_CHBCH   (PHY_config->PHY_chbch[1].symbol)

#define SYMBOL_OFFSET_CHSCH   (PHY_config->PHY_chsch[0].symbol)

#define SYMBOL_OFFSET_MRBCH   (PHY_vars->tx_rx_switch_point+7)

#define SYMBOL_OFFSET_MRSCH   (PHY_vars->tx_rx_switch_point+6)

#define SYMBOL_OFFSET_RACH_SCH   (NUMBER_OF_SYMBOLS_PER_FRAME-SYMBOLS_PER_TIME_ALLOC-1)

#define SAMPLE_OFFSET_CHBCH   (SYMBOL_OFFSET_CHBCH*OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES)

#define SAMPLE_OFFSET_CHSCH   (SYMBOL_OFFSET_CHSCH*OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES)

#define SAMPLE_OFFSET_MRSCH   (SYMBOL_OFFSET_MRSCH*OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES)

#define SAMPLE_OFFSET_MRBCH   (SYMBOL_OFFSET_MRBCH*OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES)

#define SAMPLE_OFFSET_CHBCH_NO_PREFIX   (SYMBOL_OFFSET_CHBCH*OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES_NO_PREFIX)

#define SAMPLE_OFFSET_CHSCH_NO_PREFIX   (SYMBOL_OFFSET_CHSCH*OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES_NO_PREFIX)

#define SAMPLE_OFFSET_MRBCH_NO_PREFIX   (SYMBOL_OFFSET_MRBCH*OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES_NO_PREFIX)

#define NUMBER_OF_SACH_SYMBOLS_MAX   (NUMBER_OF_SYMBOLS_PER_FRAME)

#define NUMBER_OF_SACH_PILOTS   (PHY_config->PHY_sach.Npilot)

#define LOG2_NUMBER_OF_SACH_PILOTS   3

#define SACH_PILOT_SPACING   (1+(NUMBER_OF_USEFUL_CARRIERS/NUMBER_OF_SACH_PILOTS))

#define FIRST_SACH_PILOT_OFFSET   (FIRST_CARRIER_OFFSET + (SACH_PILOT_SPACING>>1))

#define NUMBER_OF_GUARD_RACH_SYMBOLS   4

#define NUMBER_OF_GUARD_SYMBOLS_END   4

#define NUMBER_OF_UL_CONTROL_SYMBOLS   8

#define NUMBER_OF_DL_SACH_SYMBOLS   (TX_RX_SWITCH_SYMBOL-(NUMBER_OF_CHSCH_SYMBOLS*NUMBER_OF_CHSCH)-NUMBER_OF_CHBCH_SYMBOLS)

#define NUMBER_OF_UL_SACH_SYMBOLS   (NUMBER_OF_SYMBOLS_PER_FRAME-TX_RX_SWITCH_SYMBOL-NUMBER_OF_UL_CONTROL_SYMBOLS-NUMBER_OF_GUARD_SYMBOLS_END)

#define FIRST_DL_SACH_SYMBOL   (NUMBER_OF_CHBCH_SYMBOLS+(NUMBER_OF_CHSCH_SYMBOLS*NUMBER_OF_CHSCH))

#define FIRST_UL_SACH_SYMBOL   (NUMBER_OF_UL_CONTROL_SYMBOLS+TX_RX_SWITCH_SYMBOL)

#define TX_RX_SWITCH_SYMBOL   (NUMBER_OF_SYMBOLS_PER_FRAME>>1)

#define RX_PRECISION   (16)

#define LOG2_RX_PRECISION   (4)

#define RX_OUTPUT_SHIFT   (4)

#define SAMPLE_SIZE_BYTES   2

#define FRAME_LENGTH_BYTES   (FRAME_LENGTH_SAMPLES * SAMPLE_SIZE_BYTES)

#define FRAME_LENGTH_BYTES_NO_PREFIX   (FRAME_LENGTH_SAMPLES_NO_PREFIX * SAMPLE_SIZE_BYTES)

#define FFT_SCALE_FACTOR   8

#define DMA_BLKS_PER_SLOT   (SLOT_LENGTH_BYTES/2048)

#define SLOT_TIME_NS   (SLOT_LENGTH_SAMPLES*(1e3)/7.68)

#define TARGET_RX_POWER   43

#define TARGET_RX_POWER_MAX   48

#define TARGET_RX_POWER_MIN   36

#define MAX_RF_GAIN   150

#define MIN_RF_GAIN   96

#define PHY_SYNCH_OFFSET   ((OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES)-1)

#define PHY_SYNCH_MIN_POWER   1000

#define PHY_SYNCH_THRESHOLD   100

#define FIRST_SACH_SLOT   8

#define MAX_CHBCH_ERRORS   100

#define CHSCH_AMP   1024

#define SCH_AMP   1024

#define MRSCH_AMP   1024

#define ONE_OVER_SQRT2_Q15   23170

#define LOG2_CHSCH_RX_F_AMP   7

#define PLATON_TX_SHIFT   4

#define PERROR_SHIFT   10

#define BIT8_TX_SHIFT   2

#define BIT8_TX_SHIFT_DB   12

#define CHBCH_RSSI_MIN   -75

#define NB_STREAMS_MAX   4

Maximum number of parallel streams per slot.

#define NB_GROUPS_MAX   16

Maximum number of frequency groups per slot.

#define NB_CNTL_BYTES_MAX   8

Maximum number of control bytes per slot.

#define NB_DATA_BYTES_MAX   256

Maximum number of data bytes per slot.

#define MAX_NUM_TB   32

#define MAX_TB_SIZE_BYTES   128

#define QAM16_n1   20724

First Amplitude for QAM16 ($ 2^15 \times 2/\sqrt{10}$).

#define QAM16_n2   10362

Second Amplitude for QAM16 ($ 2^15 \times 1/\sqrt{10}$).

#define QAM64_n1   10112

First Amplitude for QAM64 ($ 2^14 \times 4/\sqrt{42}$).

#define QAM64_n2   5056

Second Amplitude for QAM64 ($ 2^14 \times 2/\sqrt{42}$).

#define QAM64_n3   2528

Third Amplitude for QAM64 ($ 2^14 \times 1/\sqrt{42}$).

#define SACCH_SIZE_BYTES   (sizeof(UL_SACCH_PDU)+4)

Size of SACCH PDU in Bytes.

#define SACCH_SIZE_BITS   (SACCH_SIZE_BYTES<<3)

Size of SACCH PDU in Bytes.

#define MAX_SACH_SIZE_BYTES   1024

#define SACH_ERROR   1

#define SACCH_ERROR   2

#define SACH_MISSING   3

#define SACH_PARAM_INVALID   10

#define PHY_RESOURCES_SIZE   sizeof(PHY_RESOURCES)

#define NB_CNX_CH   8

#define NB_RAB_MAX   4


Enumeration Type Documentation

enum STATUS_RX

Enumerator:
STATUS_RX_OFF 
STATUS_RX_ON 
STATUS_RX_SYNCING 
STATUS_RX_CANNOT_SYNC 
STATUS_RX_DATA_PROBLEM 
STATUS_RX_LOST_SYNC 
STATUS_RX_ABORT 
STATUS_RX_TOO_LATE 
STATUS_RX_CLOCK_STOPPED 

enum STATUS_TX

Enumerator:
STATUS_TX_OFF 
STATUS_TX_ON 
STATUS_TX_INPUT_CORRUPT 
STATUS_TX_ABORT 
STATUS_TX_TOO_LATE 
STATUS_TX_CLOCK_STOPPED 

enum MODE

Enumerator:
SYNCHED 
SYNCHING 
NOT_SYNCHED 

enum SCH_t

SCH Channel Enumerator.

Enumerator:
CHSCH 
SCH 

enum CHBCH_RX_t

Enumerator:
MMSE 
MMSE_SIC 
ML 
ML_SIC 
SINGLE 


Function Documentation

int phy_init ( unsigned char  nb_antennas_tx  ) 

Allocate and Initialize the PHY variables after receiving static configuration.

Parameters:
nb_antennas_tx Number of TX antennas

void phy_cleanup ( void   ) 

Cleanup the PHY variables.


Generated on Thu May 14 10:34:28 2009 for OPENAIR by  doxygen 1.4.7