In meinem Job ist es mir nun schon häufig vorgekommen, dass ich immer
mal wieder FIR Filter Koeffizienten berechnen musste.
Nun erwisch ich mich immer wieder dabei, die Filter anschließend mit
Octave oder Python + Numpy zu entwerfen und mir dann die Koeffizienten
als C, Verilog oder VHDL Array oder Memory Initialisation File
auszugeben.
Nun hab ich mir überlegt, wie ich Filter am liebsten beschreiben würde
um universell Koeffizienten zu berechnen und zu exportieren oder
Dokumentation zu generieren.
Meine bevorzugte Eingabe ist Text von daher, habe ich mir ueberlegt, das
das Eingabeformat des Tools eine json Beschreibung des Filters sein
sollte.
Hier einmal ein Beispiel:
1 | {
|
2 | "name": "FIR_Lowpass",
|
3 | "description": "Lowpass example",
|
4 | "fs": 100000,
|
5 | "taps": 101,
|
6 | "fc": 7000,
|
7 | "typ": "lowpass"
|
8 | }
|
Diese json Beschreibung wird nun durch ein Python Tool geschickt,
welcher das firFilterGen Module benutzt und die Koeffizienten berechnet
und auch verschiedene export Möglichkeiten anbieten soll.
Die andere Möglichkeit ist es, das Python Modul in seine Pythonumgebung
einzubinden, ein sehr schönes Beispiel ist hier ipython notebook.
Wie das ganze dann ausschaut kann man hier sehen:
http://nbviewer.ipython.org/github/TM90/firFilterGen/blob/master/examples/usage/NotebookToolFlow.ipynb#
Das Projekt kann auf github gefunden werden:
https://github.com/TM90/firFilterGen
Der aktuelle Stand ist eine Prototyp Version, welche FIR Tiefpaesse,
Hochpaesse und Bandpaesse erstellen kann. Momentan noch ohne
Koeffizienten Export als Arrays in andere Sprache und ohne Fensterung.
Nächste Schritte sind
- erste Koeffizienten Export Funktionen
- Fensterung (moeglichkeit verschiedene Fensterfunktionen zu parsen)
- Zeit und Frequenzbereich als .jpg/.pdf usw. exportieren
- Tool schreiben, welches json Beschreibung entgegen nimmt und Filter
erzeugt
Meine Frage hier ist, wer könnte sich Vorstellen mit so einem Ansatz zu
arbeiten, was sind eure Meinungen und hat wer Lust es mal zu probieren
oder sich reinzu fuchsen und zu helfen.
Ich weiß die meisten FIR Tools sind grafisch und mein Ansatz mit den
json Beschreibungen ist da etwas radikaler.
Den Vorteil, welchen ich mir dadurch verspreche, ist die Möglichkeit
schnell und robust Filterkoeffizienten und Doku zu erzeugen.
Gruß
TM