0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

快速实现基于FPGA的脉动FIR滤波器,VHDL,脉动阵列,PE处理单元,FIR滤波器

FPGA设计论坛 来源:未知 2022-12-01 10:20 次阅读

引言

目前,用FPGA(现场可编程门阵列)实现FIR(有限冲击响应)滤波器的方法大多利用FPGA中LUT(查找表)的特点采用DA(分布式算法)或CSD码等方法,将乘加运算操作转化为位与、加减和移位操作。这些结构需要占用器件较多的LE(逻辑元件)资源,设计周期长,工作频率低,实时性差。本文提出一种基于Stratix系列FPGA器件的新的实时高速脉动FIR滤波器的快速实现方法。利 用FGPA集成的DSP(数字信号处理器)乘加模块定制卷积运算单元,利用VHDL(甚高速集成电路硬件描述语言)元件例化语句快速生成脉动阵列结构的FIR滤波器,设计周期短、可移植性强,设计采用全流水结构,能高速、无滞后地实现实时信号处理。

1 设计指标及参数量化

1.1 滤波器威廉希尔官方网站 指标

本文依据以下威廉希尔官方网站 指标设计一个64阶等波纹滤波器:Fs=4.092 MHz;Fpass=1.4 MHz,fstop=1.6 MHz;Wpass<1 dB,Wstop<-50 dB。使用MATLAB中FDA-Tool工具获得滤波器系数。

1.2 参数量化

从FDATool中得到的滤波器系数值是一组浮点小数,必须量化为定点数才能在FPGA器件中实现。本文采用移位舍入的量化方法对滤波器系数进行量化,MATLAB描述为:

得到64阶系数。滤波器系数预先存入器件内部ROM中,通过修改coet.mif文件中的参数可以改变滤波器的类型或参数。使用altera_mf库中altsyncram元件可以直接调用ROM中保存的数据。其调用语句描述如下:

2 FIR设计

2.1 器件简介

Stratix系列FPGA内部提供了丰富的硬功能模块,如片内RAM、PLL(锁相环)、DSP模块等,充分理解这些模块的结构特点和工作原理,掌握其使用方法,可以充分利用器件资源,最大程度地发挥器件在整个系统设计中的作用,使系统设计最优化。提供的DSP模块集成了乘、加/减/累加、求和这几种算术操作,支持符号数、无符号数和混合运算,并且在这些计算路径中集成了可选的寄存器级和全局/局部时钟控制。一个DSP块最多可以配置成8个9×9、4个18×18或者1个36×36的乘法器,可工作在简单乘法器模式、乘累加模式、2乘加模式和4乘加模式,应用这4种模式,可以实现高性能的DSP算法。本文选用StratixⅡ器件,在QuartusⅡ开发环境下应用4乘加模式生成脉动阵列PE(处理单元),用VHDL描述实现FIR滤波器设计。

2.2 脉动阵列结构没计

本文参考文献[6]中阵列F结构--扇入结果,输入流动,权值存入PE,设计一种可实时更替权值的FIR脉动结构,如图1所示。权值w从上流入各个PE中,输入x门左向右流入PE。在这个阵列中,x值在每个单步时刻内向右边的PE移动一次。在每次计算中,各个PE同时进行乘法,算出同一个y值的各乘积项,然后将乘积结果扇入至加法器中相加,得到该y值的结果,实现FIR算法。

2.3 PE设计

DSP模块集成的算术操作中,4乘加模式就是4个乘法器将乘积送出相加,输出一个加/减的结果。利用模块内部可选的寄存器,可使输入数据在模块内部流动,实现移位寄存器功能,如图2所示FPGA片内DSP块的结构。若两路输入分别为输入信号和滤波器系数,则图2所示的结构恰好构成一个4阶FIR滤波器。

本文选用DSP模块构成脉动阵列结构FIR滤波器的PE卷积单元。具体方法是,采用基于Altera_mf库的乘累加运算元件“ALTMULT_ADD”可以快速完成PE设计。通过Altera的IP工具MegaWizard管理器(MegaWizard Plug-In Manager),定制算术单元(Arith-metic)中乘累加底层基本宏功能模块的参数,设置需要的乘法器个数、输入输出数据格式、流水线控制时钟等参数,即可完成4阶卷积PE元件的设计。

通过调用宏功能模块生成元件的封装文什,然后在设计代码中调用该封装文件。本文选择16位符号数输入、34位符号数输出,设置分级流水线控制输入、输出、乘积结果和加法结果,选择一路输入内部移位。第k个PE元件例化VHDL描述如下:

元件中clk0~clk1分别指向PE中各级寄存器建立时钟。例如t-1时刻,x(t-I)~x(t-4)参与PEk中计算;t时刻,数据x(t)流入PE时,PE 中 4个乘法单元中寄存的数据往前流动,x(t-4)从shiftouta端门流向下级PE。

