D-BLAST
Diagonal Layering and the Path to Channel Capacity
D-BLAST was introduced by Gerard J. Foschini at Bell Labs in 1996 as the first practical architecture shown to scale spectral efficiency linearly with the number of antennas. A single high-rate data stream is split into M substreams, each protected by an independent temporal channel code. Rather than transmitting substream k from a fixed antenna, D-BLAST rotates the antenna assignment by one position every coding interval, so substream k occupies antenna 1 in the first interval, antenna 2 in the second, and so on. Plotting antenna index against time, each codeword traces a diagonal stripe across the space-time grid, which is the source of the name. Because every codeword passes through all M transmit antennas and is received by all N receive antennas, it sees the entire fading ensemble rather than a single realization, yielding the full diversity order of N times M.
The receiver exploits this structure with a layered detector. It first isolates a complete diagonal by forming a nulling vector (zero-forcing or MMSE) that projects the received vector onto the subspace orthogonal to the undetected layers, decodes that layer's channel code, then regenerates and cancels its signal contribution. The next diagonal is detected against a partially cleaned signal. This combination of interference nulling and cancellation, applied diagonal by diagonal, is what allows the achievable rate to approach the Shannon capacity of the MIMO channel as the codeword length grows.
The cost of the diagonal structure is geometric overhead. Filling a grid diagonally leaves the upper-left and lower-right corners unpopulated; the receiver needs a full diagonal before it can begin cancellation, so the leading and trailing triangles are padded with zeros or left idle. For practical MIMO systems this initialization loss, plus the latency and error-propagation sensitivity of the serial decoder, motivated later refinements such as V-BLAST (simpler, no boundary loss) and threaded layered space-time (T-BLAST, which reclaims the wasted corners).
D-BLAST Capacity and Boundary Overhead
C = log2 det( IN + (ρ / M) · H HH ) bits/s/Hz
High-SNR Capacity Scaling:
C ≈ min(M, N) × log2(ρ) bits/s/Hz
Diagonal Diversity Order:
dmax = N × M
Boundary (triangular) Efficiency Loss:
ηloss ≈ (M − 1) / (2L + M − 1)
Where ρ = average receive SNR, M = transmit antennas, N = receive antennas, H = N×M channel matrix, HH = conjugate transpose, L = coded symbols per layer. Example: M = 4, L = 100 → ηloss ≈ 1.5%.
Layered Space-Time Architecture Comparison
| Architecture | Antenna Mapping | Diversity Order | Capacity Behavior | Boundary Loss | Decoder Complexity |
|---|---|---|---|---|---|
| D-BLAST | Diagonal across all antennas | N × M (full) | Approaches MIMO capacity | Triangular, M(M−1)/2 slots | High (layered nulling + SIC) |
| V-BLAST | One stream per fixed antenna | N − M + 1 | Multiplexing gain, sub-capacity | None | Moderate (ordered SIC) |
| H-BLAST | Horizontal, coded per antenna | N (per layer) | Below D-BLAST | None | Moderate |
| T-BLAST (threaded) | Threaded diagonal, wrapped | N × M (full) | Approaches MIMO capacity | Reclaimed (near zero) | High |
| Space-Time Block Code | Orthogonal across antennas | N × M (full) | Diversity only, rate ≤ 1 | None | Low (linear) |
Frequently Asked Questions
How does D-BLAST differ from V-BLAST?
V-BLAST pins each coded substream to one fixed transmit antenna, so a stream on a deeply faded antenna suffers and the diversity order is only N − M + 1. D-BLAST rotates every substream diagonally across all M antennas, so each codeword sees every spatial channel, giving full N × M diversity and letting the rate approach true MIMO capacity. The price is a triangular block of wasted edge symbols and a more complex layered decoder.
What is the boundary-wastage penalty in D-BLAST and how large is it?
Filling the antenna-time grid diagonally leaves the leading and trailing triangles unpopulated, roughly M(M−1)/2 idle slots per frame. The fractional loss is about (M−1)/(2L + M−1) for L coded symbols per layer. With M = 4 and L = 100 it is under 1.5%, but for short blocks (L = 10) it exceeds 12%, which motivated threaded T-BLAST to reclaim the corners.
How does the receiver decode the diagonal layers in D-BLAST?
It uses ordered successive interference cancellation with nulling: form a zero-forcing or MMSE vector that projects out undetected layers, decode the strongest available diagonal layer's channel code, reconstruct and subtract its contribution, then repeat. Because each layer is coded across all antennas, errors are rarer than in symbol-wise V-BLAST detection, but a mis-decoded early layer propagates errors into every later cancellation.