Adaptive Filtering & Synchronization

Raised Cosine

Equations for the Raised Cosine and Square-Root Raised Cosine Shapes [https://engineering.purdue.edu/~ee538/SquareRootRaisedCosine.pdf]

Pulse Shaping Filter [https://wirelesspi.com/pulse-shaping-filter/]

TODO πŸ“…

Toeplitz matrix

Robert M. Gray, Toeplitz and Circulant Matrices: A review [https://ee.stanford.edu/~gray/toeplitz.pdf]

toeplitz Toeplitz matrix, [https://www.mathworks.com/help/matlab/ref/toeplitz.html]

image-20260314123213083


ZFS

image-20260314125127698

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
h = [0.01 -0.02 0.05 -0.1 0.2 1 0.15 -0.15 0.05 -0.02 0.005];
[val, idx] = max(h);

htc = h(idx-2:idx+2)';

H1 = [1 0.2 -0.1 0.05 -0.02;
0.15 1 0.2 -0.1 0.05;
-0.15 0.15 1 0.2 -0.1;
0.05 -0.15 0.15 1 0.2;
-0.02 0.05 -0.15 0.15 1];

c = [1 0.15 -0.15 0.05 -0.02];
r = fliplr([-0.02 0.05 -0.1 0.2 1]);
T = toeplitz(c, r);

isequal(H1, T) % logical 1

inv(T)
%
% ans =
%
% 1.0774 -0.2682 0.1932 -0.1314 0.0806
% -0.2266 1.1272 -0.2983 0.2034 -0.1314
% 0.2326 -0.2737 1.1517 -0.2983 0.1932
% -0.1405 0.2516 -0.2737 1.1272 -0.2682
% 0.0888 -0.1405 0.2326 -0.2266 1.0774

MMSE

image-20260314115828173

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
h=[0.004, 0.0010, 0.0023, 0.0052, 0.0812, 0.3437, 0.1775, 0.0917, 0.0526,...
0.0360, 0.0224, 0.0162, 0.0152, 0.0097, 0.0090, 0.0067];

k = length(h);
n = 3;
l = 1;
m2 = 5;
m1 = 1;

H = zeros([k+n+l-2, n+l-1]);
H(1:end-2,1) = h;
H(2:end-1,2) = h;
H(3:end,3) = h;

c = zeros(length(h)+2, 1);
c(1:end-2) = h;
r = zeros(3, 1);
r(1) = h(1);

T = toeplitz(c, r);

isequal(H, T) % logical 1

transpose(toeplitz(c,r)) is same with toeplitz(r,c)

1
isequal(transpose(toeplitz(c, r)), toeplitz(r, c)) % logical 1

V. Stojanovic, "Channel-Limited High-Speed Links: Modeling, Analysis and Design," PhD. Thesis, Stanford University, Sep. 2004. [pdf]

image-20260314134616818

image-20260314134258739

Bandpass Modulation

image-20260308134006414

Pulse Amplitude Modulation (PAM)

David A. Johns, ECE1392H - Integrated Circuits for Digital Communications - Fall 2001 [System Overview]

image-20260302223217156

image-20260302223247382

\(S_m\) Google AI mode [https://share.google/aimode/BzYr2logpVTVs83LQ]

1
2
3
4
5
6
snr_mpam = @(m,simga) 10*log10((4^m-1)/simga^2/3);

sigma = 0.1547;

SNR_m2 = snr_mpam(2, sigma); % 23.1999
SNR_m3 = snr_mpam(3, sigma); % 29.4324

Lecture 3, Tuesday January 13th 2026 - Modulation Types (PAM/QAM) [https://cioffi-group.stanford.edu/ee379a/Lectures/L3.pdf]

image-20260308110418448


image-20260308110557392

Carrier & Symbol Synchronization

image-20260308143452122

\(\Delta\tau \lt \pm \frac{1}{100} T\) don't ensure \(\Delta \phi \ll 2\pi\) due to \(T \gg \frac{1}{f_c}\)

image-20260308144246973

Carrier Synchronization

image-20260308094928314

image-20260308095105635


[https://ndl.ethernet.edu.et/bitstream/123456789/87843/14/LECT_13%2614.Synchronization.pdf]

image-20260308101114543

image-20260308101312037

Symbol Synchronization

image-20260308150119546

[https://www.ieee802.org/3/dm/public/1125/cordaro_3dm_01_1125.pdf]

image-20260308160850433


Mathuranathan, Symbol Timing Recovery for QPSK (digital modulations) [https://www.gaussianwaves.com/2013/11/symbol-timing-recovery-for-qpsk-digital-modulations/]

Qasim Chaudhari. Early-Late Bit Synchronizer in Digital Communication [https://wirelesspi.com/early-late-bit-synchronizer-in-digital-communication/]

Igor Freire. Symbol Timing Synchronization: A Tutorial [blog, code]

BPSK synchronization Matlab

But the problem here is: "How does the receiver know the ideal sampling instants?". The solution is "someone has to supply those ideal sampling instants". A symbol time recovery circuit is used for this purpose.

Synchronization in receiver with timing recovery, matched filter for QPSK

Early/Late Symbol Recovery algorithm

  • non-decision-directed timing estimator exploits the symmetry properties of the signal

Early late synchronization

  1. If the Early Sample = Late Sample : The peak occurs at the on-time sampling instant \(T\). No adjustment in the timing is needed.
  2. If |Early Sample| > |Late Sample| : Late timing, the sampling time is offset so that the next symbol is sampled \(T-\delta/2\) seconds after the current sampling time.
  3. If |Early Sample| < |Late Sample| : Early timing, the sampling time is offset so that the next symbol is sampled \(T+\delta/2\) seconds after the current sampling time.

David Johns. ECE1392H - Integrated Circuits for Digital Communications - Fall 2001: [Timing Recovery]

Dither in Quantized Zero Crossing Detection (QZCD) (so-called 'Bang Bang' Phase Detector)

image-20260303212351804

Mueller and Muller Timing Synchronization

K. Mueller and M. Muller, "Timing Recovery in Digital Synchronous Data Receivers," in IEEE Transactions on Communications, vol. 24, no. 5, pp. 516-531, May 1976 [pdf]

Qasim Chaudhari. Mueller and Muller Timing Synchronization Algorithm [https://wirelesspi.com/mueller-and-muller-timing-synchronization-algorithm/]

Eduardo Fuentetaja. "Analysis of the M&M Clock Recovery Algorithm" [https://edfuentetaja.github.io/sdr/m_m_analysis/]

C.-P. Tzeng, D. Hodges and D. Messerschmitt, "Timing Recovery in Digital Subscriber Loops Using Baud-Rate Sampling," in IEEE Journal on Selected Areas in Communications, vol. 4, no. 8, pp. 1302-1311, November 1986 [pdf]

Google AI Mode [https://share.google/aimode/QVyCXCCXO1URdDnKD]

H. Meyr, M. Moeneclaey, and S. A. Fechtel. "Digital Communication Receivers: Synchronization, Channel Estimation, and Signal Processing." Wiley [pdf]

T. Musah and A. Namachivayam, "Robust Timing Error Detection for Multilevel Baud-Rate CDR," in IEEE Transactions on Circuits and Systems I: Regular Papers, vol. 69, no. 10, pp. 3927-3939, Oct. 2022 [https://sci-hub.jp/10.1109/TCSI.2022.3191740]

Fulvio Spagna, CICC2018 Clock and Data Recovery Systems [pdf]

TODO πŸ“…

Intersymbol Interference (ISI)

L.W. Couch, Digital and Analog Communication Systems, 8th Edition, Pearson, 2013. [pdf]

image-20260226224415849

image-20260226225158225

Nyquist discovered three different methods for pulse shaping that could be used to eliminate ISI

  • Nyquist's First Method (Zero ISI): physically unrealizable (i.e., the impulse response would be noncausal and of infinite duration), inaccurate sync will cause ISI

    image-20260301165125997

  • Nyquist's second method: allows some ISI to be introduced in a controlled way

  • Nyquist's third method: area under the \(h_e(t)\) pulse within the desired symbol interval, \(T_s\), is not zero, but the areas under \(h_e(t)\) in adjacent symbol intervals are zero

Nyquist Criterion & Pulses

David A. Johns, ECE1392H - Integrated Circuits for Digital Communications - Fall 2001 [System Overview]

image-20260301175835124

image-20260301171631609

image-20260301165454919

Matched-Filter (MF)

David A. Johns, ECE1392H - Integrated Circuits for Digital Communications - Fall 2001 [System Overview]

image-20260301175451088

image-20260301175553715


image-20260301175653355

Noise Enhancement in Linear Equalizers

John M. Cioffi, Lecture 13, Thursday February 19th 2026 - Intersymbol Interference, MMSE, and SNR [https://cioffi-group.stanford.edu/ee379a/Lectures/L13.pdf]

β€”, Lecture 14, Tuesday February 24th 2026 - Linear Equalizers [https://cioffi-group.stanford.edu/ee379a/Lectures/L14.pdf]

image-20260226223722288

image-20260226223806023

Shannon–Hartley theorem

image-20260226231916346

image-20260226225540962


David A. Johns, ECE1392H - Integrated Circuits for Digital Communications - Fall 2001 [Introduction]

image-20260301174746547

image-20260301174712835

LMS & its Quantized-Error Algorithms

Bruno Lima, Adaptive filtering in Python Implementations based on Adaptive Filtering: Algorithms and Practical Implementation (Paulo S. R. Diniz). [https://github.com/BruninLima/PydaptiveFiltering]

\[\begin{align} x_k &= [x[k], x[k-1], \ldots, x[k-M]]^T \in \mathbb{C}^{M+1}\\ y[k] &= w^H[k] x_k, \qquad e[k] = d[k] - y[k], \end{align}\]


LMS algorithm

image-20260317224545818 \[ w[k+1] = w[k] + \mu\, e^*[k] \, x_k. \]

1
2
3
4
if w_init is not None:
self.w: np.ndarray = np.asarray(w_init, dtype=self._dtype)
else:
self.w = np.zeros(self.filter_order + 1, dtype=self._dtype)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
x: np.ndarray = np.asarray(input_signal, dtype=complex).ravel()
d: np.ndarray = np.asarray(desired_signal, dtype=complex).ravel()

n_samples: int = int(x.size)
m: int = int(self.filter_order)

outputs: np.ndarray = np.zeros(n_samples, dtype=complex)
errors: np.ndarray = np.zeros(n_samples, dtype=complex)

x_padded: np.ndarray = np.zeros(n_samples + m, dtype=complex)
x_padded[m:] = x

for k in range(n_samples):
x_k: np.ndarray = x_padded[k : k + m + 1][::-1]

y_k: complex = complex(np.vdot(self.w, x_k))
outputs[k] = y_k

e_k: complex = d[k] - y_k
errors[k] = e_k

self.w = self.w + self.step_size * np.conj(e_k) * x_k

Sign-Data Algorithm \[ w[k+1] = w[k] + 2\mu\, e^*[k] \, \operatorname{sign}(x_k) \]

1
2
3
4
5
6
7
8
9
10
11
12
for k in range(n_samples):
x_k = x_padded[k : k + m + 1][::-1]

y_k = complex(np.vdot(self.w, x_k))
outputs[k] = y_k

e_k = d[k] - y_k
errors[k] = e_k

sign_xk = np.sign(x_k)

self.w = self.w + (2.0 * self.step_size) * np.conj(e_k) * sign_xk

sign–sign algorithm

image-20260317230938532

Forward Error Correction (FEC)

Cathy Ye Liu, Broadcom Inc. DesignCon 2019: 100+ Gb/s Ethernet Forward Error Correction (FEC) Analysis

β€”, Broadcom Inc. DesignCon 2024: 200+ Gbps Ethernet Forward Error Correction (FEC) Analysis

TODO πŸ“…

reference

Proakis, John G., and Masoud Salehi. Digital Communications. 5th ed. McGraw-Hill, 2008. [pdf]

Sklar, Bernard. Digital communications: fundamentals and applications. Pearson, 2021.

Ling, F. (2017). Synchronization in Digital Communication Systems. Cambridge: Cambridge University Press.

Barry, John R., Edward A. Lee, and David G. Messerschmitt. Digital communication. Springer, 2003.

Qasim Chaudhari, Wireless Communications From the Ground Up – An SDR Perspective

John M. Cioffi, [Chapter 3 - Equalization], [Chapter 6 - Fundamentals of Synchronization]

Sen M. Kuo. Real-Time Digital Signal Processing: Fundamentals, Implementations and Applications, 3rd Edition. John Wiley & Sons 2013

Stankovic, Ljubisa. (2015). Digital Signal Processing with Selected Topics.


Paulo S. R. Diniz, Adaptive Filtering: Algorithms and Practical Implementation, 5th edition [pdf], [matlab], [python]

B. Farhang-Boroujeny (2013), Adaptive Filters: Theory and Applications (2nd ed.). John Wiley & Sons, Inc.

Simon O. Haykin (2014), "Adaptive Filter Theory" Prentice-Hall, Inc. 5rd edition


A. Chan Carusone and D. A. Johns, "Analog Filter Adaptation Using a Dithered Linear Search Algorithm," IEEE Int. Symp. Circuits and Syst., May 2002. [PDF], [Slides]

β€”, Ph. D. Thesis, "Digital Algorithms for Analog Adaptive Filters", Feb. 2002. [http://www.eecg.utoronto.ca/~tcc/thesis.pdf]

β€”, "Analog Adaptive Filters," tutorial at the IEEE Int. Symp. Circuits and Syst., Bangkok, Thailand, May 2003. [http://www.eecg.utoronto.ca/~tcc/iscas03_tutorial.pdf]

β€”, 2022 Optimization Tools for Future Wireline Transceivers [https://www.ieeetoronto.ca/wp-content/uploads/2022/12/UofT-Future-of-Wireline-Workshop-2022.pdf]

David Johns, "Integrated Circuits for Digital Communications" [https://www.eecg.toronto.edu/~johns/nobots/courses/ece1392/slides.pdf]


Chris Li, mmse_dfe [https://github.com/ChrisZonghaoLi/mmse_dfe]

ScottXjw, equalizer-code-FFE-DFE-VolterraFFEandDFE [https://github.com/ScottXjw/equalizer-code-FFE-DFE-VolterraFFEandDFE]


Qasim Chaudhari. Maximum Likelihood Estimation of Clock Offset [https://wirelesspi.com/maximum-likelihood-estimation-of-clock-offset/]

β€”. Channel Estimation in Wireless Communication. [https://wirelesspi.com/channel-estimation-in-wireless-communication/]

β€”. Phase Locked Loop (PLL) in a Software Defined Radio (SDR) [https://wirelesspi.com/phase-locked-loop-pll-in-a-software-defined-radio-sdr/]

β€”. Phase Locked Loop (PLL) for Symbol Timing Recovery [https://wirelesspi.com/phase-locked-loop-pll-for-symbol-timing-recovery/]

β€”. How Decision Feedback Equalizers (DFE) Work [https://wirelesspi.com/how-decision-feedback-equalizers-dfe-work/]

β€”. Maximum Likelihood Sequence Estimation (MLSE Equalizer) [https://wirelesspi.com/maximum-likelihood-sequence-estimation-mlse-equalizer/]

β€”. Gardner Timing Error Detector: A Non-Data-Aided Version of Zero-Crossing Timing Error Detectors [https://wirelesspi.com/gardner-timing-error-detector-a-non-data-aided-version-of-zero-crossing-timing-error-detectors/]

β€”. Digital Filter and Square Timing Recovery [https://wirelesspi.com/digital-filter-and-square-timing-recovery/]

β€”. What is a Symbol Timing Offset and How It Distorts the Rx Signal [https://wirelesspi.com/what-is-a-symbol-timing-offset-and-how-it-distorts-the-rx-signal/]

β€”. How Excess Bandwidth Governs Timing Recovery in Digital Communication Systems [https://wirelesspi.com/how-excess-bandwidth-governs-timing-recovery-in-digital-communication-systems/]

β€”. How Automatic Gain Control (AGC) Works [https://wirelesspi.com/how-automatic-gain-control-agc-works/]