4G/LTE - PHY Channel

 

 

 

DMRS - PUSCH

 

DMRS stands for 'DeModulation Reference Signal'. As the name stands for, this is a reference signal for PUSCH implying that eNodeB would not be able to decode PUSCH if this PUSCH DMRS is bad.

The position of the reference symbol is the easy half. The sequence that fills it is the hard half. The pictures below work through it in three steps. They are the generation chain from 36.211 clause 5.5, the RRC parameters that feed the chain, and the two tables that the shortest allocations read from.

Where does the PUSCH DMRS sit ?

A PUSCH allocation covers whole SC-FDMA symbols, and one symbol in each slot goes to the reference signal rather than to data. The picture below shows that in an uplink grid, together with the two other uplink signals the grid carries.

PUSCH DMRS always takes up the center symbol of a slot (meaning symbol 3 and symbol 10 of a UL subframe). Following is an example of UL transmission showing PUSCH data, PUSCH DMRS and UL SRS.

 

An uplink resource grid of ten subframes showing PUSCH across the middle of the band, a green demodulation reference signal column in each slot, and blue sounding reference signal columns in the last symbol of some subframes

  • The grid runs ten subframes across, numbered #0 to #9, with the resource block number up the left side and the symbol number above each slot.
  • The maroon block across the middle of the band is PUSCH, and it is present in every subframe of this capture.
  • The green columns inside the maroon block are the demodulation RS for PUSCH. One falls in each slot, so two fall in each subframe.
  • The bright blue columns span the whole occupied band and are the sounding RS. They sit in the last symbol of some subframes rather than all of them.
  • The legend names five things, and two of them are green. Demodulation RS for PUSCH and demodulation RS for PUCCH are different signals with different generation rules.

The symbol numbers in the paragraph above are the normal cyclic prefix case. 36.211 clause 5.5.2.1.2 gives one symbol index for the normal cyclic prefix and a different one for the extended cyclic prefix. An extended cyclic prefix slot holds six symbols rather than seven, so symbol 10 does not exist there at all.

  • One symbol per slot : the reference signal takes a whole SC-FDMA symbol out of the seven in a normal cyclic prefix slot.
  • The position does not move : nothing in RRC and nothing in the grant shifts it, which is unusual for this reference signal.
  • The sounding reference signal is a different thing : it sits in the last symbol of a subframe and spans a wider band, and the picture keeps the two apart by colour.

How is the sequence generated ?

The generation is a chain rather than a single formula. Every quantity in the top line is defined by another expression below it, and the chain ends at one of two places, depending on how many resource blocks the grant covers.

Understanding the location of PUSCH DMRS is simple, but generating the DMRS is not that simple. Big picture is simple since PUSCH DMRS is also a kind of Zadoff - Chu Sequence. But there are so many parameters being used to create a specific Zadoff-Chu sequence for a specific case. Following is the chain of algorithms from 36.211 section 5.5  Reference signals. It would be hard to grasp the meaning of each parameters unless you implement this algorithm on your own, but just taking a brief look-at of these equations would give you the idea on what kind of factors are involved in this sequence generation.

 

The full PUSCH demodulation reference signal generation chain, with the sequence at the top and each of its terms expanded below it, forking into a Zadoff-Chu branch for allocations of three resource blocks or more and a lookup table branch for smaller ones

  • The red box at the top left is the sequence itself, and everything else in the picture defines one of its terms.
  • The cyclic shift is 2π ncs / 12, and ncs adds three terms: nDMRS(1) from RRC, nDMRS(2) from the uplink grant, and nPRS(ns), which changes from slot to slot.
  • The chain forks in the middle of the picture. The upper branch is labelled base sequences of length 3NscRB or larger and ends at xq(m), a Zadoff-Chu sequence. The lower branch is labelled base sequences of length less than 3NscRB and ends at a phase read from Table 5.5.1.2-1 or Table 5.5.1.2-2.
  • Two quantities sit between the fork and the two branches: the sequence group u and the base sequence number v. u is (fgh(ns) + fss) mod 30, and v is c(ns) when group hopping is disabled and sequence hopping is enabled, and 0 otherwise.

