点击上方蓝字关注我们
本文将回顾对称 FIR滤波器的高效 FPGA 实现的注意事项。
本文将推导对称 FIR 滤波器的模块化流水线结构。我们将看到派生结构可以使用XilinxFPGA 的 DSP 片有效地实现。
对称 FIR 滤波器
让我们考虑一个八阶 FIR 滤波器。该滤波器的传递函数为
$$Y(z)= sum_{k=0}^{7} z^{-k} h_k X(z)$$
假设滤波器是对称的,并且我们有 $$h_k = h_{7-k}$$ 对于 $$k=0, 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)$$。因此,我们有
$$egin{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)
end{对齐}$$
公式 2
现在,我们应该将这四项中的每一项分配到图 1 中的适当阶段。我们有输出 sig7 的方程式,因此首先设计系统的阶段会更容易。如果我们将术语 $$z^{-3}(1+z^{-7})h_0X(z)$$ 实现为阶段 4,我们将必须级联十个延迟元件来实现 $$z^{- 10}$$。但是,如果我们将 $$z^{-3}(z^{-3}+z^{-4})h_3X(z)$$ 实现为阶段 4,我们将只需要七个延迟元件的级联。因此,我们将方程式 2 的一项实现为图 1 的阶段 4。这给出了图 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 slice。这些DSP Slice可以高效级联;这就是为什么可以使用多个切片来实现给定的 FIR 滤波器的原因。在下一节中,我们将回顾 DSP48 Slice 的结构。
赛灵思 DSP Slice
DSP Slice 是多种元素,实现图 4 的 FIR 滤波器只是众多可能应用中的一种。图 5 显示了 Virtex-4 器件中 DSP48 片的框图。
图 5. Virtex-4 器件中 DSP48 片的框图。图片由赛灵思提供。点击放大。
加法器/减法器的输出方程为
$$Adder Out= Big ( Z pm (X+Y+C_{in}) Big )$$
其中 X、Y 和 Z 表示相应多路复用器的输出值。多路复用器允许我们为加法器/减法器选择不同的输入。乘法是 DSP Slice 的典型应用。例如,我们可以配置 DSP48 slice 来实现以下等式:
$$Adder Out = C pm (A imes B + C_{in})$$
当使用乘法器功能时,X 和 Y 多路复用器的输出必须馈送到加法器,因为方框图中所示的乘法器生成两个部分结果,这些结果由加法器/减法器组合以产生终的乘法结果。有关详细信息,请参阅 Xilinx 的书 DSP:设计以获得结果的第 21 页。
slice 不同输入路径中的寄存器允许我们进行流水线设计。例如,我们可以直接将输入 A 应用于 slice 的数学部分,其路径中没有寄存器,或者我们可以在其路径中放置一个或两个寄存器。这是通过可以从寄存器之前或之后选择输入的多路复用器(参见图 5)实现的。
DSP 切片(图 5 中标记为“P”)的输出可以应用于同一切片的加法器/减法器以实现累加器。
如图 5 所示,DSP Slice 支持多种功能,包括乘法、乘法后累加、全流水线乘法和循环桶式移位。DSP48 Slice 的更版本包含一些修改,例如包括预加器块,这使得 Slice 更加通用。例如,预加器可用于实现对称 FIR 滤波器(如上所述)。请注意,DSP slice 旨在有效地实现上述功能。这就是为什么与使用 FPGA 通用结构的设计相比,基于 DSP 片的设计可以实现更低的功耗、更高的性能和更高效的硅片利用率。有关 Xilinx DSP slice 的更多详细信息,请参阅上述书籍。
使用 DSP Slice 实现对称 FIR 滤波器
下面的图 6 显示了图 5 的 DSP slice 的简化框图。
图 6
这个简化的框图强调了一个 slice 的输出可以作为输入路由到下一个 slice 的加法器/减法器。如果我们忽略图 6 中所示的输入寄存器,则图 6 的原理图与图 4 的虚线框内的电路相同。因此,通过级联这些 DSP slice,我们可以有效地实现图 4 的 FIR 滤波器。在这个在这种情况下,我们可以使用 FPGA 的通用结构切片来实现红色加法器(参见图 4)。
图 7 显示了使用 7 系列 DSP48 片的图 4 的实现。
图 7. 八抽头对称 FIR 滤波器的基于 DSP48 的实现。图片由赛灵思提供。点击放大。
此处,带阴影的加法器实现了图 4 中的红色加法器,延迟线可以使用片内的寄存器实现。您可以在此处图 7 电路的 Xilinx VHDL 代码(如果单击此链接,将立即开始)。
结论
我们推导出用于对称 FIR 滤波器的模块化流水线结构。我们还研究了 Xilinx DSP slice 的结构,它可用于实现多种功能,包括乘法、乘法后累加、全流水线乘法和循环桶式移位。7 系列 DSP48 Slice 更加通用,可以更高效地实施对称 FIR 滤波器。
扫取二维码获取
更多精彩
FPGA设计论坛
往期推荐
欢迎关注至芯科技
至芯官网:www.zxopen.com
至芯科技技术论坛:www.fpgaw.com
至芯科技淘宝网址:
https://zxopen.taobao.com
至芯科技FPGA初级课程(B站):
https://space.bilibili.com/521850676
至芯科技FPGA在线课程(腾讯课堂):
https://zxopenbj.ke.qq.com/
至芯科技-FPGA 交流群(QQ):282124839
扫码加微信邀请您加入FPGA学习交流群
欢迎加入至芯科技FPGA微信学习交流群,这里有一群优秀的FPGA工程师、学生、老师、这里FPGA技术交流学习氛围浓厚、相互分享、相互帮助、叫上小伙伴一起加入吧!
点个
在看
你最好看
原文标题:FPGA 实现线性相位 FIR 滤波器的注意事项
文章出处:【微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。
-
FPGA
+关注
关注
1629文章
21729浏览量
602986
原文标题:FPGA 实现线性相位 FIR 滤波器的注意事项
文章出处:【微信号:gh_9d70b445f494,微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论