IMPLEMENTATION OF TM4 INTO OAI SOFTMODEM Joint ETSI - OSA Workshop: Open Implementations and Standardization Pre Event Training December 08 Fraunhofer Institute for Integrated Circuits (IIS) Khodr Saaifan khodr.saaifan@iis.fraunhofer.de
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
TM4 Basics in LTE Non Access-Stratum (NAS) RRC MAC PHY RF PDCP RLC OAI-eNB Master Branch The MIMO channel at the k th subcarrier: Channel decomposition: X Modulated Symbols X = VX X X = VX H = H [k] H [k] H [k] H [k] H = U λ 0 0 λ V H H H dlch 0 : H [k] H dlch []: H [k] H dlch : H [k] H dlch [3]: H [k] Feedback Y = HX + Z Y = U H Y Y = λ X + Z Y = λ X + Z Non Access-Stratum (NAS) RRC MAC PHY RF OAI-UE PDCP RLC Master Branch k th RE X X txdataf[0][tti offest ] txdataf[][tti offest ] k th RE Y Y rxdataf ext [0][tti offest ] rxdataf ext [][tti offest ] 3
TM4 Basics in LTE Non Access-Stratum (NAS) Closed loop precoding in LTE: Requires feedback from the UE Rank indicator (RI) Precoding matrix indicator (PMI) Non Access-Stratum (NAS) PDCP RRC RLC MAC PHY RF OAI-eNB H Modulated Symbols X = PX X X jh Index 3: X = PX H + H H j H H dlch 0 : H [k] H dlch []: H [k] H dlch : H [k] H dlch [3]: H [k] Feedback H eff = H H H H P pmiq # of layer (RI 0) 0 3 Y = H eff X + Z Y Y j j PDCP RRC RLC MAC PHY RF OAI-UE 4
TM4 Basics in LTE Non Access-Stratum (NAS) Closed loop precoding in LTE: Requires feedback from the UE Rank indicator (RI) Precoding matrix indicator (PMI) Non Access-Stratum (NAS) PDCP RRC RLC MAC PHY RF OAI-eNB X Modulated Symbols X = PX X X = PX H H dlch 0 : H [k] H dlch []: H [k] H dlch : H [k] H dlch [3]: H [k] H eff Y = H eff X + Z = H H H H P Y Y PDCP RRC RLC MAC PHY RF OAI-UE H ρ = H H H Feedback pmiq =, for Re(ρ ) Im(ρ ), for Re ρ < Im(ρ ) pmiq # of layer (RI ) j j 5
TM4 Basics in LTE Non Access-Stratum (NAS) In OAI-eNB, we verify and review the MAC/PHY code to support: MAC: format with Nl=, PHY: layer mapping of codeword into Nl layers Non Access-Stratum (NAS) PDCP RRC RLC MAC PHY RF OAI-eNB X Modulated Symbols X = PX X X = PX H H dlch 0 : H [k] H dlch []: H [k] H dlch : H [k] H dlch [3]: H [k] H eff Y = H eff X + Z = H H H H P Y Y PDCP RRC RLC MAC PHY RF OAI-UE Feedback UE statistics CQI/PMI reporting UCI format CQI, PMI, and RI UE measurements 6
TM4 Basics in LTE In OAI-UE, we verify and review the PHY code to support: lte_ue_measurements: CQI, PMI, and RI ue_pdcch_procedures: format detection generate_ue_dlsch_params_from_dci: extract format for DL decoding Non Access-Stratum (NAS) RRC MAC PHY RF PDCP RLC OAI-eNB ue_pdsch_procedures: rx_pdsch for processing layers into codeword X Modulated Symbols X = PX X UE statistics X = PX H H dlch 0 : H [k] H dlch []: H [k] H dlch : H [k] H dlch [3]: H [k] Feedback CQI/PMI reporting H eff UCI format CQI, PMI, and RI Y = H eff X + Z = H H H H P Y Y Non Access-Stratum (NAS) RRC UE measurements MAC PHY RF OAI-UE PDCP RLC 7
Review of OAI-eNB Thread and PHY Procedures 8
Review of OAI-eNB Thread and PHY Procedures enb: phy_procedures_enb_tx openair/sched/phy_procedures_lte_enb.c RB5 RB RB9 subframe 0 9
Review of OAI-eNB Thread and PHY Procedures enb: phy_procedures_enb_tx openair/sched/mac/phy_procedures_lte_enb.c 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)%0) ul_frame=(frame+(subframe_tx>=6? :0)) harq_pid=(((ul_frame<<)+ul_subframe)&7); 0
Review of OAI-eNB Thread and PHY Procedures enb: phy_procedures_enb_tx openair/sched/phy_procedures_lte_enb.c
Review of OAI-eNB Thread and PHY Procedures enb: phy_procedures_enb_tx openair/sched/phy_procedures_lte_enb.c
Review of OAI-eNB Thread and PHY Procedures enb: phy_procedures_enb_tx openair/sched/phy_procedures_lte_enb.c 3
enb: TX (MAC+PDSCH) enb_dlsch_ulsch_scheduler() openair/layer/mac/enb_scheduler.c DCCH DCCH Logical channel Prioritization/Multiplexing DTCH schedule_ra schedule_si schedule_ue_spec schedule_ulsch format phy_procedures_enb_tx() openair/sched/phy_procedures_lte_enb.c pdsch_procedures() openair/sched/phy_procedures_lte_enb.c nb_antenna_ports_enb = TBS off (mcs = 0, rv = ) TBS0 on tpmi=0 to 7 DLSCH_pdu TBS generate enb_dlsch params() generate enb_dlsch params_from_dci() format, formata format fill_dlsch_dci DCI pdu generate enb_ulsch params() generate enb_ulsch params_from_dci() format0 For N l = layers, dlsch0_harq->mimo_mode is configured based on tpmi TBS is assigned based on N l nb rb G = (nb rb mod order ((4 num pdcchsymbols ) 3 4) G adj ) N l dlsch_encoding() crc, lte_segmentation, turbo_encoding, rate_matching Turbo Encoding LTE_TRANSPORT/dlsch_coding.c G bits G/Q m symbols dlsch_ scrambling() G bits G/Q m /N l symbols dlsch_ modulation() allocate_res_in_rb() LTE_TRANSPORT/dlsch_modulation.c X 0 i = QAM e Q m i,, Q m i + Q m, i = 0,, G/Q m X 0 i X i X 0 X X i = QAM e Q m (i + ),, Q m (i + ) + Q m, txdataf[0][tti offest ] txdataf[][tti offest ] 4
MAC: schedule_ue_spec(module_idp,framep,subframep,mbsfn_flag) /openair/layer/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 0)+subframe_tx)&7 5
MAC: schedule_ue_spec(module_idp,framep,subframep,mbsfn_flag) /openair/layer/mac/enb_scheduler_dlsch.c 6
MAC: dlsch_scheduler_pre_processor (module_idp, framep, subframep, N_RBG, mbsfn_flag) /openair/layer/mac/pre_processor.c 7
MAC: assign_rbs_required (module_idp,framep,subframep,nb_rbs_required[max_num_ccs][num_ue_max], min_rb_unit[max_num_ccs]) /openair/layer/mac/pre_processor.c 8
MAC: schedule_ue_spec(module_idp,framep,subframep,mbsfn_flag) /openair/layer/mac/enb_scheduler_dlsch.c 9
MAC: schedule_ue_spec(module_idp,framep,subframep,mbsfn_flag) /openair/layer/mac/enb_scheduler_dlsch.c 0
MAC: schedule_ue_spec(module_idp,framep,subframep,mbsfn_flag) /openair/layer/mac/enb_scheduler_dlsch.c
MAC: schedule_ue_spec(module_idp,framep,subframep,mbsfn_flag) /openair/layer/mac/enb_scheduler_dlsch.c
MAC: schedule_ue_spec(module_idp,framep,subframep,mbsfn_flag) /openair/layer/mac/enb_scheduler_dlsch.c 3
PHY: generate_enb_dlsch_params_from_dci(): /openair/phy/lte_transport/dci_tools.c DL Scheduling assignment for MIMO closed loop spatial multiplexing enb->ue_stats[ue_id]->dl_pmi_single (DCI_5MHz_A_FDD_t*)dci_pdu rah rballoc TPC Harq pid Tb swap mcs ndi rv mcs ndi rv tpmi 3 3 5 5 3 0 rballoc tpc harq_pid mcs -oldndi 0 0 0/7 dlsch0_harq->nb_rb dlsch0_harq->tbs TB0 ON TB OFF dlsch0=dlsch[0] dlsch=null tpmi=0: AlAMOUTI, Nl= tpmi=: UNIFORM_PRECODING pmiq 0, Nl= tpmi=: UNIFORM_PRECODINGm, pmiq, Nl= tpmi=3: UNIFORM_PRECODINGj, pmiq, Nl= tpmi=4: UNIFORM_PRECODINGmj, pmiq3, Nl= tpmi=5: PUSCH_PRECODING0, Nl= tpmi=6: PUSCH_PRECODING, Nl= tpmi=7: TM4_NO_PRECODING, Nl= dlsch0_harq->mimo_mode dlsch0_harq->nl dlsch0_harq->pmi_alloc 4
enb: TX (MAC+PDSCH) enb_dlsch_ulsch_scheduler() openair/layer/mac/enb_scheduler.c DCCH DCCH Logical channel Prioritization/Multiplexing DTCH schedule_ra schedule_si schedule_ue_spec schedule_ulsch format phy_procedures_enb_tx() openair/sched/phy_procedures_lte_enb.c pdsch_procedures() openair/sched/phy_procedures_lte_enb.c nb_antenna_ports_enb = TBS off (mcs = 0, rv = ) TBS0 on tpmi=0 to 7 DLSCH_pdu TBS generate enb_dlsch params() generate enb_dlsch params_from_dci() format, formata format fill_dlsch_dci DCI pdu generate enb_ulsch params() generate enb_ulsch params_from_dci() format0 For N l = layers, dlsch0_harq->mimo_mode is configured based on tpmi TBS is assigned based on N l nb rb G = (nb rb mod order ((4 num pdcchsymbols ) 3 4) G adj ) N l dlsch_encoding() crc, lte_segmentation, turbo_encoding, rate_matching Turbo Encoding LTE_TRANSPORT/dlsch_coding.c G bits G/Q m symbols dlsch_ scrambling() G bits G/Q m /N l symbols dlsch_ modulation() allocate_res_in_rb() LTE_TRANSPORT/dlsch_modulation.c X 0 i = QAM e Q m i,, Q m i + Q m, i = 0,, G/Q m X 0 i X i X 0 X X i = QAM e Q m (i + ),, Q m (i + ) + Q m, txdataf[0][tti offest ] txdataf[][tti offest ] 5
Review of OAI-UE Thread and PHY Procedures 6
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 7
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 8
UE: RX (PDCCH+PDSCH) ue_measurement_procedures() /openair/sched/phy_procedures_lte_ue.c lte_ue_measurements() ue_pdcch_procedures() openair/sched/phy_procedures_lte_ue.c rx_pdcch() dci_cnt = dci_decoding_ procedure() RI + CQI/PMI reporting UCI format: Wideband CQI (4 bits) PMI (4 bits) is_phich_subframe rx_phich () generate_ue_dlsch_ params_from_dci() ue_ulsch_uespec_procedures() DCI pdu generate_ue_ulsch_ params_from_dci() search all possible DCIs Format,A,,... Format 0 DL format : format: Alamouti/TM4 ue_pdsch_procedures() LTE_TRANSPORT/dlsch_demodulation.c generate_ue_dlsch_params_from_dci() LTE_TRANSPORT/dci_tools.c extract_dci _info() status = check_dci_format_a _coherency() TBS0 on TBS off (mcs = 0, rv = ) dlsch0_harq->nl = dlsch0_harq->mimo_mode = Alamouti/TM4_NO_PRECODING dlsch0_harq->mimo_mode tpmi:0 Alamouti tpmi: 7 test TM4 prepare_dl_decoding _format_a() N l = nb_rb = dlsch_extract _rbs_dual dlsch_scal e_channel dlsch_channel _level() dlsch_channel_ compensation dlsch_detection _mrc dlsch _alamouti Y 0 [k] Y [k] rxdataf[0][tti offest ] rxdataf[][tti offest ] rx_pdsch() dlsch_qam_llr() TM4 postprocessor 9
ue_measurement_procedures openair/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 30
ue_measurement_procedures openair/sched/phy_procedures_lte_ue.c The received quantized OFDM samples can be expressed as y n = P rxa G N X k e jπkn/n k=0 + z[n], 0 < n < N where P rx denotes the power of the received passband signal and A G is the voltage Gain of the USRP The samples of z[n] are complex-valued Gaussian RVs with zero mean and variance (power) N 0F N f The quantized IQ samples are represented by 6-bit short integers ( bit: sign and 5 bits: fixed point representation) + y(t) y[n] 6 bits 6 bits I Q R = y q [n] The quantization width is given by: Q = R 5 = 30 μv = 6 nt s t 3
ue_measurement_procedures openair/sched/phy_procedures_lte_ue.c The received quantized OFDM samples can be expressed as y n = P rxa G N X k e jπkn/n k=0 + z[n], 0 < n < N where P rx denotes the power of the received passband signal and A G is the voltage Gain of the USRP The samples of z[n] are complex-valued Gaussian RVs with zero mean and variance (power) N 0F N f rx_offset nb prefix samples (40 or 36) slot_fep() signal processing &common_vars->rxdata[aa] [rx_offset % frame_length_samples] 5 subcarriers 3 bits (I/Q 6 bits per samples input OFDM discrete signal) 5-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 3
ue_measurement_procedures openair/sched/phy_procedures_lte_ue.c The received quantized OFDM samples can be expressed as y n = P rxa G N X k e jπkn/n k=0 + z[n], 0 < n < N where P rx denotes the power of the received passband signal and A G is the voltage Gain of the USRP The samples of z[n] are complex-valued Gaussian RVs with zero mean and variance (power) N 0F N f rx_offset nb prefix samples (40 or 36) slot_fep() signal processing &common_vars->rxdata[aa] [rx_offset % frame_length_samples] 5 subcarriers 3 bits (I/Q 6 bits per samples input OFDM discrete signal) Y k = N N n=0 y n e jπkn/n 5-DFT operation Y k 6 f &common_vars_rx_data_per_thread.rxdataf[aa] [frame_parms->ofdm_symbol_size*symbol] Channel Estimation A N A N A = P rxa G 0 l=0 l=4 If(l==0 l==4) Pilot positions 0 6 f f s = N f 33
ue_measurement_procedures openair/sched/phy_procedures_lte_ue.c The received quantized OFDM samples can be expressed as y n = P rxg A N X k e jπkn/n k=0 + z[n], 0 < n < N 6 f 0 where P rx denotes the power of the received passband signal and G A is the voltage Gain of the USRP The samples of z[n] are complex-valued Gaussian RVs with zero mean and variance (power) N 0F N f Reference Signal Rx power: N rsrp and rssi Y k = y N n e jπkn/n l=0 l=4 rsrp = N E Y[k] = A, k pilots = P rxg A 30 (W/RE) where G A (db) = UE rxgain USRP Offest is the RX gain of the USRP DL rssi = RSRP N RB 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 A Y[k] N n=0 A N A = P rxg A 0 6 f f s = N f 34
ue_measurement_procedures openair/sched/phy_procedures_lte_ue.c The received quantized OFDM samples can be expressed as y n = P rxg A N X k e jπkn/n k=0 + z[n], 0 < n < N The samples of z[n] are complex-valued Gaussian RVs with zero mean and variance (power) N 0F N f RB5 Null REs Noise Floor Calculation: n0 power (aarx) and n0 powertot RB RB9 n0 power aarx = E Z aarx k, k null RE SSS/PSS = N 0F N f 30 (W) where N 0F = 74 dbm/hz + NF db + G A (db) and G A (db) = UE rxgain USRP Offest is the RX gain of the USRP The max gain for RX on the AD936x is 76 db, for TX 89 db Subframe0/5, slot0, at l=5,6 35
ue_measurement_procedures openair/sched/phy_procedures_lte_ue.c Rank Indicator (RI) H dlch 0 : H [k] H dlch []: H [k] H dlch : H [k] H dlch [3]: H [k] (H, H, H, H, N RB ) rank_es tim ation _tm3_tm4 The MIMO channel: H(k) = H [k] H [k] H [k] H [k] A MF (k) = H k H k = H + H H H + H H H H + H H H + H The eignvalues of H are related to those of A MF as λ i = β i, i =, For a unitary matrix, the condition number ε k λmax =, cond λ db k = 0 db min In OAI, the condition number: ε k = β max = ε k = A β MF(k) min det(a MF k ) cond db [k] = numer db (k) denum db (k) If cond db k 5 db, hence, Rank= 36
ue_measurement_procedures openair/sched/phy_procedures_lte_ue.c PM Indicator (PMI) The UE computes subband pmire/im subband n rx = E H nrx k H nrx k, n rx =, The correlation coefficient H dlch 0 : H [k] H dlch []: H [k] RB 4 RB 3 RB RB RB 0 RB 3 RB RB RB 0 6 5 0 H dlch : H [k] H dlch [3]: H [k] pmiq pmiq pmiq subband pmire/im subband += subband pmire/im subband n rx Precoding for (rank =) TM4 pmivect = pmiq << ( i), for i = 0,, nb subbands θ pmire/im : (35 o, 5 o ) Index : Imaginary axis θ pmire/im : (45 o, 35 o ) Index : j real axis θ pmire/im : (5 o, 35 o ) Index 3: j θ pmire/im : (45 o, 45 o ) Index 0: 37
ue_measurement_procedures openair/sched/phy_procedures_lte_ue.c PM Indicator (PMI) The UE computes subband pmire/im subband n rx = E H nrx k H nrx k, n rx =, The correlation coefficient H dlch 0 : H [k] H dlch []: H [k] RB 4 6 H dlch : H [k] H dlch [3]: H [k] pmiq subband pmire/im subband += subband pmire/im subband n rx Precoding for (rank =) TM4 pmivect = (pmiq ) << i, for i = 0,, nb subbands RB 3 RB RB RB 0 RB 3 5 pmiq H ρ = H H H pmiq =, for Re(ρ ) Im(ρ ), for Re ρ < Im(ρ ) pmiq # of layer (RI ) j j RB RB 0 pmiq RB 0 38
TM4 Setup and Results USRP B0 USRP B0 Shared UE-Side Distributed Antenna System OAI-eNB URU IF5 --fh IF5 OAI-UE ue_transmissionmode=4 RI and CQI/PMI Feedback Multiple UEs 39
TM4 Setup and Results UE Statistics RI= ( layers) n0 power aarx Noise Floor Calculation: = N 0F N f 30 (W) where N 0F = 74 dbm/hz + NF db + G A (db) and G A (db) = UE rxgain USRP Offest is the RX gain of the USRP 40
TM4 Setup and Results enb Statistics RI= ( layers) 4
TM4 Setup and Results enb Statistics RI= ( layers) 4
TM4 Setup and Results UE Statistics RI=0 ( layers) 43
TM4 Setup and Results enb Statistics RI=0 ( layers) 44
Thank You 45