When a UE has uplink control information and a PUSCH in the same subframe, the UCI travels on the PUSCH together with the data. The UE then has to decide how many PUSCH resource elements the HARQ-ACK, the RI and the CQI get. The pusch-ConfigDedicated IE answers that with three indexes, one for each kind of UCI. Each index points to a beta offset in 36.213, and the beta offset scales the resources for that UCI.
- What does a decoded pusch-ConfigDedicated contain ?
- How does 36.331 define pusch-ConfigDedicated ?
- How does each index map to a beta offset ?
- Why does HARQ-ACK get the largest beta offset ?
- Reference
What does a decoded pusch-ConfigDedicated contain ?
Let's start from a configuration that a network actually sent. The tree below is one pusch-ConfigDedicated as a tester decoder prints it, with the value of each field in square brackets.
Decoded RRC message,
| +-pusch-ConfigDedicated ::= SEQUENCE OPTIONAL:Exist | | +-betaOffset-ACK-Index ::= INTEGER (0..15) [9] | | +-betaOffset-RI-Index ::= INTEGER (0..15) [6] | | +-betaOffset-CQI-Index ::= INTEGER (0..15) [6]
The Release 8 IE is small. It has exactly three fields, all INTEGER (0..15), and none of them is optional. That is why the SEQUENCE line shows no presence bits in brackets, unlike the other IEs a tester prints.
The values are betaOffset-ACK-Index 9, betaOffset-RI-Index 6 and betaOffset-CQI-Index 6. These are indexes, not beta offsets. 36.213 Tables 8.6.3-1, 8.6.3-2 and 8.6.3-3 turn them into beta offsets, and the section below shows those tables. Read against them, this network uses 15.875 for HARQ-ACK, 5.000 for RI and 1.750 for CQI. So the RI and the CQI both have index 6, but they end up with very different beta offsets.
Three indexes, one per UCI type : HARQ-ACK, RI and CQI each have their own betaOffset field.An index is not a value : the same index 6 means 5.000 for RI and 1.750 for CQI.This capture protects HARQ-ACK most : its beta offset of 15.875 is about nine times the CQI beta offset.
How does 36.331 define pusch-ConfigDedicated ?
The decoded tree matches the Release 8 IE, which has never changed. Later releases added new versions of pusch-ConfigDedicated in physicalConfigDedicated. The listing below shows the Release 8 IE and the three later versions that add more beta offset indexes.
Following is based on
PUSCH-ConfigDedicated ::= SEQUENCE {
betaOffset-ACK-Index INTEGER (0..15),
betaOffset-RI-Index INTEGER (0..15),
betaOffset-CQI-Index INTEGER (0..15)
}
PUSCH-ConfigDedicated-v1020 ::= SEQUENCE {
betaOffsetMC-r10 SEQUENCE {
betaOffset-ACK-Index-MC-r10 INTEGER (0..15),
betaOffset-RI-Index-MC-r10 INTEGER (0..15),
betaOffset-CQI-Index-MC-r10 INTEGER (0..15)
} OPTIONAL, -- Need OR
groupHoppingDisabled-r10 ENUMERATED {true} OPTIONAL, -- Need OR
dmrs-WithOCC-Activated-r10 ENUMERATED {true} OPTIONAL -- Need OR
}
PUSCH-ConfigDedicated-v1250::= SEQUENCE {
uciOnPUSCH CHOICE {
release NULL,
setup SEQUENCE {
betaOffset-ACK-Index-SubframeSet2-r12 INTEGER (0..15),
betaOffset-RI-Index-SubframeSet2-r12 INTEGER (0..15),
betaOffset-CQI-Index-SubframeSet2-r12 INTEGER (0..15),
betaOffsetMC-r12 SEQUENCE {
betaOffset-ACK-Index-MC-SubframeSet2-r12 INTEGER (0..15),
betaOffset-RI-Index-MC-SubframeSet2-r12 INTEGER (0..15),
betaOffset-CQI-Index-MC-SubframeSet2-r12 INTEGER (0..15)
} OPTIONAL -- Need OR
}
}
}
PUSCH-ConfigDedicated-r13 ::= SEQUENCE {
betaOffset-ACK-Index-r13 INTEGER (0..15),
betaOffset2-ACK-Index-r13 INTEGER (0..15) OPTIONAL, -- Need OR
betaOffset-RI-Index-r13 INTEGER (0..15),
betaOffset-CQI-Index-r13 INTEGER (0..15),
betaOffsetMC-r13 SEQUENCE {
betaOffset-ACK-Index-MC-r13 INTEGER (0..15),
betaOffset2-ACK-Index-MC-r13 INTEGER (0..15) OPTIONAL, -- Need OR
betaOffset-RI-Index-MC-r13 INTEGER (0..15),
betaOffset-CQI-Index-MC-r13 INTEGER (0..15)
} OPTIONAL, -- Need OR
groupHoppingDisabled-r13 ENUMERATED {true} OPTIONAL, -- Need OR
dmrs-WithOCC-Activated-r13 ENUMERATED {true} OPTIONAL, -- Need OR
pusch-DMRS-r11 CHOICE {
release NULL,
setup SEQUENCE {
nPUSCH-Identity-r13 INTEGER (0..509),
nDMRS-CSH-Identity-r13 INTEGER (0..509)
}
} OPTIONAL, -- Need ON
uciOnPUSCH CHOICE {
release NULL,
setup SEQUENCE {
betaOffset-ACK-Index-SubframeSet2-r13 INTEGER (0..15),
betaOffset2-ACK-Index-SubframeSet2-r13 INTEGER (0..15) OPTIONAL, -- Need OR
betaOffset-RI-Index-SubframeSet2-r13 INTEGER (0..15),
betaOffset-CQI-Index-SubframeSet2-r13 INTEGER (0..15),
betaOffsetMC-r12 SEQUENCE {
betaOffset-ACK-Index-MC-SubframeSet2-r13 INTEGER (0..15),
betaOffset2-ACK-Index-MC-SubframeSet2-r13 INTEGER (0..15) OPTIONAL, -- Need OR
betaOffset-RI-Index-MC-SubframeSet2-r13 INTEGER (0..15),
betaOffset-CQI-Index-MC-SubframeSet2-r13 INTEGER (0..15)
} OPTIONAL -- Need OR
}
} OPTIONAL, -- Need ON
pusch-HoppingConfig-r13 ENUMERATED {on} OPTIONAL -- Need OR
}
Each later version answers a new case. PUSCH-ConfigDedicated-v1020 adds betaOffsetMC-r10, a second set of three indexes for multiple codeword PUSCH, which came with uplink MIMO in Release 10. PUSCH-ConfigDedicated-v1250 adds a separate set for uplink power control subframe set 2. PUSCH-ConfigDedicated-r13 collects all of these and adds betaOffset2-ACK-Index-r13. 36.331 says that when betaOffset2-ACK-Index is configured, the UE uses betaOffset-ACK-Index for up to 22 HARQ-ACK bits and betaOffset2-ACK-Index above that. More than 22 HARQ-ACK bits appear with carrier aggregation of many cells in Release 13.
The other versions are not about beta offsets. PUSCH-ConfigDedicated-v1130 carries the virtual cell identities for PUSCH and its DMRS, and v1430, v1530, v1610 and v1800 add features for CE mode, 256QAM and uplink HARQ mode. Also note that the beta offset indexes are not per cell. 36.331 says that one value applies for all serving cells with an uplink in the same cell group.
Release 8 fields are single codeword only : betaOffsetMC-r10 adds the indexes for two codeword PUSCH.Large HARQ-ACK payloads get their own index : betaOffset2-ACK-Index-r13 applies above 22 HARQ-ACK bits.One set per cell group : the same indexes apply to every serving cell with an uplink in the cell group.
How does each index map to a beta offset ?
The three indexes in the capture only make sense next to the three mapping tables of 36.213 clause 8.6.3. Each table lists the 16 index values from 0 to 15 and the beta offset for each one.
36.213 Table 8.6.3-1 below is the HARQ-ACK table. It runs from 2.000 at index 0 to 126.000 at index 14. Index 9, the value in the capture, gives 15.875.
36.213 Table 8.6.3-2 below is the RI table. It runs from 1.250 at index 0 to 20.000 at index 12, and indexes 13 to 15 are reserved. Index 6 gives 5.000.
36.213 Table 8.6.3-3 below is the CQI table. Indexes 0 and 1 are reserved, and the table runs from 1.125 at index 2 to 6.250 at index 15. Index 6 gives 1.750.
The screenshots are older than 36.213 v19.4.0, and the HARQ-ACK table has changed since. Index 15 of Table 8.6.3-1 is now 1.0 rather than reserved, and the table title now also covers the AUL-UCI offset. The RI and CQI tables still match the screenshots. The same three tables also serve the MC indexes for multiple codeword PUSCH, because each table has an Ioffset,MC column name next to Ioffset.
The ranges differ by UCI type : HARQ-ACK goes up to 126.000, RI up to 20.000 and CQI only up to 6.250.Some indexes are reserved : RI 13 to 15 and CQI 0 and 1 are not valid values.HARQ-ACK index 15 changed : it is 1.0 in the current table, where the screenshot shows reserved.
Why does HARQ-ACK get the largest beta offset ?
Why would a network give HARQ-ACK a beta offset nine times larger than CQI? The answer is in how 36.212 uses the beta offset and in what an error costs for each kind of UCI.
In 36.212 clause 5.2.2.6, the number of coded symbols for each UCI type grows with its beta offset. Roughly, the UE takes the number of UCI bits, multiplies it by the number of PUSCH resource elements per data bit, and multiplies that by the beta offset. So a beta offset of 15.875 gives each HARQ-ACK bit about 16 times the resources of one data bit. For HARQ-ACK and RI, the result is capped at four SC-FDMA symbols of the PUSCH allocation.
The cost of an error explains the rest. A wrong HARQ-ACK makes the eNB retransmit data that the UE already has, or skip data that the UE lost. A wrong RI makes the eNB misread the CQI and PMI that follow it. A CQI report carries a CRC when it is long, and a new report follows soon, so an occasional error costs less. HARQ-ACK also punctures the data next to the DMRS, and RI sits next to it, while the CQI is rate matched with the data.
Now apply this to the capture. With 15.875 for HARQ-ACK, 5.000 for RI and 1.750 for CQI, this network clearly ranks HARQ-ACK first, RI second and CQI last. The price is PUSCH capacity. Every extra coded symbol given to UCI is taken from the data in the same subframe, so a small PUSCH allocation feels a large beta offset the most.
A beta offset multiplies the UCI resources : it sets how many coded symbols each UCI bit gets, compared with a data bit.HARQ-ACK errors are the most expensive : so HARQ-ACK usually gets the largest beta offset.UCI resources come out of the data : large beta offsets reduce the PUSCH capacity left for UL-SCH.
Reference
- 3GPP TS 36.331 v19.3.0 - PUSCH-ConfigDedicated and its later versions, with the field descriptions
- 3GPP TS 36.213 v19.4.0 - clause 8.6.3, Table 8.6.3-1, Table 8.6.3-2 and Table 8.6.3-3
- 3GPP TS 36.212 v19.3.0 - clause 5.2.2.6 channel coding of control information