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?
@ 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.
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.
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...
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é
> > 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.
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.
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?
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?
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
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?
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
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.
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.
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
bloss, dass von den 36/72/144/288/(..1024) "riessigen LUTs" jeder mit jedem verschaltet werden kann! was bei FPGAs nicht der Fall ist.
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.
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)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.