模拟带通滤波器研究:Sallen-key与无限增益多路反馈拓扑

需积分: 18 0 下载量 2 浏览量 更新于2024-09-19 收藏 162KB PDF 举报
"这篇文章是关于个人对带通滤波器的研究,主要探讨了几种有源滤波器的拓扑结构,包括Sallen-key BPF、多重反馈BPF、DABP带通滤波器、状态变量滤波器、双二阶滤波器以及有源模拟LC滤波器(GIC)。作者分享了自己制作DABP滤波器的经验,实现了Q值为58,带宽18Hz,噪声过滤效果良好的成果。" 在模拟电子技术中,带通滤波器是一种重要的电路,它允许特定频率范围内的信号通过,同时阻止其他频率的信号。本文主要介绍了几种常见的有源带通滤波器拓扑结构。 首先,Sallen-key BPF是一种基于电压控制电压源(VCVS)的滤波器,其特点是输入输出具有同相增益,但可能会因为同相输入导致共模电压影响下的失真。设计时,可以通过调整电阻R1、R2、R3来设定中心频率f0,而电阻R4和R5则影响Q值。对于Q值小于10的情况,Sallen-key滤波器是一个实用的选择。设计方法包括直接计算和参考设计表进行归一化设计。 其次,无限增益多路反馈BPF提供了反相增益,其同相端接地,因此可以降低失真。当电容C1和C2相等时,中心频率f0与电阻R之间的关系为f0=C/R。这种滤波器的特性在于其在低频和高频都有一定的衰减,尤其是在高频部分,由于接地电容的作用,高频信号会被短接到地。 此外,文中提到的其他拓扑结构如多重反馈BPF、状态变量滤波器、双二阶滤波器和有源模拟LC滤波器(GIC)各有其特点和适用场景。多重反馈BPF通常能提供较高的Q值和更平坦的通带响应;状态变量滤波器利用几个互连的积分器实现灵活的频率响应设计;双二阶滤波器由两个二阶滤波器单元级联组成,可以实现更复杂的频率选择性;有源模拟LC滤波器则利用电感和电容的组合,能够实现更精确的频率控制。 带通滤波器的选择取决于具体的应用需求,如Q值、带宽、失真度、电源电压等因素。不同的滤波器拓扑结构在不同参数下表现出不同的性能,因此需要根据实际需求和电路条件进行合理选择。 深入理解这些滤波器的拓扑结构和设计方法对于模拟电路设计者来说至关重要,它们可以帮助设计出满足特定需求的高效滤波解决方案,从而在音频处理、通信系统、信号分析等领域发挥关键作用。
2019-04-16 上传
float DigFil(invar, setic) float invar; int setic; /******************************************************************************/ /* Filter Solutions Version 2009 Nuhertz Technologies, L.L.C. */ /* www.nuhertz.com */ /* +1 602-279-2448 */ /* 3rd Order Band Pass Butterworth */ /* Bilinear Transformation with Prewarping */ /* Sample Frequency = 5.000 KHz */ /* Standard Form */ /* Arithmetic Precision = 4 Digits */ /* */ /* Center Frequency = 300.0 Rad/Sec */ /* Pass Band Width = 20.00 Rad/Sec */ /* */ /******************************************************************************/ /* */ /* Input Variable Definitions: */ /* Inputs: */ /* invar float The input to the filter */ /* setic int 1 to initialize the filter to zero */ /* */ /* Option Selections: */ /* Standard C; Initializable; Internal States; Not Optimized; */ /* */ /* There is no requirement to ever initialize the filter. */ /* The default initialization is zero when the filter is first called */ /* */ /******************************************************************************/ /* */ /* This software is automatically generated by Filter Solutions */ /* no restrictions from Nuhertz Technologies, L.L.C. regarding the use and */ /* distributions of this software. */ /* */ /******************************************************************************/ { float sumnum=0.0, sumden=0.0; int i=0; static float states[6] = {0.0,0.0,0.0,0.0,0.0,0.0}; static float znum[7] = { -7.968e-09, 0.0, 2.39e-08, 0.0, -2.39e-08, 0.0, 7.968e-09 }; static float zden[6] = { .992, -5.949, 14.88, -19.86, 14.92, -5.981 }; if (setic==1){ for (i=0;i<6;i++) states[i] = [i] = [i]*invar; return 0.0; } else{ sumnum = sumden = 0.0; for (i=0;i<6;i++){ sumden += states[i]*zden[i]; sumnum += states[i]*znum[i]; if (i<5) states[i] = states[i+1]; } states[5] = invar-sumden; sumnum += states[5]*znum[6]; return sumnum; } }