Wann wird ein FPGA anstelle einer CPLD bevorzugt und umgekehrt?


7

Ich beginne mit programmierbarer Logik und verwende hauptsächlich die schematische Eingabe. (Hey, ich sehe gerne den Schaltplan anstelle von VHDL / VERILOG: P)

Ich habe ursprünglich eine Xilinx-CPLD mit 128 Makrozellen verwendet, und das Design verfügt über einen Datenbus und verwendet häufig Tri-State-Puffer. Es stellte sich heraus, dass es nicht in die CPLD passte, und der nächste Schritt bei digikey war ein Xilinx-FPGA (5,80 US-Dollar). Ich dachte mir also, ich müsste das Gerät nur auf das FPGA in der ISE umstellen. Anscheinend existieren die Tri-State-Puffer auf einem FPGA nicht, was bedeutet, dass ich viel neu gestalten muss. Einer der Hauptgründe, warum ich ein FPGA verwenden wollte, war, dass das FPGA mit einem SPI-Flash anstelle von JTAG programmiert werden kann. (Ich habe keine JTAG-Programmierer, aber ich habe MCUs, um SPI-Flash zu programmieren.) Es gibt den MachXO2 auf digikey zu einem ähnlichen Preis, aber mit 640 Makrozellen, von denen ich denke, dass sie mehr als genug sein sollten, ganz zu schweigen davon, dass sie programmiert werden können mit SPI-Flash und hat wahrscheinlich die Tri-State-Puffer.

Hier ist also die Frage. Wann werden CPLDs anstelle von FPGAs verwendet und umgekehrt? In welchen Anwendungen ist eine CPLD nicht sinnvoll, aber ein FPGA ist besser geeignet?


Wenn sich jemand für mehr Hintergrundinformationen zu dieser Frage interessiert, finden Sie hier einen Link zu dem Projekt, das ich in diesem Zusammenhang durchführe: gefährliche
Prototypen.com/forum/viewtopic.php?f=56&t=2678


2
@ hak8or Tri-State-Puffer sind auf FPGAs vorhanden. Eigentlich habe ich noch nie einen gesehen, der das nicht tat - und ich benutze Xilinx seit 20 Jahren!

@ David Kessner: Meinen Sie aus Neugier Tri-State-E / A-Puffer oder die Fähigkeit, Busse innerhalb des Chips zu schweben? Obwohl es sicherlich Zeiten gibt, in denen Busse innerhalb eines Chips verwendet werden müssen (z. B. innerhalb eines RAM- oder ROM-Arrays von erheblicher Größe), besteht die Gefahr von Buskonflikten. Wie würde man ein FPGA mit verwendbaren interalen 3-Zustands-Bussen entwerfen, ohne dass die Möglichkeit besteht, dass das Gerät durch fehlerhafte Programmierung zerstört wird?
Supercat

@supercat Ich habe über E / A-Puffer gesprochen. Verwenden Sie einfach keine internen Drei-Staaten-Busse. Je. Einige frühe Xilinx-Teile hatten interne Tri-States, neuere jedoch nicht. Für eine Weile erkannte der Xilinx-Compiler die Verwendung interner Tri-States und emulierte sie mit Logik, aber ich habe diese Funktion nicht verwendet und weiß nicht, ob sie das noch tut. Ich habe eine coole Methode, um interne Busse zu fahren. Es handelt sich um ein von mir geschriebenes C ++ - Programm, das VHDL-, C ++ - und Assemblycode generiert. Wir sollten uns irgendwann darüber unterhalten.

Antworten:


5

Normalerweise ist es ein Systemkompromiss. Wie viele Spannungsschienen werden benötigt, wie viele diskrete ICs werden benötigt, wie viel Leistung, wie viel Logik.

CPLDs sind normalerweise kleiner (weniger programmierbare Ressourcen), erfordern normalerweise eine einzelne Spannungsschiene und benötigen kein externes PROM. Wie bereits erwähnt, wird normalerweise für die Klebelogik anstelle von diskreten Gates verwendet.

FPGAs sind normalerweise sehr groß (mehr logische Ressourcen). Benötigen Sie mehrere Spannungsschienen, verbrauchen Sie mehr Strom.

Die meisten von Menschen beschriebenen Projekte eignen sich am besten für FPGAs.


5

CPLDs werden hauptsächlich für Zufallslogik verwendet, die früher mit einzelnen TTL- und CMOS-Chips implementiert wurde. FPGAs werden in der Regel für komplette Systeme oder komplexe Subsysteme verwendet. Es wird offensichtlich einige Überlappungen geben, und Altera-CPLDs sind eigentlich kleine FPGAs mit On-Chip-Konfigurationsspeicher.

FPGA-E / A können normalerweise dreifach angegeben werden.


1

Eine typische CPLD verfügt über eine kleine Anzahl von Schaltungen zum Berechnen von Logikfunktionen - normalerweise 1 bis 4 pro Ausgangspin -, aber jede Schaltung kann auf eine große Anzahl von Eingängen einwirken. Ein FPGA verfügt normalerweise über eine viel größere Anzahl von Schaltkreisen zur Berechnung von Logikfunktionen, aber jeder von ihnen kann nur auf wenige Eingänge einwirken.

Unter dem Gesichtspunkt der Hardwareeffizienz scheint es am besten zu sein, die Ansätze zu kombinieren, da es etwas verschwenderisch erscheint, eine von wenigen Logikschaltungen mit 36 ​​Eingängen zu verwenden, um ein NAND-Gatter mit zwei Eingängen zu implementieren. Auf der anderen Seite wäre es jedoch verschwenderisch, neun separate Logikelemente mit drei Eingängen und das gesamte damit verbundene Routing zu verwenden , um ein UND-Gatter mit siebzehn Eingängen zu implementieren. In der Praxis tendieren die meisten Geräte jedoch stark zum FPGA- oder CPLD-Lager. Ich vermute, das liegt daran, dass ein Mensch zwar ein gutes Gespür dafür hat, wie ein kleineres Projekt mit einer Vielzahl unterschiedlicher Ressourcen implementiert werden kann, die Software jedoch ein Design einfacher implementieren kann, wenn ein Chip über eine große Anzahl von Ressourcen verfügt, die genau gleichwertig sind.

Folglich würde ich vorschlagen, dass ein Hauptfaktor bei der Entscheidung zwischen einem FPGA und einer CPLD häufig das Ausmaß ist, in dem ein Gerät eine kleine Anzahl komplizierter oder eine größere Anzahl einfacher Funktionen generieren muss.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.