Forum: FPGA, VHDL & Co. Realisierung von Speicher in einem CPLD


von much (Gast)


Lesenswert?

Hallo,

ich beschäftige mich erst seit kurzem mit VHDL. Hier im Forum wurde mir 
nahegelegt vorerst mit einem Simulator zu arbeiten. Nun ist in einem 
Simulator einiges möglich was auf einer konkreten Hardware eigentlich 
nicht implementiert werden kann, da ja keine unbegrenzten Ressourcen zur 
Verfügung stehen. Auf so ein Problem bin ich jetzt gerade bei meinen 
Recherchen gestoßen.

Hier...
https://forums.xilinx.com/t5/CPLDs-Archived/RAM-and-ROM-for-Coolrunner-II-CPLD/td-p/1200
...wird erwähnt, dass auf einem CPLD lediglich 1 Bit an RAM pro 
Makrozelle implementiert werden kann. Auf den ersten Blick erschien mir 
das schon einleuchtend. Nun frage ich mich aber warum man sich keinen 
RAM durch entsprechende Verschaltung von Gates zusammenbauen kann? Ein 
RS-FF kann man sich ja aus zwei NOR- oder NAND-Gattern zusammenbasteln. 
Warum geht das in einem CPLD nicht?

von Falk B. (falk)


Lesenswert?

@ much (Gast)

>...wird erwähnt, dass auf einem CPLD lediglich 1 Bit an RAM pro
>Makrozelle implementiert werden kann.

Ja, auch FlipFlop genannt.

> Auf den ersten Blick erschien mir
>das schon einleuchtend. Nun frage ich mich aber warum man sich keinen
>RAM durch entsprechende Verschaltung von Gates zusammenbauen kann?

Kann man, aber selbst die größten CPLDs haben gerade mal 512 
Macrozellen.

> Ein
>RS-FF kann man sich ja aus zwei NOR- oder NAND-Gattern zusammenbasteln.
>Warum geht das in einem CPLD nicht?

Doch das geht, der Ram ist dann allerdings synchron (mit Takt) und nicht 
asynchron wie klassischer SRAM.

von Mitlesa (Gast)


Lesenswert?

Falk B. schrieb:
> Kann man, aber selbst die größten CPLDs haben gerade mal 512
> Macrozellen.

... und vermutlich wird man das an Registern verlieren was man
an Implementierung von Flipflops verbraucht da das Register sich
vorgefertigt in derselben Kombinatorik-Makrozelle befindet wie
die Verküpfungslogik eines "selbstgebauten" RS-FF.

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


Lesenswert?

much schrieb:
> Ein RS-FF kann man sich ja aus zwei NOR- oder NAND-Gattern
> zusammenbasteln. Warum geht das in einem CPLD nicht?
Weil ein CPLD keine solchen kleinen primitiven Funktionen hat, sondern 
nur übermächtige Produktterme. Und von denen gibt es genausowenig wie es 
FLipflops gibt.

Langer Rede kurzer Sinn: vergiss CPLDs. Nimm ein kleines FPGA. Das 
kleinste davon hat mehr Speicher eingebaut als du mit irgendeinem CPLD 
realisieren könntest...

von Rene H. (Gast)


Lesenswert?

Lothar M. schrieb:
> Langer Rede kurzer Sinn: vergiss CPLDs. Nimm ein kleines FPGA. Das
> kleinste davon hat mehr Speicher eingebaut als du mit irgendeinem CPLD
> realisieren könntest...

Was wäre ein kleiner FPGA von Xilinx? Hast Du da einen Tipp?

Grüsse,
René

von Strubi (Gast)


Lesenswert?

>
> Was wäre ein kleiner FPGA von Xilinx? Hast Du da einen Tipp?
>

Das kleinste was am unteren state-of-the-art Ende rausrutscht, ist wohl 
noch die Spartan3-Reihe. Ich würde in der Domäne sonst mal Richtung 
Lattice linsen, wie z.B. MachXO2, oder ICE40, die sind recht 
kosteneffektiv und ersetzen bei mir so langsam die CPLDs.

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


Lesenswert?

Strubi schrieb:
> mal Richtung Lattice linsen, wie z.B. MachXO2
Die hatte ich gemeint...

