# Lumped filter design using coupling matrix techniques

Learn how to turn your synthesized coupling matrix into lumped elements for low frequency applications where waveguide and planar implementations wouldn’t make sense. It is also interesting reading for those doing miniature filters on thin film or MMIC at higher frequencies. In this tutorial a lumped element filter is synthesized and realized using coupling matrix techniques. A MATLAB code snipped is also provided that can automatically calculate element values from the couplings. The filter response is synthesized with the settings below:

The response is shown below, note the synthesized transmission zero at 80 MHz:

The physical coupling matrix below indicates that there is a negative non-adjacent coupling (1-3) which is responsible for the transmission zero. However, how the signs of each coupling are realized depends on the topology as will become apparent in this tutorial. The filter becomes asynchronous due to the non-adjacent coupling.

A coupled resonator filter can be modeled by coupling the resonators with inverters. The inverter represents the capacitive and magnetic coupling. These inverters are later on replaced by their equivalent lumped networks. The inductors are all set to the same fixed value and the corresponding resonator capacitors, C1, C2… are calculated to resonate at the frequency given by the diagonal coupling matrix indices.

A lumped element representation is given below, based on a PI-network of capacitors. The resonator-resonator coupling, M, in the coupling matrix gives each coupling capacitor, Cc. The external Q is extracted from the model below. The inverter transforms the load (usually 50 Ohm) visible to the resonator, hence the external quality depends on the inverter value, which is represented by a PI-network of capacitors, Cin.

In the network below the J-inverters has been replaced by their capacitor equivalents derived above. Due to the topology the non-adjacent coupling is also represented by a capacitive coupling despite the difference in sign.

The negative capacitors in parallel with each resonator are absorbed as shown below. The negative input and output capacitors are replaced by their equivalent inductors.

The filter has now been realized as a practical lumped network. Running the MATLAB code with the synthesized coupling matrix generates the element values below:

The topology derived in this tutorial is just one of many that can represent the synthesized coupling matrix in a practical filter design. However, one should watch out for extreme element values, there might be a topology that is more suitable for your response.

``` function [ output_args ] = lumped_coupled_design( input_args )```

% COUPLING MATRIX TO LUMPED FILTER DESIGN
%
% VERSATILE MICROWAVE
% versatilemw.com

%%% EXAMPLE
% 100 MHz, order 3, 10% BW, 20dB ripple, 1 zero at 90 MHz

f_c = 100e6; % center frequency
L_common = 50e-9 % inductor, common in all resonators

Qe = [8.5341 8.5341]; % external Q, [in out]
M = [0.101 0.101 -0.0239]; % coupling factors (k or M)
M_index = [1 2; 2 3; 1 3]; % resonator index mapping of couplings in M [from to;…]
f_res = [100.3e6 98.8e6 100.3e6]; % resonator frequencies

%%% CALCULATIONS %%%

C_res = 1./((f_res*2*pi).^2*L_common);
C_res_synth = C_res;

for index = [1:length(M)]
C_c(index) = M(index)*sqrt(C_res(M_index(index,1)).*C_res(M_index(index,2)));
C_res_synth(M_index(index,1)) = C_res_synth(M_index(index,1))-C_c(index);
C_res_synth(M_index(index,2)) = C_res_synth(M_index(index,2))-C_c(index);
end

C_in = sqrt(C_res(1)/(50*Qe(1)*2*pi*f_res(1))) % input coupling, cap
L_in = 1/((2*pi*f_c)^2*C_in) % input coupling, inductor

C_out = sqrt(C_res(end)/(50*Qe(2)*2*pi*f_res(end))) % output coupling, cap
L_out = 1/((2*pi*f_c)^2*C_out) % output coupling, inductor

C_c % resonator-resonator coupling capacitors (negative = inductive)
C_res_synth(1) = C_res_synth(1)-C_in;
C_res_synth(end) = C_res_synth(end)-C_out;
C_res = C_res_synth % resonator capacitors

end

Check out more Tutorials

### 9 Responses to Lumped filter design using coupling matrix techniques

1. chae says:

I am engineer for RF design.

• Göran Granström says:

Hi,
What is your question? Something in this lumped filter tutorial?

2. Gil says:

Hi Goran. I’m initially impressed with the work you’ve done but I’m having a hard time using the tool on my iPhone. I want to design lumped element filters for VHF and UHF purposes. I’ve been looking around your website to try to understand the sequence of what I need to do to define what I need, then, to run the synthesis of it with sensible results and finally optimize things if possible. What I’m getting stuck on are the input specs, such as ripple, for a bandpass filter. In your example for a lumped element filter, you had set the ripple to 20dB. To me, the ripple would be defined as the insertion loss ripple seen in the passband region and not the stopband area. For a 3 pole filter and a 10% bandwidth, say, I’d expect to maybe be able to get a passband ripple and insertion loss of around 2dB or so. Is that unreasonable to expect something like that? I’d really like to use your tool and understand it fully to get the most out of it, because I could potentially use your paid tool for serious design work as well. Initially, I’d like to learn and use the free tool until I get a good feel for it. Thanks again for doing this work and hopefully I can use this for many years to come! Take care, Gil.

• Göran Granström says:

Hi Gil,

3. liuchao says:

hello ,I use IOS7.1 and this program can not run well. please solve the problem as soon as possible，thank you

• Göran Granström says:

This bug was introduced in iOS 7.1 and will be fixed in an upcoming update, stay tuned!

4. nor says:

I’ve been following the design step to design a filter of order 2,fc =1.8GHz and ripple bandwidth 120MHz. Its kind of straight forward where I have inverter at the input, output and between resonators. However after calculations, the value of C11 and C22 is -0.5773pF. C1 = 0156pF,Cin = 0.4746pF and C12 = 0.2587pF. Since the value of C11 and C22 is negative, is this realisable?

• Göran Granström says:

Are you using the MATLAB script from the tutorial? If so, try adjusting the L_common variable (resonator inductor). Judging from your C1 value you are using inductors of 50 nH (the same as the example in the script). Try for instance 1 to 5 nH until you get something practical.. At these frequencies you will need to implement your inductors using high impedance t-lines so ideally try obtaining inductor values you can easily realize with t-line having lengths less than lambda/8. Hope this helped and good luck 😀

5. tobias says:

Hi,
I wonder whether this process could be reversed – say I have a given lumped circuit and want to extract the coupling matrix. Is that possible?