基于XC2V1000型FPGA的FIR抽取滤波器的设计
时间:09-16
来源:互联网
点击:
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抽取滤波器的设计方法。用该方法设计出的抽取滤波器灵活性强、资源利用率高,能广泛应用于数字接收领域。
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抽取滤波器的设计方法。用该方法设计出的抽取滤波器灵活性强、资源利用率高,能广泛应用于数字接收领域。
滤波器 集成电路 DSP FPGA Xilinx 无线电 VHDL 仿真 相关文章:
- 数字下变频的FPGA实现(05-12)
- 用FPGA实现音频采样率的转换(02-07)
- 基于FPGA的任意时延伪码序列产生方法(04-12)
- 基于FPGA实现变采样率FIR滤波器的研究(04-13)
- 基于CPLD的CCD信号发生器的研究(04-08)
- 利用FPGA和CPLD数字逻辑实现ADC(06-04)