Skip to main content

Reducing ISI; modified duobinary with precoder

Short answer

ISI reduction methods include Nyquist pulse shaping (raised cosine), correlative coding (duobinary, modified duobinary), equalization, eye pattern monitoring, and reducing signaling rate. Modified duobinary uses c_k = a_k - a_{k-2} with precoder d_k = b_k ⊕ d_{k-2}, yielding three-level output (-2,0,+2) and no DC component. For input 01001101, the decoded sequence matches the input exactly.

Illustrate the methods to reduce Intersymbol Interference. Explain modified Duobinary coding technique with precoder, illustrating with input sequence 01001101.

Methods to reduce Intersymbol Interference

  1. Nyquist pulse shaping (raised cosine filtering): shape the overall response so that each pulse has zero value at all other sampling instants. The raised cosine spectrum with roll-off α\alpha meets the Nyquist criterion, needs bandwidth B=Rb2(1+α)B = \frac{R_b}{2}(1+\alpha), and its tails decay as 1/t31/t^3, so timing errors cause little ISI.
  2. Correlative (partial response) coding: add a controlled, known amount of ISI (duobinary, modified duobinary) so that the signal fits in the minimum bandwidth Rb/2R_b/2 with realizable filters; the receiver removes the known ISI.
  3. Equalization: a transversal (tapped delay line) filter after the channel cancels the channel's distortion. Zero-forcing equalizers force ISI to zero at the sampling points; adaptive (LMS) equalizers track changing channels.
  4. Eye pattern monitoring and correct sampling: sample at the instant of maximum eye opening using good timing recovery.
  5. Reducing the signalling rate or using more channel bandwidth, so pulses spread less.

Modified duobinary coding

Modified duobinary is a correlative coding scheme that correlates the present symbol with the symbol two bit intervals earlier:

ck=ak−ak−2,ak=±1c_k = a_k - a_{k-2}, \qquad a_k = \pm 1

Transfer function:

H(f)=1−e−j4πfTb=2jsin⁡(2πfTb) e−j2πfTb,∣f∣≤12TbH(f) = 1 - e^{-j4\pi fT_b} = 2j\sin(2\pi fT_b)\,e^{-j2\pi fT_b}, \quad |f| \le \frac{1}{2T_b}

Impulse response: h(t)=sinc(tTb)−sinc(t−2TbTb)h(t) = \text{sinc}\left(\frac{t}{T_b}\right) - \text{sinc}\left(\frac{t-2T_b}{T_b}\right).

∣H(f)∣|H(f)| is zero at f=0f = 0 and at f=1/(2Tb)f = 1/(2T_b), so the signal has no DC component (useful for transformer-coupled lines and SSB) and is easy to filter. The output has three levels: −2,0,+2-2, 0, +2.

Precoder: to avoid error propagation, the data are precoded as dk=bk⊕dk−2d_k = b_k \oplus d_{k-2}, then ak=+1a_k = +1 if dk=1d_k = 1 and −1-1 if dk=0d_k = 0. Decision rule: ∣ck∣>1⇒b^k=1|c_k| > 1 \Rightarrow \hat b_k = 1; ∣ck∣<1⇒b^k=0|c_k| < 1 \Rightarrow \hat b_k = 0.

b_k -->(XOR)---+--> level map --> a_k --+------------->(+)--> c_k
         ^     | d_k                    |               ^ (-)
         |     v                        |               |
         +--[2Tb delay]                 +--[2Tb delay]--+

Illustration for input 01001101

Initial precoder bits assumed d−1=d0=0d_{-1} = d_0 = 0 (so a−1=a0=−1a_{-1} = a_0 = -1).

k12345678
bkb_k01001101
dk−2d_{k-2}00010110
dk=bk⊕dk−2d_k = b_k \oplus d_{k-2}01011011
aka_k−1+1−1+1+1−1+1+1
ak−2a_{k-2}−1−1−1+1−1+1+1−1
ck=ak−ak−2c_k = a_k - a_{k-2}0+200+2−20+2
Decoded b^k\hat b_k01001101

The decoded sequence 01001101 equals the input. Each bit is decided from its own sample, so a single error does not propagate.

✓ Answer checked by Claude Opus 5.5 (high effort)

All Communication Systems chapter 6 questions →