Verilog实现多相滤波器

一、多相滤波器,能够使用较低频率的时钟,实现较高数据率的数据滤波抽取。(咳咳 先正式一点)

在实际的工程应用中, 为了降低硬件实现时的数据率, 往往需要进行多相分解。采用多相滤波结构,可利用Q个阶数较低的滤波来实现原本阶数较高的滤波,而且每个分支滤波器处理的数据速率仅为原数据速率的I/Q,这为工程上高速率实时信号处理提供了实现途径。多相分解是指将数字滤波器的传输函数H (z) 分解成若干不同相位的滤波器组。FIR滤波器h(n)的系统函数为

将冲激响应h (n) 的抽头系数分成Q组, 长度N是Q的整数倍;若N不是Q的整数倍, 需要对N进行补零, 使之满足整数倍的关系。那么H (z) 的多相分解结果为

其中Ek (Z^Q)为每个分相的子滤波器。多相滤波器的一般结构为

采用多相结构实现滤波器的基本思想是将输入信号进行相应延迟后,分别送至Q个通道进行滤波,然后将每一支路滤波后的数据相加,得到最终输出结果。在使用多相滤波器完成滤波后进行D倍抽取,在实现时可以将延时和抽取结合在一起,采用此结构进行抽取滤波时将滤波器分成D相,在该结构中包括3个模块:(1)串并转换,将输入数据转换成D路并行信号;(2)多相滤波,将得到的D路信号进行滤波;(3)加法运算,将滤波后的信号相加得到最终输出信号。

 二、以实际的双相滤波、二倍抽取为例

在AD变换前的过程就是升采样然后滤波并抽取的过程。

二相滤波器可以实现以aMHz的时钟来实现2aMHz数据率的处理,滤波完成输出后并实现二倍抽取。

实现结构如下(有点简陋 各位见笑了)

在多相滤波器实现时将延时和抽取结合在一起,电子开关以频率FX每逆时针旋转一周,在每次转到p0(n)时,输出端就以频率FX/2送出一个y(m)样值。在开始时只有x(0)进入p0(n),p1(n)无信号,所以总输出y(0)= p0(n)x(0)=h(0)x(0)。逆时针旋转进入下一周期,电子开关转到p1(n),x(1)进入p1(n),p1(n)的输出为p1(0)x(1)=h(1)x(1),然后电子开关又转到p0(n),此时,x(2)进入p0(n)第一节,上一周期中进入p0(n)的x(0)移位到p0(n)的第二节,所以p0(n)的输出为p1(0)x(2)+ p1(1)x(0)= h(0)x(2)+ h(2)x(0),总的输出为y(1)= h(0)x(2)+ h(2)x(0)+ h(1)x(1)。依次可以推导出此结构实现了二倍抽取。

三、用Verilog实现一下下

首先MATLAB生成滤波器系数,然后腻那个旋转开关怎么实现呀!一个时钟信号aMHz,另一个时钟信号aMHz,哈哈哈,俩一样!

但是  CLK_1 = ~CLK_2

将2aMHz的数据直接接入两项滤波器里面,由于时钟上升沿有效,刚好第一个数据第一相读入,第二个数据第二项读入……

然后数据处理完后,两项都有输出,要实现同时相加,相加时钟选取时钟CLK_1,按上面所说的(下图),第二相数据输出早于第一相半个时钟周期,但是数据会保持一个时钟周期,在半个周期后等到第一相CLK_1的上升沿,相加输出。

 

 

 always @ (posedge CLK_1) begin
        if(!rst) begin
            Data_out <= x'd0;
        end
        else  begin
            Data_out <= Data_1 +Data_2;
        end

哈哈哈哈,只会always begin end咋办!代码后面改改再贴。
 

       
          
 

  • 1
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
多相滤波组是一种数字信号处理件,用于对输入信号进行滤波处理。它主要由多个相位滤波组成,每个滤波都对输入信号进行不同相位的滤波操作。多相滤波组在许多领域中有广泛的应用,比如音频处理、图像处理等。 多相滤波组的主要功能是将输入信号分成多个不同的相位分量,并对每个分量进行不同的滤波处理。每个滤波都由一组滤波系数和一个延迟线组成。输入信号首先经过延迟线,然后与滤波系数相乘,并累加得到输出信号。不同相位的滤波可以通过对滤波系数进行不同的设置来实现。 在verilog实现多相滤波组可以采用模块化的设计方法。首先可以定义一个滤波模块,该模块包括一个延迟线和一组滤波系数。然后可以定义一个多相滤波组模块,该模块包括多个滤波模块,并根据不同的相位设置每个滤波滤波系数。 在设计时需要考虑多相滤波组的输入和输出接口,以及各个滤波之间的时序关系。可以使用verilog语言的时序逻辑描述来实现这些功能。 由于多相滤波组的复杂性较高,设计时需要仔细考虑各种时序问题和滤波系数的选择。同时,还需要进行综合和布局布线等后续步骤,以实现多相滤波组的硬件实现。 综上所述,多相滤波组是一种数字信号处理件,通过将输入信号分解成多个不同相位的分量,并对每个分量进行滤波处理,可以实现对输入信号的精确处理。在verilog中可以通过模块化的设计方法来实现多相滤波组,并考虑各种时序和设计问题,最终得到该件的硬件实现

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

humanism_xtt

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值