首页 > 其他分享 >Farrow滤波器-数字信号的任意速率变换

Farrow滤波器-数字信号的任意速率变换

时间:2024-07-29 17:58:10浏览次数:9  
标签:采样 滤波器 架构 插值 多项式 数字信号 Farrow

前言:本文是Farrow滤波器相关三篇论文的学习笔记,介绍用于数字信号任意速率转化的Farrow 滤波器,主要包括原理与架构,文章分为三个部分(1)重采样过程的数学建模;(2)Farrow算法推导;(3)Farrow滤波器实现架构。

Farrow架构的两种理解:

(1)对数模混合重采样过程用全数字滤波器形式近似,并基于多项式插值公式计算滤波器系数。(完整的理论与推导,对应本文的行文组织顺序)

(2)拉格朗日多项式插值的高效数字实现。(对应最终的架构实现)

阅读提示:

如果只关注Farrow架构如何实现,可先看公式(2)中重采样的数学模型,然后直接跳到2.3小节看基于拉格朗日多项式插值对应的数字实现架构以及第三章节中的实现,属于“make-it"。前面的内容第一到第二章节是只是为了建立完整的理论基础,是属于“tell-a-good-story”。

一、问题建模

1.1 背景

数字信号处理系统中,不同处理模块往往工作在不同的处理速率,因而需要对信号进行速率转换。

Farrow滤波器通过插值实现数字信号的采样速率转换,尤其是转换前后速率比值为无理数时(incommensurate,irrational)。当转换前后速率比值可表示为整数比时,可通过更为简单的插值/抽取+抗镜像/混叠滤波实现,此处不再赘述。

本文主要讨论Farrow滤波器用于任意速率的插值转换。

1.2 重采样过程

Farrow滤波器为全数字处理架构,但其插值过程仿照的是下图所示的基本的数字/模拟混合重采样架构。

对重采样架构的数学建模是Farrow滤波器的核心part!理解这个重采样过程也就理解了整个Farrow架构背后的原理,后面剩下的只是公式推导和实现简化了。

基于DAC与ADC的重采样过程(图自参考文献[1])

二、Farrow数字滤波算法

Farrow算法本质:对于数模混合重采样过程的纯数字运算的近似,并以数字滤波器的架构实现。

下面,研究如何用数字滤波器结构来近似实现(2)中的重采样过程:

2.1 数字滤波的近似形式

2.2 插值系数的确定

2.3 拉格朗日多项式插值

Farrow滤波器架构,本质其实就是拉格朗日多项式插值的数字高效实现形式,前文一系列的建模与推导是为了给更多泛化的实现架构提供理论基础。

下面,从拉格朗日多项式插值的角度出发,推导Farrow滤波器结构以及相应系数。

Q2:为什么不用简单的一阶线性插值?

A2:Farrow滤波器阶数越低,通带平坦性越差,带外限制能力越弱。对于窄带信号,信号带宽<<采样率时,线性插值也能保障性能。而对于宽带信号,阶数过低时一是带内会畸变,二是插值过程中带外镜像无法被有效抑制,继而在重采样时造成混叠。

Q3:滤波器阶数越高越好吗?

A3:理论上来说是的,但当阶数增大时,计算复杂度幂次增长,系统延迟增大,因此实际系统中阶数不能过大,一般不超过4阶。

三、Farrow的数字架构实现

Farrow滤波器的架构主要由两个模块组成:(1)定时控制模块;(2)多项式插值模块。

  • 定时控制模块 由计数控制振荡器NCO(number-controlled oscillator)和环路滤波器共同控制前后两套时钟 的转换,完成基点样本点 位置的确定与分数阶间隔 的计算。

定时控制模块(图自参考文献[1])

  • 多项式插值模块 根据Homer法则三阶多项式的和可写为: 据此,构建方形滤波器架构,高效实现多项式插值:

三阶Farrow插值滤波器架构,源自参考文献[2]

Q5:转换前后速率可以差异很大吗?

A5:由于滤波器阶数有限,Farrow架构要求输入输出采样率量级较为接近,才能保证插值误差较小.

Matlab有封装好的函数"dsp.FarrowRateConverter"可以实现Farrow Rate Convert的功能仿真:

frc_fil = dsp.FarrowRateConverter('InputSampleRate',fs_in, ...
        'OutputSampleRate', fs_out, ...
        'PolynomialOrder',N_order, ...
        'Specification','Polynomial order');

out = frc_fil(in);   % only column vector is allowed

注:(1)仅支持列向量的运算;(2)支持的最大多项式阶数为4阶;(3)允许自定义滤波器组的系数;(4)基本参数:输入采样率fs_in,输出采样率fs_out,插值阶数N_order。

参考文献

[1] F. M. Gardner, "Interpolation in digital modems. I. Fundamentals," IEEE Transactions on Communications, vol. 41, no. 3, pp. 501-507, March 1993.

