您好,  [请登录] [QQ登录]  [支付宝登录[免费注册]

商品分类

分享到: 百度搜藏 搜狐微博 新浪微博 腾讯微博 QQ收藏 人人网 Facebook Twitter

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

发布日期:2011-04-19


   择要:先容XC2V1000型现场可编程门阵列(FPGA)的重要特性和FIR抽取滤波器的事变原理,重点叙述用XC2V1000实现FIR抽取滤波器的要领,并给出仿真波形和计划特点。 
   关键词:FIR抽取滤波器;流水线操纵;XC2V1000;现场可编程门阵列


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次累加运算,就可以完成一次抽取滤波。

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)
  乘法器是18bits输入和36bits输出,用库元件MULT18X18S和36bits锁存器实现。MULT18Xl8S是XC2V1000自带的18×18bits乘法器,单个时钟就可完成乘法运算;36bits锁存器事变于时钟的上升沿,用VHDL语言形貌。乘法器(mult18)也有2个事变时钟的延时,在输入数据准备好的环境下,第一个时钟得出相乘结果,第二个时钟把相乘结果锁存输出。加法器和乘法器采取锁存输出的布局,固然增长了1个事变时钟的耽误,但有利于抽取滤波器稳固的事变,进步可靠性。

4.1.4累加器(acc36)
  36bits累加器用于累加乘法器的输出,得出滤波结果。它有1个控制端口clr,当clr为高电平常,输出前一轮累加结果,并初始化开始新一轮累加;当clr为低电平常.举行累加运算。累加器用VHDL语言形貌。

4.1.5数据截位器(signal_36-18)
  数据截位器用VHDL语言形貌,用于把累加器的36位输出举行弃取处理惩罚,一样平常截失数据低位部分,保存数据高位。为了对抽取滤波器举行成果仿真,这里截失数据高18位,保存数据低18位。

4.2 事变进程及成果仿真
  加法器、乘法器和累加器在控制器的作用下每个时钟都要完成指定的任务,从而形成流水线操纵,实现抽取滤波。

  下面以抽取滤波器完成1次抽取滤波的全进程为例,阐明抽取滤波器的事变进程。假设时钟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)1运算结果。控制器向累加器发送控制信号(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为低电平);

  以上便是抽取滤波器完成1次抽取滤波的全进程。可见,从数据x(n)输入到滤波结果y(n)输出必要8个事变时钟。要是控制器不绝地向加法器、乘法器和加法器发送抽头、系数和控制信号,就会形成流水线操纵,那么每2个时钟,抽取滤波器就会输出1个滤波结果。图3是抽取滤波器的仿真波形图,此中在控制器中设置系数h(0)=1和h(1)=2。

 

4.3细致事变
  2个n位二进制数相加,其和至少必要n+l位二进制数才华精确表现。本计划中的加法器输入输出都是18位,为了防备加法器溢出,应确保18位输入数据x(n)的最高2位雷同(都是标记位)。

  为了实现抽取滤波器的多级串联布局,应同一输入数占据效信号enable和输出数占据效信号valid的时序请求。本计划规定控制器在累加器输出滤波结果数后下1个时钟送出滤波结果有效信号,时宽为1个事变时钟周期。

5 计划特点
  采取此计划布局实现抽取滤波用具有以下3个特点:

  (1)节流片内资源和进步资源利用服从
  Xilinx公司为了方便用户计划滤波器,在IP核中集成了通用数字滤波器的计划,但利用IP核天生的数字滤波器每每不克不及针对实际环境公道地利用片内资源,导致资源浪费。本计划中采取了流水线布局,全部成果模块都满负荷事变,没有空闲等待时钟,从而节流了片内资源,进步了资源利用率。

  (2)可以实现抽取滤波器多级布局
  针对抽取滤波器的输出特性,可以采取雷同的计划要领再计划一级抽取滤波器,对前一级输出的数据再次抽取滤波,从而实现多级抽取滤波器布局。

  (3)计划机动且扩展性强
  用寄存器存放抽头和系数实用于滤波器阶数较少的环境,要是必要用上百阶的抽取滤波,最好用片内:RAM存放抽头和系数,这时只要稍加窜改控制器的逻辑计划既可实现。在此底子上,还可实现可编程抽取滤波器。

6 结束语
  本文以实现抽取率为2的具有线性相位的3阶FIR抽取滤波器为例,先容了一种用XC2V1000型FPGA实现FIR抽取滤波器的计划要领。用该要领计划出的抽取滤波器机动性强、资源利用率高,能遍及应用于数字吸取范畴。