3 FIR优化设计

将前述的例化的PE单元按图1所示的脉动结构连接起来,就完成了一个基本的脉动FIR滤波器设计,为提高系统性能,需要进一步对设计进行优化。

3.1 时序优化设计

对设计而言,提高工作频率至关重要,更高的工作频率意味着更强的处理能力。合理设计系统的时序对提高整个设计的工作频率有着至关重要的作用。而整个系统中最核心和复杂的时序关系为PE内部乘加时序。以下时序优化以PE单元为例。

本设计期望系统工作在200 MHz以上。因此,对设计的tco(时钟到输出延时)、tsu(输入建立时间)、tpd(引脚到引脚延时)分别约束为3 ns、2 ns、5 ns。编译后从时序分析报告(Timing Analyzer Report)可得到PE处理单元的基本时序关系。若使用单周期设计,从输入数据到参与乘法、加法计算再到结果输出,至少需要2.023+1.829+2.625+2.577=9.84 ns才能完成一次运算,达不到期望时钟频率。若应用DSP模块的流水线工作,合理设置PE单元各级触发时钟,则可使系统工作频率昆著提高,系统最高可工作在356.13 MHz(相同速度等级的芯片,Altera公司提供的9位16阶FIR IP核,参考工作频率为217.15 MHz)。考虑系统完成后全天候工作,为保证系统长期稳定,本设计最终选用208.33 MHz系统工作频率,设计实际使用的控制时钟如图3所示。

3.2 加法优化设计

设计一个64阶的滤波器,需要使用16个PE,即需要对16个乘加结果进行加操作,如果采用图1所示的加法运算,如图4(a)所示,计算一次y值需要15个时钟周期才能完成,而且在15个周期内各个加法输入不能变化,若设计中PE能达到300 MHz的工作频牢,加法也只能工作在20 MHz,必然阻碍设计的高速实现,成为制约系统性能的瓶颈。

采用流水线的加法运算是解决这个瓶颈的最好方法。如图4(b)所示。clk1~clk5与PE计算时钟同步,无需延长加法计算时钟,第5级流水的加法器使能后就能实时得到y结果。通过LPM(参数化模块库),直接在代码中实例化LPM加法运算,就能快速生成全流水结构的加法模块。其中第1级16个加法描述如下:

END GENERATE

4 FIR实现

上述的描述在QuartusⅡ开发工具中进行编译和布局布线,采用的目标器件为EP2S601024C4芯片,系统内部最高运算时钟为356.13 MHz,如图5所示。

设计的其他性能参数如下:总逻辑单元1 037个;总寄存器单元1 070个;总存储器容量2 048B;使用的9位DSP模块128个;最差输入引脚到寄存器延时1.750 ns;最差寄存器到输出引脚延时2.615 ns。

本设计经过MATLAB与Modelsim联合功能仿真,MATLAB与Quartus联合时序仿真,两种仿真结果与FPGA处理后的数据一致。

5 结束语

本文结合FPGA器件的结构和特点,利用DSP模块及其内部寄存器实现FIR脉动滤波器,不仅性能高,同时节约了LE资源和布线资源。通过MegaWizard宏模块编辑器,可以快速定制核心的处理单元实现脉动结构,对不同结构的滤波器只需修改定制处理单元参数和ROM中系数,就可以迅速设计出新的滤波器。采用全流水加法结构,使用最少的逻辑单元,达到最高的工作频率,完成对信号的实时、高速处理。






精彩推荐



至芯科技12年不忘初心、再度起航11月12日北京中心FPGA工程师就业班开课、线上线下多维教学、欢迎咨询!
Vivado中FFT IP核的使用
FPGA开发中时序不满足(建立时间)的典型案例及解决方法
扫码加微信邀请您加入FPGA学习交流群




欢迎加入至芯科技FPGA微信学习交流群,这里有一群优秀的FPGA工程师、学生、老师、这里FPGA威廉希尔官方网站 交流学习氛围浓厚、相互分享、相互帮助、叫上小伙伴一起加入吧!


点个在看你最好看







原文标题:快速实现基于FPGA的脉动FIR滤波器,VHDL,脉动阵列,PE处理单元,FIR滤波器

文章出处:【微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1628

    文章

    21711

    浏览量

    602752

原文标题:快速实现基于FPGA的脉动FIR滤波器,VHDL,脉动阵列,PE处理单元,FIR滤波器

