Das Designbeispiel für den Dezimierungsfilter für variable Integer-Rate zeigt, wie Sie den Intel® DSP Builder Advanced Blockset (DSPB-AB) verwenden, um einen Dezimierungsfilter zu implementieren, der seine Dezimierungsrate zur Laufzeit ändern kann. Es unterstützt auch mehrere Kanäle und nutzt das automatische Falten von DSPB-AB, um Code für den Register Transfer Level (RTL) zu generieren, der die Hardware-Wiederverwendung zur Ressourceneinsparung maximiert. Das aktuelle Design unterstützt Dezimierungsraten von 1, 2, 4, 8 und 16. Sie können das Design jedoch leicht ändern, um andere Integer-Dezimierungsraten zu unterstützen.
Sie können herkömmliche Dezimierung durch M-Filter effizient durch Polyphasen-Zersetzung mit einem Eingabe-Commutator und M parallelen Pfaden implementieren. Jeder Pfad ist eine Polyphase des ursprünglichen Prototypfilters. Wenn der Eingabe-Commutator jede andere Phase übersprungen hat, anstatt alle M-Pfade zu durchlaufen, wird die Dezimierungsrate zu M/2 usw.
Im realen Design implementieren wir anstelle eines Commutators und einer parallelen Bank von ascii-impulse-response-Filterpfaden (ASCII-Richtung) nur einen POLYphasen-TB-Filter, bei dem die zu den Polyphasen entsprechenden Polyphasen jeden Zyklus mit der Eingabe-Sample-Rate ändern. Dies hat den gleichen Effekt wie das Liefern von Eingabeproben an eine parallele Bank aus Polyphasen. Wir speichern die Polyphasen-Generatoren im Speicher und verwenden einen Input-Generator wie den in einem numerisch gesteuerten Modul (NCO), um zu steuern, welche Phase derzeit ausgelesen und an den FIREWALL-Filterweg gesendet wird. Die Schrittgröße des Phasenverbinders steuert, wie schnell das System die Polyphasen durchläuft, daher die Dezimierungsrate. Das Überlaufsignal des Überlaufsignals zeigt an, wann die Phasen durchlaufen wurden. Wenn die Behauptung besteht, wird ein gültiges Ausgabebeispiel mit der niedrigeren Sample-Rate generiert.
Die Architektur des Algorithmus ist in Abbildung 1 dargestellt.
Der LUFTFILTERpfad ist ein modifizierter DIREKTES FORM-FILTER. Die Filter stammen aus der Look-up-Table (LUT) und wechseln von einer Polyphase zur nächsten. An jeder der Multiplikator-Ausgänge ist ein Vervielfacher angeschlossen. Sie sammelt die Ausgänge aller Polyphasen am Wasserhahn, bis das Rollover-Signal darauf hinweist, dass alle Phasen besucht wurden und eine Ausgabe fällig ist. In diesem Moment addiert ein Multiport-Adder alle Ausgänge des Verteilers und generiert eine endgültige dezimierte Probe. Gleichzeitig leeren die Verklärer den Inhalt und bereiten sich auf den nächsten Zyklus vor.
Die Neukonfiguration der Dezimationsgeschwindigkeitsänderung wird durch Variieren der Phase-Erhöhung oder Schrittgröße des Geräts zur Laufzeit erreicht. Über die Schnittstelle Avalon® Memory-Mapped (Avalon-MM) können Sie die Phasen-Erhöhung in Echtzeit um einen Prozessor aktualisieren. Wenn sich die Dezimierungsrate ändert, ändert sich auch die Anzahl der Polyphasen, die im TB-Filterpfad enthalten sind. Um den dynamischen Bereich zu maximieren, können wir den Multiplikationseinheiten und der finalen Adder-Ausgabe einen neu konfigurierbaren Skalierungsfaktor liefern. Sie können dieses Steuerungsregister auch über einen Prozessor über die Avalon-MM-Schnittstelle neu konfigurieren.
Dieses Beispiel zeigt auch, wie Sie die Faltfunktion des DSPB-AB nutzen können. Das Falten oder Time-Division-Multiplexing erkennt automatisch die Ressourcenfreigabe und Hardware-Wiederverwendung basierend auf vom Benutzer spezifizierten Systemparametern. Sie ist besonders bei Multichannel-Designs nützlich.
Weitere Informationen zum Design von Resampling-Filtern in DSPB-AB finden Sie unter AN 623: Using the DSP Builder Advanced Blockset to Implement Resampling Filters (PDF).
Laden Sie die in diesem Beispiel verwendeten Dateien herunter:
Zu den Dateien im zip-Download gehören:
- vardecimator_rt.mdl— DSPB-AB Designdatei für Filter zur Dezimierung variabler Rate
- setup_vardecimator_rt.m– SCRIPT FÜR "SCRIPT" zur Konfiguration der Initialisierung und der Parameter von vardecimator_rt.mdl
- stop_vardecimator_rt.m— SCRIPT FÜR DAS SKRIPT für die Variable Rate Decimation-Filter-Ausgabe und vergleicht sie mit der Eingabewellenform
- vardecimator_rt_bare.mdl– Designdatei basierend auf vardecimator_rt.mdl. Einige nicht-überprüfbare Testbankblöcke werden für die RTL-Generation entfernt