Paper
Part IErrors, Information and Channels

Channels, Signals and Likelihoods

November 14, 202650 min readbeginner

A receiver sees voltages, not bits. This chapter models the channel, from erasures and one-way faults to Gaussian noise and bursts, and derives the optimal receiver, the decibel budget and the log-likelihood ratio.

The previous chapter, Probability for Coding, treated a channel as one number, the probability pp that a bit flips, and closed with a voltage example in which each bit left the transmitter as a pulse of ±1\pm 1 volt and arrived blurred by Gaussian noise. The receiver in that example compared each voltage with zero, kept the resulting bit and threw the voltage away. That choice was never justified. A voltage of 0.05 and a voltage of 1.9 both became the same bit, although the first is nearly a coin toss and the second is nearly certain.

This chapter asks what a receiver should do with what it sees. Three discrete channels that fail in different ways come first, with a proof that choosing the most probable input makes the fewest errors. The Gaussian channel follows, with enough geometry to prove that the matched filter is the best way to collapse a noisy pulse into one number, then the decibel scale, a measured comparison of hard and soft decisions, and the log-likelihood ratio that later decoders consume. The chapter ends with channels that remember, through the Gilbert–Elliott model of bursts, and with the faults that memory codes survive.

The tools are Bayes' rule, the Gaussian density and the Q-function from the previous chapter, plus a little vector algebra built here from nothing. Every number in the chapter is recomputed by ch03_channels_signals_and_likelihoods.py, in the python/ folder of the companion repository ecc-book-lab, which prints each value beside the one the text states and stops at the first disagreement. The charts are drawn by ch03_charts.py in the same folder.

01.Three Discrete Channels

Send the four bits 1011 through three channels, each with a fault probability of 0.1 per bit, and look at one particular output from each.

On the binary symmetric channel of the previous chapter, written BSC(p)\text{BSC}(p), every bit flips with probability p=0.1p = 0.1 whatever its value. The output 1001, with only the third bit flipped, has probability 0.9×0.9×0.1×0.9=0.07290.9 \times 0.9 \times 0.1 \times 0.9 = 0.0729. The receiver sees a word that looks perfectly valid and has no idea which bit, if any, is wrong.

On the binary erasure channel, written BEC(ε)\text{BEC}(\varepsilon), a bit is never flipped. With probability ε=0.1\varepsilon = 0.1 it is lost, and the receiver sees a third symbol, written ?, in its place. The output 1?11 has probability 0.93×0.1=0.07290.9^3 \times 0.1 = 0.0729, the same number, but now the receiver knows exactly where the damage is. A disk sector that fails its own internal check, or a network packet that never arrives, behaves this way.

On the Z-channel, written Z(p)\text{Z}(p), only one direction of fault happens. A 1 becomes 0 with probability p=0.1p = 0.1, and a 0 always arrives as 0. It models a memory cell that stores a 1 as charge, since charge can leak away but cannot appear from nothing. The output 1001 needs the third bit, a 1, to drop, while the two other 1s survive with probability 0.9 each and the 0 survives with certainty, so its probability is 0.9×1×0.1×0.9=0.0810.9 \times 1 \times 0.1 \times 0.9 = 0.081.

The three products above are this formula with three different tables of transition probabilities, drawn in Figure 1 and listed in Table 1.

Transition diagrams of three binary channels. In the binary symmetric channel each input reaches the other output with probability p and its own output with probability 1 minus p. In the binary erasure channel each input reaches its own output with probability 1 minus epsilon and the erasure output, a question mark, with probability epsilon. In the Z-channel a 0 always arrives as 0, and a 1 arrives as 0 with probability p. BSC(p) input output flips in both directions 0 1 0 1 1 − p 1 − p p p BEC(epsilon) input output erases, never flips 0 1 0 ? 1 1 − epsilon 1 − epsilon epsilon epsilon Z(p) input output flips 1 to 0 only 0 1 0 1 1 1 − p p
Figure 1. Transition diagrams of , and . Each arrow carries the probability of that output given that input, and the arrows leaving each input add to 1. Only the erasure channel has an output that reports its own failure.

Table 1. What can go wrong on each channel

ChannelOutputsP(wrong bit∣0)P(\text{wrong bit} \mid 0)P(wrong bit∣1)P(\text{wrong bit} \mid 1)P(?∣x)P(\text{?} \mid x)Damage located
BSC(p)\text{BSC}(p)0, 1pppp0no
BEC(ε)\text{BEC}(\varepsilon)0, ?, 100ε\varepsilonyes
Z(p)\text{Z}(p)0, 10pp0no, but only a 1 is at risk

Source: the definitions of the three channels.

The repetition code R3R_3 of Why Codes Exist, which sends every bit three times, fares differently on each channel, and each channel calls for its own decoder. On BSC(0.1)\text{BSC}(0.1) the majority vote fails when two or more copies flip, with probability 3p2−2p3=0.0283p^2 - 2p^3 = 0.028. On BEC(0.1)\text{BEC}(0.1) a surviving copy is never wrong, so one survivor is enough, and decoding fails only when all three copies are erased, with probability ε3=0.001\varepsilon^3 = 0.001. Even then a guess is right half the time, so the bit error probability is 0.0005.

On Z(0.1)\text{Z}(0.1) a received 1 can only have come from a sent 1, because a 0 never turns into a 1. The decoder that respects this outputs 1 if any copy reads 1, and 0 otherwise. It never errs on a sent 0, and it errs on a sent 1 only when all three copies drop, with probability p3=0.001p^3 = 0.001, so with equally likely bits its error probability is 0.0005. A majority vote on the same channel fails on a sent 1 whenever two or more copies drop, with probability 3p2(1−p)+p3=0.0283p^2(1-p) + p^3 = 0.028, or 0.014 averaged over equally likely bits. The rule that matches the channel is 28 times better.

The asymmetry also changes what a received bit means. With equally likely inputs, a received 0 on Z(0.1)\text{Z}(0.1) comes from a sent 0 with probability 0.50.5 and from a dropped 1 with probability 0.5×0.1=0.050.5 \times 0.1 = 0.05, so Bayes' rule gives P(X=1∣Y=0)=0.05/0.55=0.0909P(X = 1 \mid Y = 0) = 0.05/0.55 = 0.0909. A received 1 is certain and a received 0 is doubtful.

02.Decisions by Bayes' Rule

A sensor line carries a rare alarm bit. It sends 1 with probability 0.05 and 0 otherwise, over BSC(0.1)\text{BSC}(0.1), and the receiver sees a 1. Bayes' rule from Probability for Coding gives the probability that an alarm was really sent,

