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?
quelle
Antworten:
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.
quelle
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.
quelle
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.
quelle