Dieses Beispiel zeigt, wie Sie einen Filter zur Dezimierung mehrerer Kanäle mit variabler Rate im Intel® DSP Builder Advanced Blockset implementieren. Für viele medizinische Bildgebungssysteme, einschließlich Magnetresonanztomographie (MRT), ist ein neu konfigurierbarer Dezimierungsfilter erforderlich, um die Echodaten-Abtastrate zu reduzieren. Die Eingabedaten haben eine feste Abtastrate; Die Integer-Dezimierungsrate muss jedoch in Echtzeit geändert werden. Darüber hinaus wächst die gesamte Filterlänge linear mit der Dezimierungsrate. Ähnliche Anforderungen können für Wireless-Kommunikationsanwendungen und andere Systeme gelten. Die Polyphasenstruktur ist für diese Art von Anwendungen hoch optimiert, da die Multiplikatorzahl zur Kompilierungszeit festgelegt ist und nicht mit einer Ratesteigerung wächst. Die wichtigsten Merkmale dieses Designs sind die Verzögerungshahne mit variabler Länge und die effiziente Filterspeicherung.
Funktionen
Dieses Designbeispiel hat die folgenden Hauptfunktionen:
- Unterstützung für beliebige Integer-Dezimierungsraten, einschließlich der Fälle ohne Änderung der Samplerate
- Unterstützung einer beliebigen Anzahl von Kanälen, beliebiger Taktrate und Eingabe-Sample-Raten, solange die Taktrate hoch genug ist, um alle Kanäle in einem einzigen Datenpfad zu verarbeiten, oder mit anderen Worten, keine Hardware-Duplikation
- Unterstützung für die Laufzeit-Neukonfiguration von Dezimierungsraten
- Verwendung von zwei Speicherbanken für Filterspeicher, anstatt Speicher für alle Speicherraten vorbewahren zu müssen. Mit dieser Funktion kann eine Speicherbank aktualisiert werden, während das Design Die andere Bank liest
- Echtzeit-Steuerung der Skalierung im datenpfad "impulse response" (OFN)
Funktionelle Beschreibung
Das Design verwendet eine Direktform-Polyphasen-Dezimierungsfilterstruktur und ist in Abbildung 1 dargestellt. Der Adresscontroller generiert die Leseadresse des Speichers, einen Bankwähler und die Schreibadresse der variablen Verzögerung. Die Chips sind in On-Chip-RAM-Blöcken gespeichert. Die variablen Verzögerungshähne werden auch in Dual-Port-Speicher implementiert, und der Pointer wird durch die aktuelle Dezimierungsrate gesteuert. Es wird eine feste Anzahl von Multiplikatoren verwendet.
Die Blöcke mit variabler Tap-Delay in diesem Beispiel haben eine neu konfigurierbare Laufzeittiefe. Daher werden sie als elastische Speicher mit On-Chip-RAM-Blocks implementiert. Jeder Verzögerungshahn wird basierend auf dem worst case zugewiesen. Die tatsächliche Anzahl der Verzögerungen durch einen Verzögerungs-Tap-Block basiert auf der aktuellen Dezimierungsrate. Ein einzelnes Pointer- oder Adresssignal wird sowohl für die Lese- als auch für das Schreiben in den Verzögerungshahn verwendet. Aus diesem Grund werden Sie den gleichen Speicherspeicherort lesen und schreiben. Der Zwei-Port-RAM ist so konfiguriert, dass alter Speicherinhalt ausgelesen wird, wodurch eine Verzögerung einer bestimmten Anzahl von Zyklen realisiert wird.
Dieses Design verwendet nur zwei Speicherbanken, wobei eine aktualisiert wird, während die andere gelesen wird. Eine Prozessorschnittstelle wird benötigt, um das Nachladen der Prozessoren zur Laufzeit zu realisieren.
Im Setup-Skript für dieses Design haben wir die Taktrate, Dezimierungsrate, Filterlänge, Multiplikator-Engine usw. definiert. Die Verwaltung der Bitbreite wird auch für die Parameterisierung geschrieben. Die wichtigsten Parameter und ihre Definitionen sind in der folgenden Tabelle aufgeführt.
Alle Parameter können an unterschiedliche Designs angepasst werden. Basierend auf den aktualisierten Parametern werden neue HDL-Codes generiert.
Tabelle 1. Parameter für Filter für die Dezimierung variabler Raten
Parameterdefinition | |
---|---|
Taktrate | Die FPGA Taktrate, die das Ziel FMAX |
Samplerate | Eingabedaten-Sample-Rate |
Zeitraum | Die Anzahl der Zyklen, die zwischen eindeutigen Eingabebeispielen verfügbar sind. Entspricht ClockRate/SampleRate und ist ein Parameter für die Kompilierungszeit |
ChanCount | Die Anzahl der Eingabekanäle und darf den Zeitraum nicht überschreiten |
Rmax | Die maximale Dezimierungsrate, die das Design unterstützt |
R | Die aktuelle Dezimierungsrate sollte Rmax nicht überschreiten |
L | Die KERNEL-Größe von KERNEL ODER die Multiplikator-Engine-Größe. Sie stellt die polyphasen-unterschiedliche LÄNGE der FILTER an. |
Weitere Informationen zum Design von Resampling-Filtern in DSP Builder Advanced Blockset 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 in diesem ZIP-Download gehören:
- vardownsampler.mdl – DSP Builder Advanced Blockset Aufsteiger-Teststand und Designdatei für neu konfigurierbare Dezimierungsfilter
- setup_vardownsampler.m – SKRIPT FÜR "BEREITSTELLUNG*", um die Initialisierung und die Parameter von vardownsampler.mdl zu konfigurieren
- vardownsampler_bare.mdl – Designdatei basierend auf vardownsampler.mdl. Einige nicht-überprüfbare Testbank-Blocks werden für die Register-Transfer-Level-Generation (RTL) entfernt
Weitere Informationen zu verwandten Funktionen, die in diesem Designbeispiel in Ihrem Projekt verwendet werden, siehe: