Forum: FPGA, VHDL & Co. Doppelt so viele Register wie LUTs?


von schiebepeter (Gast)


Lesenswert?

Hallo,
wieso haben aktuelle FPGAs (bspw. Cyclone 10 GX) mehr FFs als LUTs? 
Meine Designs sehen meistens so aus, dass ich mir eine Pipeline 
schreibe, und dabei wird zwischen zwei FFs immer mindestens eine LUT 
verwendet. Am Ende bleiben bei mir Unmengen an FFs frei, und diese kann 
ich nicht nutzen (oder der Mapper will sie nicht nutzen). In welchem 
sinnvollen Fall werden doppelt so viele Register wie LUTs verwendet?

von Hannes (Gast)


Lesenswert?

Bei den Xilinx-FPGAs kann eine LUT entweder als 6:1 verschalten werden, 
oder auch als 5:2 mit identischen Eingaengen fuer beide LUTs. Damit kann 
das zweite Register fuer die zweite Funktion verwendet werden, wenn 
beide kompatibel getaktet werden.

Bei den Intel-FPGAs gibt es wahrscheinlich etwas aehnliches, wie die 
LUTs verschaltet werden koennen.

von Vancouver (Gast)


Lesenswert?

Beispiele:

- Distributed RAM und Schieberegister haben keine Logik zwischen den FFs
- Die Tools verwenden bei Bedarf Register duplication, um z.B. den 
Fanout zu reduzieren
- Register sind manchmal mit hardmacros statt LUTs verbunden (z.B. DSPs)


Aber warum stört dich das? Im FPGA behältst du immer eine Menge 
ungenutzter Ressourcen übrig. Wenn dein Design reinpasst und 
funktioniert, ist es doch egal, was übrig bleibt. Genauso kannst Du dich 
über ungenutzte Routingressourcen beschweren.

von schiebepeter (Gast)


Lesenswert?

Vancouver schrieb:
> Aber warum stört dich das? Im FPGA behältst du immer eine Menge
> ungenutzter Ressourcen übrig. Wenn dein Design reinpasst und
> funktioniert, ist es doch egal, was übrig bleibt. Genauso kannst Du dich
> über ungenutzte Routingressourcen beschweren.

Mich stört es nur deswegen, weil ich immer gerne weiß, wieso im FPGA 
etwas so und so konzipiert ist. Deine Erklärung ist gut, das mit der 
register duplication war bei mir bisher der einzige Punkt. Distributed 
RAM habe ich bisher noch nicht so genau betrachtet, danke!

von Vancouver (Gast)


Lesenswert?

Noch ein Beispiel: Wenn Du im FPGA einen Bus hast (z.B. AXI/APB), an dem 
viele Register hängen. Zwar hat jedes Register einen Adressdecoder, aber 
das sind eben nur ein paar einzelne LUTs, die das gemeinsame 
writeEnable-Signal für 32 oder gar 64 FFs erzeugen. In dem Fall werden 
deutlich mehr FFs als LUTs benötigt.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

schiebepeter schrieb:
> Distributed RAM habe ich bisher noch nicht so genau betrachtet, danke!
Wobei dieses RAM normalerweise nicht aus Registern, sondern aus 
"umfunktionierten" LUTs aufgebaut ist...

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
Noch kein Account? Hier anmelden.