Steiner Parker filter topology
-
- KVRian
- Topic Starter
- 513 posts since 3 Sep, 2009 from Poland
Could someone describe a Steiner Parker filter topology (in terms of integrators and connections) ? Still learning electronics but can't figure this out yet from schemes.
giq
- u-he
- 28065 posts since 8 Aug, 2002 from Berlin
It's a Sallen-Key with a few more resistors to make the 3 inputs work.
It uses Diodes + bias voltage for voltage controlled resistors. It's therefore unbuffered.
It looks more complicated than it is because the path is mirrored, with the diodes being inverted on one branch. If you replace the diodes by linear resistors you can omit the second branch and look at it as a simple Sallen-Key filter.
- Urs
It uses Diodes + bias voltage for voltage controlled resistors. It's therefore unbuffered.
It looks more complicated than it is because the path is mirrored, with the diodes being inverted on one branch. If you replace the diodes by linear resistors you can omit the second branch and look at it as a simple Sallen-Key filter.
- Urs
- KVRian
- 1091 posts since 8 Feb, 2012 from South - Africa
http://www.willpirkle.com/Downloads/AN-5Korg35_V3.pdf
Not the same filter(no diodes), but at least explains the sallen-key topology a bit. The 'single amplifier' version looks interesting, which is unbuffered.
Not the same filter(no diodes), but at least explains the sallen-key topology a bit. The 'single amplifier' version looks interesting, which is unbuffered.
-
- KVRian
- Topic Starter
- 513 posts since 3 Sep, 2009 from Poland
Yes I know this document, but had no idea its a kind of SK. So diodes act as resistors in SP? Seems I need to get back to electronics to understand this
giq
- KVRian
- 1091 posts since 8 Feb, 2012 from South - Africa
Just google diode-bridge or diode VCA, it might help. There is a lot of SK filters around, the buchla lowpass gate is one too.itoa wrote:Yes I know this document, but had no idea its a kind of SK. So diodes act as resistors in SP?
*edit* I suggest first solving a simple SK filter, then move to more complex configurations. In theory a SK filter can have multiple inputs, which would make it interesting in a modular setup.
-
- KVRian
- Topic Starter
- 513 posts since 3 Sep, 2009 from Poland
I solved linear SK filter, now trying different nonlinearities. Very funny and confusing if you don't know electronics well .
btw. Did I get it right? VA model of unbuffered RC pair is 2 one pole filters with different cutoff frequencies?
btw. Did I get it right? VA model of unbuffered RC pair is 2 one pole filters with different cutoff frequencies?
giq
-
- KVRAF
- 1607 posts since 12 Apr, 2002
Not sure, but intuitively I would expect some feedback from the 2nd stage into the 1st or something like that (unless you ignore the topology of the filter and simply try to simulate the transfer function).itoa wrote:btw. Did I get it right? VA model of unbuffered RC pair is 2 one pole filters with different cutoff frequencies?
Edit: I probably misunderstood you. I thought you're talking about two RC pairs. If it's one pair, then it should be one 1-pole filter. Not sure about the coupling, but I guess it will be represented as extra feedbacks to/from the neighboring parts of the structure. A general rule is: one integrator/pole per one capacitor or inductor.
- u-he
- 28065 posts since 8 Aug, 2002 from Berlin
Hmmm, in effect this might be true, but the resistance and capacitance is the same.itoa wrote:I solved linear SK filter, now trying different nonlinearities. Very funny and confusing if you don't know electronics well .
btw. Did I get it right? VA model of unbuffered RC pair is 2 one pole filters with different cutoff frequencies?
Here's a one pole filter using a diode as a voltage controlled resistor:
Code: Select all
+ -
+---(Vbias)---+
| |
| |
----+----->|------+------
|
=
|
gnd
The bias voltage is added at the input, lifts the "operation point" of the diode to a region that has the desired slope within its non-linear transfer curve. The input voltage adds to the bias voltage, gets dampened by the slope of the diode. Then the bias voltage is subtracted and what's left is just the flattened out input voltage.
(this is not true at all, because we should be talking admittance, not any "multiply by" factor, as we have to do a nodal analysis of the whole circuit. Otherwise we would end up multiplying each voltage with infinity for the zero resistance of the wires in-between - but I know it helped me a lot to think of diodes as variable resistors with a different slope at different voltages)
And finally, it's pretty much the same for this one:
Code: Select all
+ -
+---(Vbias)-------------+
| |
| |
----+----->|------>|--------+------
| |
= =
| |
gnd gnd
(take with grain of salt, coffee not fully in effect in my head)
- Urs
- u-he
- 28065 posts since 8 Aug, 2002 from Berlin
Btw. I have a paper ready with an approachable model for Steiner-Parker and using Mystran's "Cheap" method to approximate the non-linearities.
Might post it, once I get back into the office.
Might post it, once I get back into the office.
- u-he
- 28065 posts since 8 Aug, 2002 from Berlin
I won't be able to do this before Monday (and Monday will be packed...). But you could do a simple Nodal Analysis on this one, which out of the top of my head is the schematic I used:
Then for each sample replace gR1 by tanh(ic1eq)/ic1eq, gR2 by tanh(ic2eq)/ic2eq and res by tanh(V2)/V2, each using the previous sample.
Unfortunately, maybe due to the unbuffered nature, you'll need 4x oversampling to make it stable enough for high resonance.
Code: Select all
V0 V1 V2
----[R1]--+--[R2]--+-------+---
--> | --> | --> |
| = C1 | = C2 |
v | v | v res (buffered!)
| BP |
HP--------+----------------+
Unfortunately, maybe due to the unbuffered nature, you'll need 4x oversampling to make it stable enough for high resonance.
-
- KVRian
- Topic Starter
- 513 posts since 3 Sep, 2009 from Poland
Thanks I will try to understand this
This is what I came to so far: http://www.mixcloud.com/giku/sp-filter-model-1-test/
Newton-Rhapson (4 iterations) and single nonlinearity. It's just SK with moved poles..
This is what I came to so far: http://www.mixcloud.com/giku/sp-filter-model-1-test/
Newton-Rhapson (4 iterations) and single nonlinearity. It's just SK with moved poles..
giq
- u-he
- 28065 posts since 8 Aug, 2002 from Berlin
Required: Read and understand Andy Simper's paper about One Pole Filters. Then also have a glance over his paper about the Sallen Key Filter.
Outcome: This may also help understanding the "Cheap" method posted by Mystran in the other thread.
#---
Building a simple Steiner Parker Filter from scratch, using the "Cheap" method to add non-linearities to an otherwise linear model.
We start with a linear model composed of transistors, capacitors and current sources. As a prerequisite I have noted the Resistors as R1 and R2, the capacitors as C1 and C2, the inputs as LP, HP and BP. The nodes of interest are V1 and V2. The resonance amplifier is special, because it does buffer. We model it simply as "no effect on output, but current source on feedback".
Also, I've marked the direction of current flow with arrows. These are important to get the signs right when adding things up.
Here we go!
Step 1: Write down currents over resistors and capacitors (Ohm’s law: I = V / R = g * V):
(I have set the admittance of the capacitors to 1 straight away - see Andy’s papers. If you wonder why I use two different gs for the resistor admittance... wait for it!)
Step 2: Apply Kirchhoff's current law at the two nodes:
All currents at each node add up to zero. Everything which has an arrow pointing towards the node is added. Everything which has an arrow pointing away from the node is subtracted.
Step 3. substituting currents in Step 2 with equations from Step 1:
Step 4. Use Math Algebra System to solve for V1, V2:
I've used wxMaxima to do this:
this yields
These two equations each eliminate one unknown to calculate the other. We can simply discard the more complicated term for V1, and take the outcome of the simpler V2 as a *known* for the equations in Step 3. We can thus calculate V1 by
Step 5. Update States for Trapezoidal Integration
Step 6. Add non-linearities, cheap
First we need our coefficients:
Now, taking results from previous samples to scale those coeffs:
See, this is why we have separate admittances for each resistor. With the "Cheap" method, each resistor's admittance is scaled by the ratio of the waveshaped state vs. the linear state from the previous sample. Mystran uses a factor f for each stage, I use individual gs.
Step 7. Put it all together
Enjoy,
- Urs
Outcome: This may also help understanding the "Cheap" method posted by Mystran in the other thread.
#---
Building a simple Steiner Parker Filter from scratch, using the "Cheap" method to add non-linearities to an otherwise linear model.
We start with a linear model composed of transistors, capacitors and current sources. As a prerequisite I have noted the Resistors as R1 and R2, the capacitors as C1 and C2, the inputs as LP, HP and BP. The nodes of interest are V1 and V2. The resonance amplifier is special, because it does buffer. We model it simply as "no effect on output, but current source on feedback".
Code: Select all
-> V1 -> V2
LP----R1-----+------R2-----+------+----Out
| | |
| = C1 | = C2 v Res
V | V | |
| HP----+ |
| |
BP----+--------------------+
Here we go!
Step 1: Write down currents over resistors and capacitors (Ohm’s law: I = V / R = g * V):
Code: Select all
iR1 = g1*( LP - V1 )
iR2 = g2*( V1 - V2 )
iC1 = ( V1 - Res*V2 - BP ) + ic1eq
iC2 = ( V2 - HP ) + ic2eq
Step 2: Apply Kirchhoff's current law at the two nodes:
Code: Select all
V1: 0 = iR1 - iR2 - iC1
V2: 0 = iR2 - iC2
Step 3. substituting currents in Step 2 with equations from Step 1:
Code: Select all
0 = g1*( LP - V1 ) - g2*( V1 - V2 ) - V1 + Res*V2 + BP + ic1eq
0 = g2*( V1 - V2 ) - V2 + HP + ic2eq
I've used wxMaxima to do this:
Code: Select all
Solve([
0 = g1*( LP - V1 ) - g2*( V1 - V2 ) - V1 + Res*V2 + BP + ic1eq,
0 = g2*( V1 - V2 ) - V2 + HP + ic2eq
],[V1, V2] );
this yields
Code: Select all
((g1*g2+g1)*LP+Res*(HP+ic2eq)+g2*(HP+ic2eq)+(g2+1)*BP+(g2+1)*ic1eq)
V1 = - -------------------------------------------------------------------
(g2*Res+(−g1−2)*g2−g1−1)
(g1*g2*LP+g2*(HP+ic2eq)+g1*(HP+ic2eq)+HP+g2*BP+ic2eq+g2*ic1eq)
V2 = - --------------------------------------------------------------
(g2*Res+(−g1−2)*g2−g1−1)
Code: Select all
V1 = ( g1 * LP + g2 * V2 + Res*V2 + BP + ic1eq ) / (g1+g2 + 1);
Code: Select all
ic1eq = 2*(V1 - Res*V2 - BP) - ic1eq;
ic2eq = 2*(V2 - HP) - ic2eq;
First we need our coefficients:
Code: Select all
g = tan( PI * cutoff/samplerate);
k = Resonance * 2; // go higher for self oscillation, try 3-4
g1 = g;
g2 = g;
Res = k;
Code: Select all
if( ic1eq != 0 ) g1 *= tanh( ic1eq )/ic1eq;
if( ic2eq != 0 ) g2 *= tanh( ic2eq )/ic2eq;
if( V2 != 0 ) Res *= tanh( V2 )/V2;
Step 7. Put it all together
- first, write down code form Step 6
second, write down long equation for V2 from Step 4
third, write down short equation for V1 from Step 4
next, write down code from Step 5
lastly, Out = V2
Enjoy,
- Urs
Last edited by Urs on Mon Jan 05, 2015 6:50 pm, edited 2 times in total.