抽取_内插_半带滤波器_多相滤波器

文章目录

  • 半带滤波器
  • 多相抽取滤波器
  • 多相内插滤波器
    • 半带抽取器和半带内插器

参考资料:Xilinx FIR Compiler v7.2 LogiCORE IP Product Guide PG149

半带滤波器

半带滤波器的阶数为偶数,系数长度为奇数,且除了中间系数为0.5外,其余偶数序号系数都为0。
系数长度 = 抽头数 = FIR滤波器的阶数 + 1 。
半带滤波器的幅频响应如下图。半带滤波器主要用于2倍的抽取前的滤波。
抽取_内插_半带滤波器_多相滤波器_第1张图片
通带截止频率 Ω p \Omega_p Ωp和阻带起始频率 Ω s t \Omega_{st} Ωst关于 π 2 \frac{\pi}{2} 2π(或 f s 4 ) \frac{f_s}{4}) 4fs)对称,且通带纹波等于阻带纹波,即满足如下表达式。
Ω p = π − Ω s t ,    δ p = δ s \Omega_p = \pi - \Omega_{st},\ \ \delta_p = \delta_{s} Ωp=πΩst,  δp=δs

针对一个抽头数为11的半带滤波器其脉冲响应和FPGA实现结构如下图。
抽取_内插_半带滤波器_多相滤波器_第2张图片

抽取_内插_半带滤波器_多相滤波器_第3张图片
针对滤波器系数的对称性还可以优化实现结构。第一幅图针对奇数抽头,第二幅图针对偶数抽头。
抽取_内插_半带滤波器_多相滤波器_第4张图片抽取_内插_半带滤波器_多相滤波器_第5张图片

以AD9361的接收信号链路中用于2倍抽取的Rx HB1为例。其系数为[-8, 0, 42, 0, -147, 0, 619, 1013, 619, 0, -147, 0, 42, 0, -8]。

h = [-8, 0, 42, 0, -147, 0, 619, 1013, 619, 0, -147, 0, 42, 0, -8];
[H,W] = freqz(h);
Hf = abs(H);% 幅频响应
Hx = angle(H);% 相频响应
plot(W,Hf/max(Hf));% 归一化幅频响应

