Scf222!02!5g-Fapi Phy Spi Spec-Mar20
Scf222!02!5g-Fapi Phy Spi Spec-Mar20
Scf222!02!5g-Fapi Phy Spi Spec-Mar20
222.10.02
5G PHY FAPI
Specification
March 2020
www.smallcellforum.org
SCF
Broad roll-out of small cells will make high-grade mobile connectivity accessible
and affordable for industries, enterprises and for rural and urban communities.
That, in turn, will drive new business opportunities for a widening ecosystem of
service providers.
Those service providers are central to our work program. Our operator
members establish the requirements that drive the activities and outputs of
our technical groups.
The Small Cell Forum Release Program has now established business cases
and market drivers for all the main use cases, clarifying market needs and
addressing barriers to deployment for residential, enterprise, rural & remote,
and urban small cells. It has also established initiatives relating to both public
and private (MNO) coordination. The Small Cell Forum Release Program
website can be found here: www.scf.io
If you would like more information about Small Cell Forum or would
like to be included on our mailing list, please contact:
Email info@smallcellforum.org
Reviewer Company
Tom Berko Airspan
N Sreenivas Nokia
Martin Lysejko Picocom
Francois Periard Open Air Interface
Scope
The functional application platform interface (FAPI) is an initiative within the small cell
industry released by the Small Cell Forum, which establishes interoperability and
innovation among suppliers of platform hardware, platform software and application
software by providing a common API around which suppliers can create a competitive
ecosystem. In doing this, we support a long and distinguished engineering tradition of
providing an ‘interchangeability of parts’ to ensure that the systems vendors can take
advantage of the latest innovations in silicon and software with minimum barriers to
entry, and the least amount of custom re-engineering. Hence the specification helps
support an innovative and competitive ecosystem for vendors of 5G small cell
hardware, software and equipment.
For 5G, the FAPI suite comprises three specification documents covering the following
APIs:
• ‘5G FAPI: PHY API’ - main data path (P7) and PHY mode control (P5) interface
[SCF222]
• ‘5G FAPI: RF and Digital Front End Control API’ – (P19) for Frontend Unit
control [SCF223]
• ‘Network Monitor Mode API’ - (P4) for 2G/3G/4G/5G [SCF224] (this document)
Historical placeholder APIs P1, P2, P3, P6 and M1 are outside the scope of this
document.
The table below summarises all of SCF’s FAPI API specifications, covering 5G, 4G, 3G
and 2G radio access technologies (RATs).
New for 5G
Small cell
Network RF /
3GPP RAT Type network FAPI (PNF/RU)
Brand name PHY API Monitor Digital
[TS29.274] PHY/MAC split management
Mode Front End
model
EUTRAN
4G LTE [SCF082] [SCF224] [SCF082] [SCF082] [SCF167]
(WB-E-UTRAN)
The 5G PHY API specification defines a control interface (P5) and a user plane or data
path interface (P7) with the document structured as follows:
Introduction: This section provides the high-level overview and governing principles
of the API.
PHY API Procedures: This section details procedures to configure and control a PHY
entity.
PHY API Messages: This section defines the FAPI specific messages and structures
to implement these procedures
Contents
1. Introduction .................................................................1
1.1 5G NR ............................................................................ 1
1.2 PHY API.......................................................................... 2
2. PHY API Procedures .....................................................4
2.1 Configuration Procedures.................................................. 4
2.1.1 Initialization .................................................................... 4
2.1.2 Termination .................................................................... 9
2.1.3 Restart ......................................................................... 10
2.1.4 Reset ........................................................................... 11
2.1.5 Reconfigure .................................................................. 11
2.1.6 Query .......................................................................... 13
2.1.7 Notification ................................................................... 13
2.2 Slot Procedures ............................................................. 14
2.2.1 SLOT signal .................................................................. 14
2.2.2 SFN/SL Synchronization ................................................. 15
2.2.3 API message order ........................................................ 20
2.2.4 Downlink ...................................................................... 23
2.2.5 Uplink .......................................................................... 32
2.2.6 Precoding and Beamforming ........................................... 38
2.2.7 Error sequences ............................................................ 40
3. PHY API Messages ......................................................43
3.1 General Message Format ................................................ 43
3.2 Message Types .............................................................. 44
3.3 Configuration Messages .................................................. 45
3.3.1 PARAM ......................................................................... 45
3.3.2 CONFIG ........................................................................ 54
3.3.3 Vendor TLVs ................................................................. 61
3.3.4 START .......................................................................... 61
3.3.5 STOP ........................................................................... 62
3.3.6 PHY Notifications ........................................................... 62
3.3.7 Storing Precoding and Beamforming Tables ...................... 63
3.4 Slot Messages ............................................................... 64
3.4.1 Slot.indication ............................................................... 64
3.4.2 DL_TTI.request ............................................................. 65
3.4.3 UL_TTI.request ............................................................. 78
3.4.4 UL_DCI.request ............................................................. 94
3.4.5 SLOT errors .................................................................. 95
3.4.6 Tx_Data.request............................................................ 95
3.4.7 Rx_Data.indication ........................................................ 97
3.4.8 CRC.indication............................................................... 98
3.4.9 UCI.indication ............................................................... 99
3.4.10 SRS.indication ............................................................. 105
3.4.11 RACH.indication .......................................................... 106
References .......................................................................... 108
Tables
Table 2-1 PHY API configuration messages valid in each PHY state ..................4
Table 2-2 Information returned by the PHY during a PARAM message exchange 5
Table 3-1 General PHY API message format................................................ 43
Table 3-2 PHY API message header ........................................................... 43
Table 3-3 General PHY API message structure ............................................ 43
Table 3-4 PHY API message types ............................................................. 44
Table 3-5 PARAM.response message body .................................................. 45
Table 3-6 Error codes for PARAM.response ................................................. 45
Table 3-7 TLV format ............................................................................... 46
Table 3-8 PARAM TLVs ............................................................................. 46
Table 3-9 Cell parameters ........................................................................ 47
Table 3-10 Carrier parameters.................................................................... 49
Table 3-11 PDCCH parameters ................................................................... 49
Table 3-12 PUCCH parameters ................................................................... 50
Table 3-13 PDSCH parameters ................................................................... 51
Table 3-14 PUSCH parameters.................................................................... 52
Table 3-15 PRACH parameters .................................................................... 53
Table 3-16 Measurement parameters .......................................................... 54
Table 3-17 CONFIG.request message body .................................................. 54
Table 3-18 CONFIG.response message body ................................................ 55
Table 3-19 Error codes for CONFIG.response ............................................... 56
Table 3-20 CONFIG TLVs ........................................................................... 56
Table 3-21 Carrier configuration ................................................................. 57
Table 3-22 Cell configuration ...................................................................... 57
Table 3-23 SSB configuration ..................................................................... 58
Table 3-24 PRACH configuration ................................................................. 59
Table 3-25 SSB Table ................................................................................ 60
Table 3-26 TDD table ................................................................................ 61
Table 3-27 Measurement Config ................................................................. 61
Table 3-28 Error codes for START.request ................................................... 62
Table 3-29 Error codes for STOP.request .................................................... 62
Table 3-30 ERROR.indication message body .............................................. 63
Table 3-31 PHY API error codes .................................................................. 63
Table 3-32 Digital Beam Table (DBT) PDU .................................................... 64
Table 3-33 Precoding Matrix (PM) PDU ........................................................ 64
Table 3-34 Slot indication message body ..................................................... 65
Table 3-35 DL_TTI.request message body .................................................. 66
Table 3-36 PDCCH PDU.............................................................................. 68
Table 3-37 DL DCI PDU ............................................................................. 69
Table 3-38 DLSCH PDU .............................................................................. 74
Table 3-39 CSI-RS PDU ............................................................................. 75
Table 3-40 SSB/PBCH PDU ......................................................................... 76
Table 3-41 MAC generated MIB PDU ............................................................ 77
Table 3-42 PHY generated MIB PDU ............................................................ 77
Table 3-43 Tx Precoding and Beamforming PDU ........................................... 78
Table 3-44 UL_TTI.request message body .................................................. 79
Table 3-45 PRACH PDU .............................................................................. 80
Table 3-46 PUSCH PDU .............................................................................. 84
Table 3-47 Optional puschData information .................................................. 85
Table 3-48 Optional puschUci information .................................................... 86
Table 3-49 Optional puschPtrs information ................................................... 87
Table 3-50 Optional dftsOfdm information .................................................... 87
Table 3-51 PUCCH PDU .............................................................................. 91
Table 3-52 SRS PDU.................................................................................. 93
Table 3-53 Rx Beamforming PDU ................................................................ 94
Table 3-54 UL_DCI.request message body .................................................. 94
Table 3-55 Error codes for ERROR.indication generated by DL_TTI.request . 95
Table 3-56 Error codes for ERROR.indication generated by UL_TTI.request . 95
Table 3-57 Error codes for ERROR.indication generated by UL_DCI.request . 95
Table 3-58 TxData.request message ......................................................... 96
Table 3-59 TLV structure ........................................................................... 96
Table 3-60 Error codes for ERROR.indication .............................................. 97
Table 3-61 RX_Data.indication message body ........................................... 98
Table 3-62 CRC.indication message body .................................................. 99
Table 3-63 UCI.indication message body ................................................ 100
Table 3-64 UCI PUSCH PDU...................................................................... 101
Table 3-65 UCI PUCCH Format 0 or 1 PDU ................................................. 102
Table 3-66 UCI PUCCH Format 2, 3 or 4 PDU.............................................. 103
Table 3-67 SR PDU for Format 0 or 1 ........................................................ 103
Table 3-68 HARQ PDU for Format 0 or 1 .................................................... 104
Table 3-69 SR PDU for Format 2, 3 or 4 ..................................................... 104
Table 3-70 HARQ PDU for Format 2, 3 or 4 ................................................ 104
Table 3-71 CSI Part1 PDU ........................................................................ 105
Table 3-72 CSI Part2 PDU ........................................................................ 105
Table 3-73 SRS.indication message body ................................................ 106
Table 3-74 RACH.indication message body .............................................. 107
Figures
1.1 5G NR
Figure 1-1 shows the architecture of a 5G network. It consists of only two elements;
the 5G Core consisting of the access and mobility function (AMF) and user plane
function (UPF) and the 5G Node B (gNB). The 5G FAPI resides within the gNB element.
The standardized interfaces in 5G network are called NG, Xn and F1. The L1 is not
involved in these interfaces, and they are out of scope for this document.
AMF/UPF
NG NG
gNB
gNB
Xn gNB-CU
F1 F1
gNB- gNB-
DU DU
For 5G FAPI the MAC and PHY reside is a single element resulting in FAPI existing as
an internal interface within the gNB, as shown in Figure 1-2.
MAC
5G P19 P7 P5
FAPI
vendor ext
PHY
incl. digital
frontend beam forming
ctrl
FrontEnd
Incl. DFE & RF
The introduction of 5G nFAPI for split 6 with MAC and PHY residing in different physical
locations, a central unit (S-CU) and distributed unit (S-RU), is outside the scope of this
document version.
The 5G FAPI PHY API, defined in this document, resides within the gNB component
with Figure 1-3 showing the protocol model for the gNB defined in the 5G-RAN
architectural standard [TS38.401]. It highlights the separation of control- and data-
plane information, which is maintained throughout the 5G NR network. Both control-
and data-plane information is passed through the PHY API, however, each API
message contains either control- or data-plane information, but never both.
F1 F1
Transport
Signalling Data
Network Bearers Bearers
Layer
PHY API
PHY
Figure 1-4 provides an example of how the different L2/L3 protocol layers will interact
with the PHY API. In this example, a PHY control entity is responsible for configuration
procedures (P5). The MAC layer is responsible for the exchange of data-plane
messages with the PHY (P7). The PHY configuration sent over the P5 interface may be
determined using SON techniques, information model parameters sent from an OAM
system, or a combination of both methods. If carrier aggregation is supported then
one instance of the PHY API exists for each component carrier as defined in
[TS38.104].
RRC
PHY
PDCP
Control
RLC
L2/L3
Scheduler MAC
Software
P5 P7
PHY API
PHY
PHY
PHY
This section gives an overview of the procedures which use the PHY API. These
procedures are split into three groups, namely, configuration procedures, slot
procedures and beamforming/RF procedures. Configuration procedures handle the
management of the PHY layer and are expected to occur infrequently. Slot procedures
determine the structure of each slot and operate with a periodicity based on the
subcarrier spacing numerology, namely 125us, 250us, 500us or 1ms periodicity.
• Initialization
• Termination
• Restart
• Reset
• Error notification
These procedures will move the PHY layer through the IDLE, CONFIGURED and
RUNNING states, as shown in Figure 2-1. A list of the PHY API configuration messages
which are valid in each state is given in Table 2-1 .
CONFIG.request
CONFIG.request
IDLE CONFIGURED
PARAM.request
START.request STOP.request
PARAM.request
RUNNING
CONFIG.request
Figure 2-1 PHY layer state transactions on PHY API configuration messages
START.request
Table 2-1 PHY API configuration messages valid in each PHY state
2.1.1 Initialization
The initialization procedure moves the PHY from the IDLE state to the RUNNING state,
via the CONFIGURED state. An overview of this procedure is given in Figure 2-2, the
different stages are:
The initialization procedure is completed when the PHY sends the L2/L3 software a
SLOT.indication message.
The remainder of this section describes the PARAM, CONFIG and START message
exchange procedures.
The PARAM message exchange procedure is shown in Figure 2-3. Its purpose is to
allow the L2/L3 software to collect information about the PHY configuration and
current state. The information returned by the PHY depends on its state, and is
described in Table 2-2. The PARAM message exchange is optional.
Table 2-2 Information returned by the PHY during a PARAM message exchange
From Figure 2-3 it can be seen that the PARAM message exchange procedure is
initiated by the L2/L3 software sending a PARAM.request message to the PHY. It is
recommended that the L2/L3 software starts a guard timer to wait for the response
from the PHY. If the PHY is operating correctly it will return a PARAM.response
message. In the IDLE and CONFIGURED states this message will include the current
PHY state and a list of configuration information, as described in Table 2-2. In the
RUNNING state this message will indicate an INVALID_STATE error, to determine the
The CONFIG message exchange procedure is shown in Figure 2-4. Its purpose is to
allow the L2/L3 software to configure the PHY. It can be used when the PHY is in any
state. The procedure has slight differences depending on the PHY state, for clarity
each case is described separately.
If the PHY is in the IDLE state the CONFIG.request message, sent by the L2/L3
software, must include all mandatory TLVs. The mandatory TLVs are indicated by the
PHY in the PARAM.response message. If all mandatory TLVs are included, and set to
values supported by the PHY, L1 will return a CONFIG.response message indicating it
is successfully configured and has moved to the CONFIGURED state. If the
CONFIG.request message has missing mandatory TLVs, invalid TLVs, or unsupported
TLVs, the PHY will return a CONFIG.response message indicating an incorrect
configuration. In this case, it will remain in the IDLE state and all received TLVs will be
ignored.
If the PHY is in the CONFIGURED state the CONFIG.request message, sent by the
L2/L3 software, may include only the TLVs that are required to change the PHY to a
new configuration. If the PHY supports these new values, it will return a
CONFIG.response message indicating it has been successfully configured. However, if
the CONFIG.request message includes invalid TLVs, or unsupported TLVs, the PHY will
return a CONFIG.response message indicating an incorrect configuration. In this case
all received TLVs will be ignored and the PHY will continue with its previous
configuration. In both cases, if the PHY receives a CONFIG.request while in the
CONFIGURED state it will remain in the CONFIGURED state.
If the PHY is in the RUNNING state then a limited subset of CONFIG TLVs may be sent
in a CONFIG.request message. The permitted TLVs are indicated by the PHY in
PARAM.response. If the CONFIG.request message has invalid TLVs, or TLVs which
must not be reconfigured in the RUNNING state, the PHY will return a
The START message exchange procedure is shown in Figure 2-5. Its purpose is to
instruct a configured PHY to start transmitting as a gNB. The L2/L3 software initiates
this procedure by sending a START.request message to the PHY. If the PHY is in the
CONFIGURED state, it will issue a SLOT indication. After the PHY has sent its first
SLOT.indication message it enters the RUNNING state.
If the PHY receives a START.request in either the IDLE or RUNNING state it will return
an ERROR.indication including an INVALID_STATE error.
2.1.2 Termination
The termination procedure is used to move the PHY from the RUNNING state to the
CONFIGURED state. This stops the PHY transmitting as a gNB. The termination
procedure is shown in Figure 2-6 and initiated by the L2/L3 software sending a
STOP.request message.
If the STOP.request message is received by the PHY while operating in the RUNNING
state, it will stop all TX and RX operations and return to the CONFIGURED state. When
the PHY has completed its stop procedure a STOP.indication message is sent to the
L2/L3 software.
If the STOP.request message was received by the PHY while in the IDLE or
CONFIGURED state, it will return an ERROR.indication message including an
INVALID_STATE error. However, in this case the PHY was already stopped.
2.1.3 Restart
The restart procedure is shown in Figure 2-7. It can be used by the L2/L3 software
when it needs to stop transmitting, but later wants to restart transmission using the
same configuration. To complete this procedure the L2/L3 software can follow the
STOP message exchange shown in Figure 2-6. This moves the PHY to the
CONFIGURED state. To restart transmission it should follow the START message
exchange, shown in Figure 2-5, moving the PHY back to the RUNNING state.
The reset procedure is shown in Figure 2-8. This procedure is used when the L2/L3
software wants to return the PHY to the IDLE state. This can only be achieved by
terminating the PHY (as shown in Figure 2-6) and then resetting the PHY. The method
for resetting the PHY will be implementation specific and is outside the scope of this
document.
2.1.5 Reconfigure
The major reconfigure procedure is shown in Figure 2-9. It is used when the L2/L3
software wants to make significant changes to the configuration of the PHY. The STOP
message exchange, shown in Figure 2-6, is followed to halt the PHY and move it to the
CONFIGURED state. The CONFIG message exchange, shown in Figure 2-4, is used to
reconfigure the PHY. Finally, the START message exchange, shown in Figure 2-5, is
followed to start the PHY and return it to the RUNNING state.
In the slot where the L2/L3 software requires the configuration change it sends the
CONFIG.request message to the PHY. Only a limited subset of CONFIG TLVs may be
sent, these are indicated by the PHY in PARAM.response. TLVs included in the
CONFIG.request message for slot N will be applied at the SFN/SL given in the
CONFIG.request message. Reconfiguring the PHY while in the RUNNING state has a
further restriction, the CONFIG.request message must be sent before the
DL_TTI.request and UL_TTI.request message.
2.1.6 Query
The query procedure is shown in Figure 2-11. It is used by the L2/L3 software to
determine the configuration and operational status of the PHY. The PARAM message
exchange, shown in Figure 2-3, is used. This signalling sequence can be followed when
the PHY is stopped, in the IDLE state and, optionally, the CONFIGURED state.
2.1.7 Notification
The notification procedure is shown in Figure 2-12. The PHY sends a notification
message when it has an event of interest for the L2/L3 software. Currently, there is
one notification message called ERROR.indication.
L1 PHY
L2/L3 software
ERROR.indication()
(from Actors)
The slot procedures have two purposes. Firstly, they are used to control the DL and UL
frame structures. Secondly, they are used to transfer the slot data between the L2/L3
software and PHY. The slot procedures supported by the PHY API are:
A SLOT.indication message is sent from the PHY, to the L2/L3 software, indicating
the start of a slot.
SLOT.indication
SLOT.indication
SLOT.indication
SLOT.indication
SLOT.indication
SLOT.indication
SLOT.indication
SLOT.indication
0 1 2 3 4 5 6 7 u=3
SLOT.indication
SLOT.indication
SLOT.indication
SLOT.indication
0 1 2 3 u=2
SLOT.indication
SLOT.indication
0 1 u=1
SLOT.indication
0
u=0
N+0 N+1 N+2 N+3 N+4 N+5 N+6 N+7 N+8 N+9
Subframe 1ms
Radio Frame 10ms
Two options are provided by the PHY API; the first option configures the PHY to use
the SFN/SL value provided by the L2/L3 software. The second option configures the
PHY to initialize the SFN/SL and ensure the L2/L3 software remains synchronous. The
synchronization option is selected at compile time. For each option two procedures
are described, the initial start-up synchronization and the maintenance of the
synchronization.
The SFN/SL synchronization start-up procedure, where the L2/L3 software is master,
is given in Figure 2-14. The start-up procedure followed is:
• If SFN/SL M ≠ N
• The PHY received a different SFN/SL from the expected value. SFN/SL
synchronization is required
• The PHY uses the SFN/SL received from the L2/L3 software. It changes
its internal SFN/SL to match the value provided by the L2/L3 software
• The PHY returns an ERROR.indication message indicating the mismatch
This SFN/SL synchronization procedure assumes the L2/L3 software is always correct.
However, it's possible the SFN/SL synchronization was unintended, and due to a L2/L3
software issue. The generation of an ERROR.indication message, with expected and
received SFN/SL values, should allow the L2/L3 software to perform a correction with
a further SFN/SL synchronization.
• If SFN/SL M ≠ N
The PHY API has constraints of when certain messages can be sent, or will be
received, by the L2/L3 software.
• The UL API messages are optional. It is not a requirement that they are sent
in every slot.
2.2.4 Downlink
The BCH transport channel is used to transmit the Master Information Block (MIB)
information to the UE [TS38.331]. It has a periodicity of 80ms. BCH payload is carried
using the PBCH physical channel. Together with the PSS and the SSS synchronization
signals PBCH forms the Synchronization Signal Block (SSB) as shown in Figure 2-20
[TS38.300].
Figure 2-20 Time and frequency structure of the Synchronization Signal Block (SSB)
The periodicity of the SS burst set varies from 5 to 160ms. All SS blocks in an SS
burst set needs to be transmitted within 5ms. The SS blocks can be transmitted only
in predetermined time slots. Depending on the band of deployment the location of the
SSB allowed slots vary as shown in Figure 2-21 and Figure 2-22.
2.2.4.2 PCH
The PCH transport channel is used to transmit paging messages to the UE. The UE has
specific paging occasions where it listens for paging information Figure 2-23. The
L2/L3 software is responsible for calculating the correct paging occasion for a UE. The
PHY is only responsible for transmitting PCH PDUs when instructed by the
DL_TTI.request message.
The PCH procedure is shown in Figure 2-23. To transmit a PCH PDU the L2/L3
software must provide the following information:
2.2.4.3 DL-SCH
The DL-SCH transport channel is used to send data from the gNB to a single UE. HARQ
is always applied on the DL-SCH transport channel. Therefore, together with
scheduling downlink transmissions the L2/L3 software must schedule uplink bandwidth
for the UE to return an ACK/NACK response.
The procedure for the DL-SCH transport channel is shown in Figure 2-24.To transmit a
DL-SCH PDU the L2/L3 software must provide the following information:
• In DL_TTI.request a PDSCH PDU and PDCCH PDU are included. The PDCCH
PDU contains control regarding the DL frame transmission
• In TX_Data.request a MAC PDU containing the data is included
• At the expected slot UCI HARQ information is included in a later
UL_TTI.request, where the timing of this message is variable. The HARQ can
be sent on the PUSCH or PUCCH, therefore, the information of the HARQ
response on the uplink is sent in either:
With DCI Format 1-1 the DL SCH channel can send two data transport blocks to a UE,
this requires a single PDCCH (DCI) PDU, a single PDSCH PDU and two MAC PDUs. The
procedure is shown in Figure 2-25. To initiate a transmission of two data transport
blocks the L2/L3 software must provide the following information:
Multi-slot transmission is also an option for the DL-SCH, where the same MAC PDU is
transmitted for N slots. The procedure is shown in Figure 2-26, and the L2/L3 must
provide the following information:
The reference signals transmitted for either PDSCH or PDCCH are included in the
DL_TTI.request PDSCH or PDCCH PDUs, respectively. However, to transmit a CSI-RS
the DL_TTI.request includes a CSI-RS PDU. This behaviour is shown below in Figure
2-27, where:
• For a DL data transmission DMRS is included for both PDSCH and PDCCH
The transmit power levels are included in the DL_TTI.request message (PDSCH,
PDCCH, CSI-RS and SSB) PDUs and shown in Figure 2-28. The PDUs and respective
power offset values included are:
• PDCCH PDU
• βPDCCH_0_1 (beta_PDCCH_1_0)
• powerControlOffsetSS
• PDSCH PDU
• powerControlOffsetSS
• powerControlOffset
• βDMRS (numDmrsCdmGrpsNoData and dmrsConfigType)
• CSI-RS PDU
• SSB PDU
• βPSS - (betaPSS)
NZP CSI_RS,
PDCCH & PDDCH DMRS
powerControlOffset
powerControlOffsetSS
βDMRS
PDSCH DMRS
βPDCCH_1_0
PSS
βPSS
SSS/PBCH/PBCH DMRS
2.2.5 Uplink
2.2.5.1 RACH
The RACH transport channel is used by the UE to send data to the gNB when it has no
scheduled resources. Also, the L2/L3 software can indicate to the UE that it should
initiate a RACH procedure.
In the scope of the PHY API, the RACH procedure begins when the PHY receives an
UL_TTI.request message indicating the presence of a RACH.
The RACH procedure is shown in Figure 2-29. To configure a RACH procedure the
L2/L3 software must provide the following information:
• The PHY will include 1 RACH PDU for each FD occasion in the
RACH.indication message. This RACH PDU includes all detected
preambles
2.2.5.2 UL-SCH
The UL-SCH transport channel is used to send data from the UE to the gNB. HARQ is
always applied on the UL-SCH transport channel and the ACK/NACK value is indicated
when the next transmission for the HARQ process is scheduled via DCI. Therefore,
included in the next iteration of this procedure.
The procedure for the UL-SCH transport channel is shown in Figure 2-30. To transmit
an UL-SCH PDU the L2/L3 software must provide the following information:
• Within the UL_DCI.request for slot N a DCI PDU is included. The DCI PDU
contains control information regarding the UL frame transmission being
scheduled and indicates new data or retransmission for a specified HARQ
process.
• In UL_TTI.request for slot N+K1 an ULSCH PDU is included, where the
value of K1 is variable.
• The PHY will return CRC information for the received data in a the
CRC.indication message
• The PHY will return the received uplink data in the RX_Data.indication
message.
• If UCI information was expected in the uplink slot, the PHY will return the
UCI.indication message.
Multi-slot transmission is also an option for the UL-SCH with configured grant, where
the same MAC PDU is transmitted for N slots. The procedure is shown in Figure 2-31,
and the L2/L3 must provide the following information:
2.2.5.3 SRS
The sounding reference signal (SRS) is used by L2/L3 software to determine the
quality of the uplink channel. The SRS procedure is shown in Figure 2-32. To schedule
a SRS the L2/L3 software must provide the following information:
The CSI reporting mechanism is used by the L2/L3 software to determine the quality
of the downlink channel. The CSI reporting procedure is shown in Figure 2-33. To
schedule a CSI report the L2/L3 software must provide the following information:
• If a PUSCH is scheduled for UCI then a PUSCH PDU is included with the
CSI configuration information.
• Otherwise, a PUCCH is scheduled with the CSI configuration information.
• The PHY will return the CSI report to the L2/L3 software in the
UCI.indication message
2.2.5.5 SR
The scheduling request (SR) procedure is used by the UE to request additional uplink
bandwidth. The L2/L3 software configures the SR procedure during the RRC
The reference signals transmitted for either PUSCH or PUCCH are included in the
UL_TTI.request PUSCH or PUCCH PDUs, respectively. However, to transmit a SRS
the UL_TTI.request includes a SRS PDU. The SRS PDU is described in Section
2.2.5.3, while the other uplink reference signals are described below in Figure 2-35,
where:
The precoding and beamforming parameters are defined to be flexible and support
varying levels of sophistication.
The precoding and beamforming is defined in tables loaded into the PHY at
configuration time. In slot messages a precoding index and/or beamforming index is
included in each PDU.
Y = PM × X
Z = DB × Y
The error sequences used for each slot procedure are shown in Figure 2-38 to Figure
2-41. In all slot procedures errors that are detected by the PHY are reported using the
ERROR.indication message. In Section 3, the PHY API message definitions include a
list of error codes applicable for each message.
This section provides a description of the PHY API message formats. It defines the PHY
API message header, the message bodies and the error codes associated with the PHY
API.
The general message format of the PHY API is shown in Table 3-1, where it can be
seen that there is a top structure of 1 or more PHY API messages. This permits the
optional bundling of messages and the inclusion of vendor specific messages.
Description
PHY API Message Header (see Table 3-2)
PHY API Message1 (see Table 3-3)
PHY API MessageLAST
Vendor-specific message
Table 3-1 General PHY API message format
Type Description
Each PHY API message consists of a generic header followed by a message body, as
shown in Table 3-3 and consists of a message type ID, a length field and a message
body.
Type Description
Message body
The current list of message types is given in Table 3-4. The PHY API messages follow a
standard naming convention where:
• All .request messages are sent from the L2/L3 software to the PHY.
• All .response messages are sent from the PHY to the L2/L3 software. These
are sent in response to a .request.
• All .indication messages are sent from the PHY to the L2/L3 software.
These are sent asynchronously.
The message body is different for each message type; however, each message body
obeys the following rules:
• The first field in each response message is an error code. For each message it
is indicated which error codes can be returned. A full list of error codes is
given in Section 3.3.6.1.
The API mechanism can use either little-endian byte order, or big-endian byte order.
The selection of byte ordering is implementation specific. However, the LSB of the bit
stream shall be the LSB of the field defined in the API. For example, the location of a
12-bit bitstream within a 16-bit value would be:
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
This document assumes that the API messages are transferred using a reliable in-
order delivery mechanism.
RESERVED 0x08-0x7f
DL_TTI.request 0x80 See Section 3.4.2
UL_TTI.request 0x81 See Section 3.4.3
SLOT.indication 0x82 See Section 3.4.1
UL_DCI.request 0x83 See Section 3.4.4
TX_Data.request 0x84 See Section 3.4.6
Rx_Data.indication 0x85 See Section 3.4.7
CRC.indication 0x86 See Section 3.4.8
UCI.indication 0x87 See Section 3.4.9
SRS.indication 0x88 See Section 3.4.10
RACH.indication 0x89 See Section 3.4.11
RESERVED 0x8a-0xff
The configuration messages are used by the L2/L3 software to control and configure
the PHY.
3.3.1 PARAM
3.3.1.1 PARAM.request
This message can be sent by the L2/L3 when the PHY is in the IDLE state and,
optionally, the CONFIGURED state. If it is sent when the PHY is in the RUNNING state,
a MSG_INVALID_STATE error is returned in PARAM.response. No message body is
defined for PARAM.request. The message length in the generic header = 0.
3.3.1.2 PARAM.response
The PARAM.response message is given in Table 3-5. From this table it can be seen
that PARAM.response contains a list of TLVs providing information about the PHY.
When the PHY is in the IDLE state this information relates to the PHY’s overall
capability. When the PHY is in the CONFIGURED state this information relates to the
current configuration.
The full list of PARAM TLVs is given in Section 3.3.1.4, with the following requirements
on the PHY in terms of reporting:
The error codes that can be returned in PARAM.response are given in Table 3-6.
PARAM and CONFIG TLVs are used in the PARAM and CONFIG message exchanges,
respectively. For both the PARAM and CONFIG TLVs the TLV format is given in Table
3-7. Each TLV consists of;
The length of the Value parameter ensures the complete TLV is a multiple of 4-bytes
(32-bits).
The TLVs for the PARAM message exchange are given in this Section 3.3.1.4 and for
the CONFIG message exchange in Section 3.3.2.4.
Type Description
uint16_t Tag.
variable Value
PARAM TLVs used in the PARAM message exchange are given in Table 3-8.
To aid additions of future TLVs in later versions of this API the highest value tag in the
Tables below is 0x0036.
3.3.2 CONFIG
3.3.2.1 CONFIG.request
The CONFIG.request message is given in Table 3-17. From this table it can be seen
that CONFIG.request contains a list of TLVs describing how the PHY should be
configured. This message may be sent by the L2/L3 software when the PHY is in any
state.
The full list of CONFIG TLVs is given in Section 3.3.2.4 and the PARAM message
provided L2/L3 a list of supported CONFIG TLVs and states where these TLVs are
valid.
There is no requirement for the L2/L3 software to provide the TLVs in the order
specified in the Tables.
3.3.2.2 CONFIG.response
Value: 0->255
Value: 0->255
Value: 0->255
A list of invalid TLVs that can only be configured in IDLE – each TLV is presented in its entirety
A list of invalid TLVs that can only be configured in RUNNING – each TLV is presented in its
entirety
The error codes that can be returned in CONFIG.response are given in Table 3-19.
PARAM and CONFIG TLVs are used in the PARAM and CONFIG message exchanges,
respectively. For both the PARAM and CONFIG TLVs the TLV format is given in Table
3-7.
The TLVs for the CONFIG message exchange are given in this Section 3.3.2.4 and for
the PARAM message exchange in Section 3.3.1.4.
CONFIG TLVs used in the CONFIG message exchange are given in Table 3-20.
To aid additions of future TLVs in later versions of this API the highest value tag in the
Tables below is 0x1029.
This table contains the configuration parameters relating carrier configuration. The
PARAM.response message will have indicated which of these parameters is supported by the
PHY and in which PHY states these parameters are mandatory or optional.
0x1001 dlBandwidth uint16_t Carrier bandwidth for DL in MHz [38.104, sec
5.3.2]
Values: 5, 10, 15, 20, 25, 30, 40,50, 60, 70,
80,90,100,200,400
0x1002 dlFrequency uint32_t Absolute frequency of DL point A in KHz
[38.104, sec5.2 and 38.211 sec 4.4.4.2]
Value: 450000 -> 52600000
This table contains the configuration parameters relating cell configuration. The
PARAM.response message will have indicated which of these parameters is supported by the
PHY and in which PHY states these parameters are mandatory or optional.
This table contains the configuration parameters relating SSB/PBCH configuration. The
PARAM.response message will have indicated which of these parameters is supported by the
PHY and in which PHY states these parameters are mandatory or optional
0x1010 ScsCommon uint8_t subcarrierSpacing for common, used for initial access
and broadcast message. [38.211 sec 4.2]
Value:0->3
Value:
0 = Long sequence
1 = Short sequence
0x1012 prachSubCSpacing uint8_t Subcarrier spacing of PRACH. [38.211
Tables 6.3.3.1-2 and 6.3.3.1-7]
Value:0->3
0x1013 restrictedSetConfig uint8_t PRACH restricted set config
Value:
0: unrestricted
1: restricted set type A
2: restricted set type B
0x1014 numPrachFdOccasions uint8_t Number of RACH frequency domain
occasions. Corresponds to the
parameter 𝑀𝑀 in [38.211, sec 6.3.3.2]
which equals the higher layer
parameter msg1FDM
Value: 1,2,4,8
0x1029 prachConfigIndex uint8_t PRACH configuration index.
Value: from 0 to 255
For numPRACHFdOccasions {
0x1015 prachRootSequenceIndex uint16_t Starting logical root sequence index, 𝑖𝑖,
equivalent to higher layer parameter
prach-RootSequenceIndex [38.211, sec
6.3.3.1]
Value: 0 -> 837
0x1016 numRootSequences uint8_t Number of root sequences for a
particular FD occasion that are required
For numUnusedRootSequences {
0x101A unusedRootSequences uint16_t Unused root sequence or
sequences per FD occasion.
Required for noise estimation.
This table contains the configuration parameters used for storing an SSB transmission pattern
(up to 63 SSB) in the PHY, which the PHY can then auto-generate. The PARAM.response
message will have indicated which of these parameters is supported by the PHY and in which
PHY states these parameters are mandatory or optional
0x101D SsbOffsetPointA uint16_t Offset of lowest subcarrier of lowest
resource block used for SS/PBCH block.
Given in PRB [38.211, section 4.4.4.2]
Value: 0->2199
0x101E betaPss uint8_t PSS EPRE to SSS EPRE in a SS/PBCH
block [38.213, sec 4.1]
Values:
0 = 0dB
This table contains the configuration parameters used for storing a TDD pattern (up to 63
SSB) in the PHY. The PARAM.response message will have indicated which of these parameters
is supported by the PHY and in which PHY states these parameters are mandatory or optional
0x1026 TddPeriod uint8_t DL UL Transmission Periodicity
Value:
This table contains the configuration parameters relating Measuerment configuration. The
PARAM.response message will have indicated which of these parameters is supported by the
PHY and in which PHY states these parameters are mandatory or optional
0x1028 RssiMeasurement uint8_t RSSI measurement unit. See Table 3-16 for RSSI
definition.
Value:
0: Do not report RSSI
1: dBm
2: dBFS
The range 0xA000 – 0xAFFF are reserved for vendor-specific TLVs. These TLVs can be
either CONFIG or PARAM TLVs.
3.3.4 START
3.3.4.1 START.request
This message can be sent by the L2/L3 when the PHY is in the CONFIGURED state. If
it is sent when the PHY is in the IDLE, or RUNNING state an ERROR.indication
message will be sent by the PHY. No message body is defined for START.request. The
message length in the generic header = 0.
3.3.5 STOP
3.3.5.1 STOP.request
This message can be sent by the L2/L3 when the PHY is in the RUNNING state. If it is
sent when the PHY is in the IDLE, or CONFIGURED, state an ERROR.indication
message will be sent by the PHY. No message body is defined for STOP.request. The
message length in the generic header = 0.
This message is sent by the PHY to indicate that it has successfully stopped and
returned to the CONFIGURED state. No message body is defined for
STOP.indication. The message length in the generic header = 0.
The PHY notification messages are used by the PHY to inform the L2/L3 software of an
event which occurred.
3.3.6.1 ERROR.indication
This message is used to report an error to the L2/L3 software. These errors all relate
to API message exchanges. The format of ERROR.indication is given in Table 3-30
The list of possible error codes returned in either .response messages or the
ERROR.indication message is given in Table 3-31.
The format of the beamforming table is given in Table 3-32 and the format of the
precoding table is given in Table 3-33.
Value: 0->65535
for each TXRU {
digBeamWeightRe int16_t Real part of the digital beam weight
digBeamWeightIm int16_t Imag part of the digital beam weight
}
}
Value: 0->65535
numLayers uint16_t Number of ports at the precoder input
Value: 0->65535
numAntPorts uint16_t Number of ports at the precoder output
Value: 0->65535
For numLayers {
For numAntPorts {
precoderWeightRe int16_t Real part of the precoder weight
precoderWeightIm int16_t Imag part of the precoder weight
}
}
The slot messages are used by the L2/L3 software to control the data transmitted, or
received, every slot.
3.4.1 Slot.indication
The SLOT.indication message is given in Table 3-34, and is sent from the PHY with a
periodicity based on the CONFIG.request message sent to the PHY. Specifically, the
CONFIG.request message includes carrier configuration TLVs which provide values for
different numerologies, including options to indicate a numerology is not used. The
SLOT.indication message is sent from the PHY based on the highest-value
numerology configured in CONFIG.request. If the highest numerology configured is:
Value: 0 ->159
3.4.2 DL_TTI.request
This message can be sent by the L2/L3 when the PHY is in the RUNNING state. If it is
sent when the PHY is in the IDLE or CONFIGURED state an ERROR.indication
message will be sent by the PHY.
Value: 0 ->159
nPDUs uint8_t Number of PDUs that are included in this message. All
PDUs in the message are numbered in order.
Value 1 -> 12
In the group, for each UE {
PduIdx uint8_t This value is an index for number of PDU identified by
nPDU in this message
The format of a PDCCH PDU is shown in Table 3-36. Each PDCCH PDU contains 1
CORESET and 1 or more DL DCI PDUs.
Each DL DCI PDU includes the information that the L2/L3 software must provide the
PHY so it can transmit the DCI described in [TS38.212, section 7.3.1], however, the
L2/L3 constructs the DCI message.
Each CORESET is related to a specific BWP and there can be more than 1 CORESET
per BWP. If there is more than 1 CORESET per BWP then multiple PDCCH PDUs should
be included in the DL_TTI.request.
Value: 0->274
SubcarrierSpacing uint8_t subcarrierSpacing [TS38.211 sec 4.2]
Value:0->4
CyclicPrefix uint8_t Cyclic prefix type [TS38.211 sec 4.2]
0: Normal; 1: Extended
Value: 0->13
DurationSymbols uint8_t Contiguous time duration of the CORESET in number of
𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶
symbols. Corresponds to L1 parameter 𝑁𝑁𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠
[TS38.211 sec 7.3.2.2]
Value: 1,2,3
FreqDomainResource uint8_t[6] Frequency domain resources. This is a bitmap defining
non-overlapping groups of 6 PRBs in ascending order.
[TS38.213 10.1]. Also, corresponds to L1 parameter
CORESET
N RB [TS38.211 sec 7.3.2.2]
0: non-interleaved
1: interleaved
RegBundleSize uint8_t The number of REGs in a bundle. Must be 6 for
cceRegMappingType = nonInterleaved. For
cceRegMappingType = interleaved, must belong to
{2,6} if duration = 1,2 and must belong to {3,6} if
duration = 3. Corresponds to parameter L. [TS38.211
sec 7.3.2.2]
Value: 2,3,6
InterleaverSize uint8_t The interleaver size. For interleaved mapping belongs
to {2,3,6} and for non-interleaved mapping is NA.
Corresponds to parameter R. [TS38.211 sec 7.3.2.2]
Value: 2,3,6
CoreSetType uint8_t [TS38.211 sec 7.3.2.2 and sec 7.4.1.3.2]
0: sameAsRegBundle
Value: 0->MaxDciPerSlot
For number of DL DCIs {
DlDci structure See Table 3-37
}
Value: 0->65535
ScramblingRNTI uint16_t For a UE-specific search space where PDCCH-DMRS-
Scrambling-ID is configured
This param equals the CRNTI. Otherwise, it should
be set to 0. [TS38.211, sec 7.3.2.3]
Value: 0->135
AggregationLevel uint8_t Aggregation level used [TS38.211, sec 7.3.2.1]
Value: 1,2,4,8,16
Beamforming info
Precoding and structure See Table 3-43
Beamforming
Tx Power info
beta_PDCCH_1_0 uint8_t PDCCH power value used for PDCCH Format 1_0 with
CRC scrambled by SI-RNTI, PI-RNTI or RA-RNTI. This
is ratio of SSB/PBCH EPRE to PDCCH and PDCCH
DMRS EPRE [TS38.213, sec 4.1]
Value :0->17
representing -8 to 8 dB in 1dB steps
powerControlOffsetSS uint8_t PDCCH power value used for all other PDCCH
Formats. This is ratio of SSB/PBCH block EPRE to
PDCCH and PDCCH DMRS EPRE [TS38.214, sec 4.1]
Values:
0: -3dB,
1: 0dB,
2: 3dB,
3: 6dB
The PDSCH PDU includes both mandatory and optional parameters, where the
presence of the optional elements is defined in the parameter pduBitmap. The
presence of these optional elements is included based on the following:
• puschPtrs is included if PTRS are included in the uplink transmission
• cbgReTxCtrl is included if CBG is supported and retransmit is used.
(It should be noted that some parameters are only applicable for certain modes/types
etc. These are still included but their value is ignored by the PHY).
Field Type Description
pduBitmap uint16_t Bitmap indicating presence of optional PDUs
Bit 0: pdschPtrs - Indicates PTRS included (FR2)
Bit 1:cbgRetxCtrl (Present when CBG based
retransmit is used)
All other bits reserved
RNTI uint16_t The RNTI used for identifying the UE when receiving
the PDU
pduIndex uint16_t PDU index incremented for each PDSCH PDU sent in
TX control message. This is used to associate control
information to data and is reset every slot.
Value: 1->275
BWPStart uint16_t bandwidth part start RB index from reference CRB
[TS38.213 sec 12]
Value: 0->274
SubcarrierSpacing uint8_t subcarrierSpacing [TS38.211 sec 4.2]
Value:0->4
CyclicPrefix uint8_t Cyclic prefix type [TS38.211 sec 4.2]
0: Normal; 1: Extended
Codeword information
NrOfCodewords uint8_t Number of code words for this RNTI (UE)
Value: 1 -> 2
For each codeword {
targetCodeRate uint16_t Target coding rate [TS38.212 sec 5.4.2.1 and 38.214
sec 5.1.3.1]. This is the number of information bits
per 1024 coded bits expressed in 0.1 bit units
qamModOrder uint8_t QAM modulation [TS38.212 sec 5.4.2.1 and 38.214
sec 5.1.3.1]
Value: 2,4,6,8
mcsIndex uint8_t MCS index [TS38.214, sec 5.1.3.1], should match
value sent in DCI
Value : 0->31
mcsTable uint8_t MCS-Table-PDSCH [TS38.214, sec 5.1.3.1]
0: notqam256
1: qam256
2: qam64LowSE
rvIndex uint8_t Redundancy version index [TS38.212, Table 5.4.2.1-
2 and 38.214, Table 5.1.2.1-2], should match value
sent in DCI
Value : 0->3
TBSize uint32_t Transmit block size (in bytes) [TS38.214 sec 5.1.3.2]
Value: 0->65535
}
Value: 0->65535
nrOfLayers uint8_t Number of layers [TS38.211, sec 7.3.1.3]
Value : 1->8
transmissionScheme uint8_t PDSCH transmission schemes [TS38.214, sec 5.1.1]
0: Up to 8 transmission layers
refPoint uint8_t Reference point for
Value: 0 -> 1
If 0, the 0 reference point for PDSCH DMRS is at
Point A [TS38.211 sec 4.4.4.2].
Resource block bundles generated per sub-bullets 2
and 3 in [TS38.211, sec 7.3.1.6]. For sub-bullet 2,
the start of bandwidth part must be set to the start
of actual bandwidth part +NstartCORESET and the
bandwidth of the bandwidth part must be set to the
bandwidth of the initial bandwidth part.
If 1, the DMRS reference point is at the lowest
VRB/PRB of the allocation.
Resource block bundles generated per sub-bullets 1
[TS38.211, sec 7.3.1.6]
DMRS [TS38.211 sec 7.4.1.1]
0: type 1
1: type 2
dlDmrsScramblingId uint16_t DL-DMRS-Scrambling-ID [TS38.211, sec 7.4.1.1.2 ]
If provided by the higher-layer and the PDSCH is
scheduled by PDCCH with CRC scrambled by C-RNTI
or CS-RNTI, otherwise, L2 should set this to physical
cell id.
Value: 0->65535
SCID uint8_t DMRS sequence initialization [TS38.211, sec
7.4.1.1.2]. Should match what is sent in DCI 1_1,
otherwise set to 0.
Value : 0->1
numDmrsCdmGrpsNo uint8_t Number of DM-RS CDM groups without data
Data [TS38.212 sec 7.3.1.2.2] [TS38.214 Table 4.1-1] it
determines the ratio of PDSCH EPRE to DM-RS EPRE.
Value: 1->3
dmrsPorts uint16_t DMRS ports. [TS38.212 7.3.1.2.2] provides
description between DCI 1-1 content and DMRS
ports.
Value: 0->274
rbSize uint16_t For resource allocation type 1. [TS38.214, sec
5.1.2.2.2]
The number of resource block within for this PDSCH.
Value: 1->275
VRBtoPRBMapping uint8_t VRB-to-PRB-mapping [TS38.211, sec 7.3.1.6]
0: non-interleaved
1: interleaved with RB size 2
2: Interleaved with RB size 4
Value: 0->13
NrOfSymbols uint8_t PDSCH duration in symbols, L [TS38.214, Table
5.1.2.1-1]
Value: 1->14
0: 1
1: 2
2: 4
PTRSFreqDensity uint8_t PT-RS frequency density [TS38.214, table 5.1.6.3-2]
0: 2
1: 4
PTRSReOffset uint8_t PT-RS resource element offset [TS38.211, table
7.4.1.2.2-1]
Value: 0->3
nEpreRatioOfPDSCHT uint8_t PT-RS-to-PDSCH EPRE ratio
oPTRS [TS38.214, table 4.1-2]
Value :0->3
Beamforming
Precoding and structure See Table 3-43
Beamforming
Tx Power info
powerControlOffset uint8_t Ratio of PDSCH EPRE to NZP CSI-RSEPRE [TS38.214,
sec 5.2.2.3.1]
Value :0->23
representing -8 to 15 dB in 1dB steps
powerControlOffsetSS uint8_t Ratio of SSB/PBCH block EPRE to NZP CSI-RS EPRES
[TS38.214, sec 5.2.2.3.1]
Values:
0: -3dB,
1: 0dB,
2: 3dB,
3: 6dB
CBG fields
IsLastCbPresent uint8_t Indicates whether last CB is present in the CBG
retransmission
0: CBG retransmission does not include last CB
1: CBG retransmission includes last CB
If CBG Re-Tx includes last CB, L1 will add the TB
CRC to the last CB in the payload before it is read
into the LDPC HW unit
isInlineTbCrc uint8_t Indicates whether TB CRC is part of data payload or
control message
Value: 0->274
SubcarrierSpacing uint8_t subcarrierSpacing [TS38.211 sec 4.2]
Value:0->4
CyclicPrefix uint8_t Cyclic prefix type [TS38.211 sec 4.2]
0: Normal; 1: Extended
StartRB uint16_t PRB where this CSI resource starts related to common
resource block #0 (CRB#0). Only multiples of 4 are
allowed. [TS38.331, sec 6.3.2 parameter CSI-
FrequencyOccupation]
Value: 0 ->274
NrOfRBs uint16_t Number of PRBs across which this CSI resource spans.
[TS38.331, sec 6.3.2 parameter CSI-
FrequencyOccupation]
Value:
0:TRS
1:CSI-RS NZP
2:CSI-RS ZP
Row uint8_t Row entry into the CSI Resource location table.
[TS38.211, sec 7.4.1.5.3 and table 7.4.1.5.3-1]
Value: 1-18
FreqDomain uint16_t Bitmap defining the frequencyDomainAllocation
[TS38.211, sec 7.4.1.5.3] [TS38.331 CSI-Resource
Mapping]
Value: 0->13
SymbL1 uint8_t The time domain location l1 and
firstOFDMSymbolInTimeDomain2 [TS38.211, sec
7.4.1.5.3]
Value: 2->12
CDMType uint8_t The cdm-Type field [TS38.211, sec 7.4.1.5.3 and table
7.4.1.5.3-1]
Value:
0: noCDM,
1: fd-CDM2,
2: cdm4-FD2-TD2,
3: cdm8-FD2-TD4
FreqDensity uint8_t The density field, p and comb offset (for dot5).
[TS38.211, sec 7.4.1.5.3 and table 7.4.1.5.3-1]
Value:
0: dot5 (even RB),
1: dot5 (odd RB),
2: one,
3: three
ScrambId uint16_t ScramblingID of the CSI-RS [TS38.214, sec 5.2.2.3.1]
Value: 0->1023
Tx Power Info
powerControlOffset uint8_t Ratio of PDSCH EPRE to NZP CSI-RSEPRE [TS38.214,
sec 5.2.2.3.1]
Value :0->23
representing -8 to 15 dB in 1dB steps
powerControlOffsetSS uint8_t Ratio of SSB/PBCH block EPRE to NZP CSI-RS EPRES
[TS38.214, sec 5.2.2.3.1]
Values:
0: -3dB,
1: 0dB,
2: 3dB,
3: 6dB
Beamforming
Precoding and structure See Table 3-43
Beamforming
The SSB/BCH PDU has several options for the payload length and contents these are:
• If the MAC generates the full PBCH payload, the payload length is 31 bits and
Table 3-41 defines payload
• If the PHY generates the timing PBCH information, the payload length is 24
bits and Table 3-41 defines payload
• If the PHY generates the full PBCH payload, Table 3-42 defines the payload
• The choice of PBCH payload generation will be determined when the PHY is
configured.
Values:
0 = 0dB
1 = 3dB
ssbBlockIndex uint8_t SS/PBCH block index within a SSB burst set
[TS38.211, section 7.3.3.1]. Required for PBCH DMRS
scrambling.
Value: 0->63 (Lmax)
ssbSubcarrierOffset uint8_t ssbSubcarrierOffset or 𝑘𝑘𝑆𝑆𝑆𝑆𝑆𝑆 (TS38.211, section 7.4.3.1)
Value: 0->31
SsbOffsetPointA uint16_t Offset of lowest subcarrier of lowest resource block
used for SS/PBCH block. Given in PRB [TS38.211,
section 4.4.4.2]
Value: 0->2199
bchPayloadFlag uint8_t A value indicating how the BCH payload is generated.
This should match the PARAM/CONFIG TLVs.
Value:
0: MAC generates the full PBCH payload, see Table
3-41, where bchPayload has 31 bits
1: PHY generates the timing PBCH bits, see Table 3-41,
where the bchPayload has 24 bits
2: PHY generates the full PBCH payload, see Table
3-42.
bchPayload struct See Table 3-41 and Table 3-42
Beamforming
Precoding and structure See Table 3-43
Beamforming
Value: 0 -> 1
PdcchConfigSib1 uint8_t The parameter PDCCH-ConfigSIB1 that determines a
common ControlResourceSet (CORESET) a common
search space and necessary PDCCH parameters.
Value: 0 -> 1
IntraFreqReselection uint8_t The flag to controls cell selection/reselection to intra-
frequency cells when the highest ranked cell is barred,
or treated as barred by the UE.
Value: 0 -> 1
The precoding and beamforming PDU is included in the PDCCH, PDSCH, CSI-RS and
SSB PDUs. The format is shown in Table 3-43.
Value : 1->275
prgSize uint16_t Size in RBs of a precoding resource block group (PRG) –
to which same precoding and digital beamforming gets
applied.
Value: 1->275
digBFInterfaces uint8_t Number of STD ant ports (parallel streams) feeding into
the digBF
Value: 0->255
For number of PRGs {
PMidx uint16_t Index to precoding matrix (PM) pre-stored at cell
configuration.
Value: 0->65535.
for each digBFInterface {
beamIdx uint16_t Index of the digital beam weight vector pre-stored at
cell configuration. The vector maps this input port to
output TXRUs.
Value: 0->65535
}
}
3.4.3 UL_TTI.request
This message can be sent by the L2/L3 when the PHY is in the RUNNING state. If it is
sent when the PHY is in the IDLE or CONFIGURED state an ERROR.indication
message will be sent by the PHY.
• In order to support PRACH in the subframe, the RACH present field must be
true
• The PUSCH PDU is present when a UE has been instructed to send uplink
data and/or control data on the PUSCH
• The PUCCH PDU is present when a UE has been instructed to send control
data on the PUCCH
• The PRACH PDU is present when a UE may transmit RACH.
• The SRS PDU is present when a UE has been instructed to send SRS.
Value: 0 ->159
nPDUs uint8_t Number of PDUs that are included in this message. All
PDUs in the message are numbered in order.
Value: 0 -> 8
Value: 1->6
In the group, for each UE {
PduIdx uint8_t This value is an index for number of PDU identified by
nPDU in this message.
Value: 0->255
}
}
Value: 0 ->1007
Value: 1->7
prachFormat uint8_t RACH format information for the current FD occasion.
This corresponds to one of the supported formats i.e.,
A1, A2, A3, B1, B4, C0, C2, A1/B1, A2/B2 or A3/B3.
[38.211, sec 6.3.3.2]
Values:
0=0
1=1
2=2
3=3
4 = A1
5 = A2
6 = A3
7 = B1
8 = B4
9 = C0
10 = C2
11 = A1/B1
12 = A2/B2
13 = A3/B3
numRa uint8_t Frequency domain occasion index 𝑛𝑛 ∈ {0,1,.., 𝑀𝑀 − 1},
where 𝑀𝑀 equals the higher-layer parameter msg1-FDM
which can take values {1,2,4,8} [38.211, sec 6.3.3.2]
Values: 0->7
prachStartSymbol uint8_t Starting symbol for the first PRACH TD occasion in the
current
PRACH FD occasion. Corresponds to the parameter.
[38.211, sec 6.3.3.2 and Tables 6.3.3.2-2 to 6.3.3.2-4]
Values: 0->13
numCs uint16_t Zero-correlation zone configuration number (RRC
parameter zeroCorrelationZoneConfig). Corresponds to
the L1 parameter 𝑁𝑁cs. [TS38.211, sec 6.3.3.1 and Table
6.3.3.1-5, 6.3.3.1-6 and 6.3.3.1-7]
Value: 0->419
Beamforming
Beamforming structure See Table 3-53
Only parameters signalled by pduBitmap are optional, all other parameters are
mandatory (It should be noted that some parameters are only applicable for certain
modes etc. These are still included but their value is ignored by the PHY).
Field Type Description
pduBitmap uint16_t Bitmap indicating presence of optional PDUs
Bit 0: puschData (Indicates data is expected on the
PUSCH)
Bit 1:puschUci (Indicates UCI is expected on the
PUSCH)
Bit 2: puschPtrs (Indicates PTRS included (FR2))
Bit 3: dftsOfdm (Indicates DFT S-OFDM transmission)
Value: 1->275
BWPStart uint16_t bandwidth part start RB index from reference CRB
[TS38.213 sec 12]
Value: 0->274
SubcarrierSpacing uint8_t subcarrierSpacing [TS38.211 sec 4.2]
Value:0->4
CyclicPrefix uint8_t Cyclic prefix type [TS38.211 sec 4.2]
0: Normal; 1: Extended
Value : 0->31
mcsTable uint8_t MCS-Table-PUSCH [TS38.214, sec 6.1.4.1]
Value:
0: notqam256 [TS38.214, table 5.1.3.1-1]
1: qam256 [TS38.214, table 5.1.3.1-2]
2: qam64LowSE [TS38.214, table 5.1.3.1-3]
3: notqam256-withTransformPrecoding [TS38.214,
table 6.1.4.1-1]
4: qam64LowSE-withTransformPrecoding [TS38.214,
table 6.1.4.1-2]
TransformPrecoding uint8_t Indicates if transform precoding is enabled or disabled
[TS38.214, sec 6.1.4.1] [TS38.211 6.3.1.4]
Value:
0: enabled
1: disabled
dataScramblingId uint16_t dataScramblingIdentityPdsch [TS38.211, sec 6.3.1.1]
It equals the higher-layer parameter Data-scrambling-
Identity if configured and the RNTI equals the C-RNTI,
otherwise L2 needs to set it to physical cell id.
Value: 0->65535
nrOfLayers uint8_t Number of layers [TS38.211, sec 6.3.1.3]
Value : 1->4
DMRS [TS38.211 sec 6.4.1.1]
ulDmrsSymbPos uint16_t DMRS symbol positions [TS38.211, sec 6.4.1.1.3 and
Tables 6.4.1.1.3-3 and 6.4.1.1.3-4]
0: type 1
1: type 2
ulDmrsScramblingId uint16_t UL-DMRS-Scrambling-ID [TS38.211, sec 6.4.1.1.1 ]
If provided and the PUSCH is not a msg3 PUSCH,
otherwise, L2 should set this to physical cell id.
Value: 0->65535
Value: 0->1007
SCID uint8_t DMRS sequence initialization [TS38.211, sec
6.4.1.1.1]. Should match what is sent in DCI 0_1,
otherwise set to 0.
Value : 0->1
numDmrsCdmGrpsN uint8_t Number of DM-RS CDM groups without data [TS38.212
oData sec 7.3.1.1]
Value: 1->3
dmrsPorts uint16_t DMRS ports. [TS38.212 7.3.1.1.2] provides description
between DCI 0-1 content and DMRS ports.
0: Type 0
1: Type 1
rbBitmap uint8_t[36] For resource alloc type 0.
[TS38.214, sec 6.1.2.2.1] [TS 38.212, 7.3.1.1.2]
bitmap of RBs, 273 rounded up to multiple of 32. This
bitmap is in units of VRBs. LSB of byte 0 of the bitmap
represents the first RB of the BWP
rbStart uint16_t For resource allocation type 1. [TS38.214, sec
6.1.2.2.2]
The starting resource block within the BWP for this
PUSCH.
Value: 0->274
rbSize uint16_t For resource allocation type 1. [TS38.214, sec
6.1.2.2.2]
The number of resource block within for this PUSCH.
Value: 1->275
VRBtoPRBMapping uint8_t VRB-to-PRB-mapping [TS38.211, sec 6.3.1.7]
Value:
0: non-interleaved
Value:
0: disabled
1: enabled
txDirectCurrentLocat uint16_t The uplink Tx Direct Current location for the carrier.
ion Only values in the value range of this field between 0
and 3299, which indicate the subcarrier index within
the carrier corresponding to the numerology of the
corresponding uplink BWP and value 3300, which
indicates "Outside the carrier" and value 3301, which
indicates "Undetermined position within the carrier"
are used. [TS38.331, UplinkTxDirectCurrentBWP IE]
Value: 0->4095
uplinkFrequencyShift uint8_t Indicates whether there is 7.5 kHz shift or not.
7p5khz [TS38.331, UplinkTxDirectCurrentBWP IE]
Value:
0: false
1: true
Value: 0->13
NrOfSymbols uint8_t PUSCH duration in symbols, L [TS38.214, Table
6.1.2.1-1]
Value: 1->14
Optional Data only included if indicated in pduBitmap
puschData structure See Table 3-47
puschUci structure See Table 3-48
puschPtrs structure See Table 3-49
dftsOfdm structure See Table 3-50
Beamforming
Beamforming structure See Table 3-53
Value : 0->3
harqProcessID uint8_t HARQ process number
[TS38.212, sec 7.3.1.1], it should match
value sent in DCI
Value:
0: retransmission
1: new data
TBSize uint32_t Transmit block size (in bytes) [TS38.214 sec
6.1.4.2]
Value: 0->65535
numCb uint16_t Number of CBs in the TB (could be more than
the number of CBs in this PUSCH
transmission). Should be set to zero in any of
the following conditions: 1) CBG is not
supported 2) isReTx=0 (new transmission) 3)
tbSize=0
Value:
0 -> 11 (Small block length)
12 ->1706 (Polar)
Note: Does not include CRC bits
csiPart1BitLength uint16_t Number of CSI part1 bits [TS38.212, section 6.3.2.4
Value:
0 -> 11 (Small block length)
12 ->1706 (Polar)
Note: Does not include CRC bits
csiPart2BitLength uint16_t Number of CSI part2 bits [TS38.212, section 6.3.2.4]
Value:
0 -> 11 (Small block length)
12 ->1706 (Polar)
Note: Does not include CRC bits
AlphaScaling uint8_t Alpha parameter, α , used to calculate number of coded
modulation symbols per layer. [TS38.212, section
6.3.2.4].
Value:
0 = 0.5
1 = 0.65
2 = 0.8
3=1
Value: 0->15
betaOffsetCsi1 uint8_t Beta Offset for CSI-part1 bits.
[TS38.212, section 6.3.2.4] [TS38.213, Table 9.3-2]
Value: 0->18
betaOffsetCsi2 uint8_t Beta Offset for CSI-part2 bits.
[TS38.212, section 6.3.2.4] [TS38.213, Table 9.3-2]
Value: 0->18
Value: 1->2
For numPtrsPorts {
PTRSPortIndex uint16_t PT-RS antenna ports [TS38.214, sec6.2.3.1 and
38.212, section 7.3.1.1.2]
Value: 0->11
PTRSReOffset uint8_t PT-RS resource element offset value taken from
[TS38.211, table 6.4.1.2.2-1]
Value: 0->11
}
PTRSTimeDensity uint8_t PT-RS time density [TS38.214, table 6.2.3.1-1]
Value:
0: 1
1: 2
2: 4
PTRSFreqDensity uint8_t PT-RS frequency density [TS38.214, table 6.2.3.1-2]
Value:
0: 2
1: 4
Value:
0: 0dB
1: 3dB
2: 4.77dB
3: 6dB
Value: 0->29
lowPaprSequenceNumber uint16_t [TS38.211, sec 5.2.2] For DFT-S-OFDM.
Value: 1->8
ulPtrsTimeDensityTransformPrecoding uint8_t Number of samples per PTRS group.
[TS38.214, sec 6.2.3.2] [TS38.211, sec
6.4.1.2.2].
Value: 1->4
The PUCH PDU includes information regarding SR, HARQ and CSI and the valid data
varies depending on whether it is PUCCH format 0, 1, 2, 3 or 4.
Value: 1->275
BWPStart uint16_t Bandwidth part start RB index from reference CRB
[38.213 sec 12]
Value: 0->274
SubcarrierSpacing uint8_t subcarrierSpacing [38.211 sec 4.2]
Value:0->4
CyclicPrefix uint8_t Cyclic prefix type [38.211 sec 4.2]
0: Normal; 1: Extended
Value: 0 ->4
multiSlotTxIndicator uint8_t This field is to flush, keep or combine the buffer
used for multiple-slot PUCCH transmissions [38.213,
sec 9.2.6]
Value:
0: No multi slot transmission
1: Multi slot transmission starts
2: Multi slot transmission continues
3: Multi slot transmission ends
This filed being ‘0’ or ‘1’ indicates the previous
pucch transmission for this UE (RNTI) is ended incase
L2 doesn’t send ‘3’ for the previous ongoing multi-slot
transmission.
pi2Bpsk uint8_t When enabled, indicates that the UE uses pi/2 BPSK for
UCI symbols instead of QPSK for PUCCH.
[TS 38.213, sec 9.2.5]
Value: 0->274
prbSize uint16_t The number of PRBs within this PUCCH.
Valid for all formats.
Value: 1 -> 16
Pucch Allocation in time domain
Value: 0->13
NrOfSymbols uint8_t PUCCH duration in symbols [38.213, sec 9.2.2]
Values:
1 -2: Valid for formats 0,2
4->14: Valid for formats 1,3,4
Value:
0: disabled
1: enabled
secondHopPRB uint16_t Index of the first PRB after frequency hopping.
Valid for all formats.
Value:0->274
groupHopFlag uint8_t Flag for group hopping. [38.211, sec 6.3.2.2.1].
Valid for formats 0, 1, 3 and 4.
Value:
0: disabled
1: enabled
sequenceHopFlag uint8_t Flag for sequence hopping. [38.211, sec 6.3.2.2.1]
Valid for formats 0, 1, 3 and 4.
Value:
0: disabled
1: enabled
hoppingId uint16_t Cell-Specific scrambling ID for group hopping and
sequence hopping. [38.211, sec 6.3.2.2.1]
Valid for formats 0, 1, 3 and 4.
Value: 0->1023
InitialCyclicShift uint16_t Initial cyclic shift (M0) used as part of frequency
hopping. [38.213, sec 9.2.1 and 38.211, sec
6.3.2.2.2].
Valid for formats 0, 1, 3 and 4
Value: 0->11
Value: 0->1023
TimeDomainOccIdx uint8_t An index of an orthogonal cover code [38.211, sec
6.3.2.4.1].
Valid for format 1.
Value: 0->6
PreDftOccIdx uint8_t An index of an orthogonal cover code. [38.211, sec
6.3.2.6.3].
Valid for format 4.
Value: 0->3
PreDftOccLen uint8_t A length of an orthogonal cover code. [38.211, sec
6.3.2.6.3].
Valid for format 4.
Value: 2 or 4
DMRS [38.211 sec 6.4.1.3]
Value:
0 = disabled
1 = enabled
DmrsScramblingId uint16_t Scrambling-ID-0 [38.211, sec 6.4.1.1.1 ]
If provided otherwise, L2 should set this to physical cell
id.
Valid for formats 2,
Value: 0->65535
DMRScyclicshift uint8_t Cyclic shift index for DMRS, M0 [38.211, sec
6.4.1.3.3.1]
Valid for formats 4.
Value: 0 ->9
Value:
0 = no SR
1 = SR opportunity
BitLenHarq uint16_t Bit length of HARQ payload
Value:
0 = no HARQ bits
1->2 = Valid for Formats 0 and 1
2 -> 1706 = Valid for Formats 2, 3 and 4
BitLenCsiPart1 uint16_t Bit length of CSI part 1 payload.
Valid for formats 2, 3 and 4.
Value:
0 = no CSI bits
1 -> 1706
BitLenCsiPart2 uint16_t Bit length of CSI part 2 payload.
Valid for formats 2, 3 and 4.
Value:
0 = no CSI bits
1 -> 1706
Beamforming
Beamforming structure See Table 3-53
Value: 0->274
SubcarrierSpacing uint8_t subcarrierSpacing [TS38.211 sec 4.2]
Value:0->4
CyclicPrefix uint8_t Cyclic prefix type [TS38.211 sec 4.2]
0: Normal; 1: Extended
Value:
0=1
1=2
2=4
timeStartPosition uint8_t Starting position in the time domain 𝑙𝑙0 [ TS38.211,
Sec 6.4.1.4.1]
Note: the MAC undertakes the translation from
startPosition to 𝑙𝑙0
Value: 0 13
configIndex uint8_t SRS bandwidth config index 𝐶𝐶SRS [TS38.211, Sec
6.4.1.4.3]
Value: 0 63
sequenceId uint16_t SRS
SRS sequence ID 𝑛𝑛ID [TS38.211, Sec 6.4.1.4.2]
Value: 0 1023
bandwidthIndex uint8_t SRS bandwidth index 𝐵𝐵SRS [TS38.211, Sec
6.4.1.4.3]
Value: 0 3
combSize uint8_t Transmission comb size 𝐾𝐾TC [TS38.211, Sec
6.4.1.4.2]
Value:
0 = comb size 2
1 = comb size 4
combOffset uint8_t Transmission comb offset 𝑘𝑘̄TC [TS38.211, Sec
6.4.1.4.3]
Value: 0 1 (combSize = 0)
Value: 0 3 (combSize = 1)
cs
cyclicShift uint8_t Cyclic shift 𝑛𝑛SRS [TS 38.211, Sec 6.4.1.4.2]
Value: 0 7 (combSize = 0)
Value: 0 11 (combSize = 1)
frequencyPosition uint8_t Frequency domain position 𝑛𝑛RRC [TS 38.211, Sec
6.4.1.4.3]
Value: 0 67
frequencyShift uint16_t Frequency domain shift 𝑛𝑛shift [TS38.211, Sec
6.4.1.4.3]
Value: 0 268
frequencyHopping uint8_t Frequency hopping 𝑏𝑏hop [TS38.211, Sec 6.4.1.4.3]
Value: 0 3
groupOrSequenceHopping uint8_t Group or sequence hopping configuration (RRC
parameter groupOrSequenceHopping in SRS-
Resource IE)
Value:
0 = No hopping
1 = Group hopping
groupOrSequenceHopping
2 = Sequence hopping
resourceType uint8_t Type of SRS resource allocation [TS38.211, Sec
6.4.1.4.3]
Value:
0: aperiodic
1: semi-persistent
2: periodic
Tsrs uint16_t SRS-Periodicity in slots [TS38.211 Sec 6.4.1.4.4]
Value:
1,2,3,4,5,8,10,16,20,32,40,64,80,160,320,640,128
0,2560
Toffset uint16_t Slot offset value [TS38.211, Sec 6.4.1.4.3]
Value:0->2559
Beamforming
Beamforming structure See Table 3-53
The beamforming PDU is included in the PUCCH, PUSCH, PRACH and SRS PDUs. The
format is shown in Table 3-53.
Value : 1->275
prgSize uint16_t Size in RBs of a precoding resource block group (PRG) –
to which the same digital beamforming gets applied.
Value: 0->255
For number of PRGs {
for each digBFInterface {
beamIdx uint16_t Index of the digital beam weight vector pre-stored at
cell configuration. The vector maps this input port to
RXRUs.
Value: 0->65535
}
}
3.4.4 UL_DCI.request
The UL_DCI.request message includes DCI content used for the scheduling of PUSCH
and the message format is shown in Table 3-54.
The separation of DL and UL DCIs introduces greater flexibility into the design and
implementation of the MAC scheduler. Specifically, it permits separate DL (generates
DL DCI) and UL (generates UL DCI) scheduling and removes the requirement to
integrate the UL relevant information with the DL control in DL_TTI.request.
Value: 0 ->159
numPDUs uint8_t Number of PDCCH PDUs that are included in this
message.
Value 0 -> 255
For Number of PDUs {
PDUType uint16_t 0: PDCCH PDU
PDUSize uint16_t Size of the PDU control information (in bytes). This
length value includes the 4 bytes required for the PDU
type and PDU size parameters.
MSG_INVALID_STATE The DL_TTI.request was received when the PHY was in the IDLE
or CONFIGURED state.
MSG_INVALID_STATE The UL_TTI.request was received when the PHY was in the IDLE
or CONFIGURED state.
MSG_INVALID_STATE The UL_DCI.request was received when the PHY was in the IDLE
or CONFIGURED state.
3.4.6 Tx_Data.request
The format of the TX_Data.request message is described in Table 3-58. This message
contains the MAC PDU data for transmission over the air interface. The PDUs described
in this message must follow the same order as DL_TTI.request.
This message can be sent by the L2/L3 when the PHY is in the RUNNING state. If it is
sent when the PHY is in the IDLE, or CONFIGURED, state an ERROR.indication
message will be sent by the PHY.
Value: 0 → 65535
PDU index uint16_t Used to correlate the MAC PDU with the DL_TTI
PDSCH PDU
Value: 0 → 65535
numTLV uint32_t The number of TLVs describing the data of the
transport block.
Value: 0 -> MaxTLVs
TLVs TLV[numTLV] Always a multiple of 32-bits. See Table 3-59
}
Value: 0 → 65535
MSG_INVALID_STATE The TX_Data.request was received when the PHY was in the
IDLE or CONFIGURED state.
3.4.7 Rx_Data.indication
Value: 0 ->159
Number of PDUs uint16_t Number of PDUs included in this message.
Value: 1 → 65535.
HarqID uint8_t HARQ process ID
Value: 0->15
PDU Length uint16_t Length of PDU in bytes. A length of 0 indicates a CRC or
decoding error.
Value: 0 → 65535
UL_CQI uint8_t SNR
Value: 0-1280
0xffff should be set if this field is invalid
PDU Variable Contents of PDU. This will be a MAC PDU.
}
3.4.8 CRC.indication
The format of the CRC.indication message is shown in Table 3-62. There can be
more than one CRC.indication messages per slot.
Value: 0 ->159
NumCRCs uint16_t Number of CRCs (PDUs) with status indication
included in this message.
Value: 1 → 65535
HarqID uint8_t HARQ process ID
Value: 0->15
TbCrcStatus uint8_t Indicates CRC result on TB data.
Value:
0 = pass
1 = fail
NumCb uint16_t If CBG is not used this parameter can be set to
zero. Otherwise the number of CBs in the TB.
Value: 0->65535
Value:
0 = pass
1 = fail
UL_CQI uint8_t SNR
Value: 0 63
0xffff should be set if this field is invalid
RSSI uint16_t RSSI. See Table 3-16 for RSSI definition.
If RSSI is reported in dBFS (see PARAM and
CONFIG measurement TLVs) then this value
represents -128dBFs to 0dBFS with a step size of
0.1dB
If RSSI is reported in dBm (see PARAM and
CONFIG measurement TLVs) then this value
represents -128dBm to 0dB, with a step size of
0.1dB
Value: 0-1280
0xffff should be set if this field is invalid
}
3.4.9 UCI.indication
The UCI.indication message includes optional parameters and the same message is
used for UCI received on both PUSCH and PUCCH. There can be more than 1
UCI.indication message per slot.
• PUSCH
• PUCCH Format 0 or 1
• PUCCH Format 2,3 or 4
The format of a PUSCH PDU is shown in Table 3-64 and used for UCI received on the
PUSCH.
Value: 1 → 65535.
UL_CQI uint8_t SNR
Value: 0-1280
0xffff should be set if this field is invalid
HARQ information structure Included if indicated by pduBitmap. See Table 3-70 for
details
CSI part1 structure Included if indicated by pduBitmap. See Table 3-71 for
information details
CSI part2 structure Included if indicated by pduBitmap. See Table 3-72 for
information details
The format of a PUCCH PDU Format 0/1 is shown in Table 3-65 and used for UCI
received on the PUCCH with either Format 0 or 1.
Bit 0: SR
Bit 1: HARQ
Value: 1 → 65535.
PUCCH format
Value: 0-1280
0xffff should be set if this field is invalid
SR information structure Included if indicated by pduBitmap. See Table 3-67 for
details
HARQ information structure Included if indicated by pduBitmap. See Table 3-68 for
details
The format of a PUCCH PDU Format 2/3/4 is shown in Table 3-66 and used for UCI
received on the PUCCH with either Format 2, 3 or 4.
Bit 0: SR
Bit 1: HARQ
Bit 2: CSI Part 1
Bit 3: CSI Part 2
Handle uint32_t The handle passed to the PHY in an UL_TTI.request
PUCCH PDU.
RNTI uint16_t The RNTI passed to the PHY in an UL_TTI.request
PUCCH PDU.
Value: 1 → 65535.
PUCCH format
Value: 0 -> 2
PucchFormat uint8_t 0: PUCCH Format2
1: PUCCH Format3
2: PUCCH Format4
UL_CQI uint8_t SNR
Value: 0-1280
0xffff should be set if this field is invalid
SR information structure Included if indicated by pduBitmap. See Table 3-69 for
details
HARQ information structure Included if indicated by pduBitmap. See Table 3-70 for
details
CSI part1 structure Included if indicated by pduBitmap. See Table 3-71 for
information details
CSI part2 structure Included if indicated by pduBitmap. See Table 3-72 for
information details
The UCI tables for the SR, HARQ, CSI Part 1 and CSI Part 2 are provide in this
Section.
Value:
0 = SR not detected
1 = SR detected
SRconfidenceLevel uint8_t Confidence level of detected SR
Indicates the likelihood that the decoded output for this
PDU are is correct.
Value:
0 = Good
1 = Bad
0xff should be set if this field is invalid
Value: 1->2
HarqconfidenceLevel uint8_t Confidence level of detected HARQ.
Indicates the likelihood that the decoded output for this
PDU are is correct.
Value:
0 = Good
1 = Bad
0xff should be set if this field is invalid
For NumHarq {
Indicates result on HARQ data.
Value:
HarqValue uint8_t
0 = pass
1 = fail
2 = not present
}
Value: 1 -> 8
SrPayload uint8_t[ceil(SrBitLen/8)] Contents of SR
Value:
0 = pass
1 = fail
2 = not present
HarqBitLen uint16_t Length of Harq payload in bits
Value: 1 ->1706
CsiPart1Payload uint8_t[ceil(csiPart1BitLen/8)] Contents of CSI. This will be raw data
matching CSI payload built by UE.
Value:
CsiPart2Crc uint8_t 0 = pass
1 = fail
2 = not present
Value: 1 ->1706
CsiPart2Payload uint8_t[ceil(csiPart2BitLen/8)] Contents of CSI. This will be raw data
matching CSI payload built by UE.
3.4.10 SRS.indication
Value: 1 → 65535.
Value: 0 63
0xffff will be set if this field is invalid
numSymbols uint8_t Number of symbols for SRS
Value: 1 -> 4
If a PHY does not report for individual symbols then
this parameter should be set to 1.
wideBandSNR uint8_t SNR value in dB measured within configured SRS
bandwidth on each symbols,
Value: 1->4
For each reported symbol {
numRBs uint16_t Number of PRBs to be reported for this SRS PDU.
3.4.11 RACH.indication
The format of the RACH.indication message is given in Table 3-74. There can be
more than one RACH.indication message per slot.
Value: 0 ->1007
SymbolIndex uint8_t The index of first symbol of the PRACH TD occasion.
[38.211, sec 6.3.3.2 and Tables 6.3.3.2-2 to 6.3.3.2-4]
Value: 0->13
SlotIndex uint8_t The index of first slot of the PRACH TD occasion in a
system frame
Value: 0->79
FreqIndex uint8_t The index of the received PRACH frequency domain
occasion. [38.211, sec 6.3.3.2]
Value: 0->7
avgRssi uint8_t Average value of RSSI in dB
Value: 0->63
For each preamble
preambleIndex uint8_t Preamble Index.
Value: 0-> 63
[6] 3GPP TS38.331 NR Radio Resource Control (RRC) Protocol Specification v15.4.0
[7] 3GPP TS38.104 NR Base-station (BS) Radio Transmission and Reception v15.4.0