文章出处:【微信号:gh_9d70b445f494,微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    基于FPGA实现FIR数字滤波器

    在数字信号处理系统中,有限脉冲响应(finite impulse response,FIR)数字滤波器是一个非常重要的基本单元。近年来,由于FPGA
    的头像 发表于 11-05 16:26 430次阅读
    基于<b class='flag-5'>FPGA</b><b class='flag-5'>实现</b><b class='flag-5'>FIR</b>数字<b class='flag-5'>滤波器</b>

    FIR滤波器的工作原理和特点

    FIR(Finite Impulse Response)滤波器,即有限长单位冲激响应滤波器,又称为非递归型滤波器,是数字信号处理系统中最基本
    的头像 发表于 08-05 16:33 1062次阅读
    <b class='flag-5'>FIR</b><b class='flag-5'>滤波器</b>的工作原理和特点

    如何区分IIR滤波器FIR滤波器

    IIR(无限脉冲响应)滤波器FIR(有限脉冲响应)滤波器是数字信号处理领域中两种非常重要的滤波器类型。它们在许多应用中都发挥着关键作用,如
    的头像 发表于 07-19 09:44 4421次阅读

    iir滤波器fir滤波器的优势和特点

    IIR滤波器FIR滤波器是数字信号处理领域中两种非常重要的滤波器类型。它们各自具有独特的优势和特点,适用于不同的应用场景。本文将介绍IIR
    的头像 发表于 07-19 09:28 1283次阅读

    基于matlab FPGA verilog的FIR滤波器设计

    今天和大侠简单聊一聊基于matlab FPGA verilog的FIR滤波器设计,话不多说,上货。 本次设计实现8阶滤波器,9个系数
    发表于 07-04 20:11

    matlab与FPGA数字信号处理系列 Verilog 实现并行 FIR 滤波器

    FPGA 实现 FIR 滤波器时,最常用的是直接型结构,简单方便,在实现直接型结构时,可以选择串行结构/并行结构/分布式结构。 并行结构
    发表于 05-24 07:48

    DSP教学实验箱_DSP算法实验_嵌入式教程:4-3 有限冲激响应滤波器FIR)算法(CCS显示)

    一、实验目的 了解FIR滤波器的特点,掌握程序算法生成滤波器系数的方法,并实现FIR滤波器滤除高
    发表于 05-16 09:30

    Vivado 使用Simulink设计FIR滤波器

    滤波器,是数字信号处理系统中最基本的元件,它可以在保证任意幅频特性的同时具有严格的线性相频特性,同时其单位抽样响应是有限长的,因而滤波器是稳定的系统。因此,FIR
    发表于 04-17 17:29

    基于多速率DA的根升余弦滤波器FPGA实现

    处理威廉希尔官方网站 和分布式算法的FPGA实现威廉希尔官方网站 ,使得计算量大幅减少,处理速度得到较大提高,而且使得FPGA资源利用更合理。1、根升余弦
    发表于 03-25 14:21

    Matlab生成fir滤波器抽头系数的流程

    在Vivado调用fir滤波器时,我们会遇到需要填充滤波器抽头系数的问题,手工计算又不现实,所以在此向大家介绍一个生成系数的工具。
    的头像 发表于 03-25 09:49 1379次阅读
    Matlab生成<b class='flag-5'>fir</b><b class='flag-5'>滤波器</b>抽头系数的流程

    Vivado经典案例:使用Simulink设计FIR滤波器

    FIR(Finite Impulse Response)滤波器:有限长单位冲激响应滤波器,又称为非递归型滤波器,是数字信号处理系统中最基本的
    的头像 发表于 03-25 09:18 2040次阅读
    Vivado经典案例:使用Simulink设计<b class='flag-5'>FIR</b><b class='flag-5'>滤波器</b>

    如何在Matlab中实现不同窗低通滤波器的设计?

    在Matlab中使用汉明窗设计低通滤波器可以通过fir1函数实现。汉明窗通常用于设计滤波器,可以提供更突出的频率特性。
    的头像 发表于 02-27 14:11 6302次阅读
    如何在Matlab中<b class='flag-5'>实现</b>不同窗低通<b class='flag-5'>滤波器</b>的设计?

    FIR滤波器和IIR滤波器的区别与联系有哪些

    FIR滤波器和IIR滤波器是数字信号处理中的两种常见滤波器类型,它们在原理、结构和性能等方面存在显著的差异与联系。
    的头像 发表于 01-29 16:41 2656次阅读
    <b class='flag-5'>FIR</b><b class='flag-5'>滤波器</b>和IIR<b class='flag-5'>滤波器</b>的区别与联系有哪些

    全文详解IIR滤波器原理与设计方法

    IIR滤波器具有很高的滤波效率,在相同幅频响应条件下,所需的滤波器阶数明显比FIR滤波器低。其次,IIR
    发表于 01-22 09:25 9595次阅读
    全文详解IIR<b class='flag-5'>滤波器</b>原理与设计方法

    AD6620的FIR滤波器是什么类型的滤波器呢?

    请问AD6620的FIR滤波器是什么类型的滤波器呢?它的功能是什么呢?可不可以直接从AD6620的输出中进行符号同步的时钟提取呢?谢谢!!!
    发表于 12-22 07:00