P(X=1∣Y=1)=P(Y=1∣X=1) P(X=1)P(Y=1)=0.9×0.050.9×0.05+0.1×0.95=0.0450.14=0.3214.P(X = 1 \mid Y = 1) = \frac{P(Y = 1 \mid X = 1)\,P(X = 1)}{P(Y = 1)} = \frac{0.9 \times 0.05}{0.9 \times 0.05 + 0.1 \times 0.95} = \frac{0.045}{0.14} = 0.3214.

A received 1 is more likely a flipped 0, with probability 0.095, than a true alarm, with probability 0.045. On a received 0 the two candidates have probabilities 0.1×0.05=0.0050.1 \times 0.05 = 0.005 for an alarm and 0.9×0.95=0.8550.9 \times 0.95 = 0.855 for no alarm. A receiver that always reports the more probable input therefore says 0 whatever it sees, and it is wrong exactly when an alarm was sent, with probability 0.05. A receiver that believes the channel and reports the received bit is wrong whenever the channel flips, with probability 0.1. Always saying 0 makes half as many errors.

Proof. A decision rule is correct exactly when the input equals the decision made for the output that occurred. The events "Y=yY = y and X=x^(y)X = \hat{x}(y)" for different outputs yy cannot happen together, so their probabilities add, and

P(correct)=∑yP(X=x^(y), Y=y)=∑yP(y∣x^(y)) P(x^(y)).P(\text{correct}) = \sum_{y} P\bigl(X = \hat{x}(y),\, Y = y\bigr) = \sum_{y} P\bigl(y \mid \hat{x}(y)\bigr)\,P\bigl(\hat{x}(y)\bigr).
(3)

Each term of the sum depends only on the decision made for its own yy. The sum is therefore as large as possible when every term is as large as possible, which means choosing, for each yy, the input xx that maximizes P(y∣x)P(x)P(y \mid x)P(x). That is the MAP rule. The probability of error is 1−P(correct)1 - P(\text{correct}), so the MAP rule minimizes it. For a continuous output such as a voltage, the sum becomes an integral and P(y∣x)P(y \mid x) becomes a density f(y∣x)f(y \mid x), and the argument is unchanged, since an integral is largest when its integrand is largest at every point. ■\blacksquare

On the binary symmetric channel the ML rule takes a familiar form. Recall from Why Codes Exist that the Hamming distance between two words of equal length is the number of positions in which they differ.

Proof. Let a codeword c\mathbf{c} of length nn differ from the received word y\mathbf{y} in dd positions. By Equation 1, those dd positions each contribute a factor pp and the other n−dn - d positions each contribute 1−p1 - p, so

P(y∣c)=pd(1−p)n−d=(1−p)n(p1−p)d.P(\mathbf{y} \mid \mathbf{c}) = p^{d}(1-p)^{n-d} = (1-p)^{n}\left(\frac{p}{1-p}\right)^{d}.
(4)

Because p<1/2p < 1/2, the ratio p/(1−p)p/(1-p) is less than 1, so the likelihood strictly decreases as dd grows. The largest likelihood belongs to the smallest distance. ■\blacksquare

The majority vote of Why Codes Exist was therefore not a rule of thumb. With equally likely inputs on a binary symmetric channel, it is the optimal decoder of R3R_3. The same reasoning applied to the likelihoods of the Z-channel produces its any-1 rule, and applied to the erasure channel it says to ignore the erased copies.

03.The Gaussian Channel and BPSK

A transmitter cannot send a bit. It sends a physical quantity, a voltage on a wire or the phase of a radio wave, and the simplest way to carry one bit is to send one of two opposite values. Binary phase-shift keying, or BPSK, sends the amplitude +a+a or −a-a, named after the radio version, which shifts a carrier wave by half a cycle.

This book maps bit 0 to +a+a and bit 1 to −a-a, the reverse of the voltage example in Probability for Coding. The reason is algebraic. The amplitude for bit bb is then a(−1)ba(-1)^b, and the exclusive-or of two bits, written ⊕\oplus, becomes a product of signs, (−1)b1⊕b2=(−1)b1(−1)b2(-1)^{b_1 \oplus b_2} = (-1)^{b_1}(-1)^{b_2}, which can be checked on the four cases. Parity checks are exclusive-ors, so they turn into products of signs when later chapters decode directly from voltages.

The received value is y=x+ny = x + n, where x=±ax = \pm a is the sent amplitude and nn is noise. With a=1a = 1 and noise standard deviation σ=0.5\sigma = 0.5, the values of the previous chapter, a sent 0 produces a yy distributed as N(1,0.25)N(1, 0.25) and a sent 1 produces N(−1,0.25)N(-1, 0.25).

The ML decision compares the two likelihoods. Their ratio is

f(y∣+a)f(y∣−a)=exp⁡((y+a)2−(y−a)22σ2)=exp⁡(2ayσ2),\frac{f(y \mid +a)}{f(y \mid -a)} = \exp\left(\frac{(y + a)^2 - (y - a)^2}{2\sigma^2}\right) = \exp\left(\frac{2ay}{\sigma^2}\right),

since the constant in front cancels and (y+a)2−(y−a)2=4ay(y + a)^2 - (y - a)^2 = 4ay. The exponential exceeds 1 exactly when its exponent is positive, so the ML receiver decides 0 when y>0y > 0 and 1 when y<0y < 0. The threshold at zero was the maximum likelihood rule all along. It errs on a sent 0 when the noise pushes yy below zero, that is when n<−an < -a, which has probability Q(a/σ)=Q(2)=0.02275Q(a/\sigma) = Q(2) = 0.02275, and by symmetry the same holds for a sent 1.

With unequal priors π0=P(b=0)\pi_0 = P(b = 0) and π1=P(b=1)\pi_1 = P(b = 1), the MAP rule decides 0 when π0f(y∣+a)>π1f(y∣−a)\pi_0 f(y \mid +a) > \pi_1 f(y \mid -a). Dividing both sides by π0f(y∣−a)\pi_0 f(y \mid -a) and taking logarithms turns this into 2ay/σ2>ln⁡(π1/π0)2ay/\sigma^2 > \ln(\pi_1/\pi_0), so the threshold moves from zero to

τ=σ22a ln⁡π1π0.\tau = \frac{\sigma^2}{2a}\,\ln\frac{\pi_1}{\pi_0}.
(6)

When 0 is the more likely bit, π1<π0\pi_1 < \pi_0, the logarithm is negative and the threshold slides toward −a-a, enlarging the region that decides 0. The shift is proportional to σ2\sigma^2, so a quiet channel barely moves the threshold and a noisy one leans on the prior. Figure 2 draws the case π0=0.9\pi_0 = 0.9, which Worked Examples carries through to its error probability.