Xilinx möchte eher die High-End-Telekom-Applikationen versorgen (das 
zeigen auch ganz schön die aktuellen Startbilder auf deren HP: 
stattliche Serverschränke, 5G Telefonie, Satelliten, autonome 
Fahrzeuge...). Da tun sie sich ein wenig schwer mit "klein".
Lattice möchte dagegen explizit das andere Ende des Marktes bedienen und 
baut auch FPGAs mit genau den Schnittstellen, die in typischen 
Mikrocontrolleranwendungen gefragt sind und angewendet werden.

von Uwe B. (uwe_beis)


Lesenswert?

Die Altera CPLDs (zumindest die nicht ganz alten Serien, soweit ich 
weiß, ab MAX II) haben ja ein User Flash Memory auf dem Chip. Das ist 
(auch wieder soweit ich weiß) extern, aber, wenn man es intern braucht, 
auch intern nur über SPI zugänglich.

Das ist zwar kein RAM, wie ursprünglich gefragt, aber weiß jemand, ob 
man das auch in eine Simulation einbinden kann?

von much (Gast)


Lesenswert?

Lothar M. schrieb:
> Weil ein CPLD keine solchen kleinen primitiven Funktionen hat, sondern
> nur übermächtige Produktterme. Und von denen gibt es genausowenig wie es
> FLipflops gibt.

Ich hab mir jetzt den Aufbau vom Xilinx-XC9572 noch mal angeschaut und 
ich glaube ich versehe jetzt was du meinst.

Irgendwie sind mir diese CPLDs suspekt. Der Einsatz eines CPLD erscheint 
mir nur dann sinnvoll bzw. möglich wenn es eine Digitale Schaltung 
ersetzen soll deren Anzahl an Gates nicht wesentlich über der Anzahl der 
Macrozellen der CPLD liegt. Irgendwie verstehe ich gerade nicht wie man 
beim CPLD die 1600 Gates ausnutzen soll. Man kann ja den Ausgang eines 
Gates nicht direkt mit dem Eingang eines anderen verschalten. Wäre da 
ein kleiners Verhältnis von Gates zu Macrozellen i.A. nicht sinnvoller?

von Torben Kuhn (Gast)


Lesenswert?

much schrieb:
> Man kann ja den Ausgang eines
> Gates nicht direkt mit dem Eingang eines anderen verschalten.

Doch, das ist ja das schöne daran. Man kann die Makrozellen miteinander 
kombinieren

von much (Gast)


Lesenswert?

Torben Kuhn schrieb:
> Doch, das ist ja das schöne daran. Man kann die Makrozellen miteinander
> kombinieren

Kannst du bitte mal kurz erklären wie das funktioniert?

Wenn ich mir z.B. folgende Schaltungen anschaue, dann kann ich den 
Ausgang doch erst nach dem MUX (einer pro Makrozelle) wieder in die 
Schaltmatrix zurückführen.

http://www.jjmk.dk/MMMI/PLDs/CPLD/CPLD.htm

Um die 1600 Gates wirklich ausnützen zu können müsste man die Ausgänge 
der UND-Gates ja direkt wieder in die Schaltmatrix rückführen können. 
Das ist ja anscheinend nicht möglich oder übersehe ich da etwas?

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


Lesenswert?

much schrieb:
> Wäre da ein kleiners Verhältnis von Gates zu Macrozellen i.A. nicht
> sinnvoller?
Ja. Das nennt sich FPGA: dort sitzt hinter jeweils einem 
konfigurierbaren 4er- oder 6er-Logikblock (=LUT Lookuptable) gleich ein 
Flipflop.

CPLDs waren super, als man einen breiten Adressbus decodieren und einige 
Chipselect-Signal erzeugen musste: da konnte einer jeder der 
Produktterme gleich alle Adressleitungen auswerten. Und der Vorteil war: 
die Durchlaufzeit war pro Produktterm die selbe.
In einem FPGA müssen aber evtl. mehrere LUTs hintereinander geschaltet 
werden und so ergeben sich je nach Signalpfad unterschiedliche 
Durchlaufzeiten.
Das ist aber in der Realität halb so schlimm: man sagt der Toolchain wie 
schnell man es braucht und die versucht ihr Bestes und meldet es, wenns 
nicht klappt...

