Nested Lattice Codes
From QAM to Nested Lattices: Replacing Truncation with Modulo
A 16-QAM constellation is a patch of . How do we pick the patch? Traditionally, we truncate — keep the lattice points inside a square and discard the rest. Truncation is crude: the square has more "real estate" than a random Gaussian codeword would typically need, and the constellation boundary radiates bits of outer information that the decoder must somehow handle.
Nested lattice codes replace truncation with a much cleaner operation: reduction modulo a coarser lattice. We pick a fine lattice (the "coding lattice") to hold the codewords, and a coarse lattice (the "shaping lattice") whose Voronoi region defines the power-constrained transmit region. The codebook is all fine-lattice points that fall inside this Voronoi cell:
The point is that this "modulo shaping" is algebraic. The constellation boundary is no longer a square or a cube; it is the Voronoi region of , which can be made as round as desired by choosing appropriately. The transmitter reduces its codeword mod ; the receiver undoes the modulo at the end of decoding. No outer information is radiated because no information is encoded in the boundary — the boundary is a lattice operation, not a pattern of bits. This is the single idea that will carry us to the AWGN capacity in s02.
Definition: Nested Lattice Pair
Nested Lattice Pair
A pair of lattices in is called nested if : every shaping-lattice point is also a coding-lattice point. We call the fine (coding) lattice and the coarse (shaping) lattice.
The nesting index is which counts the number of distinct cosets of inside . The cosets are the equivalence classes of the relation if .
Every lattice chain is an example; the classic 4-PAM/16-QAM constellations are and respectively. Choosing other than scaled integers is where shaping gain enters.
Definition: Modulo-Lattice Operation and Nearest-Neighbour Quantiser
Modulo-Lattice Operation and Nearest-Neighbour Quantiser
For a lattice , the nearest-neighbour quantiser is defined (uniquely) for outside the (measure-zero) boundary of the Voronoi tessellation.
The modulo-lattice reduction is i.e., the unique representative of the coset inside the Voronoi region. The operation is a group homomorphism from to , where denotes addition followed by mod- reduction.
Computing is the closest-lattice-point problem — NP-hard in the worst case and the topic of s05. For it reduces to scalar rounding (); for -dilates of or there are fast decoding algorithms (Forney's). For a generic integer lattice, one resorts to the sphere decoder.
Definition: Nested Lattice Code
Nested Lattice Code
Given a nested lattice pair , the associated nested lattice code is That is, consists of all fine-lattice points that lie inside the Voronoi region of the coarse lattice around the origin. The code has codewords, and we encode a message by a fixed enumeration .
The rate (bits per real dimension) is
The codebook size is the nesting index. The rate — whose units are bits per real dimension — directly compares against the per-dimension AWGN capacity . Chapter 15's coding-gain vocabulary (, ) will re-enter in s03 as the two independent knobs controlling how close this gets to .
Theorem: Codebook Size Equals Volume Ratio
For any nested lattice pair , the number of fine-lattice points inside a Voronoi region of the coarse lattice is exactly the index:
Each coset of in has exactly one representative inside any fundamental region of — this is just the statement that a fundamental region tiles under translations by . The Voronoi region is one such fundamental region, so each coset contributes exactly one point to .
Show that each coset of in has exactly one representative in .
Use the fact that the Voronoi region is a fundamental region (tiles under -translations up to a measure-zero boundary).
Count cosets: from Ch. 4.
One representative per coset
Let . The translates form the coset . Since is a fundamental region, exactly one of these translates lies in (ignoring the measure-zero boundary). Hence the map sending a lattice point to its coset is a bijection.
Cosets count by volume
From Ch. 4 (or Ch. 15), the index of a sublattice in a lattice equals the ratio of fundamental volumes. Since , we have and
Conclude
Combining: .
Nested Lattice Pair in 2D
Visualisation of a 2D nested lattice pair: the fine coding lattice and a scaled shaping sublattice (hexagonal-rotated for realism). The Voronoi cell is outlined; the codeword set is highlighted; the other -points are shown faintly to emphasise the periodic lattice outside. Increasing the nesting ratio grows both and the rate bits per real dimension.
Parameters
Example: 16-QAM as a Nested Lattice Code
Express the 16-QAM constellation as a nested lattice code for some fine and coarse lattices. Compute the codebook size and the rate.
Fine lattice
The constellation points are — odd integers in both coordinates. They are the -lattice points . For the purposes of identifying we can shift: with a coset offset . (We absorb the offset into the dither in s02.)
Equivalently, set ; the constellation lives on a coset of , not on itself, but this is a notational quibble.
Coarse lattice and Voronoi region
The constellation is bounded by the square , which is the Voronoi region of . Hence with .
Verify the count
, matching the QAM constellation points.
Rate
bits per real dimension (i.e., bits per complex QAM symbol). This matches the nominal 16-QAM rate, as expected.
Why this is still a weak nested-lattice code
Both and are scaled cubes . Hence there is no coding gain relative to () and no shaping gain relative to a cube (). 16-QAM sits at the reference point from which all lattice codes are measured. In s03 we will replace the cubic shaping by a Voronoi-shaped to harvest up to dB of shaping gain, and in Ch. 17 we will replace the cubic by a DMT-optimal LAST code.
Encoder and Decoder, in One Picture
With the definitions in place, the nested-lattice coding system is: The two "trivial" steps — the enumerator and its inverse — are implementation-level and will be treated in s05. The interesting content is in what the decoder does, and whether the choice of plus a small amount of additional processing (MMSE scaling + dither, in s02) is enough to achieve the AWGN capacity. Erez and Zamir (2004) proved the answer is yes — with a single algebraic scheme, no random codebook required.
Common Mistake: Nesting Must Be Strict for a Nontrivial Code
Mistake:
Taking and expecting a nontrivial code. If the two lattices coincide, then and the code has exactly one "codeword" (the origin) — a zero-rate code that transmits no information. Similarly, using violates the nesting ordering.
Correction:
Always check: , i.e., the coarse lattice is a proper sublattice of the fine lattice. For positive rate we need . The standard language is " is a refinement of ," or equivalently " is a sublattice of ."
Historical Note: Forney, 1989: Lattice Shaping Is Coding
1988–1989The coset-code framework of Forney (1988) explicitly separated the coding lattice (which provides asymptotic coding gain) from the shaping lattice (which provides asymptotic shaping gain). In the 1989 follow-up, Forney showed that Voronoi-constellation shaping of can achieve up to dB of shaping gain — a number that earned a proper name in the modulation community. What neither Forney's paper nor the Ungerboeck–Forney 1998 survey proved was that this "fine + coarse lattice" architecture could close the remaining capacity gap entirely. That took another years: Erez and Zamir (2004) showed that a careful choice of (a random lattice via Loeliger's averaging), a coarse (any lattice with ), an MMSE scalar , and a dither , achieve — the AWGN capacity, exactly.
Nested lattice code
A codebook defined by a fine lattice and a coarse lattice . The number of codewords equals the index , and the rate is .
Related: Fine (coding) lattice, Coarse (shaping) lattice, Voronoi Region
Fine (coding) lattice
The lattice in a nested pair; carries the individual codewords and provides the coding gain . Typically is chosen to be dense in the packing sense (e.g., , , or random lattices via Loeliger).
Related: Nested Lattice Code, Coding Gain of a Full-Rank Space-Time Code, Coarse (shaping) lattice
Coarse (shaping) lattice
The sublattice in a nested pair; its Voronoi region defines the power-constrained transmit region and provides the shaping gain , bounded by dB.
Related: Nested Lattice Code, Shaping Gain , Voronoi Region
Modulo-lattice reduction
The operation , which returns the unique representative of the coset inside the Voronoi region . A group homomorphism from onto .
Related: Voronoi Region, Quantiser, Crypto-Lemma (Zamir–Feder)
Quick Check
A nested lattice code uses and . How many codewords does it have, and what is its rate (bits per real dimension)?
,
,
,
,
Correct. , , so . Rate bits per real dimension (i.e., bits per complex symbol).
Key Takeaway
A nested lattice code is a fine lattice intersected with the Voronoi region of a coarse sublattice: , with codewords and rate . The construction decouples the "coding" job (done by ) from the "shaping" job (done by ), and the key operation — reduction modulo — is algebraic. s02 shows that a careful choice of , , an MMSE scalar, and a uniform dither yields the AWGN capacity exactly.