Issue in a single layer multi Tx antennas PUSCH throughput example - 5G toolbox
4 views (last 30 days)
Show older comments
In the 5G PUSCH Throughput example, there's an issue in a specific case.
I've been trying to simulate single layer transmission with multiple antennas without codebook precoding.
e.g.:
simParameters.NTxAnts = 2; % Number of transmit antennas
simParameters.NRxAnts = 2; % Number of receive antennas
simParameters.PUSCH.NumLayers = 1; % Number of PUSCH transmission layers
simParameters.PUSCH.TransmissionScheme = 'nonCodebook'; % Transmission scheme ('nonCodebook','codebook')
The problem is that the precding matrix
F = eye(pusch.NumLayers,simLocal.NTxAnts);
will be a single row matrix with the first element = 1;
F = [1 0];
This will cause the tx signal to be all 0s at the second antenna input, and only the first antenna will be active.
Is there a way to be able to use the multi tx antennas with single layer?
0 Comments
Accepted Answer
Yash
on 12 Jan 2024
Hi Hammam Orabi,
I understand that you want to simulate the "NR PUSVH Throughput" in this scenario: single PUSCH transmission layer, multiple antennas and "nonCodebook" PUSCH transmission scheme. In order to use multiple antennas in this scenario, the precoding matrix "F" between PUSCH layers and transmit antennas can be a row vector with each element set to "1/sqrt(N)", where "N" is the number of transmit antennas (N=2 in this case). This would ensure that the power is distributed equally among the transmit antennas.
Here is the modified code to achieve this:
% Implementation-specific PUSCH MIMO precoding and mapping. This
% MIMO precoding step is in addition to any codebook based
% MIMO precoding done during PUSCH modulation above
if (strcmpi(pusch.TransmissionScheme,'codebook'))
% Codebook based MIMO precoding, F precodes between PUSCH
% transmit antenna ports and transmit antennas
F = eye(pusch.NumAntennaPorts,simLocal.NTxAnts);
else
% Non-codebook based MIMO precoding, F precodes between PUSCH
% layers and transmit antennas
F = ones(pusch.NumLayers,simLocal.NTxAnts) / sqrt(simLocal.NTxAnts);
end
The updated simulation results are as follows:
Simulating transmission scheme 1 (2x2) and SCS=15kHz with TDL-A channel at -5dB SNR for 2 10ms frame(s)
(5.00%) NSlot=0, HARQ Proc 0: CW0: Initial transmission passed (RV=0,CR=0.190705).
(10.00%) NSlot=1, HARQ Proc 1: CW0: Initial transmission passed (RV=0,CR=0.190705).
(15.00%) NSlot=2, HARQ Proc 2: CW0: Initial transmission passed (RV=0,CR=0.190705).
(20.00%) NSlot=3, HARQ Proc 3: CW0: Initial transmission passed (RV=0,CR=0.190705).
(25.00%) NSlot=4, HARQ Proc 4: CW0: Initial transmission passed (RV=0,CR=0.190705).
(30.00%) NSlot=5, HARQ Proc 5: CW0: Initial transmission passed (RV=0,CR=0.190705).
(35.00%) NSlot=6, HARQ Proc 6: CW0: Initial transmission passed (RV=0,CR=0.190705).
(40.00%) NSlot=7, HARQ Proc 7: CW0: Initial transmission passed (RV=0,CR=0.190705).
(45.00%) NSlot=8, HARQ Proc 8: CW0: Initial transmission passed (RV=0,CR=0.190705).
(50.00%) NSlot=9, HARQ Proc 9: CW0: Initial transmission passed (RV=0,CR=0.190705).
(55.00%) NSlot=10, HARQ Proc 10: CW0: Initial transmission passed (RV=0,CR=0.190705).
(60.00%) NSlot=11, HARQ Proc 11: CW0: Initial transmission passed (RV=0,CR=0.190705).
(65.00%) NSlot=12, HARQ Proc 12: CW0: Initial transmission passed (RV=0,CR=0.190705).
(70.00%) NSlot=13, HARQ Proc 13: CW0: Initial transmission passed (RV=0,CR=0.190705).
(75.00%) NSlot=14, HARQ Proc 14: CW0: Initial transmission passed (RV=0,CR=0.190705).
(80.00%) NSlot=15, HARQ Proc 15: CW0: Initial transmission passed (RV=0,CR=0.190705).
(85.00%) NSlot=16, HARQ Proc 0: CW0: Initial transmission passed (RV=0,CR=0.190705).
(90.00%) NSlot=17, HARQ Proc 1: CW0: Initial transmission passed (RV=0,CR=0.190705).
(95.00%) NSlot=18, HARQ Proc 2: CW0: Initial transmission passed (RV=0,CR=0.190705).
(100.00%) NSlot=19, HARQ Proc 3: CW0: Initial transmission passed (RV=0,CR=0.190705).
Throughput(Mbps) for 2 frame(s) = 2.8560
Throughput(%) for 2 frame(s) = 100.0000
Simulating transmission scheme 1 (2x2) and SCS=15kHz with TDL-A channel at 0dB SNR for 2 10ms frame(s)
(5.00%) NSlot=0, HARQ Proc 0: CW0: Initial transmission passed (RV=0,CR=0.190705).
(10.00%) NSlot=1, HARQ Proc 1: CW0: Initial transmission passed (RV=0,CR=0.190705).
(15.00%) NSlot=2, HARQ Proc 2: CW0: Initial transmission passed (RV=0,CR=0.190705).
(20.00%) NSlot=3, HARQ Proc 3: CW0: Initial transmission passed (RV=0,CR=0.190705).
(25.00%) NSlot=4, HARQ Proc 4: CW0: Initial transmission passed (RV=0,CR=0.190705).
(30.00%) NSlot=5, HARQ Proc 5: CW0: Initial transmission passed (RV=0,CR=0.190705).
(35.00%) NSlot=6, HARQ Proc 6: CW0: Initial transmission passed (RV=0,CR=0.190705).
(40.00%) NSlot=7, HARQ Proc 7: CW0: Initial transmission passed (RV=0,CR=0.190705).
(45.00%) NSlot=8, HARQ Proc 8: CW0: Initial transmission passed (RV=0,CR=0.190705).
(50.00%) NSlot=9, HARQ Proc 9: CW0: Initial transmission passed (RV=0,CR=0.190705).
(55.00%) NSlot=10, HARQ Proc 10: CW0: Initial transmission passed (RV=0,CR=0.190705).
(60.00%) NSlot=11, HARQ Proc 11: CW0: Initial transmission passed (RV=0,CR=0.190705).
(65.00%) NSlot=12, HARQ Proc 12: CW0: Initial transmission passed (RV=0,CR=0.190705).
(70.00%) NSlot=13, HARQ Proc 13: CW0: Initial transmission passed (RV=0,CR=0.190705).
(75.00%) NSlot=14, HARQ Proc 14: CW0: Initial transmission passed (RV=0,CR=0.190705).
(80.00%) NSlot=15, HARQ Proc 15: CW0: Initial transmission passed (RV=0,CR=0.190705).
(85.00%) NSlot=16, HARQ Proc 0: CW0: Initial transmission passed (RV=0,CR=0.190705).
(90.00%) NSlot=17, HARQ Proc 1: CW0: Initial transmission passed (RV=0,CR=0.190705).
(95.00%) NSlot=18, HARQ Proc 2: CW0: Initial transmission passed (RV=0,CR=0.190705).
(100.00%) NSlot=19, HARQ Proc 3: CW0: Initial transmission passed (RV=0,CR=0.190705).
Throughput(Mbps) for 2 frame(s) = 2.8560
Throughput(%) for 2 frame(s) = 100.0000
Simulating transmission scheme 1 (2x2) and SCS=15kHz with TDL-A channel at 5dB SNR for 2 10ms frame(s)
(5.00%) NSlot=0, HARQ Proc 0: CW0: Initial transmission passed (RV=0,CR=0.190705).
(10.00%) NSlot=1, HARQ Proc 1: CW0: Initial transmission passed (RV=0,CR=0.190705).
(15.00%) NSlot=2, HARQ Proc 2: CW0: Initial transmission passed (RV=0,CR=0.190705).
(20.00%) NSlot=3, HARQ Proc 3: CW0: Initial transmission passed (RV=0,CR=0.190705).
(25.00%) NSlot=4, HARQ Proc 4: CW0: Initial transmission passed (RV=0,CR=0.190705).
(30.00%) NSlot=5, HARQ Proc 5: CW0: Initial transmission passed (RV=0,CR=0.190705).
(35.00%) NSlot=6, HARQ Proc 6: CW0: Initial transmission passed (RV=0,CR=0.190705).
(40.00%) NSlot=7, HARQ Proc 7: CW0: Initial transmission passed (RV=0,CR=0.190705).
(45.00%) NSlot=8, HARQ Proc 8: CW0: Initial transmission passed (RV=0,CR=0.190705).
(50.00%) NSlot=9, HARQ Proc 9: CW0: Initial transmission passed (RV=0,CR=0.190705).
(55.00%) NSlot=10, HARQ Proc 10: CW0: Initial transmission passed (RV=0,CR=0.190705).
(60.00%) NSlot=11, HARQ Proc 11: CW0: Initial transmission passed (RV=0,CR=0.190705).
(65.00%) NSlot=12, HARQ Proc 12: CW0: Initial transmission passed (RV=0,CR=0.190705).
(70.00%) NSlot=13, HARQ Proc 13: CW0: Initial transmission passed (RV=0,CR=0.190705).
(75.00%) NSlot=14, HARQ Proc 14: CW0: Initial transmission passed (RV=0,CR=0.190705).
(80.00%) NSlot=15, HARQ Proc 15: CW0: Initial transmission passed (RV=0,CR=0.190705).
(85.00%) NSlot=16, HARQ Proc 0: CW0: Initial transmission passed (RV=0,CR=0.190705).
(90.00%) NSlot=17, HARQ Proc 1: CW0: Initial transmission passed (RV=0,CR=0.190705).
(95.00%) NSlot=18, HARQ Proc 2: CW0: Initial transmission passed (RV=0,CR=0.190705).
(100.00%) NSlot=19, HARQ Proc 3: CW0: Initial transmission passed (RV=0,CR=0.190705).
Throughput(Mbps) for 2 frame(s) = 2.8560
Throughput(%) for 2 frame(s) = 100.0000
However, it must be noted that the documentation states "The implementation-specific MIMO precoding matrix (for non-codebook based transmission, or MIMO precoding between transmission antenna ports and antennas for codebook based transmission) is an identity matrix." In the above updated code, the precoding matrix has been set as a row vector with identical elements and is no longer an identity matrix. Kindly go over the bibliography listed in the documentation to have a better understanding of the 3GPP NR standard: https://www.mathworks.com/help/5g/ug/nr-pusch-throughput.html#:~:text=2%3A6).-,Selected%20Bibliography,-3GPP%20TS%2038.211
I hope this helps!
2 Comments
Yash
on 14 Jan 2024
Please note that since the number of layers is one, independent data streams cannot be transmitted. This approach of using precoding matrix with "1/sqrt(N)" elements can instead utilize transmitter diversity to enhance signal reliability.
Refer to the following for more information on the concept of Layer Mapping:
More Answers (0)
See Also
Categories
Find more on Wireless Communications in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!