The fork decides how far the claim above reaches. A grant of three resource blocks or more takes the Zadoff-Chu branch, so calling the PUSCH reference signal a Zadoff-Chu sequence is right for most grants. A grant of one or two resource blocks is not on that branch. It takes the table instead, and the two tables further down this page are exactly that branch.

 

A zoom on the sequence group number, with the sequence shift pattern highlighted and given separately for PUCCH and for PUSCH

  • The picture repeats the sequence group expression with the sequence shift pattern fss highlighted in green.
  • fss is different for the two channels. For PUCCH it is NIDcell mod 30. For PUSCH it adds Δss to the PUCCH value and takes mod 30 again.
  • Δss runs from 0 to 29, and it is the one term here that the network sets rather than derives from the cell identity.
  • fgh(ns) is 0 when group hopping is disabled. With group hopping off, the sequence group is fss alone and does not change from one slot to the next.

One rule sits outside the picture. 36.211 applies sequence hopping only to reference signals of six resource blocks or more. Below that size the base sequence number is 0 whatever sequenceHoppingEnabled says, so the v branch in the picture never applies to a small grant.

  • The chain forks on size : three resource blocks or more takes the Zadoff-Chu branch, and fewer takes the table branch.
  • Three terms make the cyclic shift : one comes from RRC, one from the uplink grant, and one changes every slot.
  • Sequence hopping has a floor of its own : 36.211 applies it only at six resource blocks or more, and below that the base sequence number is 0.

Which RRC parameters feed the sequence ?

Four terms in the chain above are not computed from anything else. They arrive in RRC, and the picture below draws a green arrow from each field to the term it supplies.

If you go through the 36.211 5.5.2 Demodulation reference signal, you will notice that some of the parameters should come from the higher layer signaling message. Following illustration show you how the higher layer parameter is getting involved in the reference signal sequence generation.

 

The PUSCH RRC definitions with green arrows drawn from four fields of UL-ReferenceSignalsPUSCH to the terms they supply in the sequence generation, and the two cyclic shift mapping tables below them

  • The grey box holds three ASN.1 definitions, and the four red underlined fields in UL-ReferenceSignalsPUSCH are the ones with arrows.
  • groupAssignmentPUSCH supplies Δss, in the sequence shift pattern at the top.
  • groupHoppingEnabled selects the branch of fgh(ns), and sequenceHoppingEnabled selects the branch of v.
  • cyclicShift supplies nDMRS(1), through the small table at the lower left. The values 0 to 7 map onto 0, 2, 3, 4, 6, 8, 9 and 10.
  • The table beside it is the other half of the cyclic shift. The cyclic shift field in DCI format 0 maps 000 to 111 onto nDMRS(2) values 0, 6, 3, 4, 2, 8, 10 and 9.

Following is based on 36.331 v19.3.0 (Release 19)

PUSCH-ConfigCommon ::=				SEQUENCE {
	pusch-ConfigBasic					SEQUENCE {
		n-SB								INTEGER (1..4),
		hoppingMode							ENUMERATED {interSubFrame, intraAndInterSubFrame},
		pusch-HoppingOffset					INTEGER (0..98),
		enable64QAM							BOOLEAN
	},
	ul-ReferenceSignalsPUSCH			UL-ReferenceSignalsPUSCH
}

UL-ReferenceSignalsPUSCH ::=		SEQUENCE {
	groupHoppingEnabled					BOOLEAN,
	groupAssignmentPUSCH				INTEGER (0..29),
	sequenceHoppingEnabled				BOOLEAN,
	cyclicShift							INTEGER (0..7)
}

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-v1130 ::=		SEQUENCE {
	pusch-DMRS-r11						CHOICE {
		release								NULL,
		setup								SEQUENCE {
			nPUSCH-Identity-r11					INTEGER (0..509),
			nDMRS-CSH-Identity-r11				INTEGER (0..509)
		}
	}
}

PUSCH-ConfigCommon, UL-ReferenceSignalsPUSCH and PUSCH-ConfigDedicated still read in 36.331 v19.3.0 exactly as the picture draws them. What the picture predates is everything added after Release 8.

