Conventional receivers use the Farrow structure for Sampling Frequency Offset (SFO) compensation and a separate stage for estimation. This paper eliminates that separation: the same Farrow output computed for compensation is directly used to estimate
Joint Sampling Frequency Offset Estimation and Compensation Based on the Farrow Structure
Deijany Rodriguez Linares, Oksana Moryakova, and Håkan Johansson
2025 25th International Conference on Digital Signal Processing (DSP)
doi: https://doi.org/10.1109/DSP65409.2025.11074995 arXiv: https://arxiv.org/abs/2503.07577
An extended version of this work is available as a preprint:
Joint Sampling Frequency Offset Estimation and Compensation Algorithms Based on the Farrow Structure
Deijany Rodriguez Linares, Oksana Moryakova, and Håkan Johansson
arXiv: https://arxiv.org/abs/2603.00627
Bandpass-filtered white noise, SNR = 60 dB,
| Metric | Value |
|---|---|
| MSE before compensation | 0.0623 |
| MSE with true |
|
| MSE with estimated |
|
| NMSE (estimated parameters) |
Estimated parameters:
- The Farrow structure implements a polynomial fractional-delay filter with output
$y_c(n, \Delta, \varepsilon) = \sum_{k=0}^{L} d^k(n), u_k(n)$ , where$d(n) = n\Delta + \varepsilon$ and$u_k(n)$ are fixed subfilter outputs. - A squared-error cost function
$F(\Delta, \varepsilon) = \frac{1}{2}\sum_n \bigl(y_c(n,\Delta,\varepsilon) - x_0(n)\bigr)^2$ is minimized via Newton's method to jointly estimate$\hat{\Delta}$ and$\hat{\varepsilon}$ . - The gradient and Hessian are computed via cascaded accumulators, reusing the subfilter outputs
$u_k(n)$ already computed for compensation — no additional filtering required. - The estimator operates on the real part of the signal only, reducing implementation complexity.
Click below to launch the notebook in Google Colab:
| File | Role |
|---|---|
SFO_filtered_white_noise_minimal.ipynb |
Main demo: joint SFO+STO estimation & compensation on bandpass-filtered white noise |
myclasses/farrow_optimizers_minimal.py |
Newton–Raphson optimizer implementing the proposed algorithm |
myclasses/filter_design.py |
FIR filter design utilities |
myclasses/generator_minimal.py |
Signal generator (bandpass noise + controlled SFO/STO injection) |
myclasses/plotting.py |
Frequency-domain visualization helpers |
functions/farrow_interpolator_minimal.*.so |
Precompiled Cython: Farrow interpolator (x86-64 Linux + Apple Silicon) |
farrow_structure/farrow_filter.npy |
Precomputed Farrow filter coefficients |
If you use this code in your research, please cite:
@INPROCEEDINGS{11074995,
author={Rodriguez-Linares, Deijany and Moryakova, Oksana and Johansson, Håkan},
booktitle={2025 25th International Conference on Digital Signal Processing (DSP)},
title={Joint Sampling Frequency Offset Estimation and Compensation Based on the Farrow Structure},
year={2025},
pages={1-5},
doi={10.1109/DSP65409.2025.11074995}
}Extended preprint:
@misc{rodriguez-linares2026joint,
author={Rodriguez-Linares, Deijany and Moryakova, Oksana and Johansson, Håkan},
title={Joint Sampling Frequency Offset Estimation and Compensation Algorithms Based on the Farrow Structure},
year={2026},
eprint={2603.00627},
archivePrefix={arXiv},
primaryClass={eess.SP},
url={https://arxiv.org/abs/2603.00627}
}