老古开发网首页
导航:老古开发网首页文章索引索引第1515页文章分类芯片介绍第10页→[基于FPGA的FIR抽取滤波器设计]
| -文章搜索 - 最新文章 - |

第7251篇:基于FPGA的FIR抽取滤波器设计

发布时间:2005年12月30日 点击次数:1340
来源:   作者:国防科技大学ATR实验室 佟力永 肖山竹
 

摘   要:本文介绍了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抽取滤波器的设计方法。用该方法设计出的抽取滤波器灵活性强,资源利用率高,能广泛应用于数字接收领域。


欢迎进入老古论坛进行讨论
[芯片介绍] 相关文章:
Blackfin531与PCF8576的接口设计及 I2C协议实现
简介:
摘 要:本文简述了PCF8576的工作原理,并给出了BF531与PCF8576的连接方法和软件设计。 关键词:I2C总线;Blackfin531;液晶显示 引言 本文将结合一个具体的实例来说明如何实现BF531与LCD驱动芯片PCF8576的接口,以及用BF53x自带的PF口模拟实现I2C通信,并且选择结构化设计的C语言来表示模拟通信协议的各个部分,可以方便地更改各种参数。 PCF8576简介 PCF8576为带有I2C总线接口的字符式LCD驱动/控制器,它有4个......

一种基于USB的通用无线传输接口设计
串行 LVDS 接口ADC改善电路板的布线设计
基于VC0701与红外技术的人体检测系统设计
IR的60V DirectFET功率MOSFET最大导通电阻为7.0 mΩ
 
下一个:[电源技术]用MAX1672设计便携式设备电源
简介:
摘 要:本文以MAX1672为例介绍了升/降压DC-DC转换器的基本原理,针对应用中可能出现的各种问题提出了解决的方法,最后提出了一个用MAX1672设计的便携仪器电源。 关键词:升/降压DC-DC转换器;MAX1672;便携仪器电源 引言 MAX1672是升/降压DC-DC转换器,其输入电压范围特别宽(1.8-11V),输出电压也可以在1.25-5.55V之间调节(预设置为3.3、5.0V)。这样的设计非常适合应用在由电池供电的输入电压可能会随......

上一个:[消费类电子]安富利与飞思卡尔联手主办研讨会 支持制造商创新

老古开发网版权所有 2006年9月 asp.Net V2.0 设计:老古
页面缓存:30分钟 执行时间:109毫秒