implementation of tm4 into oai softmodem · pmiq # of layer 2 (ri 1) 1 1 2 s s s− s 2 1 2 s s −...
TRANSCRIPT
© Fraunhofer IIS
IMPLEMENTATION OF TM4 INTO OAI SOFTMODEM
Joint ETSI - OSA Workshop: Open
Implementations and
Standardization
Pre Event Training – 11 December 2018
Khodr Saaifan
Fraunhofer Institute for Integrated Circuits (IIS)
© Fraunhofer IIS
2
Agenda
o TM4 Basics in LTE
o Review of OAI-eNB Thread and PHY Procedures
o eNB: PHY TX Procedures
o MAC: DL Scheduling
o Review of OAI-UE Thread and PHY Procedures
o UE: PHY RX Procedures
o UE Measurement Procedures
o Demo Setup and Results
o UE Statistics
o eNB Statistics
© Fraunhofer IIS
3
txdataF[0][ttioffest]
1
𝑋1
2
1
txdataF[1][ttioffest]
1
𝑋2
2
1
𝐻𝑑𝑙𝑐ℎ 0 :𝐻11[𝑘]
𝐻𝑑𝑙𝑐ℎ[2]: 𝐻12[𝑘]
𝐻𝑑𝑙𝑐ℎ 1 : 𝐻21[𝑘]
𝐻𝑑𝑙𝑐ℎ[3]: 𝐻22[𝑘]
rxdataFext[0][ttioffest]
1
𝑌1
2
1
rxdataFext[1][ttioffest]
1
𝑌2
2
1
TM4 Basics in LTE
The MIMO channel at the 𝑘th subcarrier:
𝑯 =𝐻11[𝑘] 𝐻12[𝑘]
𝐻21[𝑘] 𝐻22[𝑘]
Channel decomposition:
𝑯 = 𝑼𝜆1 00 𝜆2
𝑽𝐻
𝑿 = 𝑽𝑿 𝒀 = 𝑼𝐻𝒀
𝑋 1
𝑋 2
Modulated Symbols
𝑌 1 = 𝜆1𝑋 1 + 𝑍 1
𝑌 2 = 𝜆2𝑋 2 + 𝑍 2
𝑘th RE 𝑘th RE
Feedback
𝒀 = 𝑯𝑿 + 𝒁 𝑯 𝑿 = 𝑽𝑿
Non Access-Stratum (NAS)
PDCP
RRC
MAC
RLC
PHY
RF
OAI-eNB
Non Access-Stratum (NAS)
PDCP
RRC
MAC
RLC
PHY
RF
OAI-UE Master Branch Master Branch
© Fraunhofer IIS
4
𝐻𝑑𝑙𝑐ℎ 1 : 𝐻21[𝑘]
𝐻𝑑𝑙𝑐ℎ[3]: 𝐻22[𝑘]
TM4 Basics in LTE
Modulated Symbols
Feedback
pmiq # of layer 1 (RI 0)
0 1
2
11
1 1
2
1−1
2 1
2
1j
3 1
2
1−j
Index 3: 1
2
1−𝑗
𝐻11
𝐻112 + 𝐻12
2 −𝑗𝐻12
𝐻12
𝐻𝑑𝑙𝑐ℎ 0 :𝐻11[𝑘]
𝐻𝑑𝑙𝑐ℎ[2]: 𝐻12[𝑘]
𝑿= 𝑷𝑿
𝑯eff
=𝐻11 𝐻12
𝐻21 𝐻22𝑷
𝑋 1
𝑋 2
𝑌 1
𝑌 2
𝒀 = 𝑯eff𝑿 + 𝒁 𝑯 𝑿 = 𝑷𝑿
Non Access-Stratum (NAS)
PDCP
RRC
MAC
RLC
PHY
RF
OAI-eNB
Non Access-Stratum (NAS)
PDCP
RRC
MAC
RLC
PHY
RF
OAI-UE
Closed loop precoding in LTE:
Requires feedback from the UE
Rank indicator (RI)
Precoding matrix indicator (PMI)
© Fraunhofer IIS
5
𝐻𝑑𝑙𝑐ℎ 0 :𝐻11[𝑘]
𝐻𝑑𝑙𝑐ℎ[2]: 𝐻12[𝑘]
𝐻𝑑𝑙𝑐ℎ 1 : 𝐻21[𝑘]
𝐻𝑑𝑙𝑐ℎ[3]: 𝐻22[𝑘]
TM4 Basics in LTE
𝑿= 𝑷𝑿
𝑯eff
=𝐻11 𝐻12
𝐻21 𝐻22𝑷
𝑋 1
𝑋 2
Modulated Symbols
𝑌 1
𝑌 2
Feedback pmiq # of layer 2 (RI 1)
1 1
2
1 11 −1
2 1
2
1 1𝑗 −𝑗
𝜌21 = 𝐻12∗ 𝐻22
∗ 𝐻11
𝐻21
pmiq = 1, for Re(𝜌21) ≥ Im(𝜌21)
2, for Re 𝜌21 < Im(𝜌21)
𝒀 = 𝑯eff𝑿 + 𝒁 𝑯 𝑿 = 𝑷𝑿
Non Access-Stratum (NAS)
PDCP
RRC
MAC
RLC
PHY
RF
OAI-eNB
Non Access-Stratum (NAS)
PDCP
RRC
MAC
RLC
PHY
RF
OAI-UE
Closed loop precoding in LTE:
Requires feedback from the UE
Rank indicator (RI)
Precoding matrix indicator (PMI)
© Fraunhofer IIS
6
𝐻𝑑𝑙𝑐ℎ 0 :𝐻11[𝑘]
𝐻𝑑𝑙𝑐ℎ[2]: 𝐻12[𝑘]
𝐻𝑑𝑙𝑐ℎ 1 : 𝐻21[𝑘]
𝐻𝑑𝑙𝑐ℎ[3]: 𝐻22[𝑘]
TM4 Basics in LTE
𝑿= 𝑷𝑿
𝑯eff
=𝐻11 𝐻12
𝐻21 𝐻22𝑷
𝑋 1
𝑋 2
Modulated Symbols
𝑌 1
𝑌 2
Feedback
CQI/PMI reporting
UCI format CQI, PMI, and RI
UE measurements
𝒀 = 𝑯eff𝑿 + 𝒁 𝑯 𝑿 = 𝑷𝑿
Non Access-Stratum (NAS)
PDCP
RRC
MAC
RLC
PHY
RF
OAI-eNB
Non Access-Stratum (NAS)
PDCP
RRC
MAC
RLC
PHY
RF
OAI-UE
UE statistics
In OAI-eNB, we verify and review the MAC/PHY code to support:
MAC: format2 with 𝑁𝑙=1, 2
PHY: layer mapping of 1 codeword into 𝑁𝑙 layers
© Fraunhofer IIS
7
Non Access-Stratum (NAS)
PDCP
RRC
MAC
RLC
PHY
RF
OAI-eNB
𝐻𝑑𝑙𝑐ℎ 0 :𝐻11[𝑘]
𝐻𝑑𝑙𝑐ℎ[2]: 𝐻12[𝑘]
𝐻𝑑𝑙𝑐ℎ 1 : 𝐻21[𝑘]
𝐻𝑑𝑙𝑐ℎ[3]: 𝐻22[𝑘]
Non Access-Stratum (NAS)
PDCP
RRC
MAC
RLC
PHY
RF
OAI-UE
TM4 Basics in LTE
𝒀 = 𝑯eff𝑿 + 𝒁
𝑿= 𝑷𝑿
𝑯eff
=𝐻11 𝐻12
𝐻21 𝐻22𝑷
𝑋 1
𝑋 2
Modulated Symbols
𝑌 1
𝑌 2
Feedback
𝑯 𝑿 = 𝑷𝑿
CQI/PMI reporting
UCI format CQI, PMI, and RI
UE measurements UE statistics
In OAI-UE, we verify and review the PHY code to support:
lte_ue_measurements: CQI, PMI, and RI
ue_pdcch_procedures: format2 detection
generate_ue_dlsch_params_from_dci: extract format2 for DL decoding
ue_pdsch_procedures: rx_pdsch for processing 2 layers into 1 codeword
© Fraunhofer IIS
8
Review of OAI-eNB Thread and PHY Procedures
© Fraunhofer IIS
9
Review of OAI-eNB Thread and PHY Procedures
eNB: phy_procedures_eNB_TX openair1/SCHED/phy_procedures_lte_eNb.c
RB12
RB9
RB15
2
1
1
2
2
1
1
2
2
1
1
2
2
1
1
2
2
1
1
2
2
1
1
2
2
1
1
2
2
1
1
2
subframe 0
© Fraunhofer IIS
10
Review of OAI-eNB Thread and PHY Procedures
PSS/SSS/PBCH: common_signal_procedures()
generate_pilots_slot()
generate_pss()/generate_sss()
generate_pbch(): SISO and Alamouti
HARQ_UL: synchronous ul_subframe=((subframe_tx+4)%10) ul_frame=(frame+(subframe_tx>=6 ? 1 :0)) harq_pid=(((ul_frame<<1)+ul_subframe)&7);
eNB: phy_procedures_eNB_TX openair1/SCHED/MAC/phy_procedures_lte_eNb.c
© Fraunhofer IIS
11
Review of OAI-eNB Thread and PHY Procedures
eNB: phy_procedures_eNB_TX openair1/SCHED/phy_procedures_lte_eNb.c
© Fraunhofer IIS
12
Review of OAI-eNB Thread and PHY Procedures
eNB: phy_procedures_eNB_TX openair1/SCHED/phy_procedures_lte_eNb.c
© Fraunhofer IIS
13
Review of OAI-eNB Thread and PHY Procedures
eNB: phy_procedures_eNB_TX openair1/SCHED/phy_procedures_lte_eNb.c
© Fraunhofer IIS
14
eNB: TX (MAC+PDSCH)
phy_procedures_eNB_TX() openair1/SCHED/phy_procedures_lte_eNb.c
Logical channel Prioritization/Multiplexing
DCCH DCCH1
DTCH
DLSCH_pdu TBS
dlsch_encoding() crc, lte_segmentation, turbo_encoding,
rate_matching
DCI pdu
format1, format1A format2
schedule_RA
schedule_ulsch
schedule_ue_spec
schedule_SI
fill_DLSCH_dci
generate eNB_dlsch params() generate eNB_dlsch params_from_dci()
generate eNB_ulsch params() generate eNB_ulsch params_from_dci()
format0
eNB_dlsch_ulsch_scheduler() openair2/LAYER2/MAC/eNB_scheduler.c
Turbo Encoding LTE_TRANSPORT/dlsch_coding.c
𝐺 bits
allocate_res_in_RB()
𝐺/𝑄𝑚/𝑁𝑙 symbols
dlsch_ scrambling()
dlsch_ modulation()
𝐺 bits
LTE_TRANSPORT/dlsch_modulation.c
𝐺/𝑄𝑚 symbols
𝑋0𝑖 = 𝑄𝐴𝑀 𝑒 𝑄𝑚2𝑖, … , 𝑄𝑚2𝑖 + 𝑄𝑚 − 1 , 𝑖 = 0,… , 𝐺/𝑄𝑚 − 1
𝑋1𝑖 = 𝑄𝐴𝑀 𝑒 𝑄𝑚(2𝑖 + 1),… , 𝑄𝑚(2𝑖 + 1) + 𝑄𝑚 − 1 ,
𝑋0𝑖
𝑋1𝑖
pdsch_procedures() openair1/SCHED/phy_procedures_lte_eNb.c
For 𝑁𝑙=2 layers, dlsch0_harq->mimo_mode is configured based on tpmi
• TBS is assigned based on 𝑁𝑙 × 𝑛𝑏𝑟𝑏
• 𝐺 = (𝑛𝑏𝑟𝑏 ×𝑚𝑜𝑑𝑜𝑟𝑑𝑒𝑟 × ((14 − 𝑛𝑢𝑚𝑝𝑑𝑐𝑐ℎ𝑠𝑦𝑚𝑏𝑜𝑙𝑠) × 12 − 3 × 4) − 𝐺𝑎𝑑𝑗 ) × 𝑁𝑙
format2
nb_antenna_ports_eNB = 2
TBS1 off (mcs2 = 0, rv2 = 1) TBS0 on
tpmi=0 to 7
txdataF[0][ttioffest]
1
𝑋0
2
1
txdataF[1][ttioffest]
1
𝑋1
2
1
© Fraunhofer IIS
15
MAC: schedule_ue_spec(module_idP,frameP,subframeP,mbsfn_flag) /openair2/LAYER2/MAC/eNB_scheduler_dlsch.c
Direction: E-UTRAN => UE
RLC Mode: AM (ARQ)
Logical Channel: DCCH-DTCH
Transport Channel: DL-SCH
• The eNB scheduler consists of a scheduling entity, a DL HARQ entity, and a multiplexing entity
• The scheduling entity supports resource requirement, assignment, and allocation (implemented in dlsch_scheduler_pre_processor())
• The transmit HARQ operation includes transmission and retransmission of TBs, and reception and processing of ACK/NACK signaling
• In OAI, synchronous HARQ is used for both the downlink and the uplink
harq_pid=((frame_tx ×10)+subframe_tx)&7
© Fraunhofer IIS
16
MAC: schedule_ue_spec(module_idP,frameP,subframeP,mbsfn_flag) /openair2/LAYER2/MAC/eNB_scheduler_dlsch.c
© Fraunhofer IIS
17
MAC: dlsch_scheduler_pre_processor (module_idP, frameP, subframeP, N_RBG, mbsfn_flag) /openair2/LAYER2/MAC/pre_processor.c
© Fraunhofer IIS
18
MAC: assign_rbs_required (module_idP,frameP,subframeP,nb_rbs_required[MAX_NUM_CCs][NUM_UE_MAX], min_rb_unit[MAX_NUM_CCs])
/openair2/LAYER2/MAC/pre_processor.c
© Fraunhofer IIS
19
MAC: schedule_ue_spec(module_idP,frameP,subframeP,mbsfn_flag) /openair2/LAYER2/MAC/eNB_scheduler_dlsch.c
© Fraunhofer IIS
20
MAC: schedule_ue_spec(module_idP,frameP,subframeP,mbsfn_flag) /openair2/LAYER2/MAC/eNB_scheduler_dlsch.c
© Fraunhofer IIS
21
MAC: schedule_ue_spec(module_idP,frameP,subframeP,mbsfn_flag) /openair2/LAYER2/MAC/eNB_scheduler_dlsch.c
© Fraunhofer IIS
22
MAC: schedule_ue_spec(module_idP,frameP,subframeP,mbsfn_flag) /openair2/LAYER2/MAC/eNB_scheduler_dlsch.c
© Fraunhofer IIS
23
MAC: schedule_ue_spec(module_idP,frameP,subframeP,mbsfn_flag) /openair2/LAYER2/MAC/eNB_scheduler_dlsch.c
© Fraunhofer IIS
24
PHY: generate_eNB_dlsch_params_from_dci(): /openair1/PHY/LTE_TRANSPORT/dci_tools.c
TB1 OFF
(DCI2_5MHz_2A_FDD_t*)dci_pdu
DL Scheduling assignment for MIMO closed loop spatial multiplexing
tpmi=0: AlAMOUTI, Nl=1 tpmi=1: UNIFORM_PRECODING11 pmiq 0, Nl=1 tpmi=2: UNIFORM_PRECODING1m1, pmiq1, Nl=1 tpmi=3: UNIFORM_PRECODING1j , pmiq2, Nl=1 tpmi=4: UNIFORM_PRECODING1mj, pmiq3, Nl=1 tpmi=5: PUSCH_PRECODING0, Nl=2 tpmi=6: PUSCH_PRECODING1, Nl=2 tpmi=7: TM4_NO_PRECODING, Nl=2
rah rballoc TPC Harq pid Tb
swap
mcs
1
ndi1 rv1 mcs
2
ndi2 rv2 tpmi
1 13 2 3 1 5 1 2 5 1 2 3
0 rballoc tpc harq_pid mcs 1-oldNDI 0 0 1 0/7
TB0 ON
dlsch0=dlsch[0] dlsch1=NULL
dlsch0_harq->mimo_mode dlsch0_harq->Nl
dlsch0_harq->pmi_alloc
dlsch0_harq->nb_rb dlsch0_harq->TBS
eNB->UE_stats[UE_id]->DL_pmi_single
© Fraunhofer IIS
25
eNB: TX (MAC+PDSCH)
phy_procedures_eNB_TX() openair1/SCHED/phy_procedures_lte_eNb.c
Logical channel Prioritization/Multiplexing
DCCH DCCH1
DTCH
DLSCH_pdu TBS
dlsch_encoding() crc, lte_segmentation, turbo_encoding,
rate_matching
DCI pdu
format1, format1A format2
schedule_RA
schedule_ulsch
schedule_ue_spec
schedule_SI
fill_DLSCH_dci
generate eNB_dlsch params() generate eNB_dlsch params_from_dci()
generate eNB_ulsch params() generate eNB_ulsch params_from_dci()
format0
eNB_dlsch_ulsch_scheduler() openair2/LAYER2/MAC/eNB_scheduler.c
Turbo Encoding LTE_TRANSPORT/dlsch_coding.c
𝐺 bits
allocate_REs_in_RB()
𝐺/𝑄𝑚/𝑁𝑙 symbols
dlsch_ scrambling()
dlsch_ modulation()
𝐺 bits
LTE_TRANSPORT/dlsch_modulation.c
𝐺/𝑄𝑚 symbols
𝑋0𝑖 = 𝑄𝐴𝑀 𝑒 𝑄𝑚2𝑖, … , 𝑄𝑚2𝑖 + 𝑄𝑚 − 1 , 𝑖 = 0,… , 𝐺/𝑄𝑚 − 1
𝑋1𝑖 = 𝑄𝐴𝑀 𝑒 𝑄𝑚(2𝑖 + 1),… , 𝑄𝑚(2𝑖 + 1) + 𝑄𝑚 − 1 ,
𝑋0𝑖
𝑋1𝑖
pdsch_procedures() openair1/SCHED/phy_procedures_lte_eNb.c
For 𝑁𝑙=2 layers, dlsch0_harq->mimo_mode is configured based on tpmi
• TBS is assigned based on 𝑁𝑙 × 𝑛𝑏𝑟𝑏
• 𝐺 = (𝑛𝑏𝑟𝑏 ×𝑚𝑜𝑑𝑜𝑟𝑑𝑒𝑟 × ((14 − 𝑛𝑢𝑚𝑝𝑑𝑐𝑐ℎ𝑠𝑦𝑚𝑏𝑜𝑙𝑠) × 12 − 3 × 4) − 𝐺𝑎𝑑𝑗 ) × 𝑁𝑙
format2
nb_antenna_ports_eNB = 2
TBS1 off (mcs2 = 0, rv2 = 1) TBS0 on
tpmi=0 to 7
txdataF[0][ttioffest]
1
𝑋0
2
1
txdataF[1][ttioffest]
1
𝑋1
2
1
© Fraunhofer IIS
26
Review of OAI-UE Thread and PHY Procedures
© Fraunhofer IIS
27
Review of OAI-UE Thread and PHY Procedures
After synchronization, the flag start_rx_stream=0. Hence,
Correct rx_offest by capturing rx_offest samples from the USRP
UE->rx_offset=0; (sync with rx_offest)
UE->time_sync_cell=0; (sync with the cell)
Set UE->proc.proc_rxtx[th_id].frame_rx=0 (Ready to read frame 0)
Read the first OFDM symbol of the subframe 0 from the RF device
slot_fep(UE,0, 0, 0, 0, 0) for l=0
© Fraunhofer IIS
28
Review of OAI-UE Thread and PHY Procedures
After the first slot_fep(), the UE thread loops over subframe_rx=0, ..., 9
In each loop, the UE thread gets TTI samples from USRP
The UE thread wakes up the even or the odd UE_thread_rxn_txnp4 according to the subframe number
phy_procedures_UE_RX(): LTE UE Receiver
UE_MAC(): MAC layer of UE
phy_procedures_UE_TX(): LTE UE Transmitter
© Fraunhofer IIS
29
UE: RX (PDCCH+PDSCH)
DCI pdu
generate_ue_dlsch_params_from_dci()
DL format 2: format2: Alamouti/TM4
ue_pdsch_procedures() LTE_TRANSPORT/dlsch_demodulation.c
rx_pdsch() rxdataF[0][ttioffest]
1
𝑌0[𝑘]
2
1
rxdataF[1][ttioffest]
1
𝑌1[𝑘]
2
1
ue_pdcch_procedures() openair1/SCHED/phy_procedures_lte_ue.c
rx_pdcch()
prepare_dl_decoding_format2_2A()
nb_rb = dlsch_extract
_rbs_dual
dlsch_scale_channel
dlsch_channel_level()
dlsch_channel_compensation
dlsch_detection_mrc
dlsch _alamouti
dlsch_qam_llr()
dci_cnt =
dci_decoding_procedure()
search all possible DCIs
rx_phich ()
is_phich_subframe generate_ue_ulsch_params_from_dci()
Format 1,1A, 2, ... Format 0
extract_dci2_info()
status = check_dci_format2_2a
_coherency()
generate_ue_dlsch_params_from_dci() LTE_TRANSPORT/dci_tools.c
𝑁𝑙 = 2
dlsch0_harq->mimo_mode tpmi:0 Alamouti tpmi: 7 test TM4
TBS0 on TBS1 off (mcs2 = 0, rv2 = 1) dlsch0_harq->Nl = 2 dlsch0_harq->mimo_mode = Alamouti/TM4_NO_PRECODING
lte_ue_measurements()
ue_ulsch_uespec_procedures()
RI + CQI/PMI reporting
UCI format: Wideband CQI1 (4 bits) PMI (14 bits)
TM4 postprocessor
ue_measurement_procedures() /openair1/SCHED/phy_procedures_lte_ue.c
© Fraunhofer IIS
30
ue_measurement_procedures openair1/SCHED/phy_procedures_lte_ue.c
lte_ue_measurements(): OFDM symbol l=0 at every slot
Rx spatial power: rx_spatial_power[eNB_id][aatx][aarx] and rx_power_tot[eNB_id]
Rank Estimation: rank_estimation_tm3_tm4()
Signal and noise average power computation: rx_power_avg and n0_power_avg
CQI measurements: wideband_cqi_tot, wideband_cqi_avg, and rx_rssi_dBm
Subband CQI measurements: subband_cqi[eNB_id][aarx][subband], subband_cqi_tot[eNB_id][subband]
PMI measurements: subband_pmi_re[eNB_id][subband][aarx], subband_pmi_im[eNB_id][subband][aarx], wideband_pmi_re[eNB_id][aarx], and wideband_pmi_im[eNB_id][aarx]
ue_rcc_measurements(): OFDM symbol l=6 at subframe 0/subframe 5
Noise Floor Calculation: n0_power[aarx], n0_power_dB[aarx], n0_power_tot, n0_power_tot_dB, n0_power_tot_dBm
Reference Signal Rx power: rsrp and rssi
Additional measurements: every subfarme at slot 0 and OFDM symbol 4
phy_adjust_gain(): AGC
lte_adjust_synch(): Accum/filtering time offest estimation
© Fraunhofer IIS
31
ue_measurement_procedures openair1/SCHED/phy_procedures_lte_ue.c
The received quantized OFDM samples can be expressed as
𝑦 𝑛 =𝑃𝑟𝒙𝐴𝐺
2
2 𝑋𝑘𝑒
𝑗2𝜋𝑘𝑛/𝑁𝑁−1𝑘=0 + 𝑧[𝑛], 0 < 𝑛 < 𝑁 − 1
where 𝑃𝑟𝑥 denotes the power of the received passband signal and 𝐴𝐺 is the voltage Gain of the USRP
The samples of 𝑧[𝑛] are complex-valued Gaussian RVs with zero mean and variance (power) 1
2𝑁0𝐹 × 𝑁∆𝑓
The quantized IQ samples are represented by 16-bit short integers (1 bit: sign and 15 bits: fixed point representation)
I Q
16 bits 16 bits +1
−1
𝑅 = 2
𝑦(𝑡) 𝑦[𝑛]
𝑦𝑞[𝑛]
𝑛𝑇𝑠 𝑡
• The quantization width is given by:
𝑄 =𝑅
216 =
1
215 = 30 𝜇V
© Fraunhofer IIS
32
ue_measurement_procedures openair1/SCHED/phy_procedures_lte_ue.c
The received quantized OFDM samples can be expressed as
𝑦 𝑛 =𝑃𝑟𝒙𝐴𝐺
2
2 𝑋𝑘𝑒
𝑗2𝜋𝑘𝑛/𝑁𝑁−1𝑘=0 + 𝑧[𝑛], 0 < 𝑛 < 𝑁 − 1
where 𝑃𝑟𝑥 denotes the power of the received passband signal and 𝐴𝐺 is the voltage Gain of the USRP
The samples of 𝑧[𝑛] are complex-valued Gaussian RVs with zero mean and variance (power) 1
2𝑁0𝐹 × 𝑁∆𝑓
512 subcarriers×32 bits (I/Q 16 bits per samples input OFDM discrete signal)
nb prefix samples (40 or 36)
rx_offset &common_vars->rxdata[aa]
[rx_offset % frame_length_samples]
512-DFT operation
&common_vars_rx_data_per_thread.rxdataF[aa]
[frame_parms->ofdm_symbol_size*symbol]
Channel Estimation
If(l==0|l==4) Pilot positions
slot_fep() signal processing
© Fraunhofer IIS
33
ue_measurement_procedures openair1/SCHED/phy_procedures_lte_ue.c
The received quantized OFDM samples can be expressed as
𝑦 𝑛 =𝑃𝑟𝒙𝐴𝐺
2
2 𝑋𝑘𝑒
𝑗2𝜋𝑘𝑛/𝑁𝑁−1𝑘=0 + 𝑧[𝑛], 0 < 𝑛 < 𝑁 − 1
where 𝑃𝑟𝑥 denotes the power of the received passband signal and 𝐴𝐺 is the voltage Gain of the USRP
The samples of 𝑧[𝑛] are complex-valued Gaussian RVs with zero mean and variance (power) 1
2𝑁0𝐹 × 𝑁∆𝑓
512 subcarriers×32 bits (I/Q 16 bits per samples input OFDM discrete signal)
nb prefix samples (40 or 36)
rx_offset &common_vars->rxdata[aa]
[rx_offset % frame_length_samples]
512-DFT operation
&common_vars_rx_data_per_thread.rxdataF[aa]
[frame_parms->ofdm_symbol_size*symbol]
Channel Estimation
If(l==0|l==4) Pilot positions l=0
l=4
𝑌𝑘 = 1
𝑁 𝑦𝑛
𝑁−1
𝑛=0
𝑒−𝑗2𝜋𝑘𝑛/𝑁
0
6∆𝑓
0 6∆𝑓 𝑓𝑠 = 𝑁∆𝑓
𝑌𝑘
𝐴 𝑁
…
𝐴 𝑁
𝐴 =𝑃𝑟𝒙𝐴𝐺
2
2
slot_fep() signal processing
© Fraunhofer IIS
34
ue_measurement_procedures openair1/SCHED/phy_procedures_lte_ue.c
The received quantized OFDM samples can be expressed as
𝑦 𝑛 =𝑃𝑟𝒙𝐺𝐴
2 𝑋𝑘𝑒
𝑗2𝜋𝑘𝑛/𝑁𝑁−1𝑘=0 + 𝑧[𝑛], 0 < 𝑛 < 𝑁 − 1
where 𝑃𝑟𝑥 denotes the power of the received passband signal and 𝐺𝐴 is the voltage Gain of the USRP
The samples of 𝑧[𝑛] are complex-valued Gaussian RVs with zero mean and variance (power) 1
2𝑁0𝐹 × 𝑁∆𝑓
l=0
l=4 0
6∆𝑓
0 6∆𝑓 𝑓𝑠 = 𝑁∆𝑓
𝑌[𝑘]
𝐴 𝑁
…
𝐴 𝑁
𝐴 =𝑃𝑟𝒙𝐺𝐴
2
Reference Signal Rx power: rsrp and rssi
rsrp = 1
𝑁𝐸 𝑌[𝑘] 2 = 𝐴2, 𝑘 ∈ pilots
= 1
2𝑃𝑟𝒙𝐺𝐴 × 230 (W/RE)
where 𝐺𝐴(dB) = 𝑈𝐸𝑟𝑥𝑔𝑎𝑖𝑛 − 𝑈𝑆𝑅𝑃𝑂𝑓𝑓𝑒𝑠𝑡 is
the RX gain of the USRP rssi = RSRP × 12 ∗ 𝑁𝑅𝐵
𝐷𝐿
𝑌𝑘 = 1
𝑁 𝑦𝑛
𝑁−1
𝑛=0
𝑒−𝑗2𝜋𝑘𝑛/𝑁
• The max gain for RX on the AD936x is 76 dB, for TX 89 dB
• The ranges can be printed out when you run 'uhd_usrp_probe' for any USRP
© Fraunhofer IIS
35
ue_measurement_procedures openair1/SCHED/phy_procedures_lte_ue.c
The received quantized OFDM samples can be expressed as
𝑦 𝑛 =𝑃𝑟𝒙𝐺𝐴
2 𝑋𝑘𝑒
𝑗2𝜋𝑘𝑛/𝑁𝑁−1𝑘=0 + 𝑧[𝑛], 0 < 𝑛 < 𝑁 − 1
The samples of 𝑧[𝑛] are complex-valued Gaussian RVs with zero mean and variance (power) 1
2𝑁0𝐹 × 𝑁∆𝑓
Noise Floor Calculation: 𝑛0𝑝𝑜𝑤𝑒𝑟(𝑎𝑎𝑟𝑥) and 𝑛0𝑝𝑜𝑤𝑒𝑟𝑡𝑜𝑡
𝑛0𝑝𝑜𝑤𝑒𝑟 𝑎𝑎𝑟𝑥 = 𝐸 𝑍𝑎𝑎𝑟𝑥 𝑘 2 , 𝑘 ∈ null RE SSS/PSS
=1
2𝑁0𝐹 × 𝑁∆𝑓 × 230 (W)
where 𝑁0𝐹 = −174 dBm/Hz + 𝑵𝑭 dB + 𝐺𝐴(dB) and 𝐺𝐴(dB) = 𝑈𝐸𝑟𝑥𝑔𝑎𝑖𝑛 − 𝑈𝑆𝑅𝑃𝑂𝑓𝑓𝑒𝑠𝑡 is the RX gain of the USRP
RB12
RB9
RB15
Subframe0/5, slot0, at l=5,6
Null REs
• The max gain for RX on the AD936x is 76 dB, for TX 89 dB
© Fraunhofer IIS
36
ue_measurement_procedures openair1/SCHED/phy_procedures_lte_ue.c
The MIMO channel: 𝑯(𝑘) =𝐻11[𝑘] 𝐻12[𝑘]
𝐻21[𝑘] 𝐻22[𝑘]
𝑨MF(𝑘) = 𝑯∗ 𝑘 𝑯 𝑘
=𝐻11
2 + 𝐻212 𝐻11
∗ 𝐻12 + 𝐻21∗ 𝐻22
𝐻12∗ 𝐻11 + 𝐻22
∗ 𝐻21 𝐻122 + 𝐻22
2
The eignvalues of 𝑯 are related to those of 𝑨MF as
𝜆𝑖 = 𝛽𝑖 , 𝑖 = 1, 2
For a unitary matrix, the condition number 𝜖 𝑘 ≡𝜆max𝜆min
= 1, conddB 𝑘 = 0 dB
In OAI, the condition number:
𝜖 𝑘 =𝑨MF(𝑘)
2
det(𝑨MF 𝑘 )
conddB[𝑘] = numerdB(𝑘) − denumdB(𝑘) If conddB 𝑘 ≤ 5 dB, hence, Rank=2
𝜖 𝑘 =𝛽max
𝛽min
=
Rank Indicator (RI)
𝐻𝑑𝑙𝑐ℎ 1 : 𝐻21[𝑘]
𝐻𝑑𝑙𝑐ℎ[3]: 𝐻22[𝑘]
𝐻𝑑𝑙𝑐ℎ 0 :𝐻11[𝑘]
𝐻𝑑𝑙𝑐ℎ[2]: 𝐻12[𝑘]
(𝐻11, 𝐻12, 𝐻21, 𝐻22, 𝑁𝑅𝐵)
rank_estimation
_tm3_tm4
© Fraunhofer IIS
37
ue_measurement_procedures openair1/SCHED/phy_procedures_lte_ue.c
The UE computes
𝑠𝑢𝑏𝑏𝑎𝑛𝑑𝑝𝑚𝑖𝑟𝑒/𝑖𝑚 𝑠𝑢𝑏𝑏𝑎𝑛𝑑 𝑛𝑟𝑥 = 𝐸 𝐻𝑛𝑟𝑥1 𝑘 𝐻𝑛𝑟𝑥2∗ 𝑘 ,
𝑛𝑟𝑥 = 1, 2
The correlation coefficient
𝑠𝑢𝑏𝑏𝑎𝑛𝑑𝑝𝑚𝑖𝑟𝑒/𝑖𝑚 𝑠𝑢𝑏𝑏𝑎𝑛𝑑 += 𝑠𝑢𝑏𝑏𝑎𝑛𝑑𝑝𝑚𝑖𝑟𝑒/𝑖𝑚 𝑠𝑢𝑏𝑏𝑎𝑛𝑑 𝑛𝑟𝑥
Precoding for (rank =1) TM4
𝑝𝑚𝑖𝑣𝑒𝑐𝑡 | = 𝑝𝑚𝑖𝑞 << (2 ∗ 𝑖), for 𝑖 = 0,… , 𝑛𝑏𝑠𝑢𝑏𝑏𝑎𝑛𝑑𝑠 − 1
PM Indicator (PMI)
𝐻𝑑𝑙𝑐ℎ 1 : 𝐻21[𝑘]
𝐻𝑑𝑙𝑐ℎ[3]: 𝐻22[𝑘]
𝐻𝑑𝑙𝑐ℎ 0 :𝐻11[𝑘]
𝐻𝑑𝑙𝑐ℎ[2]: 𝐻12[𝑘]
RB 21
RB 20
RB 23
RB 22
RB 24
RB 3
RB 2
RB 1
RB 0
0
5
6
pmiq
pmiq
pmiq
𝜃𝑝𝑚𝑖𝑟𝑒/𝑖𝑚: (45o, 135o)
Index 2: 1
2
1𝑗
real axis
Imaginary axis
𝜃𝑝𝑚𝑖𝑟𝑒/𝑖𝑚: (135o, 225o)
Index 1: 1
2
1−1
𝜃𝑝𝑚𝑖𝑟𝑒/𝑖𝑚: (225o, 315o)
Index 3: 1
2
1−𝑗
𝜃𝑝𝑚𝑖𝑟𝑒/𝑖𝑚: (45o, −45o)
Index 0: 1
2
11
© Fraunhofer IIS
38
ue_measurement_procedures openair1/SCHED/phy_procedures_lte_ue.c
The UE computes
𝑠𝑢𝑏𝑏𝑎𝑛𝑑𝑝𝑚𝑖𝑟𝑒/𝑖𝑚 𝑠𝑢𝑏𝑏𝑎𝑛𝑑 𝑛𝑟𝑥 = 𝐸 𝐻𝑛𝑟𝑥1 𝑘 𝐻𝑛𝑟𝑥2∗ 𝑘 ,
𝑛𝑟𝑥 = 1, 2
The correlation coefficient
𝑠𝑢𝑏𝑏𝑎𝑛𝑑𝑝𝑚𝑖𝑟𝑒/𝑖𝑚 𝑠𝑢𝑏𝑏𝑎𝑛𝑑 += 𝑠𝑢𝑏𝑏𝑎𝑛𝑑𝑝𝑚𝑖𝑟𝑒/𝑖𝑚 𝑠𝑢𝑏𝑏𝑎𝑛𝑑 𝑛𝑟𝑥
Precoding for (rank =2) TM4
𝑝𝑚𝑖𝑣𝑒𝑐𝑡 | = (𝑝𝑚𝑖𝑞 − 1) << 𝑖, for 𝑖 = 0, … , 𝑛𝑏𝑠𝑢𝑏𝑏𝑎𝑛𝑑𝑠 −1
PM Indicator (PMI)
𝐻𝑑𝑙𝑐ℎ 1 : 𝐻21[𝑘]
𝐻𝑑𝑙𝑐ℎ[3]: 𝐻22[𝑘]
𝐻𝑑𝑙𝑐ℎ 0 :𝐻11[𝑘]
𝐻𝑑𝑙𝑐ℎ[2]: 𝐻12[𝑘]
RB 21
RB 20
RB 23
RB 22
RB 24
RB 3
RB 2
RB 1
RB 0
0
5
6
pmiq
pmiq
pmiq
pmiq # of layer 2 (RI 1)
1 1
2
1 11 −1
2 1
2
1 1𝑗 −𝑗
𝜌21 = 𝐻12∗ 𝐻22
∗ 𝐻11
𝐻21
pmiq = 1, for Re(𝜌21) ≥ Im(𝜌21)
2, for Re 𝜌21 < Im(𝜌21)
© Fraunhofer IIS
39
TM4 Setup and Results
OAI-eNB U
SRP
B210
IF5 URU
USRP
B210
OAI-UE
Shared UE-Side Distributed Antenna System
RI and 𝐶𝑄𝐼/𝑃𝑀𝐼
Feedback
ue_TransmissionMode=4
--fh IF5
Multiple UEs
© Fraunhofer IIS
40
TM4 Setup and Results
UE Statistics
Noise Floor Calculation:
𝑛0𝑝𝑜𝑤𝑒𝑟 𝑎𝑎𝑟𝑥 =1
2𝑁0𝐹 × 𝑁∆𝑓 × 230 (W)
where 𝑁0𝐹 = −174 dBm/Hz + 𝑵𝑭 dB + 𝐺𝐴(dB) and 𝐺𝐴(dB) = 𝑈𝐸𝑟𝑥𝑔𝑎𝑖𝑛 − 𝑈𝑆𝑅𝑃𝑂𝑓𝑓𝑒𝑠𝑡 is the RX gain of the
USRP
RI=1 (2 layers)
© Fraunhofer IIS
41
TM4 Setup and Results
eNB Statistics RI=1 (2 layers)
© Fraunhofer IIS
42
TM4 Setup and Results
eNB Statistics RI=1 (2 layers)
© Fraunhofer IIS
43
UE Statistics
TM4 Setup and Results
RI=0 (1 layers)
© Fraunhofer IIS
44
eNB Statistics
TM4 Setup and Results
RI=0 (1 layers)
© Fraunhofer IIS
45
Thank You