傻大方


首页 > 学习 >

基于FPGA的IIR数字滤波器设计( 三 )



按关键词阅读:


图5时序控制模块仿真图
时序控制模块仿真如图5所示,其中counter为程序内部计数信号,在clk的上升延到来时,counter以6个时钟为周期开始进行计数,clk_regbt每隔6个时钟输出一个低电平,clk_reg则每隔6个时钟后输出一个高电平 。输出的两个时钟信号正好控制延时模块、补码乘加模块和累加模块的模块的运行 。符合设计要求 。时序控制模块程序见附录 。
2 延时模块的设计与仿真结果分析
延时模块的符号如图6所示,其主要作用是在clk时钟作用下将差分方程的各x、y值延迟一个时钟,以实现一次延时运算,即当输入为xn和yn时,经过一次延时后其输出分别为x(n-1)和y(n-1).其中yout是反馈输入信号,xn是输入信号 。
基于FPGA的IIR数字滤波器设计
文章图片

图6 延时模块图
基于FPGA的IIR数字滤波器设计
文章图片


图7 延时模块仿真图 延时模块仿真图如图7所示,由图3-4可以看出当输入的xn 、yout 都为{}5,4,3,2,1,0时,在时钟信号上升沿的作用下产生延时,经第一个时钟后x0、x1、x2、y0、y1的值分别为1,0,0,1,0 。经第二个时钟后x0、x1、x2、y0、y1的值分别为2,1,0,2,
1 。经第三个时钟后x0、x1、x2、y0、y1的值分别为3,2,1,3,2 。经第四个时钟后......由此可见该模块仿真值正确 。延时模块程序见附录 。
3 补码乘加模块的设计与仿真结果分析
补码乘加模块主要用来实现输入序列{})(n X 、{})(n Y 与系数i a 、i b 分别相乘后再相加的过程 。即实现211022110----++++=n n n n n n y b y b x a x a x a y 的算法 。为了避免过多地使用乘法器,本设计中乘加单元(MAC )的乘法器采用阵列乘法器,以提高运算速度 。由于MaxplusⅡ的LPM 库中乘法运算为无符号数的阵列乘法,所以使用时需要先将两个补码乘数转换为无符号数相乘后,再将乘积转换为补码乘积输出[5] 。每个二阶节完成一次运算共需要6个时钟周期,而且需采用各自独立的MAC 实现两级流水线结构,即每个数据经过两个二阶节输出只需要6个时钟周期 。模块的符号如图8所示 。
基于FPGA的IIR数字滤波器设计
文章图片


图8补码乘加模块图

基于FPGA的IIR数字滤波器设计
文章图片

图9补码乘加模块仿真图
补码乘加模块仿真图如图9所示,clk_regbt 及clk_reg 为输入时钟,由时序控制模块提供 。i a 、1-j b 为系数,x0、x1、x2、y0、y1为输入信号,yout 为输出信号,图3-3(b)中75为x0、x1、x2、y0、y1的值15和系数i a 、1-j b 相乘后再相加的结果,完成了补码乘加的功能 。补码乘加模块程序见附录 。
4 累加模块的设计与仿真结果分析
补码乘加模块所输出的信号送入累加器后,与寄存于累加器中的上一步计算的中间结果相加,最后将此步的计算结果经由输出引脚输出,所得信号即为最终结果 。即该模块主要实现youtput=yout+youtput(n-1)的算法,模块的符号如图10所示 。
基于FPGA的IIR数字滤波器设计
文章图片


图10 累加模块图

基于FPGA的IIR数字滤波器设计
文章图片


图11 累加模块仿真图
累加模块仿真图如图11,其中res 为复位信号,clk 为时钟信号,yout 为输入信号,由补码乘加模块的输出信号yout 提供,由图中可以看出当输入信号为yout={}5,4,3,2,1,0,输出为youtput={}15,10,6,3,1,0,实现了累加的功能 。符合设计要求 。累加模块程序见附录 。
三、顶层架构及仿真
1顶层模块设计
顶层模块设计采用了原理图输入方法,原理图输入方式非常直观,便于信号观察和电路的调节 。
基于FPGA的IIR数字滤波器设计
文章图片


图12顶层模块图
本文设计的顶层文件名为iir.gdf,设计生成的逻辑符号如图3-5所示 。顶层模块设计程序见附录 。
四、IIR 数字滤波器的仿真与结果分析
1 IIR 数字滤波器的系统设计
IIR 数字滤波器顶层原理图如图13所示 。
为了便于理解整个系统的设计,现将系统的运行过程进行说明:
基于FPGA的IIR数字滤波器设计
文章图片

图13 IIR数字滤波器顶层原理图
系统先开始处于初始状态,当清零信号为“1”时,对整个系统进行清零 。在清零信号为“0”的前提,时序控制模块在时钟clk上升沿的作用下产生两个信号CLK_REG 及CLK_REGBT,其中CLK_REG信号用来作为延时模块、补码乘加模块和累加模块的输入时钟,CLK_REGBT每隔6个时钟产生一个高电平作为这三个模块的复位信号 。延时模块在接收到CLK_REG高电平信号时清零输出端,接收到低电平时,在CLK_REGBT 上升沿的作用下对输入信号进行延时,以实现一次延时运算,而后将延时信号输出,送给补码乘加模块 。补码乘加模块在接收延时信号的同时也接收读者输入的系数信号,在CLK_REGBT上升沿的作用下实现系数和延时信号的补码乘加运算,而此步骤需要6个时钟来完成,正好与时序控制模块的输出信号CLK_REGBT相一致 。补码乘加模块的输出一部分送入延时模块以实现信号的反馈,另一部分则送入到累加模块,在累加模块中进行结果累加后输出,得到最终结果 。


稿源:(未知)

【傻大方】网址:/a/2021/0402/0021244148.html

标题:基于FPGA的IIR数字滤波器设计( 三 )


上一篇:基于SNMP的校园网络管理策略研究

下一篇:基于RFID的员工考勤应用系统