PUSCH-ConfigDedicated-v1020 carries two fields that belong to this page. The field groupHoppingDisabled turns sequence group hopping off for one UE while the cell keeps it on. The field dmrs-WithOCC-Activated turns on the orthogonal cover that 36.211 clause 5.5.2.1 applies to the PUSCH reference signal.

PUSCH-ConfigDedicated-v1130 goes further. Its pusch-DMRS-r11 carries nPUSCH-Identity and nDMRS-CSH-Identity, each 0 to 509, and 36.331 points the first at 36.211 clause 5.5.1.5 and the second at clause 5.5.2.1.1. Clause 5.5.1.5 is where the sequence generation stops using the cell identity: with a value configured, that value replaces NIDcell. A PUSCH sent on a random access response grant keeps the cell identity, and so does a contention based retransmission of the same transport block.

  • Four Release 8 fields feed the chain : groupHoppingEnabled, groupAssignmentPUSCH, sequenceHoppingEnabled and cyclicShift, all of them in UL-ReferenceSignalsPUSCH.
  • The cell identity is no longer the only identity : nPUSCH-Identity replaces NIDcell in the sequence generation from Release 11, where the network configures one.
  • A single UE can be taken out of group hopping : groupHoppingDisabled turns it off for that UE while the cell keeps it on.

What do the base sequence tables hold ?

The two tables below are the end of the short branch. They hold the phases that a one or two resource block reference signal is built from, and nothing in them is computed while the UE is running. A specification that defines everything else on this page by formula stops here and writes out 1080 numbers instead, and the reason for that is worth following.

< 36.211 Table 5.5.1.2-1 >

36.211 Table 5.5.1.2-1, thirty rows of twelve phase values for a one resource block reference signal

 

< 36.211 Table 5.5.1.2-2 >

36.211 Table 5.5.1.2-2, thirty rows of twenty four phase values for a two resource block reference signal

  • Both tables index a row by u, the sequence group, and both run u from 0 to 29. Those are the same thirty groups the expression for u produces.
  • The upper table gives twelve values, from φ(0) to φ(11), which is one resource block of subcarriers. The lower one gives twenty four, which is two.
  • Every entry is 1, -1, 3 or -3, and every one of them is odd. The base sequence raises e to j φ(n) π / 4, so the four values land at 45, 135, 225 and 315 degrees. They are 90 degrees apart and none of them sits on an axis.
  • There is no third table. A grant of three resource blocks or more leaves this branch and takes the Zadoff-Chu one.

The drawing below takes that one step further. The left panel is the base sequence. It is QPSK: four points on the unit circle, 90 degrees apart, at the odd multiples of 45 degrees. Every point has magnitude 1, which is the constant amplitude the reference signal needs.

The right panel is what reaches the subcarriers. The cyclic shift multiplies the base sequence by e to j α n, with α = 2π ncs / 12 and ncs an integer from 0 to 11, so subcarrier n is turned by a multiple of 30 degrees. Turn a point at 45 degrees in steps of 30, and it reaches twelve phases rather than four.

The transmitted reference signal is therefore not QPSK, even though the table it comes from is. What survives both steps is the magnitude. The base sequence has magnitude 1 at every subcarrier, and a cyclic shift is a pure rotation, so the amplitude stays flat across the allocation whatever the phases do.

Base sequence, from the table 45° φ = 1 135° φ = 3 225° φ = -3 315° φ = -1 four phases, 90° apart After the cyclic shift 30° 15° 75° 345° twelve phases, 30° apart a value from the table reached only after the cyclic shift

The base sequence constellation on the left, and the phases a subcarrier can reach once the cyclic shift has been applied on the right. Both are the unit circle, so every point has magnitude 1.

Everything else in the chain is an expression. The cyclic shift, the sequence group, the two hopping patterns and the Zadoff-Chu branch are all written as formulas, and only this branch is written as data. The formula on the other branch cannot be made to work at these two lengths.

The Zadoff-Chu construction needs a prime. 36.211 sets the length of the Zadoff-Chu sequence to the largest prime number that fits under the sequence length. The picture further up this page then reads that sequence modulo its own length, so that it still fills the grant. A prime shorter than the allocation is built into the construction.