Two prior-weighted bell curves over the received voltage. The tall one is centered at plus 1 and weighted by 0.9, the short one at minus 1 and weighted by 0.1. A dashed line at 0 marks the ML threshold and a green line at minus 0.275 marks the MAP threshold, where the curves cross. received voltage y prior times density 0 0.2 0.4 0.6 0.8 −3 −2 −1 0 1 2 3 ML, y = 0 MAP, y = −0.275 decide 1 decide 0 0.9 f(y | sent 0) 0.1 f(y | sent 1)
Figure 2. Prior-weighted likelihoods and for BPSK with , and . The MAP threshold sits where the curves cross, at , while the ML threshold stays at 0. Data: computed by ch03_charts.py in the companion repository.

04.Signal Space and the Matched Filter

A real pulse is not a single number. Suppose bit 0 is sent as a pulse whose shape, sampled four times, is s=(0.1,0.7,0.7,0.1)\mathbf{s} = (0.1, 0.7, 0.7, 0.1), and bit 1 as −s-\mathbf{s}, and that each sample picks up independent Gaussian noise with σ=1\sigma = 1. The energy of the pulse, the sum of its squared samples, is 0.01+0.49+0.49+0.01=10.01 + 0.49 + 0.49 + 0.01 = 1. The receiver must combine four noisy samples into one number before comparing it with zero, and Table 2 tries three ways.

Using only the second sample gives a signal of 0.7 against noise of standard deviation 1, and an error probability Q(0.7)=0.2420Q(0.7) = 0.2420. Adding all four samples gives a signal of 1.61.6, but the noise variances of the four samples add too, to 4, so the noise standard deviation is 2 and the error probability is Q(0.8)=0.2119Q(0.8) = 0.2119. Weighting each sample by the pulse itself, so that the receiver computes 0.1y1+0.7y2+0.7y3+0.1y40.1y_1 + 0.7y_2 + 0.7y_3 + 0.1y_4, gives a signal of 0.01+0.49+0.49+0.01=10.01 + 0.49 + 0.49 + 0.01 = 1 and a noise variance of 0.01+0.49+0.49+0.01=10.01 + 0.49 + 0.49 + 0.01 = 1, and an error probability Q(1)=0.1587Q(1) = 0.1587. The rest of this section proves that no weighting beats the pulse-weighted sum.

Table 2. Three ways to combine four noisy samples of the pulse with

CombinerSignalNoise standard deviationSignal over noiseError probability
Second sample only0.710.70.2420
Plain sum1.620.80.2119
Weighted by the pulse1110.1587

Source: computed from the Q-function and reproduced by ch03_channels_signals_and_likelihoods.py.

The proof needs two pieces of vector algebra. A vector here is an ordered list of nn real numbers, such as the four samples y=(y1,y2,y3,y4)\mathbf{y} = (y_1, y_2, y_3, y_4), and vectors add and scale entry by entry.

Proof. If v\mathbf{v} is all zeros, both sides are 0 and v=0⋅u\mathbf{v} = 0 \cdot \mathbf{u}. Otherwise, for any real number tt, a sum of squares cannot be negative, so

0≤∥u−tv∥2=∑i(ui−tvi)2=∥u∥2−2t ⟨u,v⟩+t2 ∥v∥2.0 \le \|\mathbf{u} - t\mathbf{v}\|^2 = \sum_i (u_i - t v_i)^2 = \|\mathbf{u}\|^2 - 2t\,\langle \mathbf{u}, \mathbf{v} \rangle + t^2\,\|\mathbf{v}\|^2.

Choose t=⟨u,v⟩/∥v∥2t = \langle \mathbf{u}, \mathbf{v} \rangle / \|\mathbf{v}\|^2. The right side becomes ∥u∥2−2⟨u,v⟩2/∥v∥2+⟨u,v⟩2/∥v∥2=∥u∥2−⟨u,v⟩2/∥v∥2\|\mathbf{u}\|^2 - 2\langle \mathbf{u}, \mathbf{v} \rangle^2/\|\mathbf{v}\|^2 + \langle \mathbf{u}, \mathbf{v} \rangle^2/\|\mathbf{v}\|^2 = \|\mathbf{u}\|^2 - \langle \mathbf{u}, \mathbf{v} \rangle^2/\|\mathbf{v}\|^2. Multiplying the inequality by ∥v∥2\|\mathbf{v}\|^2 gives ⟨u,v⟩2≤∥u∥2∥v∥2\langle \mathbf{u}, \mathbf{v} \rangle^2 \le \|\mathbf{u}\|^2\|\mathbf{v}\|^2, and taking square roots gives the lemma. Equality holds exactly when ∥u−tv∥=0\|\mathbf{u} - t\mathbf{v}\| = 0, which means u=tv\mathbf{u} = t\mathbf{v}. ■\blacksquare

Proof. The output splits as z=±⟨w,s⟩+⟨w,n⟩z = \pm\langle \mathbf{w}, \mathbf{s} \rangle + \langle \mathbf{w}, \mathbf{n} \rangle. The noise part ∑iwini\sum_i w_i n_i has mean 0, and its variance is ∑iwi2σ2=σ2∥w∥2\sum_i w_i^2 \sigma^2 = \sigma^2\|\mathbf{w}\|^2, because variances of independent terms add and multiplying a variable by wiw_i multiplies its variance by wi2w_i^2, two rules proved in Probability for Coding. The ratio is therefore

⟨w,s⟩2σ2 ∥w∥2≤∥w∥2 ∥s∥2σ2 ∥w∥2=∥s∥2σ2\frac{\langle \mathbf{w}, \mathbf{s} \rangle^2}{\sigma^2\,\|\mathbf{w}\|^2} \le \frac{\|\mathbf{w}\|^2\,\|\mathbf{s}\|^2}{\sigma^2\,\|\mathbf{w}\|^2} = \frac{\|\mathbf{s}\|^2}{\sigma^2}

by the Cauchy–Schwarz inequality, with equality exactly when w\mathbf{w} is a multiple of s\mathbf{s}. ■\blacksquare

A weighted sum of independent Gaussians is again Gaussian, a standard fact proved in Grinstead and Snell [1], so the error probability of a weighting is QQ of the square root of this ratio, and the largest ratio gives the smallest error. Weighting by a positive multiple of the pulse is called a matched filter, a result that goes back to North's analysis of radar receivers [2]. For the four-sample pulse, ∥s∥2/σ2=1\|\mathbf{s}\|^2/\sigma^2 = 1, the last row of the table.

The theorem compares only weighted sums, so it leaves open whether a nonlinear receiver could do better. It cannot. With independent noise, Equation 1 and Equation 5 give the density of the whole received vector as a product, and the exponents add,

