Forum: FPGA, VHDL & Co. Distributed RAM


von Frager (Gast)


Lesenswert?

Hallo!
Kann mir jemand erklären wie Distributed RAM unter Nutzung von LUTs 
funktioniert? Also nicht wie man das erstellt, corgen kann das ja 
soweit, sondern was da passiert. Ein 16x32(Tiefe x Weite)-Bit-Distr-RAM 
braucht z.B. 32 FF und 32 LUTs. Wie werden die genutzt bzw. die 16 
32-Bit-Werte gespeichert?

von Falk (Gast)


Lesenswert?

@Frager

>Kann mir jemand erklären wie Distributed RAM unter Nutzung von LUTs
>funktioniert? Also nicht wie man das erstellt, corgen kann das ja

Eine LUT kann als 16x1 Single Port RAM benutzt werden. Zwei LUTs können 
im Verbund als quasi 16x1 Dual Port RAM benutzt werden (der zweite Port 
kann nur lesen).
Daraus lässt sich leicht errechnen, dass für einen 16x32 Bit RAM eben 32 
LUTs benötigt werden. Die Flipflops werden meist vom Coregenerator 
drangemacht, damit sich der RAM wie synchoner RAM verhält (Daten können 
nicht kombinatorisch gelesen werden, erst mit der Taktflanke). Das 
bringt Geschwindigkeitsvorteile. Kann man aber auch ausschalten, dann 
kann kombinatorisch gelesen werden, so wie SRAM. Der Schreibzugriff ist 
immer synchron (als mit Takt).

MfG
Falk

P.S. Ach ja, das ganze geht nur bei Xilinx (weil die die Patente haben).

von jf (Gast)


Lesenswert?

>>>>P.S. Ach ja, das ganze geht nur bei Xilinx (weil die die Patente haben).

Das ist Unsinn. Geht auch bei Lattice.

von Frager (Gast)


Lesenswert?

Ja, danke soweit, das mein ich aber nicht ganz. Ich würde eben gern 
wissen wie das möglich ist. Wird das LUT dann so konfguriert, das die 
vier Eingänge einen bestimmten Ausgang erzeugen, also quasi das was man 
sonst als kombinatorische Funktion nutzt einfach als Speicher?
Das hieße der 32-Bit-Wert wird bitweise auf 32 LUTs verteilt und bei 
jedem Schreiben müssen alle LUTs neu geschrieben werden?

von Lothar (Gast)


Lesenswert?

@Frager: ein FPGA von Xilinx (Lattice, Altera) ist nichts anderes als 
ein SRAM. Und weil eine LUT ein Teil eines FPGAs ist, ist die LUT auch 
nichts anderes als ein SRAM.

Normalerweise wird jetzt in einer LUT eine beliebige kombinatorische 
Funktion mit 4 Eingängen und 1 Ausgang abgebildet. Standard in einer 
FPGA-LUT ist also: 4 Adress-Leitungen und ein Daten-Ausgang.
Ja, und jetzt fehlt nicht mehr viel zum RAM: nur noch ein Daten-Eingang. 
Und da schaltet das FPGA die LUT in einen anderen Modus: schon haben wir 
keine LUT sondern ein richtiges klitzekleines RAM mit Eingang, Ausgang 
und 4-Bit-Adresse.

Das wars dann schon.

OK, wenn man punktgenau wissen will, was da intern wirklich abgeht, muss 
man schon mal die entsprechenden Patente studieren (aber da könnte man 
gleich beim MuxF5, MuxF6 und der Carry-Chain weitermachen).
So eine LUT lässt sich übrigens auch prima als Schieberegister mit bis 
zu 16 Bit Länge verwenden (das ist dann wieder ein anderer Modus für die 
LUT).

von Paule (Gast)


Lesenswert?

Meines Wissens steckt das zum RAM benötigte FF schon in den Zellen drin. 
Wenn die Logikzelle also durch ein LUT belegt ist, ist das FF auch weg 
oder adners herum gesehen, die Nutzung einer LUT-Zelle als RAM braucht 
kein zusaetzliches FF.

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.