Ich arbeite an Xilinx Virtex 4 FPGA. Ich möchte einige Filterkoeffizienten in Block-RAMs speichern.
Insbesondere habe ich viele Filtersätze, wobei jeder Satz 64 Koeffizienten hat und jeder Koeffizient aus 18 Bit besteht. Jeder Satz muss auf einen bestimmten Block-RAM abgebildet werden.
Aus dem Virtex 4-Benutzerhandbuch (Link zum PDF) geht hervor, dass ein Block-RAM 18 Kbit Daten speichert, die in jedem „Seitenverhältnis“ von 16Kx1, 8Kx2 bis 512x36 konfiguriert werden können.
Wenn ich also den Block-RAM so programmiere, dass er 512 Koeffizienten hat, stehen mir 36 verschiedene Block-RAMs zur Verfügung.
Meine Frage ist, kann ich dieses Seitenverhältnis verkleinern, so dass ich den Block-RAM so programmiere, dass er 64 Koeffizienten speichert. In diesem Fall stehen mir 288 verschiedene Block-RAMs zur Verfügung (64 x 288 = 18 KB)?
Wenn die Antwort NEIN lautet, wie soll ich dann meine Koeffizienten speichern, um minimale Block-RAM-Ressourcen zu verwenden?
Nein, Sie haben das Konzept des "Seitenverhältnisses" falsch verstanden.
Jeder Chip hat eine feste Anzahl von Block-RAMs; Sie finden diese Nummer im Datenblatt.
Jeder dieser Block-RAMs hält 18K Bits und kann so konfiguriert werden, dass er auf diese Bits auf verschiedene Arten zugreift, von 16K Wörtern mit jeweils 1 Bit bis zu 512 Wörtern mit jeweils 36 Bits. Im ersten Fall können Sie Bit für Bit lesen oder schreiben; im letzteren Fall können Sie 36 Bit gleichzeitig lesen oder schreiben.
Für Ihre Filterkoeffizienten möchten Sie wahrscheinlich den Block-RAM als 1024 Wörter mit jeweils 18 Bit konfigurieren. Sie können einen Filter für jeden Block-RAM in Ihrem Gerät haben, und Sie werden den größten Teil der Kapazität jedes Block-RAM "verschwenden".
Es gibt ein paar Tricks, die Sie ausprobieren können, um mehr als einen Filter pro Block-RAM zu unterstützen:
Wenn die Adressierung für alle Filter im Gleichschritt läuft, könnten Sie den Block-RAM als 512 Wörter mit 36 Bit konfigurieren und dann den 36-Bit-Datenbus in zwei 18-Bit-Busse aufteilen und die Daten an zwei separate Filter senden .
Wer das Dual-Port-Feature der Block-RAMs sonst nicht benötigt, kann über den zweiten Port einen zweiten Filter speisen. Binden Sie das Adress-MSB an einem Port niedrig und am anderen hoch.
Wenn beide der obigen Bedingungen zutreffen, könnten Sie möglicherweise beide Techniken zusammen verwenden, um Koeffizienten für vier Filter in jedem Block-RAM zu halten.
KharoBangdo
KharoBangdo
David Tweed