多级LC滤波器级联问题

····首先参考森荣二《LC滤波器设计与制作》的第二章节最后例题,我们要对一个400hz,±0.5V的方波信号进行滤除3、5、7次谐波,得到400hz的正弦波。
····利用m推演型LC滤波器,分别设计3个低通滤波器,其陷波频率分别设置到1200hz、2000hz,2800hz,特性阻抗设置为50Ω。电路参数如下:
在这里插入图片描述

图1

AC分析三个电路结果如下图2所示,限波点位置是符合要求的(紫色有点看不清)。
在这里插入图片描述

图2
接下来是将这3级电路合并成一个电路,完成同时滤除3、5、7次谐波。那么按照一般理解,直接前后级联起来即可(每级二端口网络之间的阻抗匹配,整个级联电路的增益为各级的积),如下图3所示:
在这里插入图片描述

图3
对其进行AC分析,其中绿色为级联后幅频响应,另3个为分立:
在这里插入图片描述

图4
这是符合认知的,也是符合要求的。

但是,《LC滤波器设计与制作》中的参考设计采用的级联方式则是一种图4所示的(改变了电感位置L21 = L14 +L15串联):
在这里插入图片描述

图5
合并L2和L19后即有图5:

在这里插入图片描述

图6
该电路,《LC滤波器设计与制作》书中的ac响应曲线如下图6:
在这里插入图片描述

图7 书中的响应

但是实际在pspice下响应却是如图7,3次限波点消失:
在这里插入图片描述

图8 pspice下的ac分析

····由于缺乏对LC滤波网络拓扑结构的认知,存在如下疑问:
····无论是从一般认知还是pspice仿真结果来看,都不应该把电感位置进行改变,但是参考书就改变了,还得出了理想的响应曲线(图7),但与pspice不符(图8)。所以它为什么要变一下,意义在哪?我该相信仿真结果,还是相信参考书的?
····结论:目前倾向于认为,书中只对了单级电路设计部分(与仿真相符合),后面级联还是应该以仿真为准(即参考书有问题),但是书中换一下电感顺序的深意不得而知。20211202

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 滤波器级联指的是在一个信号处理系统中,将多个滤波器连结在一起,依次进行信号的滤波处理。Verilog是一种硬件描述语言,可以用于实现数字信号处理系统中的滤波器级联。以下是实现滤波器级联的Verilog代码示例: module filter_cascade(input clk, input reset_n, input signed [15:0] data_in, output signed [15:0] data_out); // 定义滤波器的系数和状态变量 parameter coeff1 = 0.25; parameter coeff2 = 0.5; parameter coeff3 = 0.25; reg signed [15:0] state1 = 0; reg signed [15:0] state2 = 0; always @(posedge clk or negedge reset_n) begin if (~reset_n) begin // 复位状态变量 state1 <= 0; state2 <= 0; end else begin // 计算滤波器的输出 state1 <= (data_in * coeff1) + (state2 * coeff2) + (state1 * coeff3); state2 <= (state1 * coeff1) + (state2 * coeff2) + (data_in * coeff3); data_out <= state2; end end endmodule 上述Verilog代码实现了一个三阶Butterworth低通滤波器,由两个一阶滤波器和一个二阶滤波器级联组成。每个滤波器的输出作为下一个滤波器的输入,在时钟上升沿触发时完成滤波器的计算。在复位信号reset_n为低电平时,状态变量会被清零,重新开始计算。通过这种方式实现滤波器级联,可以有效地对数字信号进行滤波处理,提高信号的质量和准确性。 ### 回答2: 滤波器级联是一种常用的数字信号处理技术,在实际系统设计中也得到了广泛应用。Verilog作为一种硬件描述语言,可以用于设计数字信号处理器件。 在Verilog中实现滤波器级联,可以采用模块化设计的思想,将每个滤波器模块作为一个独立的模块实现。通过将多个滤波器模块级联起来,就可以实现复杂的滤波器功能。 具体实现方式如下: 第一步,定义每个滤波器模块的输入输出端口。如下所示: module fir_filter ( input clk, input reset, input signed [15:0] in_data, output reg signed [15:0] out_data ); 第二步,实现每个滤波器模块的功能。这里以FIR滤波器为例,代码如下: always @(posedge clk) begin if (reset) out_data <= 0; else out_data <= in_data * c0 + delay1 * c1 + delay2 * c2 + delay3 * c3; delay3 <= delay2; delay2 <= delay1; delay1 <= in_data; end 其中,in_data是滤波器的输入数据,out_data是滤波器的输出数据。delay1、delay2、delay3是延迟线,用于存储历史输入数据。 第三步,将多个滤波器模块级联起来。这里以级联2个FIR滤波器为例,代码如下: fir_filter #(.SIZE(SIZE1), .COEFFS(COEFFS1)) fir1 ( .clk(clk), .reset(reset), .in_data(in_data), .out_data(sig1) ); fir_filter #(.SIZE(SIZE2), .COEFFS(COEFFS2)) fir2 ( .clk(clk), .reset(reset), .in_data(sig1), .out_data(out_data) ); 其中,fir1和fir2是两个FIR滤波器模块,sig1是fir1的输出,作为fir2的输入。 通过以上三步,就可以实现Verilog代码实现滤波器级联的功能了。需要注意的是,不同的滤波器模块需要设计不同的滤波器算法,并根据具体需求进行参数设置。同时,在级联多个滤波器模块的时候,需要考虑滤波器的延迟线对系统的影响,并进行适当的时序分析和优化。 ### 回答3: 滤波器级联是一种实现数字信号处理中滤波器设计的方法。通过将多个滤波器级联,可以实现更复杂、更高阶的滤波器,提高信号处理的效果。 在 Verilog 中实现滤波器级联可以通过模块化设计来完成。首先,需要编写一个单独的滤波器模块,该模块可以是低通滤波器、高通滤波器、带通滤波器滤波器滤波器模块需要包含输入信号、输出信号和滤波器系数等参数。 接下来,需要编写一个级联模块,该模块将多个滤波器模块连接起来,实现级联级联模块需要定义每个滤波器的类、参数和级联顺序。具体来说,可以通过组合各个滤波器模块的输入和输出信号,来实现级联。 编写 Verilog 代码实现滤波器级联时需要注意以下几点。首先,需要确保每个滤波器模块的输入和输出信号都能正确连接到级联模块中。其次,在级联模块中需要对每个滤波器模块进行初始化和参数设置。最后,需要提前设置好级联的顺序和滤波器的类,确保级联后的滤波器能够达到预期的滤波效果。 总之,在 Verilog 中实现滤波器级联需要灵活运用模块化设计思想,并注意设置滤波器参数和级联顺序,才能成功地实现级联滤波器

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值