• 首页 |  
  • 查询 |  
  • 供应 |  
  • 求购 |  
  • 资讯 |  
  • 产品中心 |  
  • 技术应用 |  
  • 商务中心 |  
  • IC供货商 |  
  • 下载中心 |  
  • 求职招聘 |  
  • 论坛 |  
  • 博客
  • 您所在的位置: 首页 > 新闻资讯 > 模拟技术 > 正文
    文章搜索:
    基于FPGA的FIR抽取滤波器设计

    http://www.ic36.com 2006年8月15日10:55

    摘   要:本文介绍了FIR抽取滤波器的工作原理,重点阐述了用XC2V1000实现FIR抽取滤波器的方法,并给出了仿真波形和设计特点。
    关键词:FIR抽取滤波器;流水线操作;FPGA

        用FPGA实现抽取滤波器比较复杂,主要是因为在FPGA中缺乏实现乘法运算的有效结构,现在,FPGA中集成了硬件乘法器,使FPGA在数字信号处理方面有了长足的进步。本文介绍了一种采用Xilinx公司的XC2V1000实现FIR抽取滤波器的设计方法。

    具体实现
    结构设计

        基于抽取滤波器的工作原理,本文采用XC2V1000实现了一个抽取率为2、具有线性相位的3阶FIR抽取滤波器,利用原理图和VHDL共同完成源文件设计。图1是抽取滤波器的顶层原理图。其中,clock是工作时钟,reset是复位信号,enable是输入数据有效信号,data_in(17:0)是输入数据,data_out(17:0)是输出数据,valid是输出数据有效信号。adder18是加法器模块,mult18是乘法器模块,acc36是累加器模块,signal_36to18是数据截位器模块,fir_controller是控制器模块。控制器定时向加法器、乘法器和累加器发送数据或控制信号,实现流水线操作。

    图1  抽取滤波器顶层原理图

    控制器
        控制器是抽取滤波器的核心模块,有两个功能:一是接收输入数据,二是向其它模块发送数据和控制信号。它根据加法器、乘法器和累加器的时序特性,有规律地向加法器发送抽头数据,向乘法器发送系数,向累加器发送控制信号,让加法器、乘法器和累加器在每个时钟周期都完成指定的任务,从而实现流水线操作。控制器用VHDL语言描述,用寄存器存放抽头和系数。

    加法器
        加法器的输入和输出都是18 bit,用VHDL语言描述实现。它有两个工作时钟的延迟,在输入数据准备好的情况下,第一个时钟得出相加结果,第二个时钟把相加结果锁存输出。

    乘法器
        乘法器为18 bit输入,36 bit输出,用库元件MULT18X18S和36 bit锁存器实现。MULT18X18S是XC2V1000自带的18×18 bit硬件乘法器,单个时钟就可完成乘法运算。36 bit锁存器工作于时钟的上升沿,用VHDL语言描述。乘法器(mult18)也有两个工作时钟的延时,在输入数据准备好的情况下,第一个时钟得出相乘结果,第二个时钟把相乘结果锁存输出。加法器和乘法器采用锁存输出的结构,虽然增加了一个工作时钟的延迟,但有利于抽取滤波器稳定的工作,提高可靠性。

    累加器
        36 bit累加器用于累加乘法器的输出,得出滤波结果。它有一个控制端口clr,当clr为高电平时,输出前一轮累加结果,并初始化,开始新一轮累加;当clr为低电平时,进行累加运算。累加器用VHDL语言描述。

    数据截位器

        数据截位器用VHDL语言描述,用于把累加器的36bit输出进行取舍处理,一般截掉数据低位部分,保留数据高位。为了对抽取滤波器进行功能仿真,这里截掉数据高18bit,保留数据低18bit。

    工作过程及功能仿真
        下面以抽取滤波器完成一次抽取滤波的全过程为例,说明抽取滤波器的工作过程。假设时钟1、时钟2、时钟3和时钟4控制器已接收了数据x(n-3)、x(n-2)、x(n-1)和x(n),那么,

    时钟5:控制器向加法器发送数据x(n)和x(n-3);
    时钟6:加法器进行x(n)+x(n-3)运算;控制器向加法器发送数据x(n-1)和x(n-2);
    时钟7:加法器进行x(n-1)+x(n-2)运算,输出x(n)+x(n-3)运算结果。控制器向乘法器发送系数h(0);
    时钟8:加法器输出x(n-1)+x(n-2)运算结果,乘法器进行h(0)[ x(n)+x(n-3)]运算,控制器向乘法器发送系数h(1);
    时钟9:乘法器进行h(1)[ x(n-1)+x(n-2)]运算,输出h(0)[ x(n)+x(n-3)]运算结果。控制器向累加器发送控制信号(clr为高电平);
    时钟10:乘法器输出h(1)[ x(n-1)+x(n-2)]运算结果。累加器初始化,开始累加操作。控制器向累加器发送控制信号(clr为低电平);
    时钟11:累加器进行累加运算:h(0)[ x(n)+x(n-3)]+ h(1)[ x(n-1)+x(n-2)]。控制器向累加器发送控制信号(clr为高电平),控制器输出滤波数据有效信号(valid为高电平);
    时钟12:累加器输出h(0)[ x(n)+x(n-3)]+ h(1)[ x(n-1)+x(n-2)] 累加结果,并初始化,开始新一轮累加操作。控制器输出滤波数据无效信号(valid为低电平)。

        以上就是抽取滤波器完成一次抽取滤波的全过程。可见,从数据x(n)输入到滤波结果y(n) 输出需要8个工作时钟。如果控制器不停地向乘法器和加法器发送抽头、系数和控制信号,就会形成流水线操作,那么每过两个时钟,抽取滤波器就会输出一个滤波结果。

    两点注意事项
    (1)两个n位二进制数相加,其和至少需要n+1位二进制数才能正确表示。本设计中的加法器输入/输出都是18bit,为了防止加法器溢出,应确保18bit输入数据x(n)的最高两位相同(都是符号位)。
    (2)为了实现抽取滤波器的多级串联结构,应统一输入数据有效信号enable和输出数据有效信号valid的时序要求。本设计规定控制器在累加器输出滤波结果后的下一个时钟送出滤波结果有效信号,时宽为一个工作时钟周期。

    设计特点
        采用此设计结构实现抽取滤波器有以下三个特点:
    (1)节省片内资源,提高资源使用效率。由于利用IP核生成的滤波器往往不能针对实际情况合理的利用片内资源,造成资源浪费。本设计采用了流水线结构,所有功能模块都满负荷工作,没有空闲等待时钟,从而节省了片内资源,提高了资源利用率。
    (2)可以实现抽取滤波器多级结构。针对抽取滤波器的输出特性,可以采取相同的设计方法,再设计一级抽取滤波器,对前一级输出的数据再次抽取滤波,从而实现多级抽取滤波器结构。
    (3)设计灵活,扩展性强。用寄存器存放抽头和系数适用于滤波器阶数较少的情况,如果需要用上百阶的抽取滤波,最好用XC2V1000片内RAM存放抽头和系数,这时只要稍微改动控制器的逻辑设计即可实现。在此基础上,还可实现可编程抽取滤波器。

    结语
        本文以实现抽取率为2、具有线性相位的3阶FIR抽取滤波器为例,介绍了一种用Xilinx公司的XC2V1000实现FIR抽取滤波器的设计方法。用该方法设计出的抽取滤波器灵活性强,资源利用率高,能广泛应用于数字接收领域。


    (关键词):取滤波器 流水线操作 FPGA

    IC型号速查
    [0]  [1]  [2]  [3]  [4]  [5]  [6]  [7]  [8]  [9]  [A]  [B]  [C]  [D]  [E]  [F]  [G]  [H]
    [I]  [J]  [K]  [L]  [M]  [N]  [O]  [P]  [Q]  [R]  [S]  [T]  [U]  [V]  [W]  [X]  [Y]  [Z]
    相关链接
    价格低廉的Cyclone FPGA2006-6-14 13:12:26
    HDLC控制协议的FPGA设计与实现2006-6-19 9:02:21
    基于FPGA的HDLC转E1传输控制器的实现2006-8-17 10:20:28
    DVB-C解交织器的FPGA实现2006-10-13 10:35:54
    XScale PXA270在Linux下的FPGA设备驱动2006-10-13 16:29:00
    FPGA双雄各推新品 65nm技术竞赛开锣2006-10-17 10:11:52
    XILINX宣布推出PLANAHEAD 8.2设计套件2006-9-1 9:13:29
     我来评两句
    查看最新评论〗 

    昵称:  匿名
    请您注意:
    ·遵守中华人民共和国的各项有关法律法规
    ·承担一切因您的行为而导致的法律责任
    ·本网留言板管理人员有权删除其管辖留言内容
    ·您在本网的留言,本网有权在网站内转载或引用
    ·参与本留言即表明您已经阅读并接受上述条款

    芯片之家  电子之家  电子元器件之家  半导体之家  微电子之家 
    ·免费发布紧急IC求购 ·到哪里找工厂求购 ·全球最好十个IC网站 ·我为什么选择IC36
    ·IC是怎样炼成的 ·想知道所有的IC封装吗 ·如何鉴别旧货刷新货 ·芯片的前缀代表什么
    ·IC行业的网站体验 ·元器件常见问题解答 ·这里居然可以实时洽谈 ·有问必有答
    ·IC行业之25颗钻石 ·IC代理商查询 ·十家最牛的公司 ·中国IC公司200强
    元器件之家  晶圆之家  集成电路之家  电子元件之家  模块之家  电子管之家
    ·舍我其谁的高级会员 ·IC36是怎样收费的 ·网站广告是如何占领的 ·IC之家的增值服务
    ·我该到哪里去找工作 ·到哪里去招人呢 ·今日芯片需求排行 ·还有我们没有的型号吗
    ·中国IC行业的害群之马 ·中国最优秀的IC供应商 ·国外的IC骗子公司 ·信誉良好的IC供货商
    ·谁是IC之家的明星 ·做我们的代理吧 ·免费注册 机不可失 ·广告热线 010-51653935
    热 点 专 题
    热 点 论 坛
    关于我们 | 增值服务 | 免责条款 | 收费标准 | 付款方式 | 广告服务 | 网站地图 | 联系我们 | 友情链接 | 网站代理
    MSN:ic36@hotmail.com  QQ:IC之家 在线咨询  联系电话:(010)51653935 传真:(010)51653936 客户服务:service@ic36.com
    Copyright © 2003-2006 IC36.COM IC之家 本网站中文域名:IC之家 芯片之家
    京ICP证060068号