www.mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP Probleme mit CIC Filter


Autor: Samuel (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

ich versuche ein CIC Decimation Filter in VHDL zu implementieren, leider 
scheitere ich schon bei der Simulation mit SCILAB. Laut Dokument vom 
Xilinx 
http://www.xilinx.com/bvdocs/ipcenter/data_sheet/c... 
wird im vorderen Teil des CIC über mehrere Stufen integriert. Wenn ich 
das SCILAB Simuliere, wird es aber irgendwann einen Überlauf geben 
(siehe Bild). Was läuft hier falsch?

function [y] = cic_int(x)
  l=length(x);
  y(1)=x(1);
  for i=2:l,
    y(i)=y(i-1)+x(i);
  end;
endfunction;

x=linspace(0,10*%pi,1000);
y=sin(x);

subplot(3,1,1); // Sinus
plot2d(y);
subplot(3,1,2);
plot2d(cic_int(y)); // Sinus integriert
subplot(3,1,3);
plot2d(cic_int(cic_int(y))); // Sinus 2 * integriert

Gruss sam

Autor: Detlef _a (detlef_a)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>>Was läuft hier falsch?
Nichts, offsetbehaftete Signale machen am CIC natürlich overflow. Das 
spielt aber keine Rolle, die Differenzierer 'bügeln das wieder aus', 
wenn man gewisse Bedingungen bzgl. der Bitbreiten einhält.

Google 'CIC Overflow' liefert z.B. das:
http://www.informit.com/articles/article.aspx?p=36...
Im Orginalpapier von Hogenauer, das mir im Moment nicht vorliegt, wird 
meiner Erinnerung nach auch erheblich auf die overflow issues 
eingegangen.

Cheers
Detlef

Autor: Samuel (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Danke für deine Hilfe, das CIC funktioniert tatsächlich auch wenn es zu 
einem Überlauf kommt. Hätte ich nicht gedacht.
Eine Frage hätte ich noch. Z.B. bei einem CIC Decimation Filter mit 
einer Reduktion von 10 (siehe Bild) wird die Datenrate um den Faktor 10 
Dezimiert. Kommt es dadurch nicht zu einer Spiegelung der Frequenzen von 
0.05 bis 0.10 wegen dem Aliasing? Das Signal bei 0.05 wird ja nur um ca. 
15dB gedämpft.

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, kommt es. Die einfache Berechnung hat auch ihren Preis. Als Abhilfe 
könntest du weniger stark dezimieren und den Rest mit einem normalen 
FIR-Filter machen (der kann dann ggf. auch gleich den krummen 
Frequenzgang im Durchlassbereich korrigieren).

Autor: Samuel (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Kann man sich das so vorstellen (siehe Bild)? Die rote Linie sind die 
gespiegelten Frequenzen und die grüne der "Frequenzgang" des FIR 
Filters. Somit hätte das Filter ca. 45dB Dämpfung.

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, das Bild sollte so stimmen, aber daran denken dass auch noch die 
anderen Nebenpeaks mit in dein "Nutzband" hineingeschoben werden. 
Allerdings passt das nicht mehr ganz du deiner Beschreibung, du hast ja 
schon mit dem CIC um Faktor 10 dezimiert und dann mit dem grünen Filter 
nochmal um einen Faktor 2. Um insgesamt 10 zu erreichen musst du das 
CIC-Filter auf einen Faktor 5 auslegen und dann das "grüne" FIR-Filter 
anwenden.

Autor: Samuel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Bestätigung. Die Nebenpeaks sollten eigentlich keine 
Probleme machen, da diese auch von FIR abgeschnitten werden. Mit der 
falschen Reduktion hast du recht, aber die 10 diente nur als Beispiel. 
Inzwischen ist des Filter (CIC + FIR) im FPGA und reduziert die 
Samplerate von 50MHz auf 20kHz mit einer Dämpfung von ca. -55dB.
Leider ist es mir noch nicht gelungen mit dem FIR Filter den 
Frequenzgang des CIC zu kompensieren. Der gewünschte Frequenzgang sollte 
(x/sin(x))^N sein. Ich versuche schon seit Stunden die Koeffizienten des 
FIR Filters mit Hilfe der inversen Fouriertransformation zu berechnen, 
aber es funktioniert nicht. Ist das eigentlich mit diesen Ansatz 
möglich, oder wie berechnet man die  Koeffizienten eines solchen 
Frequenzganges?

Autor: Samuel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bevor noch jemand auf meine Frage antwortet, ich habe eine Lösung für 
die Berechnung der Koeffizienten für das FIR Filters gefunden. Den 
Versuch (wie oben geschildert), den Frequenzgang des CIC direkt in das 
Fourier Integral einzusetzen hat nicht funktioniert, es war mir nicht 
möglich das Integral aufzulösen. Aber mit der Frequenzabtastungs Methode 
lassen sich die Koeffizienten nun berechnen.

Gruss sam

Autor: tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich stehe gerade vor dem gleichen Problem, ich weiß nicht wie das FIR 
Kompensationsfilter auszusehen hat.

Das das Filter einen Frequenzgang von (x/sin(x))^N haben sollte, ist mir 
klar, aber nicht wie ich auf die Koeffizienten komme.

Was genau ist denn die Frequenzabtastungs Methode?
Oder gibt es noch andere Arten die Filterkoeffizienten zu finden?

Gruß, Tom

Autor: Ras Funk (rasfunk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Tom,

Ich fand diese Application Note von Altera sehr hilfreich:

http://www.altera.com/literature/an/an455.pdf

(MATLAB-Script zum Koeffizienten generieren ist mit dabei)

Autor: Detlef _a (detlef_a)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier noch eine m.E. gute Einführungen

Cheers
Detlef

Autor: Detlef _a (detlef_a)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Und noch eine

Autor: cetec Ftec (ftec)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich beschäftige mich im moment auch mit dem Thema.
Welche unterschied gibt es zwischen CIC Filter und Sinc3 Filter?

Gruß Ftec

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.