Programmierbare Logik kann in Ihrem Widget in vielen verschiedenen Spektren implementiert werden, vom Brennen einiger Gates über die Verwendung eines MUX bis hin zum neuesten FPGA mit integriertem Mikrocontroller und E / A- Peripheriegeräten, ganz zu schweigen von ARMs PrimeCell GPIO oder anderen, spezifischeren Beispielen . Für welche Anwendungen werden die verschiedenen Ebenen der Komplexität programmierbarer Logikgeräte verwendet? Obwohl die Gruppierung nahe den Extremen ihrer Definitionen zu verschmelzen scheint , halte ich dies für eine akzeptable Liste:
- PAL / PLA / GAL : Programmierbares Logikarray; scheinenbei Digikeyals'Embedded - PLDs' aufgeführtzu sein und decken asynchrone 10/8-E / A (ATF16V8C) bis 50 MHz, 192Makrozellen(CY7C341B) ab und sind größtenteils umprogrammierbar.
- CPLD : Komplexes programmierbares Logikgerät; Digikey listet sie als solche auf, verfügbar in 7,5 ns 10 E / A (ATF750C) bis 233 MHz, 428 E / A "CPLDs bei FPGA-Dichte" (CY39100V484B).
- FPGA : Feldprogrammierbares Gate-Array; Verfügbar in 58 E / A (XC2064) bis 1023 E / A-BGA-Bestien (EP1S80F1508C7N).
- FPGA mit harter MCU : Dies ist der Fall, wenn eine MCU physisch im FPGA-IC angeordnet und nicht emuliert ist.
Wikipedia-Zitat:
Der Unterschied zwischen FPGAs und CPLDs besteht darin, dass FPGAs intern auf Nachschlagetabellen (LUTs) basieren, während CPLDs die Logikfunktionen mit Sea-of-Gates (z. B. Produktsumme) bilden. CPLDs sind für einfachere Designs gedacht, während FPGAs für komplexere Designs gedacht sind. Im Allgemeinen sind CPLDs eine gute Wahl für Anwendungen mit breiter kombinatorischer Logik, während FPGAs besser für große Zustandsmaschinen (dh Mikroprozessoren) geeignet sind.
Dies erklärt nicht den Unterschied zwischen der Verwendung einer CPLD mit 233 MHz, 400 E / A und einem vergleichbaren FPGA . oder zwischen einer 192-Makrozellen-PLD und einer vergleichbaren CPLD . Ich kann keine verlässlichen Richtlinien finden, nach denen Gestaltungsmöglichkeiten eingegrenzt werden können. Beachten Sie, dass ich derzeit keine bestimmte Anwendung im Sinn habe, mich aber oft gefragt habe: "Was würde ich dazu verwenden?"
Ich habe außerhalb des Unternehmens ausgezeichnete Ratschläge zu bestimmten Anforderungen erhalten, bin jedoch der Meinung, dass diese Frage von einigen Beispielen profitieren könnte, die zeigen, dass eine PLD-Familie bevorzugt wird, wenn eine andere als gleich oder besser geeignet erscheint.
quelle
Antworten:
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.
Beispiel für CPLD-Anwendungen:
Beispiel für Hobby-FPGA-Anwendungen:
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.
quelle
Eine gute "Faustregel" -Liste würde ungefähr so aussehen:
quelle
Eine einfache Antwort könnte sein, dass es zwei Möglichkeiten gibt:
1. Sie entwerfen Ihr System zunächst auf einer hohen Abstraktionsebene (z. B. HDL oder Schaltpläne). Dann versuchen Sie, es in PAL / CPLD / FPGA einzubauen und diejenigen auszuwählen, die Ihren Anforderungen entsprechen (Anzahl der Gates / Logikelemente, Leistung usw.), und wählen dann das billigste davon aus, je nachdem, was Sie am billigsten definieren (Entwicklungskosten vs. Produktionskosten usw.).
2. In der Regel können Sie jedoch bereits vor Beginn einer HDL-Codierung oder einer schematischen Entwicklung die Komplexität des Systems abschätzen (wie viele Gates benötigen Sie, wenn Sie anscheinend eine 8-Bit-MCU oder 32-Bit-MCU oder keinen Mikrocontroller benötigen) alle). Auf dieser Grundlage können Sie auch Ihr programmierbares Gerät auswählen. Dies wäre weniger genau, ermöglicht jedoch das Entwerfen Ihrer nicht programmierbaren analogen und digitalen Hardware parallel zu programmierbarer Hardware und Software (falls vorhanden).
quelle
Das FPGA mit Hardcore wird verwendet, da es weniger Fläche als ein separater Mikrocontroller und schneller als ein Softcore-Mikroprozessor hat. Der Preis ist jedoch normalerweise am schlechtesten als bei einem FPGA und einem separaten Mikrocontroller. Im Allgemeinen ist Software und daher ein Mikrocontroller besser für (relativ) langsame und seltene Fälle wie die Konfiguration von Parametern und die Fehlerbehandlung. Logik ist besser für kontinuierliche Prozesse. Beispielsweise sollte bei der Paketverarbeitung das Schreiben in einen Speicher logisch erfolgen. Das Timeout für die Lebensdauer sollte in der Software verbleiben.
Innerhalb des FPGA-Raums gibt es billige / stromsparende Teile und teure / schnelle Teile. Im Allgemeinen ist der Mikrocontroller nur im teuren; Dies macht den Kostenhandel gegenüber einer diskreten MCU für die On-FPGA-Lösung noch schlimmer.
Zumindest seit mehr als 10 Jahren verwendet niemand PALs in neuen Designs. CPLDs haben diese Nische übernommen.
In den letzten 5? Jahre CPLDs sind FPGA-ähnlich im Inneren, aber mit Speicher, um die Konfiguration auf dem Chip zu halten. Da FPGAs jetzt 100 MHz haben, ist die Geschwindigkeit weniger ein Grund, Logik in eine CPLD zu integrieren als vor 10 bis 15 Jahren. Die FPGAs verfügen jedoch noch über andere Funktionen wie Multiplikatoren, Serialisierer und viele Speicher, die ein Design zu einem erzwingen können, selbst wenn es nicht so viel Logik enthält.
quelle