[2] L. Erup, F. M. Gardner and R. A. Harris, "Interpolation in digital modems. II. Implementation and performance," IEEE Transactions on Communications, vol. 41, no. 6, pp. 998-1008, June 1993.

[3] C. W. Farrow, "A continuously variable digital delay element,"1988., IEEE International Symposium on Circuits and Systems, Espoo, Finland, 1988, pp. 2641-2645 vol.3.

标签:采样,滤波器,架构,插值,多项式,数字信号,Farrow
From: https://blog.csdn.net/baidu_38676302/article/details/140641864

相关文章

  • 基于FPGA的数字信号处理(19)--行波进位加法器
    1、10进制加法是如何实现的?        10进制加法是大家在小学就学过的内容,不过在这里我还是帮大家回忆一下。考虑2个2位数的10进制加法,例如:15+28=43,它的运算过程如下:个位两数相加,结果为5+8=13,结果的1作为进位传递到十位,而3则作为和的低位保留十位的两数相......
  • SciTech-BigDataAIML-Python Time Series Handbook - Kalman filter: 卡尔曼滤波器算
    网上文档:Python时间序列手册:有ipynb和PDF文件:https://filippomb.github.io/python-time-series-handbook/notebooks/07/kalman-filter.htmlMITPDF:AnIntroductiontotheKalmanFilter-MITIllinoisUniversityPDF:UnderstandingtheBasisoftheKalmanF......
  • MATLAB仿真:数字信号处理用FFT对信号分析
    目录1.实验目的2实验原理3.实验仪器及设备4.实验步骤及内容(1)对以下序列进行谱分析。(2)对以下周期序列进行谱分析。 (3)对模拟周期信号进行谱分析1.实验目的学习用FFT 对连续信号和时域离散信号进行谱分析的方法,了解可能出现的分析误差及其原因,以便正确应用 FFT。2......
  • 卡尔曼滤波器原理的学习理解
    一、什么是卡尔曼。跟其他著名的理论(例如傅立叶变换,泰勒级数等等)一样,卡尔曼也是一个人的名字,而跟他们不同的是,他是个现代人!1960年卡尔曼在他的博士论文和发表的论文《ANewApproachtoLinearFilteringandPredictionProblems》(线性滤波与预测问题的新方法中提出了这种算法......
  • 数字信号||用窗函数法设计FIR数字滤波器(5)
    实验五  用窗函数法设计FIR数字滤波器一、实验目的(1)加深对窗函数法设计FIR数字滤波器的基本原理的理解。(2)学习用MATLAB语言的窗函数法编写设计FIR数字滤波器的程序。(3)了解MATLAB有关窗函数法设计的常用子函数。二、实验涉及的MATLAB子函数1.boxcar功能:矩形窗。......
  • 数字信号||离散序列的基本运算(2)
    实验二  离散序列的基本运算一、实验目的(1)进一步了解离散时间序列时域的基本运算。(2)了解MATLAB语言进行离散序列运算的常用函数,掌握离散序列运算程序的编写方法。二、实验涉及的MATLAB子函数1.find功能:寻找非零元素的索引号。调用格式:find((n>=min(n1))&(n<=max(n1)......
  • 数字信号||离散序列的基本运算(1)
    实验一 离散序列的基本运算一、实验目的(1)了解常用的时域离散信号及其特点。(2)掌握MATLAB产生常用时域离散信号的方法。二、实验涉及的MATLAB子函数1.axis功能:限定图形坐标的范围。调用格式:axis([x1,x2,y1,y2]);在横坐标起点为x1、终点为x2,纵坐标起点为y1、终点为y2的范围......
  • 使用“scipy.signal.butter()”创建低通滤波器时,“阶数”和“临界频率”是什么
    上下文:我正在尝试创建一个低通滤波器来截止声音文件中10khz以上的频率。importlibrosaimportscipy.signalassigimportnumpyasnpimportmatplotlib.pyplotaspltfilename=librosa.example('nutcracker')y,sr=librosa.load(filename)#modeleda......
  • 基于单片机和MATLAB的FIR滤波器设计
    摘要:随着社会经济的进步和科学技术的不断发展,数字滤波器的优势使其广泛应用于不同领域。但是,数字滤波器设计过程中的复杂性对其发展造成了制约。因此,笔者实现了基于单片机和MATLAB的滤波器的全新设计方法,并对设计后的滤波器进行仿真和实现验证。结果表明,此种方法所设计的......
  • 数字信号处理 实验一 系统响应及系统稳定性 免费附上机实验报告和原程序
    (1)编制程序,包括产生输入信号、单位脉冲响应序列的子程序,以及用filter函数或conv函数求解系统输出响应的主程序。程序中要有绘制信号波形的功能。(2)给定一个低通滤波器的差分方程为输入信号分别求出和的系统响应,并画出其波形。求出系统的单位脉冲响应,画出其波形。(3)给定系统......