Hallo Zusammen, für IIR Filter lassen sich für bestimmte Filtereigenschaften die Multiplikationen durch Schiebeoperationen ersetzen. Ich suche Koeeffizienten für einen Bandpass ( erstmal beliebige Mittenfrequenz ), die sich mit wenigen Schiebeoperationen realisieren lassen. Hat von euch jemand Informationen dazu?
http://www.mikrocontroller.net/articles/Hilbert-Transformator_%28Phasenschieber%29_mit_ATmega#Hilbert_ohne_Multiplizierer der Link zum Original ist leider verwaist aber Lutovac hat sich in seinen Büchern noch öfters damit befasst http://home.etf.rs/~tosic/readmedf.htm
>http://www.mikrocontroller.net/articles/Hilbert-Tr...
Danke für die Antwort.
Ein schönes Beispiel für die gesuchten Koeffizienten. Leider ist der
Hilbertransformator ein "Phasenschieber" um analytisches Signal zu
erzeugen und kein Bandpass.
Aber vielleicht tauch ja doch noch ein Link auf.
Die einfache Version: ValAccu1(t+1) = ValNew(t) * k1 + ValAccu1(t) * (1-k1) ValAccu2(t+1) = ValNew(t) * k2 + ValAccu2(t) * (1-k2) FilterVal = ValAccu1 - ValAccu2 mit k2 >> k1
Interessant. Du hast 2 Tiefpassfilter 1.ter Ordnung und berechnest aus den Ausgangssignalen die Differenz. Bei einem einfachen 2 poligen Bandpassfilter scheint mir der Aufwand ähnlich groß: H(z)=(1-z⁻1)(1+z⁻¹)/(1+a*z⁻1+b*z⁻2) Hier sind es allerdings nur 2 Multiplikationen mit Koeefizienten anstatt 4 Multiplikationen wie bei Deinem Verfahren oben. Warum micht das Thema interessiert: Ich will einen Bandpassfilter auf einem Attiny13 realisieren. Dieser MC hat keinen Multiplizierer.
Das Buch von Lutovac et al., Prentice Hall, ISBN 0201361302 Filter Design for Signal Processing using MATLAB and Mathematica enthält auch "multiplierless IIR Halfband filters": http://home.etf.rs/~tosic/preface.htm Chapter 9...We conclude this chapter with several important application examples in which we design low-sensitivity selective multiplierless IIR filters... Zeitschriften-Veröffentlichungen von ihm gibts nur gegen Bares oder per Fernleihe, z.B. ergoogled mit "Miroslav D. Lutovac multiplierless": http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.26.33 "Design of Multiplierless Elliptic IIR Filters (1999)" http://ieeexplore.ieee.org/xpl/login.jsp?tp=&arnumber=823523&url=http%3A%2F%2Fieeexplore.ieee.org%2Fiel5%2F97%2F17831%2F00823523.pdf%3Farnumber%3D823523 lange URL... "Approximate linear phase multiplierless IIR halfband filter"(2000) oder auch "Design and VHDL description of Multiplierless Half-Band IIR Filter" und so weiter Nachtrag: der Preis des Buches bei Amazon ist auch für Fachbücher sehr happig. EUR 447,25 neu (2 Angebote) EUR 166,94 gebraucht (3 Angebote)
Vielleicht ist es analog oder teilanalog per sampling einfacher als superteure Spezialistenbücher? Was für Designkriterien brauchst du?
Das Buch kann man leihen, im genannten Kapitel 9 ist eine Schritt-für-Schritt Anleitung zur Berechnung. Eine Tabelle der kleinsten Zweierpotenz-Zahlen, die in Frage kommen, gibt es auch. Aber ich finde es auch sehr mutig, auf einen ATtiny DSP zu machen, das ist schon "minimal art". Die Literatur stammt aus der Zeit, als FPGAs noch keine oder nur wenige Hardware-Multiplizierer enthielten. Damals was das die einzige Möglichkeit, in FPGAs Digitalfilter platzsparend aufzubauen. Diese Kunst stirbt wohl ebenso aus, wie die der alten Mikrocontroller-Artisten, die umfangreiche Programme in Assembler auf wenigen Kilobyte unterbringen konnten. Man hat es heute einfach nicht mehr nötig.
Die Differenzengleichung von Klaus H. gefällt mir ziemlich gut. Diese
Art von Filter hat den Vorteil, dass es keine Instabilitäten gibt,
solange k1 und k2 zwischen 0..1 liegen.
Allerdings meine ich, dass man das Ausgangssignal noch skalieren müsste,
damit die Amplitudenverstärkung bei der Mittenfrequenz bei 1 liegt.
Ich habe mir überlegt, die Shiftkoeffizienten einfach durch einen
Algorithmus suchen zu lassen. Damit sollte sich ein geeigneter Filter
finden.
@Christoph Kessler
Dank für den Buchtipp. Aber so lange ich es nicht beruflich brauche,
werde ich noch selber rechnen müssen.
>Was für Designkriterien brauchst du?
sagen wir mal
fab=31kHz
fmitte= 100...10kHz
fbreite= 50..5kHz
MCU:Attiny13
Was ist denn "fab"? Schonmal über ein Comb-Filter nachgedacht? Vielleicht denkst du auch erstmal über den Phasengang nach. Vor allem, wenn es um Datenübertragung gehen sollte.
f-abtast... Die Abtastfrequenz sollte etwa das vierfache der Mittenfrequenz sein (halbe Nyquistfrequenz) daher auch Halbbandfilter genannt. Der arme ATtiny bekommt viel zu tun. Über die Bitbreite wurde noch nichts gesagt, 8 Bit oder 16 oder noch mehr? Meinen Artikel hast Du gelesen? http://www.mikrocontroller.net/articles/Digitalfilter_mit_ATmega
Hallo Cristoph klinke mich mal in das Them mit ein. Habe deine und andere Artikel schon einige Zeit verfolgt und so ziemlich aklles gelesen, was ich dazu gefunden habe. Auch deinen Artikel mit Atmega. Da ich selber mit einem Atmega arbeite, interessiert mich die Sache. In deinem Artikel hast einiges an Berechnung und Beispiele drin. Leider ist es in ASM. Da ich in C arbeite, komme ich damit nicht klar. Hast du was konkretes in C für mich? achim
chris schrieb: > Ich will einen Bandpassfilter auf > > einem Attiny13 realisieren. Dieser MC hat keinen Multiplizierer. Du kannst doch den Faktor so wählen, dass es ein bInärwert wird. y = y * (1-1/16) + x * 1/16 = y - y/16 + X/16 = y - LSR4(Y) + LSR4(X)
Hier ein kleines Matlab-Scribt zur Darstellung des Frequenzganges des Filters von Klaus H. ( Ich hoffe, dass ich mich bei den Koeffizienten nicht verrechnet habe. Weis jemand, wie man den Filter auf 0dB normiert?
1 | % band pass filter with one pole filters |
2 | %
|
3 | % y1(n-1)=ax+(1-a)y(n) |
4 | % y2(n-1)=bx+(1-b)y(n) |
5 | % y=y1-y2 |
6 | %
|
7 | |
8 | fab=31000; |
9 | flow=400; |
10 | fhigh=600; |
11 | |
12 | a=2*pi*flow/fab; |
13 | b=2*pi*fhigh/fab; |
14 | |
15 | c=1-a; |
16 | d=1-b; |
17 | |
18 | B=[a-b b*c-a*d] |
19 | A=[1 -c-d c*d] |
20 | |
21 | freqz(B,A,200,fab); |
22 | ax=axis; |
23 | ax(4)=10; |
24 | ax(2)=5000; |
25 | ax(3)=-40 |
26 | axis(ax); |
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.