Ich habe ein 192 Bit langes Schieberegister in mein Design gebaut, und danach mal den Recourcenverbrauch kontrolliert. Dabei ist mir aufgefallen, das Schieberegister in LUT's gebaut werden können. Ich war bisher immer der Meinung, das das nur in FF's geht, da ein Schieberegister ja einen Takt braucht. Wieso können Schieberegister mit LUT's aufgebaut werden ?
Xilinx XAPP465 Using Look-Up Tables as Shift Registers (SRL16) http://www.xilinx.com/support/documentation/application_notes/xapp465.pdf
> Wieso können Schieberegister mit LUT's aufgebaut werden ? 1) Eine LUT ist ein 16x1 Speicher mit 4 Adresseingängen. 2) Alle Speicherelemente in FPGAs (auch in den LUTs) sind FFs. 3) Wenn eine LUT 16 Speicherelemente enthält, dann enthält sie 16 FFs 4) Die können hintereinandergeschaltet werden --> ein 16er SR 5) Mit den 4 LUT-Eingängen wird eines der 16 FFs ausgewählt und auf den Ausgang gelegt. Das war die Kurzfassung. Es gibt aber Randbedingungen. So darf z.B. zur Implementierung eines SR in einer LUT keine Resetbedingung für dieses SR codiert werden.
>Wieso können Schieberegister mit LUT's aufgebaut werden ? Kurze Ergänzung zu den Vorpostern: Weil Xilinx seine LUTs entsprechend gebaut hat. Bei Lattice FPGAs ist das z.B. nicht möglich.
Jan M. schrieb: >>Wieso können Schieberegister mit LUT's aufgebaut werden ? > > Kurze Ergänzung zu den Vorpostern: Weil Xilinx seine LUTs entsprechend > gebaut hat. Bei Lattice FPGAs ist das z.B. nicht möglich. Das lese ich aber im Datenblatt des Lattice ispXPGA anders: http://www.latticesemi.com/dynamic/view_document.cfm?document_id=5010&jsessionid=f0308ec1594a16a06a104575724f86a476d9 S. 6 "In the shift register mode, the LUT functions as a 1-bit to 8-bit shift register. This means that each PFU can implement up to four 8-bit shift registers or any cascaded combination" MfG,
Ah ok, die ispXPGA kenne ich nicht. SCM, XP2 und die diversen ECP (ECP,ECP2(M), ECP3) haben diese Funktion nicht.
@Jan M. Das ist nicht richtig. Auch bei Lattice ist das möglich. Das ist der distributed RAM. Steht z.B. im ECP2/M Family Handbook S. 20 RAM Mode. Und wenn man einen RAM hat, kann man ein leicht ein Schieberegister daraus bauen.
Natürlich kann man über Distributed RAM selbst ein Schieberegister bauen. Dafür braucht man dann aber noch zusätzliche Logik. Die Xilinx LUTs können direkt ein beliebig tiefes Schieberegister implementieren, z.B. ein 13 bit tiefes Schieberegister braucht nur exakt eine LUT - im Lattice ECP2 braucht man eine LUT für den RAM plus mindestens einen Zähler der auf die aktuelle Schreib- und Lese-Position zeigt, bei 13bit also noch 4 FF & LUT zusätzlich für einen Counter.
Mathi schrieb: > @Jan M. > Das ist nicht richtig. Auch bei Lattice ist das möglich. Das ist der > distributed RAM. > Steht z.B. im ECP2/M Family Handbook S. 20 RAM Mode. > Und wenn man einen RAM hat, kann man ein leicht ein Schieberegister > daraus bauen. Bei ECP2 hat der Jan schon recht, da kann man keine LUT's in einem Shiftregistermode schalten. Das muss man mit anderen resourcen wie FF und Distr. RAM nachbauen. Und für den kleinsten Dist-RAMBlock braucht es schon mehrere LUT's bzw slices. Das ist weit von kleinen und praktischen LUT-Shiftregs anderer FPGA-Architekturen entfernt. MfG,
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.