The condition for zero ISI (Inter Symbol Interference) is

$$ p(nT)=\left\{\begin{matrix} 1,\; n=0\\ 0,\; n\neq 0 \end{matrix} \right. $$

which states that when sampling a particular symbol (at time instant nT=0), the effect of all other symbols on the current sampled symbol is zero.

As discussed in the previous article, one of the practical ways to mitigate ISI is to use partial response signaling technique ( otherwise called as “correlative coding”). In partial response signaling, the requirement of zero ISI condition is relaxed as a controlled amount of ISI is introduced in the transmitted signal and is counteracted in the receiver side.

By relaxing the zero ISI condition, the above equation can be modified as,

$$ p(nT)=\left\{\begin{matrix} 1,\; n=0,1\\ 0,\; otherwise \end{matrix}\right. $$

which states that the ISI is limited to two adjacent samples. Here we introduce a controlled or “deterministic” amount of ISI and hence its effect can be removed upon signal detection at the receiver.

### Duobinary Signaling:

The following figure shows the duobinary signaling scheme (click to enlarge).

### Encoding Process:

1) a_{n} = binary input bit; a_{n} ∈ {0,1}.

2) b_{n} = NRZ polar output of Level converter in the precoder and is given by,

$$ b_{n}=\left\{\begin{matrix} -d,\; if\;a_{n}=0\\ +d,\; if\; a_{n}=1 \end{matrix}\right. $$

3) y_{n} can be represented as

$$ y_{n}=b_{n}+b_{n-1}=\left\{\begin{matrix} 2d , \; \; \; \; if \;a_{n}=a_{n-1}=1\\ 0 , \; \; if \; a_{n}\neq a_{n-1}\\ -2d , \; if \; a_{n}=a_{n-1}=0 \end{matrix}\right. $$

Note that the samples b_{n} are uncorrelated ( i.e either +d for “1” or -d for “0” input). On the other-hand,the samples y_{n} are correlated ( i.e. there are three possible values +2d,0,-2d depending on a_{n} and a_{n-1}). Meaning that the duobinary encoding correlates present sample a_{n} and the previous input sample a_{n-1.}

4) From the diagram,impulse response of the duobinary encoder is computed as

$$ h(t)=sinc\left ( \frac{t}{T}\right )+sinc\left (\frac{t-T}{T}\right ) $$

### Decoding Process:

5) The receiver consists of a duobinary decoder and a postcoder (inverse of precoder).The duobinary decoder implements the following equation (which can be deduced from the equation given under step 3 (see above))

$$\hat{b}_{n}=y_{n}-\hat{b}_{n-1} $$

This equation indicates that the decoding process is prone to error propagation as the estimate of present sample relies on the estimate of previous sample. This error propagation is avoided by using a precoder before duobinary encoder at the transmitter and a postcoder after the duobinary decoder. The precoder ties the present sample and previous sample ( correlates these two samples) and the postcoder does the reverse process.

6) The entire process of duobinary decoding and the postcoding can be combined together as one algorithm. The following decision rule is used for detecting the original duobinary signal samples {a_{n}} from {y_{n}}

$$ \begin{matrix} if \; y_{n} < d , \;\; then \; \hat{a}_{n}=1\\ if \; y_{n} > d , \;\; then \; \hat{a}_{n}=0\\ if \; y_{n}=0 , \;\; randomly \; guess \; \hat{a}_{n} \end{matrix} $$

### Matlab Code:

Check this book for full Matlab code.

Simulation of Digital Communication Systems Using Matlab – by Mathuranathan Viswanathan

### Simulation Results

Input Symbols to the system : (a_{n})

0 0 1 0 1 1 0 1 1 1

Decoded Symbols : (estimated a_{n})

0 0 1 0 1 1 0 1 1 1

### See also :

[1] Correlative Coding – Modified Duobinary Signaling

[2] Derivation of expression for a Gaussian Filter with 3 dB bandwidth

[3] Nyquist and Shannon Theorem

[4] Correlative coding – Duobinary Signaling

[5] Square Root Raised Cosine Filter (Matched/split filter implementation)

[6] Introduction to Inter Symbol Interference

### External Resources:

[1] The care and feeding of digital, pulse-shaping filters – By Ken Gentile

[2] Inter Symbol Interference and Root Raised Cosine Filtering – Complex2real

Pingback: Derivation of expression for a Gaussian Filter with 3 dB bandwidth | GaussianWaves()

Pingback: Raised Cosine Filter | GaussianWaves()

Pingback: Introduction to Digital Communication | GaussianWaves()

Pingback: Channel Coding | GaussianWaves()

Pingback: Types of Channel Codes | GaussianWaves()

Pingback: Channel Capacity | GaussianWaves()

Pingback: Performance of Channel Codes | GaussianWaves()

Pingback: Introduction to controlled ISI (Inter Symbol Interference) | GaussianWaves()

Pingback: Square Root Raised Cosine Filter (Matched/split filter implementation) | GaussianWaves()

Pingback: Correlative Coding – Modified Duobinary Signaling | GaussianWaves()