Es gibt zwei Kriterien, anhand derer Sie ein digitales Projekt bewerten können, anhand derer Sie entscheiden können, welcher Teil Ihren Kriterien am besten entspricht. Die erste ist die Entwurfsgröße / -komplexität - wie viel Logik involviert ist. Die zweite ist die Eingangs- und Ausgangsanforderung in Bezug auf die Pin-Anzahl. Die Geschwindigkeit kann berücksichtigt werden, wenn Sie Ihre langsamste Funktion abschätzen können. Die Hersteller-Tools (Altera Quartus II, Xilinx ISE usw.) helfen Ihnen, sobald Sie den richtigen Ballpark gefunden haben.
PAL / PLA / GAL: Diese sollen kleine bis mittlere Schaltungen ersetzen, die Sie normalerweise als LSI-Logikchips (Serie 7400, 4000) implementieren. Diese bieten aufgrund der E / A-Neuzuordnung und vieler einfacher Logikfunktionen bessere Platinenlayouts. Diese Chips enthalten nichtflüchtigen Speicher (oder einmalig programmierbare Sicherungen) und erfordern keine Konfigurationszeit beim Einschalten. Sie dürfen keine Datenspeicherelemente enthalten.
CPLD: Dies sind größere Cousins der PLA. Die Entwürfe können kleine Zustandsmaschinen oder sogar ein sehr einfacher Mikroprozessorkern sein. Die meisten der CPLD-Chips, die ich gesehen habe, haben keinen On-Chip-SRAM, obwohl die große Cypress-CPLD, die Sie verknüpft haben, dies tut. CPLDs können mit größerer Wahrscheinlichkeit mit Flash-Speicher neu programmiert werden und erfordern beim Einschalten keine Konfigurationszeit.
FPGA: Im Gegensatz zur CPLD basieren die Logikblöcke auf SRAM anstelle von Flash-Speicher, was zu schnelleren Logikoperationen führt. Der größte Nachteil bei FPGAs ist, dass das FPGA bei jedem Einschalten des Geräts seine Programmierung in dieses SRAM laden muss, da die Konfiguration im SRAM gespeichert ist. Abhängig von der Größe Ihres Designs und der Geschwindigkeit Ihres nichtflüchtigen Speichers kann dies zu einer spürbaren Verzögerung vom Einschalten bis zur vollständigen Funktionsfähigkeit führen. Einige FPGAs verfügen über einen On-Chip-Flash zum Speichern ihrer Daten, die meisten verwenden jedoch separate Speicherchips. FPGAs verfügen häufig über fest verdrahtete Multiplikatoren, PLLs und andere Logikfunktionen, um die Rechengeschwindigkeit zu verbessern. Große Blöcke von On-Chip-RAM sind ebenfalls verfügbar. Sie können auch leistungsstarke E / A-Spezifikationen wie LVDS, PCI und PCI-Express verwenden.
FPGA mit Mikroprozessor-Hardcore: Ich bin mit diesen nicht vertraut, aber ich würde mir vorstellen, dass sich Ihr Design um die Mikrocontroller-Programmierung dreht und das FPGA den Mikrocontroller erweitert. Die Teile, die Sie identifiziert haben, lassen es so aussehen, als würden Sie Ihr Design mit einem Mikrocontroller und einem FPGA beginnen und dann beide zu einem Chip / Paket kombinieren.
So entscheiden Sie, welches für Sie das Richtige ist:
Der beste Weg ist, Ihren Code (Verilog / VHDL) fertig zu stellen und dann mit den Tools des Anbieters zu versuchen, ihn in den kleinstmöglichen Teil einzupassen. Ich weiß, dass Sie mit Alteras Tool die Programmierziele ziemlich einfach ändern können, sodass Sie weiterhin kleinere FPGAs und dann kleinere CPLDs auswählen können, bis Ihre Designauslastung fast 75% erreicht. Wenn Sie Leistung benötigen, versuchen Sie, Geräte mit Funktionen (schnelle Multiplikatoren) auszuwählen, die die Geschwindigkeitsanforderungen der Logik verringern. Auch hier helfen Ihnen die Hersteller-Tools dabei, festzustellen, ob Sie ein Upgrade benötigen oder ob Sie ein Downgrade durchführen können.
Ein weiterer Faktor für das zu verwendende Teil ist die Benutzerfreundlichkeit. Die Verwendung der PAL / PLA / GAL-Logik ist wahrscheinlich aufwändiger als die Erstellung der Funktion mithilfe diskreter Logikgatter (74HC *, 4000 usw.). CPLDs benötigen normalerweise nur eine einzige Versorgungsspannung und keine zusätzlichen Schaltkreise. Sie sind praktisch eigenständig. FPGAs verwenden ab sofort mehrere Netzteile für E / A und Logikkern, komplexe E / A-Standards, separaten Programmspeicher, mehrschichtige (> 2) Leiterplatten und BGA-Pakete.
Zu den Schritten zur Eingrenzung Ihrer Entwurfsanforderungen gehören:
Identifizieren Sie alle Ein- und Ausgänge für Ihr FPGA / CPLD. Dies ist normalerweise ein einfacher Teil der Entwurfsphase. Auf diese Weise wissen Sie, welches Paket Sie betrachten und wie nah Sie es an diesen Rand bringen können.
Zeichnen Sie ein Blockdiagramm der internen Logik. Wenn Ihre Blöcke einfach aussehen (jeder Block hätte eine Hand voll logischer Gatter und Register), können Sie wahrscheinlich eine CPLD verwenden. Wenn Ihre Blöcke jedoch Beschriftungen wie "Ethernet-Transciever", "PCI-Express x16-Schnittstelle", "DDR2-Controller" oder "h264 Encode / Decode" aufweisen, handelt es sich mit ziemlicher Sicherheit um ein FPGA und die Verwendung von HDL.
- Überprüfen Sie, ob für Ihre Schnittstellen spezielle E / A-Anforderungen gelten, z. B. spezielle Spannungen, LVDS, DDR oder Hochgeschwindigkeits-SERDES. Es ist einfacher, einen Chip zu bekommen, der dies unterstützt, als einen zusätzlichen Übersetzerchip.
Beispiel für CPLD-Anwendungen:
- Mehrkanal-PWM mit SPI-Schnittstelle
- E / A-Expander
- CPU-Adressraumdecodierung
- Uhren (Zeitmessung)
- Multiplexer anzeigen
- Einfacher DSP
- Einige einfache Programme können in ein CPLD-Design konvertiert werden
Beispiel für Hobby-FPGA-Anwendungen:
- Kleine System-on-Chip-Designs (SoC)
- Video
- Komplexe Protokollbrücken
- Signalverarbeitung
- Verschlüsselung / Entschlüsselung
- Legacy-Systememulation
- Logikanalysator / Mustergenerator
Für die meisten Bastlerarbeiten sind Sie auf relativ kleine FPGAs beschränkt, es sei denn, Sie möchten BGA-Pakete löten. Ich würde zwischen einer großen CPLD oder einem billigen FPGA wählen, und die Größen- / Geschwindigkeitsanforderungen würden bestimmen, welche ich brauchte.