much schrieb:
> Wenn ich mir z.B. folgende Schaltungen anschaue
Dort sieht man sehr schön: eine riesige Logik, aber nur ein einziges 
Flipflop. Das ist ganz schlecht für Zähler, wo z.B. das unterste Bit ja 
nur eine Negierung seiner selbst ist. Für dieses "NOT" wird ein ganzer 
Produktterm "verheizt"...

: Bearbeitet durch Moderator
von Torben Kuhn (Gast)


Lesenswert?

much schrieb:
> Kannst du bitte mal kurz erklären wie das funktioniert?

Letztes Bild. Der Ausgang der Makrozelle geht auf Wunsch auch über die 
Matrix auf die Eingänge anderer Makrozellen.

von much (Gast)


Lesenswert?

Lothar M. schrieb:
> Ja. Das nennt sich FPGA: dort sitzt hinter jeweils einem
> konfigurierbaren 4er- oder 6er-Logikblock (=LUT Lookuptable) gleich ein
> Flipflop.

Okey ich glaube jetzt hab ich die Vor- und Nachteile von CPLDs und FPGAs 
ausreichend verstanden um Abschätzen zu können wann welche Technologie 
sinnvoll eingesetzt werden kann.

Im Grunde würde der CPLD in seiner Funktion in etwa einem FPGA mit 
lediglich 72 Feldern und einer riesig großen LUT ensprechen.

Danke euch allen für die Hilfe! Und sorry für die vielen naiven Fragen.

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


Lesenswert?

much schrieb:
> Im Grunde würde der CPLD in seiner Funktion in etwa einem FPGA mit
> lediglich 72 Feldern und ...
72 riesigen LUTs. Von denen normalerweise jeweils nur wenig genutzt 
wird...

: Bearbeitet durch Moderator
von much (Gast)


Lesenswert?

Lothar M. schrieb:
> 72 riesigen LUTs

Ups, ja das meinte ich.

von MCUA (Gast)


Lesenswert?

bloss, dass von den 36/72/144/288/(..1024) "riessigen LUTs" jeder mit 
jedem verschaltet werden kann! was bei FPGAs nicht der Fall ist.

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


Lesenswert?

MCUA schrieb:
> bloss, dass von den 36/72/144/288/(..1024) "riessigen LUTs" jeder mit
> jedem verschaltet werden kann! was bei FPGAs nicht der Fall ist.
Natürlich wird bei FPGAs jede LUT beliebig mit anderen LUTs verschaltet, 
weil sonst ja nur logische Terme mit 4 Eingängen möglich wären.

Und für CPLDs ist die Durchlaufzeit auch nur dann "garantiert", wenn 
zwischen Ein- und Ausgang nur 1 Produktterm sitzt.

von MCUA (Gast)


Lesenswert?

Nö.
Bei PLDs lassen sich prinzip. Jede MAC Direkt mit Jeder anderen MAC 
verbinden (weshalb der Routing-Platzbedarf quadratisch mit der 
MAC-Anzahl steigt!).
Bei FPGAs sind diese Routing-Resourcen prinz. viel geringer.
CLBs oder LEs haben nur begrenzte Anzahl Leitungen (egal ob 
Track-Interconnect, Short oder LongLines), mit denen man direkt zu 
andern CLBs oder LEs verschalten kann. (diese Resourcen wurden jedoch 
die letzten Jahre immer weiter vergrössert (was ebenfalls die 
Siliciumfläche ansteigen lässt)). Klar kann man mehrere MACs CLBs LEs 
und was sonst noch hinereinanderschalten, aber dann dauerts länger.
(wie nebendran geschrieben, letztlich zählen nicht MACs oder CLBs, LEs, 
sondern die Funktion und der Preis)

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Falk B. schrieb:
>> Ein
>>RS-FF kann man sich ja aus zwei NOR- oder NAND-Gattern zusammenbasteln.
>>Warum geht das in einem CPLD nicht?
>
> Doch das geht, der Ram ist dann allerdings synchron (mit Takt) und nicht
> asynchron wie klassischer SRAM.

Man kann sich auch ungetaktete RS-Flipflops in einem CPLD bauen, was ich 
neulich auch in einem Projekt genau so umsetzen musste. Allerdings 
belohnt einen der Synthesizer mit dem Vorwurf, man hätte eine 
kombinatorische Schleife gebaut, was ja auch völlig korrekt ist. Leider 
habe ich noch keine Möglichkeit gefunden, diese Warnungen für konkrete 
Einzelfälle zu unterdrücken.

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.