2009-07-18 3 views
1

Ich simuliere einen digitalen Filter, der 4-stufig ist.Warum ist meine Filterausgabe nicht genau?

Stufen sind:

  1. CIC
  2. Halbband
  3. OSR

Eingang ist 4 Bits und 24 Bits ausgegeben. Ich bin verwirrt über die 24-Bit-Ausgabe.

Ich benutze MATLAB, um eine 4-Bit-signierte Sinosoid-Eingabe (mit SD-Tool) zu generieren und simuliert mit ModelSim. Also sollte die Ausgabe auch ein Sinosoid sein. Das Problem ist, dass die Ausgabe nur 4 verschiedene Daten enthält.

Für 24-Bit-Ausgabe, sollten wir nicht eine 2^24-1 verschiedene Daten erhalten? Was ist der Grund dafür? Liegt es an der internen Bitbreite?

+0

Haben Sie * SDTool * oder * SPTool * verwendet? – gnovice

+0

Ich verwende SDTool –

Antwort

0

Verzeihen Sie meinen Mangel an Filterwissen, aber interpoliert eine der Filterstufen zwischen den Eingangswerten? Wenn nicht, erhalten Sie unabhängig von der Ausgabeauflösung nur maximal 2^4 Ausgabewerte (basierend auf der Eingabeauflösung). Nur weil Sie auf 24-Bit ausgeben, bedeutet das nicht, dass Sie 2^24 Werte haben werden ... stellen Sie sich vor, Sie würden eine digitale Rechteckwelle in einen D-> A-Wandler laufen lassen. Sie haben die gesamte Ausgabeauflösung der Welt, aber Sie haben immer noch nur 2 Werte.

1

Ich bin nicht vertraut mit Modelsim, und ich verstehe nicht die Filterterminologie, die Sie verwendet haben, aber ... Sind Ihre Filter lineare Systeme? Wenn dies der Fall ist, wird eine Eingabe bei einer gegebenen Frequenz eine Ausgabe mit der gleichen Frequenz verursachen, obwohl möglicherweise unterschiedliche Amplitude und Phase. Wenn Ihr Eingangssignal ein einzelner Ton ist, der so abgetastet wird, dass vier Werte pro Zyklus vorhanden sind, hat der Ausgang immer noch vier Werte pro Zyklus. Wenn eine der Stufen keine Abtastratenumwandlung durchführt, verhält sich das System wie erwartet. Wie in Donnie DeBoer gezeigt, spielt die Wortbreite der Berechnung keine Rolle, solange sie die vier Werte der Eingabe darstellen kann.

Auch hier sind mir die Einzelheiten Ihres Systems nicht vertraut. Wenn also eine der Stufen eine Abtastratenumwandlung durchführt, trifft dies nicht zu.

0

Es ist eigentlich ganz einfach:

  1. Auch wenn Sie 4 Bits Eingang haben, können Sie Ihre Filterkoeffizienten als 4 Bit mehr sein.
  2. Jede Mathematikstufe, die du machst, fügt Bits hinzu. Wenn Sie zwei 4-Bit-Werte hinzufügen, ist die Antwort eine 5-Bit-Zahl, sodass das Hinzufügen von 0xf und 0xf nicht überläuft. Wenn Sie zwei 4-Bit-Werte multiplizieren, benötigen Sie tatsächlich 8 Bits Ausgabe, um die Antwort ohne die Möglichkeit eines Überlaufs zu halten. Zu dem Zeitpunkt, zu dem alle Berechnungen durchgeführt wurden, benötigt Ihre 4-Bit-Eingabe offensichtlich 24 Bit, um die maximal mögliche Ausgabe zu speichern.