f(y∣x)=∏i=1n12π σ e−(yi−xi)2/(2σ2)=(2πσ2)−n/2 e−∥y−x∥2/(2σ2).f(\mathbf{y} \mid \mathbf{x}) = \prod_{i=1}^{n} \frac{1}{\sqrt{2\pi}\,\sigma}\, e^{-(y_i - x_i)^2/(2\sigma^2)} = \bigl(2\pi\sigma^2\bigr)^{-n/2}\, e^{-\|\mathbf{y} - \mathbf{x}\|^2/(2\sigma^2)}.
(7)

This is largest when ∥y−x∥\|\mathbf{y} - \mathbf{x}\| is smallest, so the ML receiver picks the signal point nearest to what was received. Expanding the two squared distances, ∥y−s∥2=∥y∥2−2⟨y,s⟩+∥s∥2\|\mathbf{y} - \mathbf{s}\|^2 = \|\mathbf{y}\|^2 - 2\langle \mathbf{y}, \mathbf{s} \rangle + \|\mathbf{s}\|^2 and ∥y+s∥2=∥y∥2+2⟨y,s⟩+∥s∥2\|\mathbf{y} + \mathbf{s}\|^2 = \|\mathbf{y}\|^2 + 2\langle \mathbf{y}, \mathbf{s} \rangle + \|\mathbf{s}\|^2, so ∥y−s∥2−∥y+s∥2=−4⟨y,s⟩\|\mathbf{y} - \mathbf{s}\|^2 - \|\mathbf{y} + \mathbf{s}\|^2 = -4\langle \mathbf{y}, \mathbf{s} \rangle. The received point is nearer to s\mathbf{s} exactly when ⟨y,s⟩>0\langle \mathbf{y}, \mathbf{s} \rangle > 0. The matched filter followed by a threshold at zero is the ML receiver among all receivers, linear or not.

Figure 3 shows the geometry with two samples. For s=(0.6,0.8)\mathbf{s} = (0.6, 0.8) and the received point y=(0.9,−0.1)\mathbf{y} = (0.9, -0.1), the inner product is 0.54−0.08=0.460.54 - 0.08 = 0.46, the squared distance to s\mathbf{s} is 0.09+0.81=0.900.09 + 0.81 = 0.90 and to −s-\mathbf{s} it is 2.25+0.49=2.742.25 + 0.49 = 2.74. The difference, 1.84, is four times 0.46, and the receiver decides 0.

The plane of two received samples. The signal points s at 0.6, 0.8 and minus s lie on opposite sides of a dashed boundary line through the origin, perpendicular to s. The received point y at 0.9, minus 0.1 is joined to s by a green segment of squared length 0.90 and to minus s by an orange dashed segment of squared length 2.74, so it is decided as 0. first sample second sample decide 0 decide 1 s (0.6, 0.8) −s (−0.6, −0.8) y (0.9, −0.1) 0.90 2.74
Figure 3. Signal space for two samples. The boundary between the decisions is the line of points equidistant from and , which is the line . The received point has squared distance 0.90 to and 2.74 to . Data: computed by ch03_charts.py in the companion repository.

Continuous Time

A receiver on a wire sees a waveform r(t)=±s(t)+n(t)r(t) = \pm s(t) + n(t) over a bit interval from time 0 to time TT, not a list of samples. Sums become integrals, ⟨r,s⟩=∫0Tr(t) s(t) dt\langle r, s \rangle = \int_0^T r(t)\,s(t)\,dt, and the pulse energy is Es=∫0Ts(t)2 dtE_s = \int_0^T s(t)^2\,dt. The correlator receiver multiplies the incoming waveform by a stored copy of the pulse and integrates over the bit interval, as Figure 4 shows. A filter whose impulse response is the pulse reversed in time, h(t)=s(T−t)h(t) = s(T - t), produces the same number at time TT, because its output there is ∫r(τ) h(T−τ) dτ=∫r(τ) s(τ) dτ\int r(\tau)\,h(T - \tau)\,d\tau = \int r(\tau)\,s(\tau)\,d\tau. That filter gives the matched filter its name.

White noise in continuous time is described by its two-sided noise density N0/2N_0/2. For this book its meaning is what the correlator sees, a Gaussian noise term ∫0Tn(t) s(t) dt\int_0^T n(t)\,s(t)\,dt with mean 0 and variance E N0/2E\,N_0/2 for a pulse of energy EE. Dividing the correlator output by Es\sqrt{E_s} turns it into y=±Es+ny = \pm\sqrt{E_s} + n with noise variance σ2=N0/2\sigma^2 = N_0/2, and every continuous-time BPSK link reduces to the one-number channel of the previous section.

Block diagram of the correlator receiver. The received waveform r of t is multiplied by a stored copy of the pulse s of t, the product is integrated from 0 to T, the result y is sampled at time T, and a comparator outputs bit 0 when y is positive and bit 1 otherwise. r(t) multiply stored pulse s(t) integrate from 0 to T sample at T y compare with 0 bit y > 0 gives bit 0 otherwise bit 1 correlation with the expected pulse
Figure 4. The correlator receiver. Multiplying by the expected pulse and integrating over one bit interval computes , and the comparator applies the ML threshold. A filter with impulse response sampled at time computes the same number.

With one bit per pulse the pulse energy is the energy per bit, Es=EbE_s = E_b, and the error probability follows in one line. The received value is ±Eb\pm\sqrt{E_b} plus noise of standard deviation N0/2\sqrt{N_0/2}, so a threshold at zero errs with probability Q(Eb/N0/2)Q\bigl(\sqrt{E_b}/\sqrt{N_0/2}\bigr).

The four-sample example fits this formula. Its pulse energy is 1 and σ2=1=N0/2\sigma^2 = 1 = N_0/2, so N0=2N_0 = 2, Eb/N0=0.5E_b/N_0 = 0.5 and Pb=Q(1)=0.1587P_b = Q(1) = 0.1587, the matched row of Table 2.

A codeword sent as a sequence of BPSK pulses of energy EsE_s is a point in a space with one coordinate per bit. Two codewords that differ in dd bits sit 2Es2\sqrt{E_s} apart in each of those dd coordinates and agree in the rest, so their squared Euclidean distance is 4Esd4E_s d. The nearest-point rule on the Gaussian channel and the minimum-distance rule on the binary symmetric channel are the same idea in two geometries.

05.Energy per Bit and the Decibel

Doubling a transmitter's power from 1 milliwatt to 2 milliwatts is a ratio of 2, which engineers report as 3.010 dB, since 10log⁡102=3.01010\log_{10} 2 = 3.010.

The logarithm turns products into sums, so a chain of gains and losses becomes a sum of decibel values, and ratios from 1 to a million fit between 0 and 60 dB. Measured against the matched filter's ratio of 1, the plain sum's squared signal-over-noise ratio of 0.82=0.640.8^2 = 0.64 is a loss of 1.94 dB, and the single sample's ratio of 0.72=0.490.7^2 = 0.49 is a loss of 3.10 dB.

