Positioning Reference Sequence (PRS)
The positioning reference signal (PRS) is used in 5G-NR systems to estimate the location of the UE in downlink (DL). The
reference signal is generated using DL PRS ID (dlPRSSequenceID
), slot-index (slotNumber
) and, OFDM symbol index
(ofdmSymbolNumber
). The details of PRS generation is provided in Section 7.4.1.7 of [3GPPTS38211_PRS].
Important
The seed (\(c_{init}\)) value is computed using dlPRSSequenceID, slotNumber and ofdmSymbolNumber.
If slotNumber
and symbolNumber
are scalar:
dlPRSSequenceID = 23 # DL PRS ID
slotNumber = 5 # slot Index where PRS is loaded
ofdmSymbolNumber = 4 # ofdm symbol Index
prsLength = 600 # PRS length per ofdm symbol Index
prsObject = PRS(dlPRSSequenceID, slotNumber, ofdmSymbolNumber)
prsSequence = prsObject(prsLength)
If slotNumber
is scalar and symbolNumber
is NumPy Array:
dlPRSSequenceID = 1075 # DL PRS ID
slotNumber = 5 # slot Index where PRS is loaded
ofdmSymbolNumber = np.array([2,3,4,5,6]) # ofdm symbol Index
prsLength = 600 # PRS length per ofdm symbol Index
prsObject = PRS(dlPRSSequenceID, slotNumber, ofdmSymbolNumber)
prsSequence = prsObject(prsLength)
If slotNumber
and symbolNumber
are NumPy Array:
dlPRSSequenceID = 187 # DL PRS ID
slotNumber = np.array([0,0,1,1]) # slot Index where PRS is loaded
ofdmSymbolNumber = np.array([2,3,2,3]) # ofdm symbol Index
prsLength = 864 # PRS length per ofdm symbol Index
prsObject = PRS(dlPRSSequenceID, slotNumber, ofdmSymbolNumber)
prsSequence = prsObject(prsLength)
The details about the input-output interface of the SSS implementation is provided below.
- class toolkit5G.SequenceGeneration.PRS(dlPRSSequenceID, slotNumber, ofdmSymbolNumber)[source]
Generates the positioning reference sequence (PRS) for 5G system. The constructor expects PRS resource ID, slot index, and symbol index. The call method expect the length to be generated for the PRS and returns 1 or multiple PS sequences based on the size of slot index and symbol index passed as input. The details about the implementation of the sequence are provided in section 7.4.1.7 of [3GPPTS38211_PRS].
- Parameters:
dlPRSSequenceID (int) – Defines the dl PRS sequence ID \(\in \{0,1,...,4095\}\).
slotNumber (int or NumPy array, np.integer) – Defines the slot number within a frame \(n_{s,f}^{\mu} \in \{0,1,2,..,10*2^{\mu}-1\}\) where \({\mu = \frac{\Delta f}{15 kHz}}\).
ofdmSymbolNumber (int or NumPy array, np.integer) – Defines the OFDM symbol number (\(l\)), within the slot \(\in \{0,1,2,..,13\}\).
- Input:
length (int) – Defines length of the PN Sequence
- Output:
[…, length], np.int8 – Positioning reference sequence (PRS).
- Raises:
ValueError – [Error]:
length
of PN Sequence must be a positive (>0) integer!ValueError – [Error-PRS]:
dlPRSSequenceID
must be in interval [0 4095]!ValueError – [Error-PRS]:
dlPRSSequenceID
must be integer!ValueError – [Error-PRS]:
slotNumber
must be an integer or NumPy array of integers!ValueError – [Error-PRS]:
slotNumber
must be non-negative!ValueError – [Error-PRS]:
symbolNumber
(OFDM symbol number) must be integer or ndarray of int!ValueError – [Error-PRS]:
symbolNumber
(OFDM symbol number) must be in the range [0-13]!ValueError – [Error-PRS]: Size of
symbolNumber
andsymbolNumber
is inconsistent!
- References: