雷竞技注册
技术文章

用于线性相位FIR滤波器的FPGA实现的考虑因素

2018年5月17日经过史蒂夫·阿拉尔

本文将审查对称FIR滤波器的有效FPGA实施的考虑因素。

本文将审查对称FIR滤波器的有效FPGA实施的考虑因素。

本文将导出模块化流水线结构对称FIR筛选器。我们会看到派生结构可以使用Xilinx FPGA的DSP切片有效地实现。

对称FIR筛选器

让我们考虑一个八个灭火滤波器。该过滤器的传递函数将是

$$ y(z)= \ sum_ {k = 0} ^ {7} z ^ { - k} h_k x(z)$$

假设过滤器是对称的,我们有$$ h_k = h_ {7-k} $$ k = 0,1,1,\ dots,7 $$。因此,可以将传递函数重写为

$$ y(z)=(1 + z ^ {-7})h_0x(z)+(z ^ {-1} + z ^ {-6})h_1x(z)+(z ^ { - 2} +z ^ {-5})h_2x(z)+(z ^ { - 3} + z ^ {-4})h_3x(z)$$

等式1

我们可以将等式1实现为具有四层流水线的系统,如图1所示。这个方框图的每个阶段对应于方程1的四项中的一项。

图1。点击放大。

由于我们已插入三个寄存器集来执行流水线,我们期待一个延迟三个时钟周期。就Z转换而言,图1的输出将是$$ z ^ { - 3} $$次数$$ y(z)$$(如公式1所示)。换句话说,我们有$$ SIG7 = Z ^ { - 3} Y(Z)$$。因此,我们有

$$ \ begin {align}
sig7&= z ^ { - 3}(1 + z ^ {-7})h_0x(z)
+ z ^ { - 3}(z ^ { - 1} + z ^ {-6})h_1x(z)\\
&+ z ^ { - 3}(z ^ { - 2} + z ^ {-5})h_2x(z)+ z ^ { - 3}(z ^ { - 3} + z ^ {-4})h_3x(z)

\结束{align} $$

等式2

现在,我们应该将这四个术语中的每一个分配给图1中的适当阶段。我们有输出Sig7的等式,因此首先设计系统的最后阶段更容易。If we implement the term $$z^{-3}(1+z^{-7})h_0X(z)$$ as Stage 4, we’ll have to cascade ten delay elements to implement $$z^{-10}$$. However, if we implement $$z^{-3}(z^{-3}+z^{-4})h_3X(z)$$ as Stage 4, we’ll need a cascade of only seven delay elements. Hence, we’ll implement the last term of Equation 2 as Stage 4 of Figure 1. This gives the circuit shown in Figure 2.

图2.

因此,我们获得

$$ sig6 = z ^ { - 3}(1 + z ^ { - 7})h_0x(z)
+ z ^ { - 3}(z ^ {-1} + z ^ {-6})h_1x(z)+ z ^ { - 3}(z ^ { - 2} + z ^ {-5})h_2x(z)$$

这给了

$$ sig5 = z ^ { - 2}(1 + z ^ {-7})h_0x(z)
+ z ^ { - 2}(z ^ { - 1} + z ^ {-6})h_1x(z)+ z ^ { - 2}(z ^ { - 2} + z ^ {-5})h_2x(z)$$

现在,就像阶段4一样,我们可以推出图1的第3阶段,并获得图3中的电路。

图3.

现在,我们有

$$ sig3 = z ^ { - 1}(1 + z ^ {-7})h_0x(z)
+ z ^ {1} (z ^ {1} + z ^ {6}) h_1X (z) $ $

它可以被重写为

$$ sig3 = z ^ { - 1} sig1
+ z ^ {1} (z ^ {1} + z ^ {6}) h_1X (z) $ $

在哪里

$$ sig1 =(1 + z ^ {-7})h_0x(z)$$

使用这两个方程式,我们可以找到图4所示的最终结构。

图4。点击放大。

请注意,对于第一阶段,包含具有零输入的加法器以强调示意图的模块化和常规结构。此外,SIG7之后放置额外的延迟元件。如您所见,在结构的每个阶段重复虚线盒内的电路。这样的模块化结构是理想的,因为它有助于延长任何数量的抽头的结构。

Xilinx在其高性能FPGA中将虚线盒内的电路实现为DSP切片。这些DSP切片可以有效地级联;这就是为什么可以使用多个切片来实现给定的FIR滤波器。在下一节中,我们将查看DSP48切片的结构。

Xilinx DSP切片

DSP切片是多功能元素,实现图4的FIR滤波器只是许多可能的应用中的一个。在Virtex-4设备中发现的DSP48切片的框图如图5所示。

图5。在Virtex-4设备中找到的DSP48切片的框图。图片礼貌Xilinx.点击放大。

加法器/减法器输出的等式是

$$加法器\ out = \ big(z \ pm(x + y + c_ {in})\ big)$$

其中x,y和z表示相应的多路复用器的输出值。多路复用器允许我们为加法器/减值器选择不同的输入。乘法是DSP切片的典型应用。例如,我们可以配置DSP48切片以实现以下等式:

$$加法器\ out = c \ pm(a \ times b + c_ {in})$$

当使用乘法器功能时,x和y多路复用器输出必须馈送加法器,因为框图中所示的乘数生成由加法器/减法器组合的两个部分结果以产生最终的乘法结果。有关更多详细信息,请参阅Xilinx的书的第21页,DSP:设计最佳结果

切片的不同输入路径中的寄存器允许我们具有流水线设计。例如,我们可以直接将输入A应用于切片的数学部分,没有寄存器在其路径中,或者我们可以在路径中放置一个或两个寄存器。这是通过多路复用器实现的(参见图5)可以从寄存器之前或之后选择输入。

DSP切片的输出(图5中的标记为“P”)可以应用于相同切片的加法/减法器以实现累加器。

如图5所示,DSP切片支持多个功能,包括乘法,乘法,然后是累积,完全流水线乘法和圆筒移位。DSP48切片的更多高级版本包括一些修改,例如包括预加法器块,这使得切片更加多样化。例如,预加法器可以用于实现对称FIR滤波器(上面讨论)。请注意,DSP切片旨在有效地实现所提到的功能。这就是为什么基于DSP切片的设计可以实现较低的功耗,更高的性能和更高效的硅利用,而与使用FPGA的通用面料的设计相比。有关Xilinx DSP切片的更多详细信息,请参阅上面提到的书

使用DSP切片实现对称FIR滤波器

图5的DSP切片的简化框图如下图6所示。

图6.

此简化框图强调,可以将一个切片的输出作为输入到下一个切片的加法/减法器的输入。如果我们忽略图6所示的输入寄存器,图6的示意图与图4的虚线盒内的电路相同。因此,通过级联这些DSP切片,我们可以有效地实现图4的FIR滤波器。在此案例,我们可以使用FPGA的通用织物切片来实现红色加法器(见图4)。

图7显示了使用7系列DSP48切片的图4的实现。


图7。基于DSP48的执行八次抽头对称FIR滤波器的实现。图片礼貌Xilinx.点击放大。

在这里,阴影加法器实现了图4中的红色加法器,延迟线可以使用片内的寄存器实现。您可以下载Xilinx VHDL代码,用于图7的电路在这里(点击此链接将立即开始下载)。

结论

我们派生了一个用于对称FIR滤波器的模块化流水线结构。我们还研究了Xilinx DSP切片的结构,可用于实现多个功能,包括乘法,乘法,然后是累积,完全流水线乘法和圆筒移位。7系列DSP48切片甚至更通用,允许更有效地实现对称FIR滤波器。

要查看我的文章的完整列表,请访问这个页面