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

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

3天内不再提示

无流水的FIR滤波器设计

FPGA设计论坛 来源:CSDN技术社区 作者:FPGADesigner 2022-04-27 12:42 次阅读

流水线

这里先用通俗易懂的语言描述一下流水线设计思想。假设小A要从成都到哈尔滨旅游,如果直接坐火车过去恐怕要累得受不了;如果在旅程中间加几站,比如到西安、北京、天津找个客栈休息一下,路上就更加精力充沛了。

对于信号而言也是一样,加入一个状态为1的信号x需要从寄存器A传输到寄存器B,这条路线上只有组合逻辑(没有休息的地方),那么x必须保证在路上的时间保持1不变,如果传到一半值变为0了那就出错了。所以,A到B的延时就决定了系统的工作频率不能高于多少(否则会出错),系统的最大工作频率也是由最长路径上的延时决定的。

但是,假设在A到B这条路上,增加几个寄存器(信号休息的“客栈”),相当于将路径拆分为几段,信号x就不必再害怕丢失状态。缩短了路径,也就缩短了延时,也就提高了系统可以工作的最高频率。这个过程就称作“设计流水线化”。

无流水的FIR滤波器设计

1.搭建模型

FPGA数字信号处理系列》中详细讨论过各种FIR滤波器的实现方法。本设计采用直接型FIR滤波器,并行结构,在Simulink中添加block按下图连接:

ca223f5e-c5df-11ec-bce3-dac502259ad0.jpg

上面的设计与本系列第2篇中的设计基本相同,除了将Digital FIR Filter替换为了自己设计的子系统。子系统设计方法如下:先按照直接型FIR结构连接好各个block(如下图),将所有的block选中,点击Simulink工具栏的Diagram->Subsystem&Model Reference->Create subsystem from selection。

ca3c5fb0-c5df-11ec-bce3-dac502259ad0.jpg

滤波器系数与本系列第2篇中相同,系统设置20MHz采样率,1.5MHz通带截止频率、8.5MHz阻带截止频率,对1MHz+9MHz的叠加信号滤波。上图中所有加法器(AddSub)和乘法器(Mult)中的Latency都为0,即纯组合逻辑。

为了System Generator在时序分析时检测到整个系统的时序,在FIR滤波器的输入和输出部分增加了一个Delay单元(在HDL模型中相当于寄存器)。

2.仿真验证与时序分析

运行仿真,滤波前后频谱结果如下,与第2篇中基本相同,滤除了9Mhz的频率分量,只留下了1MHz的正弦波信号:

ca5918e4-c5df-11ec-bce3-dac502259ad0.jpg

点击System Generator block中的Generate,运行时序分析:

ca6ee1d8-c5df-11ec-bce3-dac502259ad0.jpg

可以看到整个设计中最长的路径包含了1个乘法器和10个加法器,即直接从滤波器的输入到数据,线路延时有20.418ns,即系统最高运行频率不到50Mhz。

加法器流水线化

1.搭建模型

接下来将该设计流水线处理,来提高系统的运行速度。首先将加法器流水线化,有两种方法可以选择:1.在加法器之间加入Delay模块;2.将加法器的Latency设置为1,即一级流水。本设计采用更方便的第2中方法,修改子系统按下图连接:

ca86f692-c5df-11ec-bce3-dac502259ad0.jpg

Vivado中绝大多数IP核都是可以流水线化的,通过设置Latency实现。需要清楚的是,当加法器的输出有延时之后(需要计算时间),加法器同抽头延时链之间的数据就不同步了,必须做如下修改:

加法器增加了一级延时,抽头延时链相应也要多增加一级延时,即将Delay模块的Latency设置为2;

FIR结构中在第一个乘法器的输出部分省略了一个加法器(相当于第一个乘法器的结果+0),因此为了数据同步需要增加一个延迟为1的delay block。

2.时序分析

运行仿真,结果与上面相同,表明设计正确。再次点击System Generator block中的Generate,重新导出设计并运行时序分析:

caaab654-c5df-11ec-bce3-dac502259ad0.jpg

我们可以看到,在加法器流水线化之后(相当于加法器的输出结果会用一级寄存器缓存),整个设计中的最长路径变为了最后的1个乘法器+1个加法器,该路径延时降低为了8.079ns,相当于系统最高频率提升到了大约125Mhz,比上一个设计提高了2倍多。

乘法器流水线化

1.搭建模型

既然上一个设计中的最长路径中包含一个纯组合逻辑的乘法器,那我们就把乘法器也流水线化,再把路径做进一步拆分好了。将乘法器的Latency设置为3(表示三级流水),子系统连接图为:

cace2e7c-c5df-11ec-bce3-dac502259ad0.jpg

2.时序分析

运行仿真,结果与上面相同,表明设计正确。再次点击System Generator block中的Generate,重新导出设计并运行时序分析:

cae4d6cc-c5df-11ec-bce3-dac502259ad0.jpg

我们可以看到,在乘法器三级流水线化之后(相当于在计算乘法的整个过程中插入了三级寄存器作为缓存),整个设计中的最长路径变为了乘法器的输出到加法器这一段(不包含乘法运算),该路径延时降低为了3.401ns,相当于系统最高频率提升到了大约294Mhz,比最初的设计已经提高了大约6倍。

最后

