Filter synthesis and network analysis

71 views
Skip to first unread message

Vesa Solonen

unread,
Feb 18, 2023, 10:01:19 AM2/18/23
to dev...@kicad.org
Dear Fellows,

After a bit of hiatus, I will try to raise some interest for filter
synthesis and network analysis tools for KiCad. I firmly believe these
would be a great value add after the simulation work. Hopefully the
following will bring some ideas and wider interest as I have no
resources to make it on my own.

I have a proof of concept level program of my own for calculating high
order single amplifier active filters. There is no analytical solution
for the design so everything is done numerically. The method in general
is published [1, 2], but I use Differential Evolution to find solutions
that are realizable with real available components (e.g. pick values
from a measured stock or standard E-values). So far the results have
been outstanding and the method is very general (not limited to
filters). I would be happy to integrate this with KiCad Python somehow,
but would need some support for that (someone who can program properly).

An example takes about four seconds to run (four threads, E5-1607 v4)
with nine degrees of freedom (resistors to tune), realizing two poles
and two zeros. The result works in real life as well. The actual code is
about 200 lines of Python with heavy lifting by SciPy. I would like to
send an example screenshot of the design, but would like to get an
opinion before spamming the list.

I have also been discussing with Al Klappenberger of ALK Engineering
about their analog filter synthesis tools [3] and possibility of open
sourcing them. As it is now, the author(s) have retired and the tools
are available for free. Could it possibly fit for KiCad Services
Corporation to negotiate I wonder? The results are very good, but
naturally can not say anything about the code. PCFILT runs on Wine and
is said to be pure ANSI C.

Regarding network analysis the [4] is probably the best known. I have
used it for extracting the transfer functions for extended filters from
[1], e.g. ones with feed forward zeros (elliptic). These will result in
about half page long symbolic formulas for the components. The [5, 6]
are the original free ones. The analysis engine of one would work along
with Spice and Python automation to make real design automation and
optimization possible within KiCad.

Best regards,
-Vesa


[1] https://bib.irb.hr/datoteka/149600.1-0107.pdf
[2] https://hrcak.srce.hr/file/46135
[3] http://alkeng.com
[4] https://en.wikipedia.org/wiki/SapWin
[5] https://github.com/skypjack/sapecng
[6] https://github.com/skypjack/qsapecng
Reply all
Reply to author
Forward
0 new messages