-
GEBIET DER ERFINDUNG
-
Diese Erfindung bezieht sich allgemein auf Digitalsignalverarbeitung und insbesondere auf das Konvertieren eines digitalen Signals bei einer ersten Abtast- bzw. Samplingrate in eine Darstellung des gleichen digitalen Signals bei einer zweiten Abtastrate.
-
HINTERGRUND DER ERFINDUNG
-
In vielen elektronischen Anwendungen werden Signale digital dargestellt und verarbeitet. Digitale Wörter oder Abtastwerte bzw. Samples stellen den Wert des Signals bei einem regelmäßigen Zeitintervall dar. Dieses regelmäßige Intervall wird oft als die Abtastrate bezeichnet und wird typischerweise in Hertz-Einheiten (Hz) ausgedrückt, die den Kehrwert der Abtastungsintervallzeitperiode darstellen. Das so dargestellte Signal kann keine Energie über der halben Abtastrate aufweisen; die Frequenz gleich der halben Abtastrate wird als die Nyquist-Frequenz bezeichnet.
-
Die digitale Abtastratenwandlung bzw. -konvertierung wird in vielen Arten von digitalen Systemen verwendet. Beispielsweise werden Audiosignale, wie sie beispielsweise beim Herstellen von Musikaufnahmen erzeugt werden, oft digital verarbeitet. Die zahlreichen Ausrüstungsgegenstände, die verwendet werden um die Signale zu verarbeiten und aufzunehmen, werden nicht immer mit der gleichen Abtastfrequenz arbeiten. Folglich ist es oft notwendig, dass jeder Ausrüstungsgegenstand ein digitales Signal annimmt, das mit einer ersten Rate abgetastet wurde, und es dann in ein digitales Signal mit einer zweiten Abtastrate konvertiert, bevor er es verarbeitet. Natürlich darf der Informationsgehalt des Signals durch die Abtastratenwandlung nicht merklich verändert werden, sonst wird die Klangqualität des Signals verschlechtert.
-
Ein sehr einfacher Weg eine Abtastratenwandlung zu erreichen ist es, einfach Abtastwerte bzw. Abtastungen aus dem ersten Signal wegfallen zu lassen. Die wellenform weist somit weniger Abtastwerte pro Sekunde auf und hat damit eine geringere Abtastrate. Angenommen das Nyquist-Kriterium wird durch das Ausgangs- bzw. Ausgabesignal erfüllt, ist es eine korrekte Darstellung des gleichen Signals wie des Eingangs bzw. der Eingabe. Dieser Prozess wird im Allgemeinen als „Dezimierung“ bezeichnet. Er ist jedoch auf Situationen beschränkt, in denen die Abtastrate des Eingangs ein ganzzahliges Vielfaches der Abtastrate des Ausgangs bzw. der Ausgabe ist.
-
Ein Prozess, der Interpolation genannt wird, kann verwendet werden, wenn die Abtastrate des Ausgangs ein ganzzahliges Vielfaches höher sein soll als die Abtastrate des Eingabesignals. In einer solchen Interpolationsoperation kann zunächst ein Zwischensignal erzeugt werden durch Füllen der Zeit zwischen den Abtastwerten des Eingangssignals mit Abtastwerten, denen willkürlich der Wert Null zugewiesen wird. Ein solches Zwischensignal wird als ein Signal „mit eingefügten Nullen“ oder „zerostuffed“-Signal bezeichnet. Da die Abtastwerte hinzugefügt werden, während die Zeitspanne beibehalten wird, weist das Signal mit eingefügten Nullen eine höhere Abtastrate auf als das Eingangssignal. Das Signal mit eingefügten Nullen, das eine höhere Frequenz hat, kann in einem digitalen Interpolationsfilter gefiltert werden, das die Unstetigkeiten glättet, die durch das Hinzufügen der zusätzlichen Abtastwerte verursacht werden. Das Ergebnis ist ein Digitalsignal, das die gleiche Form wie das Eingangssignal hat, jedoch mehr Abtastwerte pro Sekunde enthält.
-
Die Prozesse der Dezimierung und Interpolation können kombiniert werden. Beispielsweise könnte ein Schaltkreis um einen Faktor D dezimieren und um einen Faktor I interpolieren. Die sich ergebende Ausgabe hätte eine Abtastrate im Verhältnis von I/D zur Eingangsabtastrate. Ein derartiger Schaltkreis ist jedoch auf das Skalieren der Abtastrate durch eine rationale Zahl beschränkt. Noch wichtiger ist, dass es für ein digitales System praktische Grenzen für die Wertebereiche für D und I gibt. Der Dezimierungsfaktor D kann nicht so groß sein, dass das dezimierte Signal nicht mehr die Nyquist-Rate erfüllt. Zusätzlich kann der Interpolationsfaktor I nicht beliebig groß werden, da die erforderliche Komplexität des Interpolationsfilters zunimmt, wenn I größer wird (d.h. mehr Abgriffe bzw. Taps). Darüber hinaus wird angenommen, dass mindestens einer der verschiedenen Takte im Wesentlichen identisch zum Systemtakt (d.h. dem DSP-Takt bzw. Digitalsignalverarbeitungstakt) ist, oder zumindest in direkter Weise damit in Beziehung steht, wie beispielsweise mit dem Faktor 2. Das Beibehalten von Konsistenz zwischen den verschiedenen Abtastratentakten in derartigen Situationen verursacht eine Belastung für die Genauigkeit und die Komplexität der Hardware des Timing- bzw. Zeitsteuerungssystems.
-
JP H02 - 21 712 A beschreibt, dass eine Ausgabe-Sample-Folge dadurch erhalten wird, indem eine Prädiktionsberechnung auf ein Verhältnis von jedem von einem Eingangssamplezeitraum und einem Ausgangssamplezeitraum zu einem lokalen Taktzeitraum angewendet wird.
-
ZUSAMMENFASSUNG DER ERFINDUNG
-
Die Fähigkeit, Daten in einem Drei-Takt-System präzise zu verarbeiten, gestattet eine Vereinfachung der Anforderungen für die echte Analogtakterzeugung unter Erhöhung der Komplexität der Digitalsignalverarbeitung. Im Allgemeinen sind Verringerungen der analogen Komplexität wünschenswert, das sie zu einer gesteigerten Systemzuverlässigkeit, größerer Flexibilität der Funktionalität und geringeren Systemkosten führen.
-
Hierin werden Systeme und Prozesse beschrieben, die gestatten, dass der Interpolationsfaktorp, der ein kritischer Parameter in Abtastratenwandlungssystemen ist, in einem Echtzeit-System berechnet wird, in dem eine komplexe Beziehung zwischen einem Digitalsignalverarbeitungstakt und den Datentakten besteht. Typischerweise werden zwei oder drei der Takte in einem solchen System einfache Beziehungen aufweisen (wie beispielsweise Takt 1 = 2 * Takt 2). Diese Beziehung führt zu abgeleiteten Fällen, in denen es tatsächlich nur zwei Takte gibt, die berücksichtigt werden müssen. Weiter gestatten die hierin beschriebenen Systeme und Verfahren, dass eine derartige Berechnung des Interpolationsfaktors mit Eingangsdatenraten auftritt, die höher sind als die Digitalsignalverarbeitungstaktrate. In zumindest einigen Ausführungsbeispielen kann eine beliebige Zeitverzögerung auf das Ausgangssignal angewendet werden.
-
Ein Ausführungsbeispiel der Erfindung bezieht sich auf einen Prozess zur Ratenkonvertierung abgetasteter Daten. Eingangsdaten, die gemäß einem Eingangsabtasttakt abgetastet wurden, werden empfangen. Ein Wert, der einen Ausgangsabtasttakt anzeigt, der vom Eingangsabtasttakt um einen Wert abweicht, der keine ganze Zahl sein muss, wird ebenfalls empfangen. Entsprechende Beziehungen werden zwischen jedem der Eingangs- und Ausgangsabtasttakte und einem Prozessortakt bestimmt. Jeder der Eingangs- und Ausgangstakte sind vom Prozessortakt unabhängig. Ein Interpolationsfaktor wird als eine Funktion des Eingangsabtasttaktes, des Ausgangsabtasttaktes und des Prozessortaktes bestimmt. Ausgangsdaten werden als eine Funktion der Eingangsdaten und des Interpolationsfaktors erzeugt, wobei die Ausgangsdaten den Eingangsdaten entsprechen, die gemäß dem Ausgangsabtasttakt abgetastet wurden.
-
Ein weiteres Ausführungsbeispiel der Erfindung bezieht sich auf ein System zum Konvertieren abgetasteter Daten von einer ersten Datenrate auf eine zweite Datenrate. Dies umfasst einen Ratenkonverter bzw. -wandler zum Empfangen von Eingangsdaten, die gemäß einem Eingangsabtasttakt abgetastet wurden, wobei der Ratenwandler konfiguriert ist, um Ausgangsdaten zu produzieren, die die Eingangsdaten anzeigen, die gemäß einem Ausgangsabtasttakt abgetastet wurden. Der Ratenwandler arbeitet mit einer Verarbeitungstaktrate, die sowohl von der Eingangsabtastrate als auch von der Ausgangsabtastrate unabhängig ist. Ein Akkumulationselement, das den Verarbeitungstakt empfängt, ist konfiguriert, um einen Zustand des Prozessortaktes zu überwachen und um jeweilige Verhältnisse von sowohl dem Eingangsabtasttakt als auch dem Ausgangsabtasttakt zum Prozessortakt zu bestimmen. Das System weist auch einen Interpolationsfaktorschaltkreis auf, der mit dem Akkumulationselement und dem Ratenwandler verbunden ist. Der Interpolationsschaltkreis ist konfiguriert, um von dem Akkumulationselement die jeweiligen Verhältnisse von sowohl dem Eingangsabtasttakt als auch dem Ausgangsabtasttakt zum Prozessortakt zu empfangen. Der Interpolationsschaltkreis ist auch konfiguriert, um einen Interpolationsfaktor als eine Funktion des Eingangsabtasttaktes, des Ausgangsabtasttaktes und des Prozessortaktes zu berechnen. Der Ratenwandler ist konfiguriert, um die Eingangsdaten in Ausgangsdaten als eine Funktion des Interpolationsfaktors zu konvertieren.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Die vorhergehenden und andere Ziele, Merkmale und Vorteile der Erfindung werden aus der folgenden spezielleren Beschreibung von bevorzugten Ausführungsbeispielen der Erfindung offensichtlich werden, wie sie in den beigefügten Zeichnungen veranschaulicht sind, in denen sich gleiche Bezugszeichen über die verschiedenen Ansichten hinweg auf die gleichen Teile beziehen. Die Zeichnungen sind nicht notwendigerweise maßstabsgetreu, stattdessen wird Gewicht auf die Veranschaulichung der Prinzipien der Erfindung gelegt.
- 1 ist ein Blockdiagramm, das ein Digitalisierungselement kombiniert mit einem Ausführungsbeispiel eines Abtastratenwandlers veranschaulicht.
- 2 ist ein Blockdiagramm, das ausführlicher ein Ausführungsbeispiel eines Akkumulationselementes veranschaulicht, wie es in einem Abtastratenwandler verwendet werden kann.
- 3 ist ein Zeitsteuerungs- bzw. Timingdiagramm, das ein Verhältnis zwischen verschiedenen Taktsignalen innerhalb eines Ausführungsbeispiels eines Abtastratenwandlers veranschaulicht.
- 4 ist ein schematisches Diagramm, das ein Ausführungsbeispiel eines Formats eines Interpolationsfaktors veranschaulicht.
- 5 ist ein Flussdiagramm, das ein Ausführungsbeispiel eines Prozesses zum Erreichen einer Abtastratenwandlung veranschaulicht.
- 6 ist ein Blockdiagramm, das ein Ausführungsbeispiel eines Schaltkreises zum Bestimmen eines Interpolationsfaktors veranschaulicht, wie er in einem Abtastratenwandler verwendet werden kann.
- 7 ist eine diagrammartige Darstellung von Registern, wie sie in dem Ausführungsbeispiel des Interpolationsfaktorschaltkreises der 6 verwendet werden können.
- 8 ist ein Blockdiagramm, das ein Ausführungsbeispiel eines Digitalisierungsabtastratenwandlers veranschaulicht.
- 9 ist ein Blockdiagramm, das ein Ausführungsbeispiel eines Quellenabtastratenwandlers veranschaulicht.
- 10 ist ein schematisches Diagramm, das ein Ausführungsbeispiel des Interpolationsfaktorberechnungsschaltkreises von 8 oder 9 veranschaulicht.
- 11 ist ein schematisches Diagramm, das ein Ausführungsbeispiel der Dual-Akkumulationselemente der 10 veranschaulicht.
- 12 ist ein Blockdiagramm, das ein Ausführungsbeispiel des Akkumulationselementes und des Interpolationsberechnungsschaltkreises, der gemäß der vorliegenden Erfindung ein zweites Akkumulationselement aufweist, veranschaulicht.
- 13 ist ein Blockdiagramm, das ein alternatives Ausführungsbeispiel eines Berechnungselementes zum Bestimmen eines Interpolationsfaktors aufweist.
-
DETAILLIERTE BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSBEISPIELE
-
Systeme und Prozesse zum Konvertieren von Daten mit einer Abtastrate in Daten mit einer zweiten Abtastrate werden hierin beschrieben. Im Stand der Technik setzen Implementierungen von Abtastratenwandlungssystemen einen Digitalsignalverarbeitungstakt ein, der gleich der Ausgangsabtastrate ist oder in einer direkten Verhältnis zu ihr steht, wie beispielsweise ein ganzzahliges Vielfaches davon ist. Vorteilhafterweise gestatten das hierin beschriebene System und die hier beschriebenen Techniken einen Systemverarbeitungstakt, der ein nicht triviales M/N-Verhältnis zur Ausgangsabtastrate aufweist. Zum Beispiel können M und N sehr große ganze Zahlen sein. In zumindest einigen Ausführungsbeispielen kann auch eine programmierbare Zeitverzögerung (die einen beliebigen Bereich und eine beliebige Auflösung aufweist) auf das Ausgangssignal angewendet werden.
-
Im Allgemeinen können die hierin beschriebenen Techniken auf jedes Echtzeit-System angewendet werden, das feste Wandlerfrequenzen und variable (oder sogar feste, aber verschiedene) Signaldatenraten aufweist. Die Verwendung des Ausdruckes Wandler umfasst allgemein Analog-Digital-Wandler bzw. ADC (ADC = analog-to-digital converter) und Digital-Analog-Wandler bzw. DAC (DAC = digitalto-analog converter), abhängig von der bestimmten Anwendung. In einem Quellenmodus beispielsweise liefert ein Digital-Analog-Wandler bzw. D/A-Wandler ein analoges Ausgangsstimulus- oder -impulssignal, das aus einer synthetisierten digitalen Darstellung des Stimulus- oder Impulssignals erhalten wurde. Alternativ konvertiert bzw. wandelt ein Analog-Digital-Wandler bzw. A/D-Wandler in einem Detektormodus ein empfangenes analoges Antwortsignal, wie es von einer Vorrichtung, die getestet wird, erhalten werden kann, in eine digitale Darstellung des empfangenen Antwortsignals zur weiteren Verarbeitung durch ein Testsystem. In jedem Fall würde wahrscheinlich eine dritte Systemtaktfrequenz eingesetzt werden, beispielsweise zur Digitalsignalverarbeitung, wobei die dritte Systemtaktfrequenz nicht -notwendigerweise mit entweder der Wandlerfrequenz oder der Signaldatenrate in einem Verhältnis steht. Andere Anwendungen weisen Abtastratenwandlungssysteme auf, in denen die bekannte Wandlerabtastrate in keinem Verhältnis zu dem bekannten Systemtakt oder Verarbeitungstakt steht.
-
Abtastratenwandlungstechniken, wie sie hierin beschrieben werden, gestatten es Nutzern, Basisbandwellenformen mit einer Rate (d. h. einem Timing) zu definieren, die eine große Breite und feine Auflösung im Verhältnis zu einer festen Taktrate haben, mit der die tatsächlichen Wandler arbeiten (z. B. die Wandlertaktrate). Diese Abtastratenwandlung kann erreicht werden durch Bestimmen eines nicht ganzzahligen Interpolationsfaktors basierend auf den Verhältnissen der drei unterschiedlichen Takte: des Wandlertaktes; des Nutzertaktes; und des System- oder Digitalsignalverarbeitungstaktes. Der Interpolationsfaktor wird von einem Interpolationsfilter verwendet. Beispielhafte Interpolationsfilter umfassen einen Mehrphasen-FIR-Filter bzw. mehrphasigen Filter mit endlicher Impulsantwort und ein Linearinterpolationselement auf der Quelle, und eine Kombination eines Mehrphasen-FIR-Filters, Linearinterpolationselementes und eines dezimierenden FIR-Filters auf dem Digitalisierungselement. Diese Filterkonfigurationen bringen eine gewünschte Ratenwandlung innerhalb eines Systems, das mit einer nicht im Verhältnis stehenden Prozessor- oder Digitalsignalverarbeitungstaktrate läuft.
-
Der Betrieb des Resamplers bzw. des Neuabtastungselementes ist dem Nutzer im Wesentlichen klar, so dass sich das Resampler-Instrument so verhält, als enthielte es einen herkömmlichen beliebigen Wellenformgenerator und ein Digitalisierungselement, wobei die Wandler mit entweder der Eingangs- oder der Ausgangstaktrate arbeiten. Daher hat der Resampler keine Kenntnis von besonderen Ereignissen, wie beispielsweise von einem Startbefehl, Nutzertaktrücksetzungsbefehlen und Ähnlichem, Abtastwertgrößen oder Signaleinhalt, außer den Bandbreiteneinschränkungen. Alle Fehler, die durch den Resampling-Prozess eingeführt werden, liegen unterhalb der Spezifikation des Spurious Free Dynamic Range (SFDR) bzw. des störungsfreien dynamischen Bereichs. Der Resampler ist bezüglich Eingangs- und Ausgangsfrequenzen relativ flexibel; die Resampling-Verhältnisse werden durch einen externen virtuellen Taktgenerator gesteuert, der für die verschiedenen Taktungsszenarien angepasst sein könnte.
-
In 1 weist ein Blockdiagramm eines Ausführungsbeispiels eines Resamplers 100 gemäß der vorliegenden Erfindung einen Ratenwandler 102, ein Akkumulationselement 104 und ein Interpolationsfaktormodul 106 auf. Auch ist ein Analog-Digital-Wandler 108 veranschaulicht, der an den Eingang des Resamplers 100 gekoppelt ist. Der Analog-Digital-Wandler 108 empfängt ein Eingangsanalogsignal S(t) und tastet es gemäß einer Eingangsabtastrate oder einem Wandlertakt ab, was hierein als ein erster Taktbereich oder eine erste Taktdomäne bezeichnet wird. Eine Dauer oder Periode des Eingangsabtastzyklus' ist als TRSI veranschaulicht. Der Ratenwandler 102 empfängt die abgetastete digitale Darstellung des Eingangssignals S(n) im ersten Wandlertaktbereich und konvertiert sie in eine Ausgangsdarstellung des gleichen Eingangssignals, aber in einem zweiten Nutzertaktbereich. Im Allgemeinen hat der zweite Taktbereich oder die zweite Taktdomäne eine Ausgangsabtastrate, die vom ersten Taktbereich verschieden ist. Eine Dauer oder Periode des Ausgangsabtastzyklus' ist als TRSO veranschaulicht. Die zwei Taktbereiche oder -domänen stehen praktisch nicht miteinander in Beziehung. Tatsächlich können sie voneinander um ein nicht ganzzahliges Verhältnis von zwei sehr großen Zahlen abweichen. Ein wichtiger Vorteil, der durch die vorliegende Erfindung geboten wird, ist dass der Ratenwandler 102 gemäß noch einem weiteren Verarbeitungstakt arbeitet, der hierein als ein dritter Taktbereich oder eine dritte Taktdomäne bezeichnet wird, der bzw. die als ein Systemtaktbereich oder Digitalsignalverarbeitungstaktbereich bezeichnet wird. Eine Dauer oder Periode des Prozessortaktzyklus' ist als TDSP veranschaulicht.
-
Das Akkumulationselement 104 empfängt mehrere Werte, oder diese sind vorgeladen. Ein solcher Wert stellt die Ausgangsabtastrate dar. Im Beispiel ist dieser Wert die Dauer oder Periode der Ausgangsabtastrate TRSO. Alternativ oder zusätzlich könnte die Ausgangsabtastfrequenz FRSO (d.h. das Inverse von TRSO) in das Akkumulationselement 104 vorgeladen sein. Ein weiterer derartiger vorgeladener Wert stellt die Eingangsabtastrate dar. Im Beispiel ist dieser Wert die Dauer oder Periode der Eingangsabtastrate TRSI (oder die Eingangsabtastfrequenz FRSI). Noch ein weiterer Wert, der in das Akkumulationselement 104 vorgeladen sein kann ist eine Dauer oder Periode des Prozessortaktes TDSP (oder die Prozessortaktfrequenz FDSP).
-
Der Akkumulator 104 verarbeitet einen oder mehrere der vorgeladenen Werte mit einer Digitalsignalverarbeitungstaktrate (DSP CLK), um mehrere Ausgangswerte zu erzeugen. Die Ausgangswerte weisen primär Bruchwerte auf, die ein Verhältnis zwischen den verschiedenen Taktbereichen oder -domänen anzeigen. Ein solcher Bruchwert FRACRSI wird aus einem Verhältnis der Eingangsabtastrate zum Prozessortakt erhalten. Ein weiterer derartiger Bruchwert FRACRSO wird aus einem Verhältnis der Ausgangstaktrate zum Prozessortakt erhalten. Die Periode und/oder Frequenz der Eingangs- und Ausgangstakte (TRSI, FRSI, TRSO, FRSO) können auch als Ausgangswerte vorgesehen werden. In dem veranschaulichenden Beispiel liefert das Akkumulationselement FRSI und TRSO als Ausgangswerte. In manchen Ausführungsbeispielen kann das Akkumulationselement 104 auch eine oder mehrere zusätzliche Eingaben empfangen, wie beispielsweise eine externe Timing- bzw. Zeitsteuerungsreferenz TREF und ein Reset- bzw. Rücksetzungssignal TRESET. Das Akkumulationselement 104 kann periodisch die Ausgangswerte FRACRSI, FRACRSO, FRSI, TRSO aktualisieren. Zum Beispiel werden in einigen Ausführungsbeispielen die Ausgangswerte durch das Akkumulationselement 104 während jedes Zyklus des Prozessortaktes TDSP aktualisiert.
-
Das Interpolationsfaktormodul oder der Interpolationsfaktorschaltkreis 106 empfängt die Ausgangswerte FRACRSI, FRACRSO, FRSI, TRSO vom Akkumulator 104 und leitet einen Interpolationsfaktor p aus einem oder mehreren der empfangenen Werte ab. Das Interpolationsfaktormodul 106 kann auch einen oder mehrere der Eingänge verarbeiten, um einen Ausgang gemäß dem Prozessortakt TDSP zu erzeugen. Der Ratenwandler 102 empfängt den Interpolationsfaktor p vom Interpolationsfaktormodul 106 und verwendet diesen Wert, um die erwünschte Abtastratenwandlung auszuführen.
-
In manchen Ausführungsbeispielen empfängt das Interpolationsfaktormodul 106 auch einen Verzögerungseingangswert TDELAY. Der Verzögerungswert kann von einem Nutzer geliefert werden, um einen Versatz zwischen den unterschiedlichen Taktbereichen oder -domänen einzuführen. Der Verzögerungswert kann auch verwendet werden, um beliebig das ausgegebene abgetastete Signal bezüglich des eingegebenen abgetasteten Signals zu verzögern. Die maximale Verzögerung, die von einem realisierbaren System vorgesehen werden kann, wird zumindest zu einem gewissen Ausmaß von den Vorgaben des bestimmten Ausführungsbeispiels abhängen. Beispielsweise kann ein Look-Ahead-Puffer bzw. vorausblickender Puffer umfasst sein, um solche Verzögerungswerte aufzunehmen, wie unten ausführlicher beschrieben wird. In solchen Ausführungsbeispielen kann die Tiefe des Look-Ahead-Puffers basierend auf der längsten angenommenen Verzögerung bestimmt werden. Längere Verzögerungen erfordern tiefere Look-Ahead-Puffer.
-
In 2 weist ein Ausführungsbeispiel eines Akkumulationselementes 150 gemäß der vorliegenden Erfindung, beispielsweise das in 1 gezeigte Akkumulationselement 104, ein Akkumulationsregister 152 auf. Das Akkumulationsregister 152 speichert einen Wert N, der mit jedem Prozessortaktzyklus erhöht wird. Der Wert von N kann eine binäre ganze Zahl sein, die nach jedem Prozessortaktzyklus um Eins erhöht wird. Der Wert von N kann auf den Empfang eines Reset- bzw. Rücksetzungssignals RESET an einem Reset- oder Rücksetzungseingang hin auf Null oder auf einen anderen Wert zurückgesetzt werden. Das Akkumulationselement 150 weist auch Register zum Speichern verschiedener Werte auf, wie beispielsweise ein Prozessorregister 154 zum Speichern eines Wertes, der die Prozessortaktdauer TDSP anzeigt, ein Eingangstaktbereichsregister 156 zum Speichern eines Wertes, der die Eingangsabtastdauer TRSI anzeigt, und ein Ausgangstaktbereichsregister 158 zum Speichern eines Wertes, der die Ausgansabtastdauer TRSO anzeigt. Die.Werte des Akkumulationsregisters 152 und die Prozessortaktdauer TDSP werden an ein Multiplikationselement 160 geliefert, das die Werte miteinander multipliziert und den sich ergebenden Wert TN in einem Prozessorzeitregister 162 speichert. Der gespeicherte Prozessorzeitwert TN wird an einen ersten Modulo-Arithmetik-Prozessor 164a geliefert zusammen mit dem TRSI Wert, der in dem Eingangstaktbereichsregister 156 gespeichert ist. Das Ergebnis der ersten Modu-Io-Operatiori ist FRACRSI, ein Bruchteilswert des Verhältnisses der zwei Werte TN und TRSI. Der sich ergebende Wert FRACRSIwird in einem Eingangsphasendiffe-renzregister 166 gespeichert. Auf ähnliche Weise wird auch der gespeicherte Pro-zessorzeitwert TN an einen zweiten Modulo-Arithmetik-Prozessor 164b geliefert zusammen mit dem TRSO-Wert, der in dem Ausgangstaktbereichsregister 158 gespeichert ist. Das Ergebnis der zweiten Modulo-Operation ist FRACRSO, ein Bruchteilswert des Verhältnisses der zwei Werte TN und TRSO. Der sich ergebende Wert FRACRSO wird in einem Ausgangsphasendifferenzregister 168 gespeichert.
-
In einigen Ausführungsbeispielen wird ein Inverses des im Eingangstaktbereichsregister 156 gespeicherten Wertes in einem Eingangstaktbereichsfrequenzregister 170 gespeichert. Auf ähnliche Weise wird in einigen Ausführungsbeispielen ein inverser Wert, der in dem Ausgangstaktbereichsregister 158 gespeichert ist, in einem Ausgangstaktbereichsfrequenzregister 172 gespeichert. Einer oder mehrere der gespeicherten Registerwerte FRACRSI, FRACRSO, FRSI, FRSO können an das Interpolationsfaktormodul 106 weitergeleitet werden (1). In dem veranschaulichenden Ausführungsbeispiel werden vier Werte an das Interpolationsfaktormodul 106 weitergeleitet: FRACRSI, FRACRSO, FRSI und TRSO.
-
Ein Timing- oder Zeitablauf-Diagramm, das ein beispielhaftes Verhältnis zwischen den verschiedenen Timing-Signalen gemäß der vorliegenden Erfindung veranschaulicht, ist in 3 veranschaulicht. Das Diagramm zeigt eine mögliche Beziehung zwischen den drei Takten, die von Interesse sind (obwohl der beschriebene Prozess auf beliebige Verhältnisse zwischen den Takten anwendbar ist). Insbesondere ist ein Abschnitt eines Prozessortaktes 200, der manchmal als ein Digitalsignalverarbeitungstakt bezeichnet wird, mit einer Dauer oder Periode TDSP gezeigt. Direkt unter dem Digitalsignalverarbeitungstakt ist ein überlappender Teil eines Eingangsabtasttaktes 202, der manchmal als ein Resampler-Eingangstakt bzw. „Resampler In Clock“ bezeichnet wird, mit einer Dauer oder Periode TRSI gezeigt. Schließlich ist am unteren Ende der Figur ein überlappender Abschnitt eines Ausgangsabtasttaktes 204, der manchmal als Resampler-Ausgangstakt bzw. „Resampler Out Clock“ bezeichnet wird, mit einer Dauer oder Periode TRSO gezeigt.
-
Der FRAC-Term wird verwendet, um die Zeit zu beschreiben, die von einem Ereignis zum nächsten Taktzyklus gemessen wird, im Gegensatz zum „Rest“, der sich aufgrund gewisser Konventionen auf die nach vorne gerichtete Zeit von einem Taktzyklus zum nächsten Ereignis bezieht. Die FRAC-Werte sind mit Bezug auf den Digitalsignalverarbeitungstakt vorgesehen, der von einem Takterzeugungsabschnitt erhalten wird, wie unten ausführlicher beschrieben wird. Somit ist FRACRSI die Zeit von einem Resampler-Eingangstaktereignis nach vorne blickend zum nächsten Digitalsignalverarbeitungstaktereignis. Auf ähnliche Weise ist FRACRSO die Zeit von einem Resampler-Ausgangstaktereignis nach vorne blickend zum nächsten Digitalsignalverarbeitungstaktereignis.
-
In einigen Ausführungsbeispielen berechnet das Interpolationsfaktorberechnungsmodul 106 (
1) den Interpolationsfaktor p aus dem FRAC
RSI-Wert. des Wandlertaktes (Resampler-Eingang, T
RSI) und dem FRAC
RSO des Nutzertaktes (Resampler-Ausgang, T
RSO). Der Interpolationsfaktor ist definiert durch
Tx wird aus den FRAC-Werten abgeleitet durch
wie aus der relativen Anordnung der Taktsignale, die in
3 veranschaulicht sind, zu sehen ist.
-
Der Wert von p, dem Interpolationsfaktor, kann aus den Resampler-Eingangs- und Resampler-Ausgangszeitakkumulationselementwerten FRAC
RSI und FRAC
RSO abgeleitet werden:
wobei T
DELAY eine beliebige Verzögerung ist, die entsprechend einer beabsichtigten Anwendung eingeführt werden kann;
-
Das Symbol ⊕ bezeichnet den Modulo-Operator. In einem Abtastratenwandlungssystem wird der ganzzahlige Teil von p als ein Eingangsdaten-Look-Ahead bzw. eine Eingangsdaten-Vorausschau interpretiert, und der Bruchteil wird als das Eindringen des aktuellen Ausgangstaktzyklus in den aktuellen Eingangstaktzyklus interpretiert. Ein Ausführungsbeispiel eines Interpolationsfaktors 210 ist in 4 veranschaulicht. Der Interpolationsfaktor 210 kann eine Anzahl von Positionsstellen aufweisen (d. h. Bits bei einem binären System), die so angeordnet sind, dass sie einen ganzzahligen Teil bzw. Vorkommateil 212 und einen Bruchteil bzw. Nachkommateil 214 aufweisen, die durch einen Radixpunkt 215 getrennt sind. Der Bruchteil 214 des Interpolationsfaktors 210 ist weiter unterteilt in einen oberen Bruchteil 216, der die höherwertigen Positionsstellen bzw. -ziffern (d. h. oberen Bits) des Bruchteils 214 des Interpolationsfaktors 210 aufweist, und in einen unteren Bruchteil 218, der die niedrigerwertigen Positionsstellen bzw. -ziffern (niedrigere Bits) des Bruchteils 214 des Interpolationsfaktors 210 aufweist. Die bestimmte Anzahl der Positionsstellen kann abhängig von der beabsichtigten Anwendung variieren. Manche Ausführungsbeispiele, wie beispielsweise die, die keinen Look-Ahead-Puffer aufweisen, weisen keinen ganzzahligen Teil 212 auf, da er nicht notwendig ist.
-
In einem Abtastratenwandlungssystem, das einen Mehrphasenfilter und ein Linearinterpolationselement einsetzt, wird der Interpolationsfaktor 210 als eine binäre Zahl implementiert, in der die oberen Bits 216 des Bruchteils 214 von p als die Mehrphasen-Sub-Filter-Zahl interpretiert wird, und in der die unteren Bits 218 des Bruchteils 214 von p als der Linearinterpolationsfaktor interpretiert werden. Der ganzzahlige Teil 212 kann, wenn er vorliegt, als ein Look-Ahead-Wert bzw. vorausschauender Wert interpretiert werden. Für einen beispielhaften Wert von p mit einer Genauigkeit von 24 Bits kann der ganzzahlige Teil 212 3 Bits aufweisen, der höchstwertige Bruchteil 216 kann 9 Bits aufweisen und der niedrigstwertige Bruchteil 218 kann 12 Bits aufweisen.
-
In 5 ist ein Flussdiagramm gezeigt, das einen beispielhaften Prozess 220 zum Ausführen einer Abtastratenumwandlung gemäß der vorliegenden Erfindung anzeigt. In einem ersten Schritt 222 werden abgetastete Eingangsdaten mit einer Eingangsabtastdatenrate TRSI empfangen. Im nächsten Schritt 224 wird ein Wert, der mit einer Nutzerausgangsabtastrate TRSO in Beziehung steht, empfangen. In manchen Ausführungsbeispielen kann dieser Wert von einem Nutzer programmiert sein. Beim Schritt 226 werden Phasenverhältnisse zwischen jeder der Eingangs- und Ausgangsabtastraten oder -bereiche und einem Prozessortakt oder -bereich bestimmt. Diese Phasenverhältnisse können als die Bruchwerte FRACRSI und FRACRSO dargestellt werden, die oben mit Bezug auf die 3 beschrieben wurden. In einem nachfolgenden Schritt 228 wird ein Interpolationsfaktor p aus den bestimmten Phasenverhältnissen FRACRSI, FRACRSO und den Eingangstaktbereichs- und Ausgangstaktbereichswerten TRSI, TRSO bestimmt. Sobald er erhalten wurde, kann der Interpolationsfaktor p in einem nachfolgenden Schritt 230 verwendet werden, um abgetastete Ausgangsdaten zu erzeugen, die die abgetasteten Eingangsdaten anzeigen, die auf die Ausgangsabtastdaten resampled bzw. neu abgetastet sind.
-
In 6 ist ein Blockdiagramm eines beispielhaften Schaltkreises 240 zum Bestimmen eines Interpolationsfaktors veranschaulicht, wie beispielsweise das Interpolationsfaktormodul 106 (1). Der Interpolationsfaktorschaltkreis 240 weist ein Vorzeichenumkehr- bzw. -inversionselement 242 auf, das ein Vorzeichen eines digitalen Eingangswertes i_frac_rso umkehrt, welcher den FRACRSO-Wert anzeigt. Der Betrieb des Vorzeichenumkehrelementes 242 würde von der Art und Weise abhängen, auf die die digitalen Daten gespeichert werden. Der digitale Eingangswert mit umgekehrtem Vorzeichen i_frac_rso(FRACRSO) wird dann kombiniert mit dem digitalen Eingangswert i_frac_rsi, der FRACRSI anzeigt, und mit dem digitalen Eingangswert i_t_rso, der TRSO anzeigt, und zwar in einem Kombinationselement, wie dem gezeigten Summierer 244. Der Ausgangswert des Summierers 244 ist ein digitales Wort, das den Wert Tx anzeigt (3). Der Interpolationsfaktorschaltkreis 240 weist auch ein Multiplikationselement 246 auf, der das digitale Wort, das den Wert Tx anzeigt, mit einem digitalen Eingangswert i_f_rsi multipliziert, der FRSI anzeigt. In manchen Ausführungsbeispielen weist der Interpolationsfaktorschaltkreis 240 statt dem Multiplikationselement 246 ein Divisionselement auf. In solchen Ausführungsbeispielen würde der i_f_rsi-Wert durch den Wert TRSI ersetzt werden, was das Inverse von i_f_rsi ist, wie in 10 gezeigt ist. Der Wert, der vom Multiplikationselement (Divisionselement) ausgegeben wird, ist der Interpolationsfaktor p.
-
In 7 ist eine diagrammartige Darstellung von beispielhaften Registern veranschaulicht, die im Interpolationsfaktorschaltkreis der 6 verwendet werden. In manchen Ausführungsbeispielen hat die p-Verhältnisberechnung einen 40-Bit-Eingang, der aus der Tx-Berechnung folgt, der hier mit 15 Ganzzahl-Bits bzw. Vorkommabits und 25 Bruch-Bits bzw. Nachkommabits gezeigt ist. Die p-Verhältnisberechnung hat auch einen 40-Bit-Eingang vom FRSI-Wert, von dem 2 Bits ganzzahlig bzw. Vorkommabits sind und 38 Bits Bruchbits bzw. Nachkommabits sind. Eine 25-Bit-genaue Multiplikation kann wie gezeigt von diesen zwei 40-Bit-Eingängen ausgeführt werden. Ein Hardware-Multiplikationselementblock, der kommerziell von der Altera Corp. aus San Jose, CA erhältlich ist, sieht eine 36-Bit-genaue Multiplikation vor, was für diesen Zweck ausreichend ist.
-
In 8 ist ein Blockdiagramm eines Ausführungsbeispiels eines Ratenwandlungsdigitalisierungselementes 300 gezeigt. Das Ratenwandlungsdigitalisierungselement 300 weist einen Look-Ahead-Puffer 302 auf, der abgetastete Eingangsdaten i_converter_data [23:0] aufnimmt. Der Look-Ahead-Puffer 302 weist einen oder mehrere Ausgänge auf, die an einen oder mehrere digitale Filter gekoppelt sind. Zum Beispiel weist der Look-Ahead-Puffer 302 einen ersten Ausgang an ein Mehrphasen-Filter 304 und einen zweiten Ausgang an ein Deltafilter 306 auf. Jedes der Filter 304, 306 empfängt einen jeweiligen Eingang von dem Look-Ahead-Puffer 302. Die Filterausgänge werden in ein Linearinterpolationselement 308 eingegeben, das eine Ausgabe an ein dezimierendes FIR-Tiefpassfilter vorsieht. In manchen Ausführungsbeispielen werden Teile des Ratenwandlungskonvertierungselementes 300 im Wesentlichen dupliziert, was mehr als einen Pfad bildet, so wie beispielsweise getrennte Hochfrequenz- und Niedrigfrequenzpfade, von denen jeder auf die jeweiligen Betriebsparameter zugeschnitten ist. Wenn mehr als ein Pfad vorgesehen ist (nicht gezeigt), wird ein Multiplexer oder eine andere geeignete Auswahlvorrichtung verwendet, um zwischen den unterschiedlichen Pfaden auszuwählen. In manchen Ausführungsbeispielen kann eine solche Auswahlvorrichtung konfiguriert sein, um einen Umgehungspfad auszuwählen, der die Ratenwandlungsverarbeitung im Wesentlichen umgeht.
-
Ein Interpolationsfaktorberechnungsmodul 312 ist ebenfalls enthalten. Das Interpolationsfaktorberechnungsmodul 312 empfängt vier digitale Eingangswerte von einem oder mehreren (nicht gezeigten) Akkumulationselementen, wie beispielsweise: i_frac_rsi [39:0], das FRACRSI anzeigt; i_frac_rso [32:0], das FRACRSO anzeigt; i_f_rsi [39:0], das FRSI anzeigt; und i_t_rso [32:0], das TRSO anzeigt. Das Interpolationsfaktorberechnungsmodul 312 liefert einen Interpolationsfaktor p als eine Ausgabe, die aus den verschiedenen Eingangswerten berechnet ist. Jegliche Komplexität dieser Funktion auf dem Ratenwandlungsschaltkreis gründet auf der Tatsache, dass die Digitalisierungselement-Digitalsignalverarbeitungstakt vom Wandlertakt unterschiedlich sein kann. In manchen Ausführungsbeispielen wird zumindest ein Teil bzw. Abschnitt des Interpolationsfaktors an den Look-Ahead-Puffer 302, das Mehrphasenfilter 304, das Deltafilter 306 und das Linearinterpolationselement 308 geleitet. Der Interpolationsfaktor p stellt die Position des Ausgangsabtasttaktes oder des Nutzertaktes im Verhältnis zum Eingangsabtasttaktzyklus oder Wandlertaktzyklus (beispielsweise Analog-Digital-WandlerTaktzyklus). Die oberen Bits des Nachkomma- bzw. Bruchteils des Interpolationsfaktors p können verwendet werden, um aus dem Mehrphasen- und Deltafiltersatz 304, 306 auszuwählen. Die unteren Bits des Nachkomma- bzw. Bruchteils des Interpolationsfaktors p können verwendet werden, um das Linearinterpolationselement 308 zu skalieren. In dem Ratenwandlungsdigitalisierungselement 300 wird der Vorkomma- bzw. Ganzzahlteil von p als Daten-Look-Ahead interpretiert. Somit wird ein Ganzzahlteil des Interpolationsfaktors p an den Look-Ahead-Puffer 302 weitergeleitet, ein erster Bruch- bzw. Nachkommateil, die höchstwertigsten Bits, eines Bruchteils des Interpolationsfaktors wird an die Mehrphasen- und Deltafilter 304, 306 geleitet und ein zweiter Bruch- bzw. Nachkommateil, die niedrigstwertigsten Bits, des Bruchteils des Interpolationsfaktors wird an das Linearinterpolationselement 308 geleitet.
-
Der gesamte oder zumindest ein Teil des Ratenwandlungsdigitalisierungselementes 300 kann als ein FPGA (FPGA = field-programmable gate array) bzw. eine feldprogrammierbare Gatteranordnung implementiert werden, der Digitalsignalverarbeitungstechniken verwendet, die dem Fachmann bekannt sind. Eines oder mehrere der Mehrphasenfilter 304, Deltafilter 306 und jeglicher anderer Filter, wie beispielsweise ein Tiefpassfilter oder Anti-Aliasing-Filter können digitale Filter sein. Als digitale Filter sind sie zumindest teilweise durch Filterkoeffizienten definiert. Solche Filterkoeffizienten können gemäß Standardkonstruktionspraktiken für die Konstruktion digitaler Filter bestimmt werden. Zum Beispiel hat das Mehrphasenfilter 304 16 Taps bzw. Abgriffe und 512 Phaseneinstellungen, was zu 8192 Koeffizienten führt. Lokale Speicher 318a, 318b, 318c (allgemein 318) zum Speichern der Filterkoeffizienten sind vorgesehen. Die Konfiguration oder das Layout des Koeffizientenspeichers 318 kann für die Verwendung der verfügbaren Speicherblöcke optimiert werden. Diese Speicherblöcke werden bei der FPGA-Konstruktion als ROM (ROM = read-only memory) bzw. Nur-Lese-Speicher behandelt, so dass kein expliziter Steuerschaltkreis notwendig ist, um sie zu laden.
-
Das Ratenwandlungsdigitalisierungselement 300 wandelt bzw. konvertiert Daten von einem Analog-Digital-Wandler mit fester Abtastrate mittels eines M/N-Interpolationsmehrphasenfilters 304, eines Linearinterpolationselementes 308 und eines Dezimierungs-FIR-Filters. Die Theorie und der Betrieb des Mehrphasenfilters, des Linearinterpolationselementes und des Dezimierungs-FIR-Filters sind dem Fachmann bekannt. Siehe beispielsweise Kapitel 10, Introduction to Digital Signal Processing, von J.G. Proakis und D.K. Manolakis, 2. Auflage, 1992, das hierin in seiner Gesamtheit durch Bezugnahme mit aufgenommen sei.
-
Die Look-Ahead-Leitung 302 gestattet, wenn sie vorgesehen ist, Interpolationsfak-torwerte, die größer als Eins sind. In einigen Ausführungsbeispielen speichert die Look-Ahead-Leitung 302 einfach einen oder mehrere zusätzliche Abtastwerte in einer Mehrphasenfiltereingangsverzögerungsleitung, und bietet somit die Möglichkeit, ein oder mehrere Abtastungen „vorherzusehen“, wenn dies notwendig ist. Der Vorkommateil bzw. Ganzzahlteil des Interpolationsfaktors steuert einen Multiplexer, um den geeigneten Datensatz auszuwählen.
-
Das Linearinterpolationselement kann implementiert werden durch Bestimmen (z. B. Berechnen) des aktuellen Mehrphasenfilterausgangs und des Ausgangs eines zukünftigen Koeffizientensatzes, und dann Berechnen eines Mittelwertes dieser zwei Werte, gewichtet mit dem Feininterpolationsfaktor. Um Multiplikationselementressourcen einzusparen, kann diese Funktion wie gezeigt als ein Deltafilter 306 implementiert sein. In dieser Implementierung ist die Differenz zwischen den Koeffizientensätzen vorberechnet, was zu einem geringen Differenzwert führt, der mit einem kleinen Multiplikationselement verarbeitet werden kann anstatt mit einem normal großen Multiplikationselement.
-
In manchen Ausführungsbeispielen wird ein analoges Eingangssignal zunächst durch einen (nicht gezeigten) analogen Anti-Aliasing-Filter bandbegrenzt. Eine Konstruktionseinschränkung für den analogen Filterungssperrbereich ist, dass im Wesentlichen keine Analog-Digital-Alias-Signale unter dem höchsten Dezimierungs-FIR-Sperrbereich auftreten können. In diesem Fall wäre diese Frequenz genau A/D Nyquist.
-
Eine Ratenwandlungsquellenkonfiguration 340 ist in 9 veranschaulicht. Eine Quellenkonfiguration bezieht sich auf die Abtastungswandlung bzw. -konvertierung, bei der die Ratenwandlungsquelle 300 Nutzerdaten mit einer Rate Fuser aufnimmt und Daten mit einer Modulationsquellen- oder Wandlerrate erzeugt. Die Theorie und die Implementierung des Quellen-Resamplers sind ähnlich denen des Ratenwandlungsdigitalisierungselementes 300 (8), wobei es mindestens drei Hauptunterschiede gibt. Erstens kann die Anzahl der Filtertaps bzw. -abgriffe abweichen; die Filterkoeffizientenwerte können abweichen; und es gilt, dass die Resampler-Ausgangsfrequenz ein aliquoter Teil der Digitalsignalverarbeitungstaktrate sein kann (z. B. FDSP = N FRSO). Der letzte Unterschied vereinfacht die Ratenwandlungsquellenarchitektur dadurch, dass der Interpolationsfaktor p ein positiver Wert kleiner Eins ist, d. h. 0 ≤ p ≤ 1.
-
In dem Ausführungsbeispiel wird der digitale Wert i_user_date [23:0] empfangen, der Nutzerdaten mit der Rate Fuser anzeigt. Die Nutzerdaten können in einer Look-Ahead-Leitung 342 aufgenommen werden, wie gezeigt ist. Die Quellenkonfiguration 340 weist auch ein Mehrphasenfilter 344, ein Deltafilter 316, ein Linearinterpolationselement 348 und ein Interpolationsfaktorberechnungsmodul 352 auf, ähnlich der Anordnung, die oben mit Bezug auf 8 beschrieben wurde. Da der Interpolationsfaktor weniger als Eins ist, besteht keine Notwendigkeit, den Vorkommateil an die Look-Ahead-Leitung 342 weiterzuleiten. Die oberen und unteren Bits des Interpolationsfaktors werden an die Filterbank 344, 346 und das Linearinterpolationselement 348 geleitet, wie ebenfalls oben mit Bezug auf 8 beschrieben wurde. Ein re-sampeltes bzw. neu abgetastetes Ausgangsdigitalsignal ist an einem Ausgang des Linearinterpolationselementes 348 verfügbar, was hierein als o_converter_data [23:0] bezeichnet wird.
-
Ein schematisches Diagramm eines Ausführungsbeispiels eines Interpolationsfaktorberechnungsmoduls 360 ist in 10 veranschaulicht. Das Modul 360 weist Eingangs- und Ausgangsakkumulationselemente 362a, 362b, ein Drei-Eingänge-Additionselement 364 und ein Divisionselement 366 auf. Das Modul 360 empfängt getrennte digitale Eingangswerte, die die Eingangsabtastdauer TRSI und die Ausgangsabtastdauer TRSO anzeigen. Diese Abtastdauerwerte TRSI, TRSO können in jeweiligen Registern 368a, 368b gespeichert werden. Das Modul 360 empfängt auch einen digitalen Eingang, der den Systemtakt (d.h. Digitalsignalverarbeitungstakt) TDSP anzeigt. Die Eingangsabtastdauer TRSI wird als eine Grenze in das Eingangsakkumulationselement 362a eingegeben. Das Eingangsakkumulationselement 362a wird gemäß dem Verarbeitungstakt TDSP erhöht bzw. inkrementiert. Das Eingangsakkumulationselement 362a berechnet einen Bruch-Ausgangswert FRACRSI, den es als eine Ausgabe an einen ersten Eingang des Additionselementes 362b liefert. Auf ähnliche Weise wird die erste Ausgangsabtastdauer TRSO als eine Grenze in das Ausgangsakkumulationselement 362b eingegeben. Das Ausgangsakkumulationselement 362b wird auch gemäß dem Verarbeitungstakt TDSP erhöht bzw. inkrementiert. Das Ausgangsakkumulationselement 362b berechnet einen Bruch-Ausgangswert FRACRSO, den es als eine Ausgabe an den zweiten Eingang des Additionselementes 364 liefert. Der zweite Eingang des Additionselementes 364 wird durch Techniken, die dem Fachmann bekannt sind, vorzeichenmäßig umgekehrt, wodurch der FRACRSO-Wert von der bestimmten Summe abgezogen wird. Der Eingangswert TRSO wird in einen dritten Eingang des Additionselementes 354 eingegeben, so dass der Ausgang des Additionselementes 364 den Wert Tx darstellt (3). In manchen Ausführungsbeispielen wird der Ausgang des Additionselementes 364 in einen ersten Dividenden-Anschluss eines Divisionselementschaltkreises 366 eingegeben. Der Eingangswert TRSI kann in einen zweiten Divisor-Eingang des Divisionselementschaltkreises 366 eingegeben werden, so dass der Ausgangswert des Divisionselementschaltkreises den Interpolationsfaktor p darstellt.
-
11 ist ein schematisches Diagramm, das ein Ausführungsbeispiel eines Akkumulationselementes 400 veranschaulicht, das für jedes der Akkumulationselemente 362a, 362b der
10 geeignet ist. Ein erstes Akkumulationselement 400 (362a) empfängt T
RSI als einen Grenzwert und T
DSP als einen Inkrementierungswert. Die Eingangswerte werden gemäß der diagrammartigen Darstellung verarbeitet, was den Wert FRAC
RSI ergibt. Auf ähnliche Weise empfängt ein zweites Akkumulationselement 400 (362b) T
RSO als einen Grenzwert und T
DSP als einen Inkrementierungswert. Die Eingangswerte werden gemäß der diagrammartigen Darstellung verarbeitet, was den Wert FRAC
RSO ergibt. Tabelle 1
| Signal | Definition |
| i_f_rsi | (FRSI/Fref)/[log2(FRSI/Fref)] |
| i_t_rso | Fref/FRSI |
| i_frac_rsi | Zeit vom letzten RSI-Takt zum aktuellen DSP-Takt |
| i_frac_rso | Zeit vom letzten RSO-Takt zum aktuellen DSP-Takt |
| i_t_skew | Tskew/Tref |
| i_shift_multiplicand | -|log2(TRSO + TRSI + Tskew,max)| |
| i_shift_product | [log2 FRSI + |log2 (TRSO + TRSI + Tskew,max)| |
-
Der Interpolationsfaktor p kann auf 21-Bit-Genauigkeit (rechts des binären Punktes bzw. Kommas) mit einem Bereich von 0 bis 1,5 berechnet werden. Die Berechnung von p lautet:
-
Um eine Teilungsoperation zu vermeiden, kann das Inverse bzw. der Umkehrwert von T
RSI vorberechnet werden.
-
In Anwendungen, in denen die Bereiche der Eingangs- und Ausgangsfrequenzen einen großen Bereich abdecken, kann die Genauigkeit der Interpolationsfaktorberechnung durch geeignete binäre Skalierung der Interpolationsfaktorfaktoren beibehalten werden, wie in 13 gezeigt ist.
-
In einigen Ausführungsbeispielen führt ein ganzzahliges Verhältnis zwischen dem Digitalsignalverarbeitungstakt und der Resampler-Ausgangsfrequenz (FDSP= N FRSO) zu Vereinfachungen bei der Interpolationsfaktorberechnung. Für die Quelle kann sichergestellt werden, dass 0 ≤ p ≤ 1; somit besteht keine Notwendigkeit für eine Look-Ahead-Leitung.
-
Im folgenden Beispiel erzeugt ein Nutzer ein 40-MHz-BW-Signal, das mit 200 MHz gesampled bzw. abgetastet wird. An die Nutzerdaten werden Nullen angehängt, um so die Abtastrate auf 102 GHz (512 x 200 MHz) zu bringen. Die 200-MHz-Abtastratenbilder werden durch ein Mehrphasen-FIR-Filter gedämpft. Das Signal wird an den Wandler angelegt, der ein internes Vierfach-Interpolationsfilter bzw. 4X-Interpolationsfilter enthält. Das interpolierte Signal, jetzt mit einer 533 MHz-Abtastrate, wird mit einer Halteantwort nullter Ordnung (sin x / x) in ein analoges Signal umgewandelt. Zuletzt entfernt das analoge Tiefpassfilter die Wanderratenabtastbilder.
-
Mit Bezug auf den in 8 gezeigten Abtastratenwandler, multipliziert das Linearinterpolationselement 308 den Ausgang des Deltafilters 306 mit den unteren Bits des Linearinterpolationsfaktors (d. h. den unteren Bits 218, die in 4 gezeigt sind). Der beispielhafte 14-Bit-Linear-Interpolationsfaktor liegt im Bereich von (0,1). In dem Ausführungsbeispiel wird der Ausgang des Linearinterpolationselementes 308 um eine Anzahl von Bits, zum Beispiel 7 Bits, nach rechts verschoben (und es wird eine Vorzeichenerweiterung vorgenommen). Dies wird durchgeführt, um Situationen auszugleichen, in denen die Deltafilterkoeffizienten um den gleichen Betrag größer skaliert wurden (z. B. um einen Faktor 27), bevor sie in dem ROM 318b gespeichert wurden. Die Ausgangsdaten aus diesem Block werden dann zum Ausgang des Hauptmehrphasenfilters 304 addiert.
-
In manchen Ausführungsbeispielen weist der Abtastratenwandler einen Umgehungsmodus auf. Wenn der Umgehungsmodus eingestellt ist, wird mindestens ein wesentlicher Teil des Abtastratenwandlers, einschließlich der Mehrphasen- und Dezimierungs-FIR-Filter umgangen. Daten treten in den Resampler mit der FA/D-Rate ein und verlassen den Resampler mit der gleichen Rate ohne jegliche Resampler-Verarbeitung. Dieser Modus sieht einen Nutzerzugriff auf die Roh-A/D-Wandler-Abtastwerte vor. Solch ein Zugriff wäre nützlich, wenn der Nutzer vorhätte eine FFT auf den erfassten Daten auszuführen, und der Nutzer würde den Frequenzgehalt bis zum Wandler-Nyquist (FA/D/2) sehen. Ein Umgehungsmodus gestattet es dem Nutzer auch, den Datenratenwandler in einer Unterabtastungsweise einzusetzen, wenn das analoge Front-End bzw. der analoge Eingang diese Situation gestattet. Ein Ton am Analog-Digital-Wandler-Eingang, der größer ist als der Wandler-Nyquist, wird zurück in das Band zwischen DC und FA/D/2 aliased bzw. ausgegeben. An diesem Punkt wird der Datenrätenwandler im Umgehungsmodus keine Verarbeitung dieser erfassten Daten durchführen.
-
In einigen Ausführungsbeispielen werden die Resampler-Niedrigfrequenzeingangsleitung, der Daten-Look-Ahead, das Linearinterpolationselement und das Mehrphasenfilter mit einer Multizyklus-Zustandsmaschine implementiert. Zum Beispiel verwendet eine Multizyklus-Zustandsmaschine ein 36x36-Bit-Multiplikationselement, durch welches alle Signale verarbeitet werden können. Eine derartige Hardwareeffizienz ist möglich, da die erforderliche Ausgangsdatenrate wesentlich niedriger ist als die FPGA-Digitalsignalverarbeitungstaktrate bzw. FGPA-DSP-Taktrate.
-
In 12 ist ein Blockdiagramm gezeigt, das ein alternatives Ausführungsbeispiel eines Akkumulations- und Interpolationselementberechnungsschaltkreises 600 zeigt. Das Phasenakkumulationselement 600 verfolgt den Zustand des Echtzeit-Wandlertaktes, der virtuellen Nutzertakte und der relativen Phasen zwischen diesen Takten. Diese Zustands- und die relative Phaseninformation kann von einem Abtastratenwandler 300, 340 (8, 9) verwendet werden, um die Signale des Nutzers zwischen den Wandlertakt- und Nutzertaktbereichen umzuwandeln. Der Resampler 300, 340 weist eine Eingangsdatenleitung mit einem Look-Ahead 302, 342, einem Mehrphasen-FIR-Filter 304, 344, und einem Linearinterpolationselement 308, 348 auf (8, 9). Der Resampler 340 auf einem Quellenkanal (z. B. 9) nimmt Daten mit einer virtuellen Nutzerrate an und erzeugt eine Datenausgabe mit einer festen Wandlerrate. Der Resampler 300 auf einem Erfassungskanal (z. B. 8) nimmt Daten mit einer festen Wandlerrate vom A/D-Wandler an und erzeugt eine Datenausgabe mit einer virtuellen Nutzerrate.
-
Das Akkumulationselement kann Resampler-Eingangsdaten synchron mit dem Digitalsignalverarbeitungstakt qualifizieren. Zum Beispiel kann es 0, 1 oder 2 Eingangsdatenpunkte geben, die für jeden Digitalsignalverarbeitungstakt qualifiziert sind. Es kann 0 oder 1 Ausgangsdatenpunkte geben, die für jeden Digitalsignalverarbeitungstakt qualifiziert sind. Das Akkumulationselement 600 verfolgt auch den Zustand den Echtzeit-Wandlertaktes. Zum Beispiel verfolgt das Akkumulationselement 600 den Zustand jedes Wandlertaktes. Ein Wandlertakt-Resetereignis bzw. -Rücksetzungsereignis setzt die Wandlertaktakkumulationselemente und die Wandertakte zurück, so dass die beiden synchronisiert sind. Dieses ResetEreignis definiert auch t0. Ein Wandlertakt-Reset-Ereignis tritt typischerweise nach einem Leistungszyklus auf, oder nach einem katastrophalen Ereignis. Das Phasenakkumulationselement muss genau auf die Wandlertaktfrequenzen abgestimmt sein.
-
Das Akkumulationselement 600 verfolgt den Zustand des virtuellen Nutzertaktes. Der Nutzertakt kann zurückgesetzt werden entsprechend der Zeit t0. Ein Reset des Nutzertaktes setzt die Nutzertaktakkumulationselemente so zurück, dass die genaue Wiederholbarkeit des Timings von Durchlauf zu Durchlauf sichergestellt werden kann. Ein solcher Nutzertakt-Reset kann bei natürlichen Unterbrechungspunkten während des normalen Betriebs auftreten, wie beispielsweise zu Beginn einer Testsequenz bei Testanwendungen. Der Nutzertakt kann bezüglich der feinen Auflösung oder ganzzahligen Bruchteilen davon verfolgt werden. Vorzugsweise basiert die Nutzertaktfrequenzprogrammierbarkeit auf Perioden binärer Brüche.
-
In einem Ausführungsbeispiel hat die Nutzertaktdauer bzw. -periode eine Auflösung von mindestens 10 ns/244, und der Nutzertaktbereich ist 5 kHz bis 400 MHz.
-
In einigen Ausführungsbeispielen kann ein Verzögerungs- oder Versatzwert T
DELAY hinzugefügt werden. Ein solcher Verzögerungs- oder Versatzwert wird die analoge Wellenform effektiv zeitlich relativ zu einer digitalen Subsystemreferenz verschieben. Vorteilhafterweise kann ein solcher Verzögerungswert verändert werden, ohne einen nachfolgenden Reset des Nutzertaktes oder des Wandlertaktes zu benötigen. In einigen Ausführungsbeispielen weist der Versatzwert einen Bereich von 4 ns und eine Auflösung von mindestens ungefähr 10 ns/2
32 (d. h. 0,0023 fs) auf. In einigen Ausführungsbeispielen kann der Wert T
DELAY auf Null gesetzt werden oder vollständig ignoriert werden. Für jeden Resampler-Ausgangsdatenpunkt wird der Resampler-Interpolationsfaktor berechnet
wobei T
RSI die Resampler-Eingangstaktdauer ist und T
x die Zeit vom letzten Resampler-Eingangstakt, der dem aktuellen Digitalsignalverarbeitungstakt vorausgeht, bis zum nächsten Resampler-Ausgangstakt im aktuellen Digitalsignalverarbeitungstaktzyklus ist.
-
Für Anwendungen, bei denen ein Nachverfolgen des Nutzertaktes in Bezug auf einen hohen bzw. feinen Auflösungswert benötigt wird, ist es notwendig, genaue Zeitakkumulationselemente zu haben, die in einem genau darunterliegenden Taktbereich arbeiten. Daher wird der Nutzertakt mit einer konstanten Periodenauflösung synthetisiert. Ein Verfahren zum Umwandeln der zugrundeliegenden Ereignisse in den Digitalsignalverarbeitungstaktbereich wird benötigt. Eine solche Implementierung sieht einen zweiten Satz von (genauen) Phasenakkumulationselementen 602 vor, die in einem Digitalsignalverarbeitungstaktbereich arbeiten, die mit dem zugrundeliegenden Systemtaktbereich synchronisiert sind, und zwar am Kongruenzpunkt zwischen zwei Bereichen. Eine zweite Implementierung wäre es, jeden Nutzertaktzustand der drei zugrundenliegenden Systemtaktbereiche direkt in acht Nutzertaktzustände des Digitalsignalverarbeitungsbereichs abzubilden.
-
Die Komplikation dabei, dass der Interpolationsfaktor von den Zuständen von zwei Zeitakkumulationselementen berechnet werden muss, kommt von der Tatsache, dass der Digitalsignalverarbeitungstakt, die Resampler-Eingangs- und Resampler-Ausgangsfrequenzen alle unterschiedlich sind. Diese Situation wird für Ausführungsbeispiele vereinfacht, in denen der Resampler-Ausgangstakt gleich dem Digitalsignalverarbeitungstakt oder ein einfaches Vielfaches davon ist.
-
Die Funktion des zugrundeliegenden Nutzertaktzeitakkumulationselementes des Systemtaktbereiches ist es, den Zustand der Nutzertakte in Bezug auf zugrundeliegende Systemtaktzyklen nachzuverfolgen (t
0 wird gemäß dem Wert eines zugrundeliegenden Systemtaktereignisses plus einem Präzisionssystemtaktphasenwert beim Benutzertakt-Reset-Ereignis definiert). Zu jedem gegebenen zugrundeliegenden Systemtaktereignis muss die Gesamtzahl der Feinauflösungszählungen seit t
0 bekannt sein, um in der Lage zu sein, auf deterministische Weise einen Nutzertaktzyklus auszuwählen, so dass er mit einem zugrundeliegenden Systemtaktereignis abgestimmt ist. Die Zeit relativ zum Nutzertakt muss als ein Eingang in die Resampler-Interpolationsfaktorberechnung ebenfalls bekannt sein. Für diese beiden Anforderungen wird die Zeit von t
0 bis zum aktuellen zugrundeliegenden Systemtaktereignis tatsächlich gemessen.
wobei t
N die Zeit seit t
0 beim N-ten zugrundeliegenden Systemtaktereignis ist, N die Anzahl der zugrundeliegenden Systemtaktzyklen seit t
0 ist, T
ref die Dauer bzw. Periode des Systemtaktes ist, des zugrundeliegenden Systemtaktes, d. h. 10 ns.
-
Durch Ausdrücken von t
N anhand der Nutzertaktdauer kann der Bruch- bzw. Nachkommawert FRAC die Zeit seit dem letzten Nutzertakt bestimmen (im Gegensatz zum Rest, der die Zeit bis zum nächsten Nutzertakt wäre). Dies kann mathematisch dargestellt werden als
wobei FRAC
user die Zeit seit dem letzten Nutzertakt ist, T
user die Nutzertaktdauer oder -periode ist und ⊕ der Modulo-Operator ist. Das Verfahren der Zeitmessung seit dem letzten Nutzertakt ist gegenüber dem Rest-Verfahren für diese Anwendung vorzuziehen, und zwar aufgrund der Situation, in der es viele virtuelle Taktereignisse pro Referenztakt gibt. In diesem Fall müssten mehrere Rest-Werte erzeugt werden, wohingegen eine einzelne Zeit seit dem letzten Nutzertaktwert (d.h. FRAC) ausreichend ist.
-
Im Allgemeinen wird ein Nutzertakt, der aus einem Referenztakt synthetisiert ist, ein rationaler Bruch des Referenztaktes sein, d. h.
oder bezüglich der Zeit
-
Der Term A kann festgelegt sein, so dass T
ref ausgedrückt werden kann als A T
resolution, wodurch man durch Kombinieren der Gleichungen (9), (10) und (12) Folgendes erhält:
-
Die Funktion N A ⊕ B ist als Hardware als Modulo-B-Akkumulationselement implementiert, wobei der Wert A= Tref / Tresolution vorberechnet wird und dann auf jedem zugrundeliegenden Systemtaktzyklus akkumuliert wird.
-
Da die Resampler-Operationen auf System- oder Digitalsignalverarbeitungstaktzyklen stattfinden, werden die Zeitakkumulationselementwerte des zugrundeliegenden Systemtaktbereichs auf den DSP-Taktbereich abgebildet. Wenn dieses Abbilden bzw. Mapping ohne Langzeit-Rückkoppelung bzw. -Feedback geschieht, dann werden sich irgendwelche eingeführten Fehler nicht akkumulieren; somit kann das Abbilden approximativ sein. Die unten gezeigten Werte sind für beispielhafte Taktfrequenzen eines Resampler-Instruments.
-
Die Wandlertaktzeitakkumulationselemente sind die gleichen wie die Nutzertaktzeitakkumulationselemente, außer dass die Wandlertaktzeitakkumulationselemente vom Wandlertakt-Reset-Ereignis zurückgesetzt werden, und nicht vom Nutzertakt-Reset-Ereignis. Die Wandlertaktfrequenzen sind wesentlich eingeschränkter als die Nutzertaktfrequenzen, so dass ein Akkumulationselement mit niedriger Auflösung akzeptabel ist.
-
Der Fall, in dem der Resampler-Ausgangstakt mit dem Digitalsignalverarbeitungstakt zusammenfällt, wird als der virtuelle Resampler-Takt behandelt, der „nach“ dem Digitalsignalverarbeitungstakt auftritt, was zu der Konsequenz führt, dass FRAC-Werte immer größer als Null sind.
-
In einem Ausführungsbeispiel ist eine Maßgabe für den Nutzertaktbereich von 340 MHz bis auf 5 kHz. Das Nutzertaktzeitakkumulationselement muss daher in der Lage sein, Folgendes zu zählen
somit werden 14 Bits benötigt, um diesen Bereich abzudecken.
-
In einigen Ausführungsbeispielen basieren Nutzertakte auf ganzzahligen Inkrementen von Perioden. Im Allgemeinen wird es nicht gelingen, eine Kohärenz zwischen den analogen und digitalen Takten zu erreichen, jedoch kann man für unsere Anwendungen nahe genug daran kommen. Die Bereiche, die wichtig sind, sind, dass (1) FFT-Ausgaben „Leckage“ aufweisen, und daher fehlerhafte Ergebnisse liefern, und dass es (2) eine langsame Phasenverschiebung über die Zeit zwischen analogen und digitalen Signalen gibt.
-
Der Effekt der Phasengenauigkeit auf ein Sinuswellen-Signal-zu-Rausch-Verhältnis bzw. -SNR, wie von einem FFT-Analyse mit rechtwinkligem Fenster gemessen, ist bekanntermaßen approximativ. Siehe beispielsweise „When ‚Almost‘ is Good Enough: a Fresh Look at DSP Clock Rates“, Rosenfeld und Max, International Test Conference, 1998.
wobei T die Dauer des erfassten und analysierten Signals ist, ω
1 die tatsächliche Sinuswellenfrequenz ist und ω
2 die ideale Sinuswellenfrequenz ist, die ausgedrückt werden kann als
wobei M die Anzahl der analysierten Sinuswellenzyklen ist, und e der relative Frequenzfehler ist.
-
Ausgeführte Tests, die eine Simulationssoftwareanwendung verwenden, haben anzeigt, dass die Korrelation größer als 0,1 dB ist. Für eine Nyquist-Frequenz ist etwa die Hälfte der Rauschleistung im M-1-Bin konzentriert, so dass es eine SFDR-Einschränkung von SNR + 3 dB gibt. Mit großen FFTs (unter Beachtung eines praktischen Limits von 64k) und Instrumenten mit geringem Rauschen, sollte die SFDR-Einschränkung aufgrund nicht kohärenter Takte besser als 160 dB sein.
-
Eine Nutzertaktauflösung von 10 ns/2
44 (5,6 E-22 Sekunden) ist erforderlich, um einen Rauschabstand oder SNR von 157 dB zu erreichen. Unter Verwendung der Nutzertaktdauerauflösungsanforderung von 5,6 E-22 Sekunden wird die Phasenverschiebung im schlechtesten Fall wie folgt sein
oder 6,8 ps/Minute; 400 ps/Stunde.
-
Der Bereich von p ist von den Extremwerten seiner entscheidenden Faktoren abgeleitet. Wenn man T
DELAY ignoriert, ergibt sich der minimale p-Wert aus
FRAC-Werte reichen von (0,T], somit ist p
MIN nahezu Null. Der maximale Wert von p folgt aus dem maximalen Wert von T
x und konsequenter Weise aus dem minimalen Wert von FRAC
RSO. Nämlich
-
Der minimale Wert FRAC
RSO tritt auf, wenn der Resampler-Ausgangstakt direkt vor dem Digitalsignalverarbeitungstakt auftritt, dann gilt FRAC
RSO = T
RSO - T
DSP. Somit gilt
-
Es sei bemerkt, dass für den speziellen Fall, der unten gezeigt ist, in dem gilt, dass T
RSO = K T
DSP, wobei K eine ganze Zahl ist, und wenn der Resampler-Eingangstakt T
RSO und der Digitalsignalverarbeitungstakt T
DSP in Phase ausgerichtet sind, FRAC
RSO immer gleich T
RSO ist. In einem solchen Fall gilt
-
Der Interpolationsfaktor p stellt die relative Phase des Resampler-Ausgangstakts zum Resampler-Eingangstakt dar. Der Resampler interpoliert den Ausgangswert durch Anwenden von zweien von Gesamtdurchlass-Mehrphasen-Subfiltern (mit inkrementellen Verzögerungswerten, die die ideale relative Phase einschließen) und dann durch lineares Interpolieren zwischen den zwei Ergebnissen. Das Signal-zu-Rauschverhältnis bzw. SNR eines solchen Resamples ist bekanntermaßen
wobei I
filter die Anzahl von Mehrphasen-Subfiltern ist und ω
x die relative Bandbreite 2
πBW
user/F
RSI ist. Siehe beispielsweise Introduction to Digital Signal Processing von J.G. Proakis und D.K. Manolakis, 2. Auflage, 1992. Weiter ist das Linearinterpolations-element selbst tatsächlich ein Mehrphasenfilter mit einem SNR von
-
Jegliche automatisierte Testausstattung, Messausrüstung oder jedes Kommunikationssystem würde von dieser Erfindung profitieren, da sie zu Vereinfachungen in der Konstruktion und bei der Implementierung von Wellenformdigitalisierern, von beliebigen Wellenformgeneratoren, von Modulations- und von Demodulationssystemen führt.