I'm sorry for the necromancy, and I apologize for some of the tone I may be using, but I can't agree with many of the points in the answers. I'll leave the critiques at the end. I the meantime, I'll try to address OP's problem, as stated.
OP, what you have there is a passive filter. The sin of these is that they need ro be recalculated everytime something changes. If the I/O impedances remain the same, or if their ratio is the same, then it's a simple matter of scaling the reactances involved. This means a simple multiplication with the ratio of the frequencies and the impedances. E.g. if your circuit needs to be shofted for 100 MHz, while changing the I/O to be 100 Ω, both, then it's a simple matter of multiplying each inductance with 70/100*100/200
, and each capacitance with 70/100*200/100
; overall, each. If not, you need to recalculate, and this is either done with tables (if they exist for your particular case), or calculate them, yourself.
In the latter case, you should know that this has been an art for the past 100+ years, and even today the methodologies are virtually unchanged. The usual suspects are:
a) Filter synthesis. In short, calculate the input impedance transfer function, form the H(s)H(-s), add I/O, mix in and calculate the reflection coefficients, start eliminating poles and zeroes. On the ay there you may (often) encounter cases where you won't know which pole or zero goes where, so you'll have to aplythe Hurwitz criterion to ensure that the remaining transfer function is realizable, and only then continue. If successful, you'll obtain a continuous fraction which gives you the values. Unfortunately, this method is more suited for all-pole filters (Bessel, Butterworth, Papoulis, Halpern, Chebyshev type I, etc), since the presence of the zeroes makes capacitors like your C5, C6, C7
complicate the matter. Personally, I never liked this approach, so for me it's the second:
b) Write the mesh equations, solve for the transfer function symbolically (or use FACTS, or any other method that suits you); this would be A(s). B(s) will be the target transfer function, appropriately scaled with the gain and the I/O divider -- pole-zero transfer functions for lowpass filters imply a zero is always larger, so the transfer function needs scaling with the ratio of the squared pole(s)/zero(es). Normalize to the zeroth power of the denominator and the numerator, equalize the two transfer functions, form a system of equations (polynomials, more likely), let the computer sort them out. Output: values.
I think R1 and R2 serve as parts of two back-to-back RLC+LCR filters
As others have said, those are the I/O impedances for which the filter is calculated. The presence of the shunt R1
tells that the output is a current generator. Just so you know, the filter can be calculated for Ri=∞.
what those small capacitors C5-C7 are doing there?
Those form the zeroes of the transfer function; the LC filter that you see there is a whole, a typical topology for a pole-zero filter.
I also don't know why L1 inductance differs from L2,L3
Also part of the whole: their values are as calculated. Note that the values that come out of calclations are (almost always) different. For example, the value of C1
in the 1st picture below was obtained by rounding 1.690818503277825*10^-11
to 18p
.
As for the calculation, this is where you need to tell more. If you're interested in calculating these values, yourself, I've told you two methods; there may be others. But if you expect something simple as the Japanese site you linked you'll be disappointed. Passive filters are more complicated because they don't have any buffering between stages. Active filters can be split into 2nd order sections, each using an opamp, which provides enough low output impedance and high input impedance for their interconnection to not matter (not quite, usually the lowest Q comes first, there are other considerents), but here each stage sees both the next stage and the previous. Not only that, but the impedances seen by each stage are variable, since they are made of LC elements (thus not flat across frequency). I have all the respect for the people that made passive filters in the past years, and even greater for those that calculated them.
At any rate, supposing you had access to a program that calculated these things, you would need to refine your requirements: what is the passband bandwidth, what acceptable ripple, what attenuation at @fp, what is the stopband bandwidth, the attenuation @fs, since this is a Cayer filter there are 7 (seven, yes) ways to calculate it (well, an infinite ways, but they can be reduced to seven): passband optimization, stopband optimization, transition width o. w.r.t. passband and stopband, passband ripple o., stopband ripple o., and minimum Q (that I know of). In general, you have 5 base parameters: fp (passband or corner frequency), fs (stopband frequency), Ap (attenuation in the passband @fp, can be different than the ripple), As (attenuation in the stopband @fs), and N (order). For filters with ripple in the passband (Legendre, ultraspherical, Papoulis, Pascal, Chebyshev I, Cauer) usually fp is considered to be the end of the ripples, but this is not necessarily true. The only thing you said was that you need the fp to differ, but have not touched fs, Ap, As, or N. Therefore your last paragraph cannot be answered unless you give more details, including what I/O impedances you have.
The critiques.
- Starting with the accepted answer:
These impedances are:
I can think of just as many reasons why the I/O impedances should not be the same, so there's nothing normal in this.
Check the original filter info for its characteristic impedance, but 50 ohms is most likely. So - the impedance of the L-C network was not exactly 50 ohms, and R1,R2 reduced the input and output impedances to match.
The filter was designed for a current output with equaly terminated I/O of 200 Ω. That's why R1
is shunted, and the input impedances are the same, not because they needed a reduction in value. If you plot the response you'll see that the design matches that of a 70 MHz Cauer/elliptic filter (more like 72.5) with ~0.5 dB ripple (values distort too much to tell precisely), 80 dB attenuation. Using 50 Ω I/O results in an 18 dB attenuation (instead of 6) and horrible 7.3 dB ripple.
There are three such notches in the frequency response; and you can learn a bit about this filter by calculating C5/L1, C6/L2, C7/L3. Usually 2 are quite close together and the third will be significantly higher; without doing the math I can already see that here.
There's nothing "usual" about the placement of the zeroes in any of the inverse-, or pole-zero filters (inverse Pascal, inverse Chebyshev, Cauer/elliptic) -- it's part of the mathematical transfer function that makes the said filter one of the inverse Pascal, Chebyshev, Cauer, etc. Their position is calculated, by design, and there's nothing "usual" about them except the fact that they are more and more distanced as their frequency is higher (explained below, the part about the Jacobi cosine). But the emphasized part (by me) is not true. And simply because they can be seen in the simulation does not mean that they're inherited from the mathematical transfer function -- it's because the filter is made with 10% values in mind: 22, 33, 470, 390, etc, so the values got so rounded up/down that the response is distorted. This is to be expected when building passive filters, but that's not the reason as explained. To add to this, the values in OP's picture are not exactly optimally chosen, and here's how I calculated them and rounded them for the same E24:
I still rounded them, but look how the stopband is more equiripple than the original (which is meant to be since Cauer/elliptic means equiripple, by design), and also see how the zeroes are not necessarily "two close and one apart". They are in increasing distance, yes, since they're calculated as the inverse of the Jacobi cosine, \$1/\text{cn}(u,m)\$, similarly to inverse Chebyshev, the inverse of the cosine, \$1/\cos(u)\$. Also, the passband is more steady.
That makes this a 7th order Cauer filter (or Cauer/Chebyshev) and the art of getting good stopband rejection (or the reason for 592 pages of Zverev) is the art of tuning C5-C7 to place those notches (last picture on Wiki page) the right distance apart so the peaks between them are all the same height.
See above: they're like that by design, not by "art". The only art is in choosing the elements so that they fit the design as best as they can, given tolerances & co.
Given all the above, usually not from scratch
Again the "usual" part. The scaling can only be applied if the impedances are either exactly the same, or have the exact same ratio. If they differ, all bets are off because that's the sin of the passive filters: for ay change in the I/O (unless stated as above) you need to recalculate the elements. If the input would remain 200 Ω but the output would need to be 100 Ω, how would you distribute the difference? Linearly? Quadratically? With elliptic functions? Which ones? How? You can't. You need to recalculate everything. And Zverev is nowhere near the hard part, because you just pick the book and use the tables (if you have access to the book, sure): input four of the fp, fs, Ap, As, N, then use the tables for the particular Ri and Ro. The hard part is the recalculating. Case in point:
The circuit below is recalculated for the two, asymmetrical I/O mentioned above. See how it plots (blue trace). Look at the values and tell me how did you plan on getting to them? With what calculations? True, I used roundings for E24, but still.
- Then there's pyramids' answer, who starts in force:
I cannot give you a fixed formula to design your filter, because it all depends on what exactly you want from it.
It's a Cauer filter, so it has a precise mathematical formula, determined based on some input. Maybe you can't tell what it is, ok, but the formula can absolutely be known to very precise details. And the "what you want from it is already in the OP's first phrase:
I have designed a FPGA based DDS and now I want to add a low pass filter to its output.
Then:
You are essentially looking at an optimization problem that includes much more than just a corner frequency.
The only optimization is the Cauer filter, itself, which is the mathematically optimized filter to have equiripple. There's no other optimization involved than the formulas used for its design. Maybe I misunderstood the above quote, but there's no recursive algorithm that optimizes the response -- the Cauer filter is very much a closed form design.
I'll leave aside the 2nd paragraph since it deals with a rather brutish approach which, if you have nothing at hand, is a "good enough" approach (e.g. whatever works). But the whole 3rd paragraph seems to have been dictated by someone from PR: from "spreading the individual resonance frequencies" for the zeroes (it's a Cauer, what spreading? what smoothing?), to "signal dispersion and related quantities" (it's a Cauer, it's a fixed design; the moment you choose it you accept the Eula about its time and frequency responses), to this beauty:
If you choose nominally identical values, some of these end up essentially undefined at the corner frequency because they may depend extremely sensitively on component variations. Spacing resonance frequencies by what corresponds to slightly more than component tolerances hence helps you in reliably getting at least qualitatively the same behavior from nominally identical circuits.
Somewhere, someone from PR may be framing this as an incentive of getting better.
- Alan Campbell's answer is not oriented for a filter design, more of a heads-up from the DDS perspective. However, there are a few points:
If you design a filter for Fc=70MHz, it will still work for Fc=120MHz. You'll just be filtering out a whole load of frequencies that would have been ok.
While true, this is a Cauer filter, designed to be ~0.5 dB (can't really tell from the original circuit, given the not so optimally rounded values), 80 dB attenuation, which results in a transition band of roughly 40 MHz. Which means that at 120 MHz everything will be -80 dB or lower, so you can't really use a 70 MHz filter instead of a 120 MHz one (at least in this case).
L1 is different [+ paragraph]
There's no classical filter design that has the same values. Using the same values results in a simply awful response, not even lumped representations of cables or transmission lines use the same values. The only case that I can think of is the same RC filter, whose response converges towards a Gaussian, but only after many stages. It's not a practical design, more educational than not.
C5-C7 help block the clock
While that could be true, it's also not something that can be relied on since the zero is never a perfect zero, mainly due to parasitic elements (which add damping and frequency shifting), component tolerances (frequency shifting), temperature drifts (frequency shifting). So the zeroes are not for blocking the clock, they come, by design, from the Cauer transfer function. They may, or may not, help with the clock.
- Verbal Kint's answer is the only one that carries a good message. There is one minor point that I have to make, and that's that he uses a voltage driven filter, not current, that's why the response comes out rather distorted. But the FACTS are facts.