抽取_内插_半带滤波器_多相滤波器_第6张图片
AD9361中用于3倍抽取时的Rx DEC3系数为 [55, 83, 0, -393, -580, 0, 1914, 4041, 5120, 4041, 1914, 0, -580, -393, 0, 83, 55]。同样画出其归一化幅频响应,标记出关键点。
抽取_内插_半带滤波器_多相滤波器_第7张图片
有数字信号处理理论:
x ( n ) → H D ( e j ω ) → ↓ D → x D ( m ) x(n) \to H_D(e^{j\omega}) \to \downarrow D \to x_D(m) x(n)HD(ejω)DxD(m)
其中 ∣ H D ( e j ω ) ∣ = { D ∣ ω ∣ < π / D 0 π / D ⩽ ∣ ω ∣ < π \left|H_{\mathrm{D}}\left(\mathrm{e}^{\mathrm{j} \omega}\right)\right|=\left\{\begin{array}{ll} D & |\omega|<\pi / D \\ 0 & \pi / D \leqslant|\omega|<\pi \end{array}\right. HD(ejω)={D0ω<π/Dπ/Dω<π

多相抽取滤波器

下图为一个M倍抽取的多相抽取滤波器结构示意图。
抽取_内插_半带滤波器_多相滤波器_第8张图片
其中 N N N个原滤波器系数 a ( 0 ) , a ( 1 ) , ⋯   , a ( N − 1 ) a(0),a(1),\cdots,a(N-1) a(0),a(1),,a(N1)被映射到 M M M个多相子滤波器系数 h 0 ( n ) , h 1 ( n ) , ⋯   , h M − 1 ( n ) h_{0}(n), h_{1}(n), \cdots, h_{M-1}(n) h0(n),h1(n),,hM1(n),两者关系如以下公式。
h i ( r ) = a ( i + M r )     i = 0 , 1 , ⋯   , M − 1     r = 0 , 1 , ⋯   , N M h_i(r) = a(i+Mr)\ \ \ i =0,1,\cdots,M-1\ \ \ r=0,1,\cdots,\frac{N}{M} hi(r)=a(i+Mr)   i=0,1,,M1   r=0,1,,MN
例如 h = [ a , b , c , d , e , f , g , h , g , f , e , d , c , b , a ] , M = 3 h 0 = [ a , d , g , f , c ] h 1 = [ b , e , h , e , b ] h 2 = [ c , f , g , d , a ] \begin{matrix} \\h=[a,b,c,d,e,f,g,h,g,f,e,d,c,b,a],M=3 \\h_0=[a,d,g,f,c] \\h_1=[b,e,h,e,b] \\h_2=[c,f,g,d,a] \end{matrix} h=[a,b,c,d,e,f,g,h,g,f,e,d,c,b,a]M=3h0=[a,d,g,f,c]h1=[b,e,h,e,b]h2=[c,f,g,d,a]
多相抽取滤波器通过输入换向器将输入样本 x ( n ) x(n) x(n)送入多相子滤波器,换向器索引从 M − 1 M-1 M1递减到 0 0 0。在换向器执行了一个周期并向滤波器组提供了 M M M个输入样本后,各多相子滤波器的输出之和作为一个输出样本 y ( n ) y(n) y(n)。则 y ( n ) y(n) y(n)的输出采样率为 f s / M f_s/M fs/M

多相内插滤波器

下图为一个P倍内插的多相内插滤波器结构示意图。
抽取_内插_半带滤波器_多相滤波器_第9张图片
其中 N N N个原滤波器系数 a ( 0 ) , a ( 1 ) , ⋯   , a ( N − 1 ) a(0),a(1),\cdots,a(N-1) a(0),a(1),,a(N1)被映射到 P P P个多相子滤波器系数 h 0 ( n ) , h 1 ( n ) , ⋯   , h P − 1 ( n ) h_{0}(n), h_{1}(n), \cdots, h_{P-1}(n) h0(n),h1(n),,hP1(n),两者关系如以下公式。
h i ( r ) = a ( i + P r )     i = 0 , 1 , ⋯   , P − 1     r = 0 , 1 , ⋯   , N P h_i(r) = a(i+Pr)\ \ \ i =0,1,\cdots,P-1\ \ \ r=0,1,\cdots,\frac{N}{P} hi(r)=a(i+Pr)   i=0,1,,P1   r=0,1,,PN
多相内插滤波器的每一个输入样本 x ( n ) x(n) x(n)都要送入到各个多相子滤波器,一个输入样本 x ( n ) x(n) x(n)经过多相内插滤波器后对应 P P P个输出样本 y ( n ) y(n) y(n)。输出采样率为 P × f s P\times f_s P×fs

半带抽取器和半带内插器

结合前面所述,半带抽取器和内插器就将半带滤波器与多相滤波器结合起来。具体结构如下图。
在这里插入图片描述
在这里插入图片描述
以前面所用的Rx HB1系数为例,其系数为[-8, 0, 42, 0, -147, 0, 619, 1013, 619, 0, -147, 0, 42, 0, -8]。

close all; clear;
x = round(rand(1,1000)*5);
h = [-8, 0, 42, 0, -147, 0, 619, 1013, 619, 0, -147, 0, 42, 0, -8];
n = length(h);
h0 = h(1:2:end);
h1 = h(2:2:end);
y1 = conv(x,h);% 先滤波后抽取
y1 = y1(n/2:end-n/2);
y1 = y1(1:2:end);
x_a = x(1:2:end);% 先抽取再滤波
y2_a = conv(x_a,h0); 
y2_a = y2_a(n/4:end-n/4);
x_b = x(2:2:end);
y2_b = conv(x_b,h0);
y2_b = y2_b(n/4:end-n/4);
y2 = y2_a + y2_b;
x = x/max(x);% 归一化
y1 = y1/max(y1);
y2 = y2/max(y2);

通过Matlab信号分析工具箱画出两种方法输出y1和y2的时域图和频域图,可以看到两种方法均可实现2倍的抽取操作,且两者的频域波形相差不大。
抽取_内插_半带滤波器_多相滤波器_第10张图片

你可能感兴趣的:(笔记,滤波器,抽取,插值,matlab,fpga开发)