-
Notifications
You must be signed in to change notification settings - Fork 225
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix cyclic prefix length of first symbol for 5g NR PUSCH #465
base: main
Are you sure you want to change the base?
Conversation
52d2b41
to
6bc104a
Compare
I just noticed an issue with my code. The assumption that the first symbol in a slot has a longer cyclic prefix is not always valid. For example with SCS = 60kHz only every second slot will have a longer cyclic prefix for its first symbol. The solution is pretty straightforward (check for the slot number in I'm also not super happy about all the additional properties my changes introduced. Alternatively I could also modify |
Yes, in the current implementation, the slot number cannot be changed on the fly. That's one of things we might change in the future. However, this requires some deeper level of integration and cannot be added as a simple functionality on top of the existing code. Concerning your pull request, it is great that you managed to add these changes. However, we currently cannot allocate the necessary time to review it properly. Hope for your understanding. Nevertheless, your fork might still be useful for other people although it is not integrated yet. |
FYI: I just did a complete rewrite of my implementation. Instead of passing the length of long and normal cyclic prefixes and the periodicity of the long cyclic prefix, I pass the cyclic prefix length as a vector now. Instead of reshaping multiple times to add/remove the cyclic prefix I use There is one remaining issue: |
The next Sionna release will comprise updated OFDMModulator and OFDMDemodulator classes which look very similar to what you have done (the main difference is that we avoid the costly gather operation if all CPs are the same). Once the release is there, it would be great if you could update your PR to use these new classes. The interface is the same as what you have used, i.e., providing the CP lengths as vector. I still need to review the rest and think about the implications for the resource grid. I think that it is also used to compute the noise power in many OFDM-based link-level simulations. Maybe we could also use a vector for the CP lengths here. |
Signed-off-by: Daniel Schäufele <[email protected]>
accd0b7
to
6d80e7e
Compare
Description
According to TS 138.211, section 5.3.1, the length of the cyclic prefix is extended by 16κ for the first symbol of each half subframe.
An attempt to implement this was done in CarrierConfig.cyclic_prefix_length, but the code checks for the slot number instead of the symbol number.
See also #425.
In order to support a different cyclic prefix lengths for the first symbol of each "block" (a half subframe in 5G NR and a slot in LTE), the parameters
cyclic_prefix_length_first_symbol
andsymbols_per_block
were added toOFDMModulator
/OFDMDemodulator
. The algorithm ofOFDMModulator
/OFDMDemodulator
was modified to reshape the data into blocks (while adding zero padding beforehand if the number of OFDM symbols is not an integer multiple ofsymbols_per_block
). Then the additional cyclic prefix is added/removed from the beginning of each block. Afterwards the data is reshaped into the proper shape and the zero padding is removed (if necessary).The property
cyclic_prefix_length_first_symbol
was added toCarrierConfig
andPUSCHTransmitter
/PUSCHReceiver
were modified to pass this parameter toOFDMModulator
/OFDMDemodulator
.No
Optional parameters have been added to
OFDMModulator
/OFDMDemodulator
.CarrierConfig
got a new propertycyclic_prefix_length_first_symbol
and the return value ofcyclic_prefix_length
might change.5G PUSCH data sets generated with the old version can't be loaded with the new version. Unfortunately, I don't see a way to fix this bug while being backwards compatible.
Fixed some spelling errors.
Checklist