EDN China > 技术文章 > 可编程器件 > FPGA > 正文
? 2016博客大赛-不限主题,寻找电子导师,大奖升级??

基于XC2V1000型FPGA的FIR抽取滤波器的设计

来源:国外电子元器件/佟力永 肖山竹?? 2006年09月18日 ?? 收藏0

1 引言

  抽取滤波器广泛应用在数字接收领域,是数字下变频器的核心部分。目前,抽取滤波器的实现方法有3种:单片通用数字滤波器集成电路、DSP和可编程逻辑器件。使用单片通用数字滤波器很方便,但字长和阶数的规格较少,不能完全满足实际需要。使用DSP虽然简单,但程序要顺序执行,执行速度必然慢。现场可编程门阵列(FPGA)有着规整的内部逻辑阵列和丰富的连线资源,特别适用于数字信号处理,但长期以来,用FPGA实现抽取滤波器比较复杂,其原因主要是FPGA中缺乏实现乘法运算的有效结构。现在,FPGA集成了乘法器,使FPGA在数字信号处理方面有了长足的进步。本文介绍用Xilinx公司的XC2V1000型FPGA实现FIR抽取滤波器的设计方法。

2 XC2V1000简介

  Virtex-Ⅱ系列是Xilinx公司近几年研发的具有高性能、高速度和低功耗特点的新一代FPGA,一经问世就备受界内人士的青睐。该系列FPGA基于IP核和专用模块设计,能够为电信、无线电、网络、视频和数字信号处理领域的应用提供完整的解决方案。XC2V1000是Virtex-Ⅱ家族的一员,具有如下主要特点:

  ●

100万个系统门;

  ●40×32个可配置逻辑单元(5120个slice);

  ●40个18×18 bits乘法器,1个工作时钟内即可完成乘法运算;

  ●720Kbits RAM,可灵活配置(单口、双口、有使能或无使能等);

  ●8个DCM(Digital Clock Manager)模块;

  ●328个用户I/O。

  此外,Xilinx公司还提供了功能强大的开发平台(ISE),开发者可通过该平台完成全部设计。

3 抽取滤波器的工作原理

  抽取滤波器的工作原理是在滤波过程中实现抽取。对于抽取率为N的抽取滤波器而言,不是每进入1个新数据就完成1次滤波运算,然后再抽取,而是当进来N个数据时滤波器才完成1次滤波运算,输出1次滤波结果。抽取滤波器的结果和先滤波后抽取的结果是一致的,只是对于同样的数据,进行滤波运算的次数大大减少。在数字系统中采用抽取滤波器的最大优点是增加了每次滤波的可处理时间,从而达到实现高速输入数据的目的。下面以抽取率为2的具有线性相位的3阶FIR抽取滤波器为例介绍抽取滤波器的实现过程。

  线性相位的FIR滤波器的系数具有某种对称的性质[1],3阶Ⅱ类FIR线性相位滤波器在数学上可以表示为

公式

  其中,h(0)=h(3),h(1)=h(2)。其结构如图1所示。由图1可见,具有4个系数的3阶Ⅱ类FIR线性相位滤波器只需2次加法、2次乘法和2次累加就可以完成1次滤波运算。如果IPGA工作时钟为80MHz,输入x(n)的数据率也为80MHz,那么经2倍抽取后输出y(n)为40MHz。也就是说,抽取滤波器每完成1次滤波运算,需要2个工作时钟。如果加法器、乘法器和累加器在单个时钟内就能完成1次功能运算,那么只需1个加法器、1个乘法器和1个累加器采用流水线操作在2个工作时钟内就可以完成2次加法、2次乘法和2次累加运算,就可以完成一次抽取滤波。

3阶Ⅱ类FIR线性相位滤波器结构

4 具体实现

4.1 结构设计

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

抽取滤波器的顶层原理图

点击看原图

4.1.1控制器(fir_controller)

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

4.1.2加法器(adder18)

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


4.1.3乘法器(multl8)

  乘法

上一页123下一页
?? ?? ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
?? ??

滤波器? FPGA? FIR? 数字接收?

相关文章

我来评论
美国的游客
美国的游客 ??? (您将以游客身份发表,请登录 | 注册)
?
有问题请反馈