The voltage example of Probability for Coding also fits. A pulse of a=1a = 1 volt carries Eb=a2=1E_b = a^2 = 1 in units where noise variance is measured in volts squared, and σ2=0.25=N0/2\sigma^2 = 0.25 = N_0/2 gives N0=0.5N_0 = 0.5. So Eb/N0=2E_b/N_0 = 2, which is 3.01 dB, and Equation 8 gives Q(4)=Q(2)=0.02275Q(\sqrt{4}) = Q(2) = 0.02275, the error probability that chapter found. Table 3 extends this to the range where practical links operate.

Table 3. Uncoded BPSK, , at even steps of

Eb/N0E_b/N_0 (dB)Eb/N0E_b/N_0 (ratio)2Eb/N0\sqrt{2E_b/N_0}PbP_b
011.41420.07865
21.58491.78040.03751
42.51192.24140.01250
63.98112.82170.002388
86.30963.55231.909×10−41.909 \times 10^{-4}
10104.47213.872×10−63.872 \times 10^{-6}
1215.8495.63019.006×10−99.006 \times 10^{-9}

Source: computed from the Q-function and reproduced by ch03_channels_signals_and_likelihoods.py.

From 0 to 2 dB the error probability halves, while from 10 to 12 dB it falls by a factor of about 430, because the Q-function's tail decays like e−x2/2e^{-x^2/2} and each step multiplies x2x^2. Read backward, the table answers the design question of how much Eb/N0E_b/N_0 a target error rate needs. For Pb=10−5P_b = 10^{-5}, solving Q(x)=10−5Q(x) = 10^{-5} gives x=4.2649x = 4.2649, so 2Eb/N0=18.1892E_b/N_0 = 18.189, Eb/N0=9.0946E_b/N_0 = 9.0946, or 9.588 dB. About 9.6 dB is the yardstick against which codes are judged.

A code charges for its redundancy in energy. A code of rate Rc=k/nR_c = k/n sends nn pulses for every kk data bits, and the transmitter's budget is fixed per data bit, so each pulse receives

Es=Rc Eb.E_s = R_c\,E_b.

For R3R_3, Rc=1/3R_c = 1/3 is −4.771-4.771 dB, so each copy arrives 4.771 dB weaker than an uncoded bit would. Every comparison in this book is made at equal Eb/N0E_b/N_0, so that a code pays for every redundant bit it sends.

Signal-to-noise ratio, SNR, is signal power over noise power in a bandwidth BB. Signal power is energy per bit times the bit rate RbR_b, and noise power is N0BN_0 B, so SNR=(Eb/N0)(Rb/B)\text{SNR} = (E_b/N_0)(R_b/B). In decibels the factors add. At Rb=1R_b = 1 Mbit/s in B=2B = 2 MHz the factor Rb/B=1/2R_b/B = 1/2 is −3.010-3.010 dB, and the 9.588 dB needed for 10−510^{-5} becomes an SNR of 6.578 dB.

06.Hard and Soft Decisions

Send a bit with R3R_3 at Eb/N0=4E_b/N_0 = 4 dB. Each copy carries Es=Eb/3E_s = E_b/3, so its own ratio is 4−4.771=−0.7714 - 4.771 = -0.771 dB, a ratio of 0.8373, and thresholding each copy separately makes an error with probability p=Q(2×0.8373)=0.09782p = Q(\sqrt{2 \times 0.8373}) = 0.09782. Majority voting then fails with probability 3p2−2p3=0.026843p^2 - 2p^3 = 0.02684. Uncoded BPSK at the same 4 dB fails with probability 0.01250, so the code has made matters worse by a factor of 2.15.

The soft ML decoder of R3R_3 receives y=(y1,y2,y3)\mathbf{y} = (y_1, y_2, y_3) with each yi=±Es+niy_i = \pm\sqrt{E_s} + n_i. The two codewords are the points ±Es (1,1,1)\pm\sqrt{E_s}\,(1, 1, 1), and the nearest-point rule picks the codeword for 0 exactly when y1+y2+y3>0y_1 + y_2 + y_3 > 0, which is the matched filter for that pulse shape. The sum carries signal 3Es3\sqrt{E_s} and noise variance 3σ23\sigma^2, so it errs with probability

Q(3Es3 σ)=Q(3Esσ)=Q(2EbN0),Q\left(\frac{3\sqrt{E_s}}{\sqrt{3}\,\sigma}\right) = Q\left(\frac{\sqrt{3E_s}}{\sigma}\right) = Q\left(\sqrt{\frac{2E_b}{N_0}}\right),

using 3Es=Eb3E_s = E_b and σ2=N0/2\sigma^2 = N_0/2. Soft-decision R3R_3 performs exactly like uncoded BPSK. Repetition spreads the same energy over three pulses and the soft decoder gathers it back, so nothing is gained and nothing is lost. The hard decoder throws information away at the thresholds and loses ground, as Table 4 and Figure 5 show.

Table 4. with hard and soft decisions, against

Eb/N0E_b/N_0 (dB)pp per copyHard R3R_3Soft R3R_3, equal to uncodedHard over soft
40.097820.026840.012502.15
60.051640.0077260.0023883.23
80.020140.00120011.909×10−41.909 \times 10^{-4}6.29
100.0049127.214×10−57.214 \times 10^{-5}3.872×10−63.872 \times 10^{-6}18.6

Source: computed from the Q-function and reproduced by ch03_channels_signals_and_likelihoods.py.

Bit error probability on a logarithmic scale against Eb/N0 from 0 to 12 dB. The green curve is uncoded BPSK, which soft-decision R3 equals, and the orange curve is hard-decision R3, which lies above it. A dashed line at 10 to the minus 5 meets the green curve at 9.59 dB and the orange curve at 11.03 dB. Eb/N0 (dB) bit error probability 10−9 10−8 10−7 10−6 10−5 10−4 10−3 10−2 10−1 1 0 2 4 6 8 10 12 target 10−5 9.59 dB 11.03 dB uncoded = soft R3 hard R3
Figure 5. Bit error probability of uncoded BPSK, which equals soft-decision , and of hard-decision . At the hard decoder needs 11.03 dB against 9.59 dB, a loss of 1.44 dB. Data: computed by ch03_charts.py in the companion repository.

The gap widens as the channel improves. Hard-decision R3R_3 reaches 10−510^{-5} only at 11.029 dB, against 9.588 dB for soft decisions, a loss of 1.441 dB, which is a power ratio of 100.1441=1.39310^{0.1441} = 1.393, or 39% more transmitted power. The threshold discards how far each voltage was from zero, and on a weak copy that distance is most of the evidence.