Thirty groups are what the chain has to deliver. The sequence group u runs from 0 to 29, and the expression that turns u into a root index divides by 31. That 31 is the largest prime below 36 subcarriers, and 36 subcarriers is three resource blocks, which is exactly where the Zadoff-Chu branch begins. Below that length the arithmetic does not work. Two resource blocks is 24 subcarriers and the largest prime under it is 23. One resource block is 12 and the largest prime under it is 11. Neither leaves thirty distinct roots, so several groups would share a sequence.

The properties are the other half of the answer. A reference signal has to hold one amplitude across every subcarrier it occupies, so that the channel estimate comes out equally good everywhere. It has to keep the time domain envelope flat, because every peak costs the UE transmit power amplifier headroom. And it has to correlate weakly with the sequences a neighbouring cell might choose, or the neighbour's signal leaks into the channel estimate. A Zadoff-Chu sequence gives all three at once, which is why the specification uses it wherever the length allows.

36.211 gives no construction rule for the values in these two tables. It gives the values and nothing else, and that absence is the point. The thirty sequences at each length were selected rather than derived. They were searched for against the same three properties and then written into the specification as the answer. A table is what a search result looks like once it has been standardised.

Storing them costs almost nothing. Thirty rows of twelve and thirty rows of twenty four is 1080 values, each one of four, so the pair of tables is 2160 bits. A UE already carries far larger tables for the turbo interleaver and for the modulation and coding scheme.

One consequence of this is already on this page. 36.211 applies sequence hopping only at six resource blocks or more, and below that the base sequence number stays at 0. At one and two resource blocks a group holds one sequence and no more, so each of these thirty rows is a whole group on its own.

  • Thirty rows, one per sequence group : the u that the chain computes is the row number.
  • The values are phases, not amplitudes : each entry is 1, -1, 3 or -3, and the base sequence raises e to j φ(n) π / 4.
  • The tables stop at two resource blocks : anything larger uses the Zadoff-Chu branch instead.
  • The table replaces a formula that will not fit : the Zadoff-Chu branch needs a prime near 31 to separate thirty groups, and one and two resource blocks offer only 11 and 23.
  • The table is QPSK and the transmitted signal is not : the four table phases sit 90 degrees apart, and the cyclic shift turns each subcarrier by a multiple of 30 degrees on top of that.

Implementation Example

The linked page works the chain above through with real numbers. It takes the smallest allocation there is, which is also the one case that never reaches the Zadoff-Chu branch at all.

 

That size is the point of it. A one resource block grant gives MscRS the value 12, so the base sequence comes from Table 5.5.1.2-1 rather than from xq(m). Sequence hopping does not apply either, because 36.211 sets the floor for that at six resource blocks. What is left is the sequence group, the cyclic shift, and the twelve phases the table supplies.

The example does exercise the rest of the chain, and all of it is cell specific or slot specific. The sequence group follows fss and, where group hopping is enabled, fgh(ns) as well. The cyclic shift follows cyclicShift from RRC, the cyclic shift field of the grant, and nPRS(ns), which changes from slot to slot.

One number in the example is worth checking. Table 5.5.1.2-1 gives twelve phases and a resource block holds twelve subcarriers, so the base sequence maps onto the allocation one to one, with no repetition and no truncation. That holds at one resource block and at two. Above two, the Zadoff-Chu sequence is read modulo its own length instead, which extends it cyclically to fill the grant.

  • One resource block is the table case : the example never evaluates a Zadoff-Chu sequence.
  • Two of the three hopping mechanisms still apply : group hopping and cyclic shift hopping do, and sequence hopping does not.

Reference

The documents below are the sources for the generation chain and for the parameter definitions on this page. A version is named only where the text was read in that version.

  • 36.211 : 3GPP - E-UTRA; Physical channels and modulation, v19.3.0. Clause 5.5.1 defines the base sequence and the two tables reproduced here. Clauses 5.5.1.3 to 5.5.1.5 define group hopping, sequence hopping and the identity the generation uses, and clause 5.5.2.1 defines the PUSCH demodulation reference signal.
  • 36.331 : 3GPP - E-UTRA; Radio Resource Control (RRC) protocol specification, v19.3.0. The source of the ASN.1 tile above and of the field descriptions that point each parameter at its 36.211 clause.