总而言之,流水线化就是拆分组合逻辑路径,在路径中插入寄存器缓存中间结果的过程。当一个设计不满足我们期望的工作频率时,就需要从其延时最长的路径开始分析,将路径划分为多段,中间插入寄存器缓存。当然,流水线化会增加额外的资源消耗,选择“面积”还是选择“速度”正是设计者需要作出的考量。

原文标题:FPGA学习-流水线设计方法详解

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

审核编辑:汤梓红

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

    关注

    1625

    文章

    21648

    浏览量

    601473
  • 滤波器
    +关注

    关注

    160

    文章

    7716

    浏览量

    177562
  • FIR
    FIR
    +关注

    关注

    4

    文章

    146

    浏览量

    33095

原文标题:FPGA学习-流水线设计方法详解

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

收藏 人收藏

    评论

    相关推荐

    如何设计低通FIR滤波器

    此示例显示如何设计低通FIR滤波器。这里介绍的许多概念可以扩展到其他响应,如高通,带通等。FIR滤波器被广泛使用,因为它们具有强大的设计算法,以非递归形式实现时的固有稳定性,可以轻松实
    发表于 08-23 10:00

    怎么利用FPGA实现FIR滤波器

    并行流水结构FIR的原理是什么基于并行流水线结构的可重配FIR滤波器的FPGA实现
    发表于 04-29 06:30

    什么是fir数字滤波器 什么叫FIR滤波器

    什么是fir数字滤波器 Part 1: Basics1.1 什么是FIR滤波器?FIR 滤波器
    发表于 01-16 09:42 1.7w次阅读

    FIR并行滤波器设计

    FIR并行滤波器设计 数字滤波器可以滤除多余的噪声,扩展信号频带,完成信号预调,改变信号的特定频谱分量,从而得到预期的结果。数字滤波器在DVB、
    发表于 01-16 09:47 1416次阅读
    <b class='flag-5'>FIR</b>并行<b class='flag-5'>滤波器</b>设计

    基于流水线技术的并行高效FIR滤波器设计

    基于流水线技术的并行高效FIR滤波器设计 基于流水线技术,利用FPGA进行并行可重复配置高精度的FIR
    发表于 03-28 15:12 805次阅读
    基于<b class='flag-5'>流水</b>线技术的并行高效<b class='flag-5'>FIR</b><b class='flag-5'>滤波器</b>设计

    基于流水线的并行FIR滤波器设计

    基于流水线技术,利用FPGA进行并行可重复配置高精度的 FIR滤波器 设计。使用VHDL可以很方便地改变滤波器的系数和阶数。在DSP中采用这种FIR
    发表于 07-18 17:09 63次下载
    基于<b class='flag-5'>流水</b>线的并行<b class='flag-5'>FIR</b><b class='flag-5'>滤波器</b>设计

    高阶FIR正交镜像滤波器的设计

    本文计论了高阶FIR型正交镜像滤波器的设计问题。根据FIR 正交镜像滤波器 设计的基本原理,将高阶正交镜像滤波器的设计问题转换为单变量的优化
    发表于 08-29 16:16 29次下载
    高阶<b class='flag-5'>FIR</b>正交镜像<b class='flag-5'>滤波器</b>的设计

    fir_滤波器sourc

    fir滤波器的有关资料 fir_滤波器sourc.rar
    发表于 12-14 14:12 24次下载

    基于MATLAB的FIR滤波器设计与滤波

    基于MATLAB的FIR滤波器设计与滤波
    发表于 12-14 22:08 64次下载

    详解FIR滤波器和IIR滤波器的区别

    数字滤波器广泛应用于硬件电路设计,一般分为FIR滤波器和IIR滤波器。那么FIR滤波器和IIR
    发表于 05-03 11:36 20次下载

    基于FPGA的硬件加速FIR流水结构滤波器实现、设计及验证

    摘要:有限冲击响应(FIR)滤波器是数字通信系统中常用的基本模块。文章设计了一种流水结构的FIR滤波器,通过FPGA对其进行硬什加速控制。仿
    发表于 11-18 06:15 1471次阅读
    基于FPGA的硬件加速<b class='flag-5'>器</b>的<b class='flag-5'>FIR</b><b class='flag-5'>流水</b>结构<b class='flag-5'>滤波器</b>实现、设计及验证

    线性相位FIR滤波器设计

    如果一个FIR滤波器的脉冲响应函数具有对称性或反对称性,则其相位响应是频率的线性函数r或附加一个固定的初始相位),这样的滤波器称为线性相位FIR滤波
    发表于 12-21 14:24 5次下载

    FIR滤波器的FPGA设计与实现

    本文针对快速、准确选择参数符合项目要求的滤波器设计方法的目的,通过系统的介绍有限脉冲响应( Finite Impulse Response,FIR滤波器的原理、结构形式以及几种FIR
    发表于 12-21 14:53 14次下载
    <b class='flag-5'>FIR</b><b class='flag-5'>滤波器</b>的FPGA设计与实现

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

    1.根据冲激响应的不同,将数字滤波器分为有限冲激响应(FIR滤波器和无限冲激响应(IIR)滤波器。对于FIR
    的头像 发表于 12-30 23:45 3568次阅读

    IIR滤波器FIR滤波器的区别

    数字滤波器是数字信号处理中最常用的一种技术,可以对数字信号进行滤波、降噪、增强等处理,其中最常见的两种数字滤波器是IIR滤波器FIR
    的头像 发表于 06-03 10:21 1.9w次阅读