07.Likelihoods and Log-Likelihood Ratios

With a=1a = 1 and σ=0.5\sigma = 0.5, the received values y=0.05y = 0.05 and y=1.9y = 1.9 both lie above the threshold and both decode to 0. Their likelihood ratios tell them apart. From the Gaussian Channel section the ratio is f(y∣0)/f(y∣1)=exp⁡(2ay/σ2)=e8yf(y \mid 0)/f(y \mid 1) = \exp(2ay/\sigma^2) = e^{8y}, which is e0.4=1.49e^{0.4} = 1.49 for the first value and e15.2≈3.99×106e^{15.2} \approx 3.99 \times 10^{6} for the second. The first is barely evidence at all, the second is overwhelming, and a decoder should know the difference.

For BPSK on the AWGN channel, the channel LLR comes out of Equation 5 in four steps. The constant 1/(2π σ)1/(\sqrt{2\pi}\,\sigma) appears above and below and cancels, and the logarithm of an exponential is its exponent,

L=ln⁡e−(y−a)2/(2σ2)e−(y+a)2/(2σ2)=−(y−a)2+(y+a)22σ2.L = \ln\frac{e^{-(y - a)^2/(2\sigma^2)}}{e^{-(y + a)^2/(2\sigma^2)}} = \frac{-(y - a)^2 + (y + a)^2}{2\sigma^2}.

Expanding both squares, the y2y^2 and a2a^2 terms cancel,

−(y2−2ay+a2)+(y2+2ay+a2)2σ2=4ay2σ2,\frac{-(y^2 - 2ay + a^2) + (y^2 + 2ay + a^2)}{2\sigma^2} = \frac{4ay}{2\sigma^2},

which leaves

L(b∣y)=2aσ2 y.L(b \mid y) = \frac{2a}{\sigma^2}\,y.
(10)

The LLR is the received voltage times a constant set by the channel, so the receiver computes it with one multiplication. With a=1a = 1 and σ=0.5\sigma = 0.5 the constant is 8, and the two values above have LLRs 0.4 and 15.2.

Proof. Write P0=P(b=0∣y)P_0 = P(b = 0 \mid y), so that P(b=1∣y)=1−P0P(b = 1 \mid y) = 1 - P_0 and eL=P0/(1−P0)e^{L} = P_0/(1 - P_0). Multiplying out gives eL−eLP0=P0e^{L} - e^{L}P_0 = P_0, so P0(1+eL)=eLP_0(1 + e^{L}) = e^{L} and P0=eL/(1+eL)P_0 = e^{L}/(1 + e^{L}). Dividing above and below by eLe^{L} gives 1/(1+e−L)1/(1 + e^{-L}), and 1−P0=1/(1+eL)1 - P_0 = 1/(1 + e^{L}) follows by subtraction. ■\blacksquare

For y=0.05y = 0.05 the posterior probability of 0 is 1/(1+e−0.4)=0.59871/(1 + e^{-0.4}) = 0.5987, and for y=1.9y = 1.9 it is 0.99999975. A hard decision assigns both the same confidence. After thresholding, the channel from bit to decided bit is a binary symmetric channel with p=Q(a/σ)=Q(2)=0.02275p = Q(a/\sigma) = Q(2) = 0.02275, and on BSC(p)\text{BSC}(p) a received 0 has LLR ln⁡((1−p)/p)=3.760\ln\bigl((1-p)/p\bigr) = 3.760, whatever voltage produced it. Figure 6 sets the two side by side. The soft LLR 8y8y exceeds the hard value when ∣y∣>0.470|y| > 0.470 and falls short of it nearer the threshold, so the hard receiver is overconfident about the doubtful values and underconfident about the clear ones. Table 5 lists the channel LLRs of every channel in this chapter.

The LLR against the received voltage from minus 1.5 to 1.5. The soft LLR is a green straight line through the origin with slope 8. The hard LLR is an orange step, minus 3.76 for negative voltages and plus 3.76 for positive ones. The two meet at plus and minus 0.47. received voltage y LLR −12 −8 −4 0 4 8 12 −1.5 −1 −0.5 0 0.5 1 1.5 0.47 −0.47 soft, L = 8y hard, +3.76 hard, −3.76
Figure 6. Soft and hard LLRs for BPSK with and . The soft LLR grows with the distance from the threshold, while the hard decision reports for every voltage. The two agree only at . Data: computed by ch03_charts.py in the companion repository.

Table 5. Channel LLRs, with sent as on the AWGN channel

ChannelObservationChannel LLRExample
BSC(p)\text{BSC}(p)received 0 or 1±ln⁡((1−p)/p)\pm\ln\bigl((1-p)/p\bigr)±2.197\pm 2.197 at p=0.1p = 0.1
BEC(ε)\text{BEC}(\varepsilon)received 0 or 1+∞+\infty or −∞-\inftycertain
BEC(ε)\text{BEC}(\varepsilon)received ?0no evidence
Z(p)\text{Z}(p)received 0ln⁡(1/p)\ln(1/p)2.303 at p=0.1p = 0.1
Z(p)\text{Z}(p)received 1−∞-\inftycertain
AWGN with BPSKvoltage yy2ay/σ22ay/\sigma^28y8y at a=1a = 1, σ=0.5\sigma = 0.5

Source: derived from each channel's transition probabilities and reproduced by ch03_channels_signals_and_likelihoods.py.

Proof. Bayes' rule gives P(b∣y1,y2)=P(y1,y2∣b) P(b)/P(y1,y2)P(b \mid y_1, y_2) = P(y_1, y_2 \mid b)\,P(b)/P(y_1, y_2), and independence given bb factors the likelihood as P(y1∣b) P(y2∣b)P(y_1 \mid b)\,P(y_2 \mid b). In the ratio of the posteriors for b=0b = 0 and b=1b = 1 the denominator cancels, leaving the product of three ratios, P(y1∣0)P(y1∣1)⋅P(y2∣0)P(y2∣1)⋅P(b=0)P(b=1)\frac{P(y_1 \mid 0)}{P(y_1 \mid 1)} \cdot \frac{P(y_2 \mid 0)}{P(y_2 \mid 1)} \cdot \frac{P(b = 0)}{P(b = 1)}. The logarithm of a product is the sum of the logarithms. ■\blacksquare

Applied repeatedly, the theorem gives the soft decoder of R3R_3 directly. With a=1a = 1 and σ=0.8\sigma = 0.8 the constant is 2a/σ2=3.1252a/\sigma^2 = 3.125. If 0 is sent and the three copies arrive as (0.9,−0.2,−0.3)(0.9, -0.2, -0.3), their LLRs are 2.81252.8125, −0.625-0.625 and −0.9375-0.9375, which sum to 1.25, so the decoder says 0 with posterior probability 1/(1+e−1.25)=0.77731/(1 + e^{-1.25}) = 0.7773. The hard decoder sees 0, 1, 1 and votes 1, which is wrong. The LLR sum is 3.1253.125 times the voltage sum 0.40.4, so this is the soft decoder of the previous section with the confidence attached.

