IIR Bandpass ohne Multiplikation

Gast #2811651
Lesenswert?

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?
Gast #2814241
Lesenswert?

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.
#2815357
Lesenswert?

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)
#2815542
Lesenswert?

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.
Gast #2815546
Lesenswert?

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
#2816025
Lesenswert?

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
Gast #2816721
Lesenswert?

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);
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren