Xilinx-FPGAs können LUTs als Speicherelemente verwenden. Sie können als ROM, RAM und Schieberegister (SRL) verwendet werden.
Neue Xilinx-Geräte verwenden LUTs mit 6 Eingängen, was 64 x 1 Bit für RAMs/ROMs, aber nur 32 Bit für SRLs ergibt.
Warum sind SRLs auf 2^5 Bits beschränkt?
Mir ist keine Erklärung in den offiziellen Dokumenten bekannt.
Ich glaube, das liegt daran, dass die LUTs des Spartan 6 intern als LUT mit 5 Eingängen und 2 Ausgängen gefolgt von einem umgehbaren Mux aufgebaut sind.
Nun, warum Sie kein 2 Bit breites, 32 Bit langes Schieberegister in einer einzigen LUT erstellen können, ist eine gute Frage. Anscheinend sollte das möglich sein, und dann sollte es möglich sein, den Ausgang einer Seite zurück auf die andere Seite zu schleifen, um ein 64-Bit-Schieberegister in einer einzigen LUT zu erhalten. Sie müssten Xilinx fragen, warum sie das nicht unterstützen.
Ich habe keine Antwort, da ich die internen Details von Xilinx-Slices nicht kenne. Ich habe einige Hinweise.
Erstens können Sie keine Daten in einer LUT6 speichern. Sie können Daten nur in Registern (die mit 2/LUT6 nummeriert sind) und verteiltem RAM/BlockRAM speichern. Was Ihre LUT6 = 64-Bit-Annahme etwas aufhebt.
Verteilter RAM und Schieberegister haben etwas nichts mit LUT6-Primitiven zu tun. Wenn Sie sich das Spartan-6 Configuration Logic Blocks User Guide ansehen , werden Sie sehen, dass es 3 Arten von Slices auf dieser Architektur gibt:
Schieberegister (und verteiltes RAM) sind nur auf SLICEM CLBs verfügbar, was bedeutet, dass sie den verteilten RAM-Block sowie die LUT6 benötigen. Xilinx macht keine Angaben zum RAM-Block, aber wir wissen aus der Dokumentation, dass ein LUT6+RAM einen 64x1-Bit-Single-Port-Distributed-RAM oder einen SRL32 implementieren kann.
Ein VLSI-Guru könnte wahrscheinlich die Details des internen RAMs ableiten, aber ich finde das vernünftig:
Als Schieberegister werden wahrscheinlich 32-Bit-Dual-Port-RAMs mit spezifischen Steuerungen implementiert, die von der LUT6 bereitgestellt werden.
Paebbels
Paebbels
Paebbels
Jonathan Drolet