08.Bursty Channels

Every channel so far has been memoryless. Real channels often remember, since a scratch on a disc or a fade on a radio link damages many consecutive bits and then stops. The simplest model gives the channel a hidden state that persists.

Take a channel that is usually in a good state, where each bit flips with probability pG=0.001p_G = 0.001, and occasionally in a bad state, where each bit flips with probability pB=0.1p_B = 0.1. After each bit, a good channel turns bad with probability b=0.01b = 0.01 and a bad channel recovers with probability g=0.09g = 0.09. Gilbert introduced the model with error-free good states [3], and Elliott allowed errors in both [4].

State diagram of a Gilbert-Elliott channel. The Good state flips each bit with probability 0.001 and the Bad state with probability 0.1. From Good the chain moves to Bad with probability 0.01 per bit and stays with probability 0.99. From Bad it returns to Good with probability 0.09 and stays with probability 0.91, so a good spell lasts 100 bits on average and a bad spell 11.11 bits. Good flips 0.001 stays 100 bits on average Bad flips 0.1 stays 11.11 bits on average b = 0.01 g = 0.09 0.99 0.91
Figure 7. The Gilbert–Elliott channel with , , and . Each arrow is a transition probability per bit, and each state flips bits at its own rate while it lasts.

The long-run fraction of time in the bad state follows from the recursion in the next theorem.

Proof. By the law of total probability, conditioning on the current state, πB(t+1)=(1−g) πB(t)+b (1−πB(t))\pi_B(t+1) = (1 - g)\,\pi_B(t) + b\,\bigl(1 - \pi_B(t)\bigr), which rearranges to Equation 13. The value π∗=b/(b+g)\pi^* = b/(b + g) is a fixed point of the recursion, since (1−b−g) b/(b+g)+b=(b−b2−bg+b2+bg)/(b+g)=b/(b+g)(1 - b - g)\,b/(b + g) + b = (b - b^2 - bg + b^2 + bg)/(b + g) = b/(b + g). Subtracting the fixed-point equation from the recursion gives πB(t+1)−π∗=(1−b−g)(πB(t)−π∗)\pi_B(t+1) - \pi^* = (1 - b - g)\bigl(\pi_B(t) - \pi^*\bigr), and repeating it tt times gives πB(t)−π∗=(1−b−g)t(πB(0)−π∗)\pi_B(t) - \pi^* = (1 - b - g)^t\bigl(\pi_B(0) - \pi^*\bigr), which tends to 0 when ∣1−b−g∣<1|1 - b - g| < 1. Finally πG=1−πB=g/(b+g)\pi_G = 1 - \pi_B = g/(b + g). ■\blacksquare

For the example, πB=0.01/0.1=0.1\pi_B = 0.01/0.1 = 0.1 and πG=0.9\pi_G = 0.9. The convergence factor is 1−0.01−0.09=0.91 - 0.01 - 0.09 = 0.9, and after 50 bits the gap has shrunk to 0.950=0.005150.9^{50} = 0.00515 of its starting size, so the channel forgets its initial state within a few dozen bits. The average bit error probability is

πG pG+πB pB=0.9×0.001+0.1×0.1=0.0109.\pi_G\,p_G + \pi_B\,p_B = 0.9 \times 0.001 + 0.1 \times 0.1 = 0.0109.

A bad spell lasts a random number of bits TT. In each bad bit the chain leaves with probability gg, so it stays at least kk bits with probability (1−g)k−1(1 - g)^{k-1}. For a variable that takes positive whole-number values, E[T]=∑k≥1P(T≥k)E[T] = \sum_{k \ge 1} P(T \ge k), because TT equals the number of the indicators 1[T≥1],1[T≥2],…\mathbf{1}[T \ge 1], \mathbf{1}[T \ge 2], \dots that are 1, and linearity of expectation turns the sum of indicators into the sum of their probabilities. Summing the geometric series, E[T]=∑k≥1(1−g)k−1=1/g=11.11E[T] = \sum_{k \ge 1}(1 - g)^{k-1} = 1/g = 11.11 bits. A good spell lasts 1/b=1001/b = 100 bits on average.

The average error rate hides the clustering, and a two-bit statistic exposes it. The probability that two consecutive bits are both in error, in the long run, sums over the state of the first bit and the state it moves to,

πG pG[(1−b) pG+b pB]+πB pB[g pG+(1−g) pB]=0.0009×0.00199+0.01×0.09109=0.000912691.\pi_G\,p_G\bigl[(1 - b)\,p_G + b\,p_B\bigr] + \pi_B\,p_B\bigl[g\,p_G + (1 - g)\,p_B\bigr] = 0.0009 \times 0.00199 + 0.01 \times 0.09109 = 0.000912691.

A memoryless channel with the same average rate would give 0.01092=0.000118810.0109^2 = 0.00011881, smaller by a factor of 7.68. Put another way, the probability that the bit after an error is also in error is 0.000912691/0.0109=0.08370.000912691/0.0109 = 0.0837, nearly eight times the average rate. Figure 8 shows what that looks like.

Two strips of 2000 bits with a red tick at every bit error. In the top strip, from the Gilbert-Elliott channel, 22 errors crowd into 15 shaded spells in the bad state. In the bottom strip, from a memoryless channel with the same average error rate, 22 errors are scattered. Gilbert-Elliott channel, seed 18: 22 errors, bad spells shaded memoryless BSC(0.0109), seed 8: 22 errors 0 500 1,000 1,500 2,000 bit position
Figure 8. Errors in 2,000 bits from the Gilbert–Elliott channel in the state diagram above, top, with its bad spells shaded, and from , bottom, which has the same average error rate. Data: simulated with fixed seeds by ch03_charts.py in the companion repository.

Bursts defeat codes that assume independence. Send R3R_3 with the three copies of each bit back to back, so that they share the channel's state. Summing over the eight possible state sequences of three consecutive bits, the probability that two or more copies are wrong is 0.0024927. If the copies are instead spread far apart, the chain forgets its state between them and the copies see nearly independent errors at rate q=0.0109q = 0.0109, so the failure probability is 3q2−2q3=0.000353843q^2 - 2q^3 = 0.00035384, smaller by a factor of 7.04. Rearranging the order of transmitted bits so that the symbols of one codeword travel far apart is called interleaving, and it turns a bursty channel back into one that a code for independent errors can handle.

