IIR数字滤波器设计-在FPGA上实现任意阶IIR数字滤波器
[11-20 16:13:34] 来源:http://www.88dzw.com FPGA 阅读:8724次
文章摘要: 除了系数存在量化误差,数字滤波器运算过程中有限字长效应也会造成误差,因此对滤波器中乘法器、加法器及寄存器的数据宽度要也进行合理的设计,以防止产生极限环现象和溢出振荡。IIR数字滤波器的VHDL描述 由上一节设计出来的IIR数字滤波器可以进一步用VHDL语言加以描述,通过编译、功能仿真、综合和时序仿真之后就可以在FPGA上实现了。由于采用了级联结构,每一个二阶基本节的VHDL描述都是类似的,只是滤波器的系数有所不同,下面着重讨论二阶基本节的VHDL描述。 采用VHDL描述的二阶基本节的顶层结构如图3所示。数据在执行单元内进行处理。执行单元内部包含算术和逻辑单元以及一些寄
IIR数字滤波器设计-在FPGA上实现任意阶IIR数字滤波器,标签:fpga是什么,fpga教程,http://www.88dzw.com除了系数存在量化误差,数字滤波器运算过程中有限字长效应也会造成误差,因此对滤波器中乘法器、加法器及寄存器的数据宽度要也进行合理的设计,以防止产生极限环现象和溢出振荡。
IIR数字滤波器的VHDL描述
由上一节设计出来的IIR数字滤波器可以进一步用VHDL语言加以描述,通过编译、功能仿真、综合和时序仿真之后就可以在FPGA上实现了。由于采用了级联结构,每一个二阶基本节的VHDL描述都是类似的,只是滤波器的系数有所不同,下面着重讨论二阶基本节的VHDL描述。
采用VHDL描述的二阶基本节的顶层结构如图3所示。数据在执行单元内进行处理。执行单元内部包含算术和逻辑单元以及一些寄存器;算术和逻辑单元主要由串行乘法器和累加器组成;存储器包括工作RAM和系数ROM两部分,分别用于存放计算的中间结果和滤波器的系数;存储器和执行单元通过内部总线相连接;控制模块包括程序ROM和程序控制单元,程序ROM中存放有滤波算法的程序,程序控制单元用于解释指令并为数据处理模块产生控制信号。
此结构既可以接收串行输入的数据,也可以接收并行输入的数据,通过SEL进行设置。外部CPU可以通过READ信号来访问滤波器的计算结果,另外,外部CPU也可以通过地址总线A[3:0]对内部的存储器进行访问,用WRITE信号对滤波器系数进行写操作,这样外部CPU就可以根据自己的需要对滤波器进行配置,灵活地实现各种功能。 各信号的含义如下:
- CLK:系统时钟;
- RES:异步全局复位信号,低有效;
- SDATA:串行输入数据;
- PDATA:并行输入数据;
- SEL:设置输入数据为并行还是串行;
- READ:读信号,低有效;
- WRITE:写信号,低有效;
- SRES:同步复位信号,高有效;
- CLKI:外部CPU时钟;
- A[3:0]:外部CPU访问内部寄存器的地址总线;
- OUT:输出数据。
内部算术与逻辑单元是整个滤波器的核心,它的结构如图4所示。
计算过程是,X、Y为输入数据,通过选择器进入乘法器,算术与逻辑单元从系数ROM中读取滤波器的系数用以输入数据相乘,相乘的结果与前一步的结果相加进入累加器,累加器读取上一步计算的中间结果A并计算,最后将此步计算的结果M存入到RAM中去。
结语
本文介绍了一种采用级联结构在FPGA上实现IIR数字滤波器的方法。在实际使用中,可以根据不同精度要求,方便地对该IIR滤波器进行修改以满足不同的指标要求,灵活地组成任意阶不同类型的滤波器。同时,在系统运行中,外部CPU可以灵活修改滤波器系数,改变滤波器的频率响应,满足特定的应用要求。
《IIR数字滤波器设计-在FPGA上实现任意阶IIR数字滤波器》相关文章
- › 用FPGA设计的四阶IIR数字滤波器
- › IIR数字滤波器设计-在FPGA上实现任意阶IIR数字滤波器
- 在百度中搜索相关文章:IIR数字滤波器设计-在FPGA上实现任意阶IIR数字滤波器
- 在谷歌中搜索相关文章:IIR数字滤波器设计-在FPGA上实现任意阶IIR数字滤波器
- 在soso中搜索相关文章:IIR数字滤波器设计-在FPGA上实现任意阶IIR数字滤波器
- 在搜狗中搜索相关文章:IIR数字滤波器设计-在FPGA上实现任意阶IIR数字滤波器