- This flag is always set to 1, furthermore with multiple DMRS symbols
configuration very recent DMRS containing symbol shall be for channel
estimation.
- Removed tx_gain calculations and multiplication with tx signal
- Updated sigma value calculations and removed unused variables
- Re-indent the related code for better readability
- Most DL code is reused for Ul also to reduce code duplication
- Common CPE calculation function is used for error estimation
- Common slot processing function is used for inter/extrapolation
- Removed old implementation dedicated to UL
- updated return function value to -1
- removed static variable for dmrs symbol selection for channel
- Updated sin cos quadrant check conditions
- removed casting from PTRS slope and related calculations
- fixed channel compensation by choosing most recent DMRS symbol ina
slot
- Removed code to find nearest DMRS symbol for channle compensation
- Updated TBS calculation in DLSIM
- Added debug prints in PTRS CPE estimation for DMRS symbol
- Added PTRS extraction and estimation for DL
- Added processing for whole slot wrt PTRS estimates
- DLSIM is updated to used -T flag to enable PTRS
- DMRS compensated signal is further compensated with PTRS estimation
- Added PTRS variables in transport UE header file
- Added DMRS inline symbol check function in refsig.h
- Added PTRS estimation and other related structures in defs_nr_UE.h file
- PTRSPortIndex, PTRSTimeDensity, PTRSFreqDensity, PTRSReOffset, nEpreRatioOfPDSCHToPTRS
- mcs_table : to calculate MCS table in MAC layer and pass tp PHY
- pduBitmap : same as used in DL FAPI interface, to enable or disable PTRS processing
- Added a function to add PTRS values in RRC context.
- This function can be used to overwrite the PTRS values also.
- When RRC config file contains PTRS values then this function can be used
respectively in RRC context.
- To modify DMRS use -U flag followed by 3 integers
- Example: ./nr_ulsim -U 2 1 0
- 1st Value is the list of arguments -> e.g. 2
- 2nd Value is for TYPE{0=A,1=B} -> e.g. 1
- 3rd Value is for ADD_POS{0,1,2,3} -> e.g. 0
- To enable PTRS use -T flag followed by 3 integers
- Example: ./nr_ulsim -T 2 0 2
- 1st Value is the list of arguments -> e.g. 2
- 2nd Value is for L_PTRS{0,1,2} -> e.g. 0
- 3rd Value is for K_PTRS{2,4} -> e.g. 2
FEATURE STATEMENT:
- Introduce linear phase error noise model in Uplink at UE
- Perform common phase error (CPE) estimation and compensation at gNB
SOLUTION:
- A linear phase shift model is introduced in simulation.
- PTRS symbols are used to perform estimation of CPE from DMRS compensated signal
- The estimated values are interpolated in time domain and signal is compensated for the CPE.
- PTRS processing is done in Frequency Domain for each symbol in a slot and
LLR's are calculated for each symbol accordingly.
IMPLEMENTATION:
* sim.h/channle_sim.c
- Linear Phase Noise Generation model definition.
* nr_ul_channel_estimation.c/nr_ul_estimation.h
- CPE estimation from PTRS and DMRS compensated signal.
* nr_dmrs_rx.c/nr_refsig.h
- Regenerate PTRS symbols at gNB.
* nr_ulsch_demodulation.c
- Removed old PTRS processing code and move to a common PTRS processing function
* defs_gNB.h/init.c
- New PTRS variables definition and initialization
* nr_ulsch_ue.c
- Corrected PTRS parameter to get new PTRS symbols for each OFDM symbol
TESTING
* ulsim.c
- Added Phase noise, Enable PTRS signal and verified the output.
VERIFICATION
- The LLR are rotated back with estimated CPE and no error is observed in scrambling/decoding
Problem STATEMENT:
- When enabling PTRS flag in ulsim, there are multiple scrambling and decoding errors
are observed even with high SNR values
SNR 60dB errors_scrambling 5546/13800
Channel BLER 1.000000e+00, Channel BER 4.018841e-01
ANALYSIS:
- While extracting PTRS RE's, the PUSCH RE count was not updated accordingly for PTRS symbols.
- This results in 0 value LLR's on same positions which cause offset issue in later processing.
IMPLEMENTATION:
* nr_ulsch_demodulation.c
- In case of PTRS symbol, respective total number of PTRS RE's are subtracted from available
PUSCH RE's in each PUSCH Symbol processing.
TESTING
* ulsim.c
- PTRS are enabled for testing and are not enabled by default by this commit.
- Available bit count is adjusted if PTRS is enabled.
VERIFICATION
- Total Scrambling errors after gNb processing shall be only 250 bits (in K=2)
which were replaced with PTRS at UE side while transmission.
SNR 60.000000 errors_scrambling 250/13800
Channel BLER 0.000000e+00, Channel BER 1.811594e-02
- After adjusting available bits in ulsim.c for error calculation
SNR 60.000000: n_errors errors_scrambling 0/13550
Channel BLER 0.000000e+00, Channel BER 0.000000e+00
EXTRA
- Removed white-spaces from all above mentioned files
- Added Global/vim tags to .gitignore file