Wird dieser BRAM voll ausgenutzt, wenn ich eine andere Datenbreite verwende?

Hintergrund

Ich verwende ein Xilinx-FPGA aus der Kintek-7-Familie. Die Dokumentation zu den Speicherressourcen finden Sie hier .

Hier sind einige wichtige Auszüge aus dem Dokument (mit Verweis auf die Seiten 11 und 12):

Der Block-RAM in den FPGAs der Xilinx® 7-Serie speichert bis zu 36 Kbit Daten und kann entweder als zwei unabhängige 18-Kb-RAMs oder als ein 36-Kb-RAM konfiguriert werden. Jeder 36-KB-Block-RAM kann als 64 KB x 1 (bei Kaskadierung mit einem benachbarten 36-KB-Block-RAM), 32 KB x 1, 16 KB x 2, 8 KB x 4, 4 KB x 9, 2 KB x 18, 1 KB x 36 oder konfiguriert werden 512 x 72 im einfachen Dual-Port-Modus. Jeder 18-KB-Block-RAM kann als 16K x 1, 8K x 2, 4K x 4, 2K x 9, 1K x 18 oder 512 x 36 im einfachen Dual-Port-Modus konfiguriert werden.

Und

Jeder 36-KB-Block-RAM kann auf den einfachen Dual-Port-Modus (SDP) eingestellt werden, wodurch die Datenbreite des Block-RAM auf 72 Bit verdoppelt wird. Der 18-KB-Block-RAM kann auch auf einen einfachen Dual-Port-Modus eingestellt werden, wodurch die Datenbreite auf 36 Bit verdoppelt wird. Der einfache Dual-Port-Modus ist so definiert, dass er einen Nur-Lese-Port und einen Nur-Schreiben-Port mit unabhängigen Takten hat.

Daraus interpretiere ich, dass die Datenbreite des BRAM ein Vielfaches von 18 ist . Es ist also 36 mit Dual-Port, oder es könnte 72 sein, wenn Sie das verdoppeln.

Frage

In meiner Implementierung benötige ich nur eine Datenbreite von 64 Bit. Was passiert mit diesen zusätzlichen 8 Bits? Bedeutet das, dass ich nicht den gesamten BRAM-Block nutzen werde?

Hier ist eine Grafik, die hilft, meine Denkweise zu verstehen:

Geben Sie hier die Bildbeschreibung ein

Manchmal ist es möglich, dass sich mehrere Narrow-RAM-Blöcke denselben BRAM teilen, aber das hängt von den Optimierungen ab, die gewählt wurden, um das synthetisierte Design in das Gerät einzupassen.

Antworten (2)

Richtig, die restlichen Bits sind ungenutzt.

Das muss man bei FPGAs einfach akzeptieren, man wird nie alle Ressourcen nutzen. Es ist der Preis, den Sie für die Konfigurierbarkeit zahlen.

Auf der positiven Seite, wenn Sie sich zu einem späteren Zeitpunkt entscheiden, so etwas wie Paritätsinformationen hinzuzufügen oder den Datenbus einfach etwas breiter zu machen, können Sie dies im Wesentlichen kostenlos tun, da Platz vorhanden ist, um 8 weitere Bits Breite mit demselben Speicher hinzuzufügen .

Ergänzend zu Toms Antwort:

BlockRAMs haben ein zusätzliches (meistens als Parität bezeichnetes) Bit pro Byte, was Ihnen Folgendes gibt:

  • 9(8+1),
  • 18(16+2),
  • 36(32+4),
  • 72 (64 + 8) Bit.

Diese Bits können für einfache Paritätsalgorithmen verwendet werden, um Ihre Daten zu "sichern". Oder Sie können ECC implementieren. In diesen zusätzlichen Bits können Sie auch Metainformationen wie Valid, StartOfFrame/EndOfFrame speichern. BlockRAMs sind auch oft eine Quelle für Konstanten (ROM) in DSP-Algorithmen. Die meisten Konstanten haben keine Zweierpotenz, daher können an manchen Stellen zusätzliche Bits nützlich sein.