09.Fault Models for Memory

The bits of a memory do not travel anywhere, but they still pass through a channel, the interval between writing a word and reading it back. Four kinds of fault dominate, and each matches a channel model from this chapter.

A stuck-at fault is a cell or line that permanently reads 0, called stuck-at-0, or permanently reads 1, whatever is written. A stuck-at-0 cell is wrong only when a 1 is stored, and a write-and-read test can find it. Once located, its bit is no longer an unknown error but an erasure, a bit whose position is known and whose value is lost. Later chapters show that a code can fill twice as many erasures as it can correct unknown errors, which is why located faults are worth finding.

A single-event upset is a transient flip of one stored bit without damage to the cell. An alpha particle from trace radioactivity in the packaging [5], or a neutron from a cosmic-ray shower [6], deposits enough charge to flip a stored value, and rewriting the cell clears it. Each bit flips independently with a small probability, so a word between writes is a binary symmetric channel with a tiny pp. A single-error-correcting code on a 72-bit word fails only when two bits flip before the word is rewritten. With an illustrative per-bit probability of 10−910^{-9} per interval, the union bound of Probability for Coding gives (722)×10−18=2556×10−18=2.556×10−15\binom{72}{2}\times 10^{-18} = 2556 \times 10^{-18} = 2.556 \times 10^{-15} per word, and across 2302^{30} words at most 2.744×10−62.744 \times 10^{-6} expected failures per interval. Scrubbing, which reads every word on a schedule, corrects it and writes it back, keeps single upsets from accumulating into double ones.

A multi-bit upset is one strike that flips several neighboring cells at once, and Baumann's review describes how shrinking cells made such upsets more common [7]. It is a burst in space rather than in time, and the defense is the same interleaving. The bits of one logical word are placed in physically separated cells, so a strike that flips four neighbors flips one bit in each of four words, and each word's single-error correction handles its share.

Charge leakage is the Z-channel. A cell that stores a 1 as charge slowly loses it, and if the charge falls too far before the cell is refreshed, the 1 reads back as 0, while a stored 0 has no charge to lose. Refreshing on a schedule bounds how far the leak can go. Table 6 collects the four, and Figure 9 shows how they land on an array of cells.

Table 6. Memory faults and the channels that model them

FaultDurationChannel modelUsual response
Stuck-atpermanenterasure, once locatedtest, then map out or fill as an erasure
Single-event upsetuntil rewrittenBSC with tiny pp per intervalsingle-error correction and scrubbing
Multi-bit upsetuntil rewrittenburst of neighboring cellsinterleave words across the array
Charge leakageuntil refreshedZ-channelrefresh on a schedule

Source: the fault descriptions in this section.

A memory array of four rows of sixteen cells, each cell marked with the word it belongs to, A, B, C or D, repeating across each row. A red cell in word B is stuck at one value, an orange cell in word C holds a single-event upset, and a violet block of four neighboring cells is a multi-bit upset that flips one bit in each of words A, B, C and D. four 16-bit words, interleaved four ways row 0 A B C D A B C D A B C D A B C D row 1 A B C D A B C D A B C D A B C D row 2 A B C D A B C D A B C D A B C D row 3 A B C D A B C D A B C D A B C D stuck-at same value on every read, word B single-event upset one flip until rewritten, word C multi-bit upset four neighbors, one bit in each of A, B, C, D
Figure 9. Faults on an interleaved memory array. Neighboring cells belong to different words, so the four-cell multi-bit upset flips one bit in each of words A, B, C and D, and a single-error-correcting code on each word repairs all four. The stuck-at cell fails on every write of the wrong value, and the single upset clears at the next rewrite.

10.Looking Ahead

This chapter measured a channel by how often it causes errors and how a receiver should weigh what it sees. The next chapter, Information and Entropy, measures a channel by how much it can carry. It defines the information in an outcome as its surprise, the base-2 logarithm of one over its probability, so that a fair coin flip carries one bit and a certain outcome carries none. Entropy, the average surprise, counts how many bits a source really produces, and mutual information measures how much the output of a noisy channel says about its input. The three channels of this chapter are its first examples, because an erasure tells the receiver nothing about the lost bit while a flip misleads it, and the two cost different amounts of capacity. MacKay [8] develops this view in depth, and Lin and Costello [9] treat these channel models at greater length.

11.Worked Examples

12.Exercises

References

  1. [1]Grinstead, Charles M. and Snell, J. Laurie (2006). “Grinstead and Snell's Introduction to Probability.” The CHANCE Project. Version dated 4 July 2006 of the second edition published by the American Mathematical Society, free under the GNU Free Documentation License. https://math.dartmouth.edu/~prob/prob/prob.pdf
  2. [2]North, D. O. (1963). “An Analysis of the Factors Which Determine Signal/Noise Discrimination in Pulsed-Carrier Systems.” Proceedings of the IEEE, 51(7), pp. 1016–1027. Reprint of RCA Laboratories Technical Report PTR-6C, 1943. doi:10.1109/PROC.1963.2383
  3. [3]Gilbert, E. N. (1960). “Capacity of a Burst-Noise Channel.” Bell System Technical Journal, 39(5), pp. 1253–1265. doi:10.1002/j.1538-7305.1960.tb03959.x
  4. [4]Elliott, E. O. (1963). “Estimates of Error Rates for Codes on Burst-Noise Channels.” Bell System Technical Journal, 42(5), pp. 1977–1997. doi:10.1002/j.1538-7305.1963.tb00955.x
  5. [5]May, T. C. and Woods, M. H. (1979). “Alpha-Particle-Induced Soft Errors in Dynamic Memories.” IEEE Transactions on Electron Devices, 26(1), pp. 2–9. doi:10.1109/T-ED.1979.19370
  6. [6]Ziegler, J. F. and Lanford, W. A. (1979). “Effect of Cosmic Rays on Computer Memories.” Science, 206(4420), pp. 776–788. doi:10.1126/science.206.4420.776
  7. [7]Baumann, R. C. (2005). “Radiation-Induced Soft Errors in Advanced Semiconductor Technologies.” IEEE Transactions on Device and Materials Reliability, 5(3), pp. 305–316. doi:10.1109/TDMR.2005.853449
  8. [8]MacKay, David J. C. (2003). “Information Theory, Inference, and Learning Algorithms.” Cambridge University Press. The author's site offers the whole book free to read on screen. https://www.inference.org.uk/itila/book.html
  9. [9]Lin, Shu and Costello, Jr., Daniel J. (2004). “Error Control Coding: Fundamentals and Applications.” 2nd edition. Pearson Prentice Hall.

— Anirban

Hardware–software at the seam where compilers meet microcode.

FeedbackBook modePaper
error-correction-codinginformation-and-channels