Wofür werden speicherprogrammierbare ICs unterschiedlicher Komplexität verwendet?


10

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:

  1. 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.
  2. 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).
  3. FPGA : Feldprogrammierbares Gate-Array; Verfügbar in 58 E / A (XC2064) bis 1023 E / A-BGA-Bestien (EP1S80F1508C7N).
  4. 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.


Der XC2064 ist ein altes Teil. Ich weiß nicht, ob CY7C341B und CY39100V484B noch hergestellt werden. Sie sollten dies berücksichtigen, wenn Sie einen Vergleich / eine Entscheidung treffen.
Brian Carlton

2
Zu Ihrer Information, bei jedem dieser Teile gibt es einen großen Unterschied zwischen der Vielfalt der Angebote, die Hersteller in ihre Literatur aufnehmen, und der viel kleineren Auswahl an Kombinationen aus Gate-Anzahl, Paket, Geschwindigkeit und Temperatur, die Sie tatsächlich erwarten können kleine Mengen in weniger als einem halben Jahr Vorlaufzeit. Überprüfen Sie also beim Entwerfen mit ihnen zuerst die tatsächliche Verfügbarkeit. Selbst wenn ich weiß, dass der Einkauf sie aus dem Vertrieb beziehen möchte, bevorzuge ich Geräte, bei denen ich weiß, dass ein prototypischerer Lieferant sie bei Bedarf über Nacht zur Verfügung hat.
Chris Stratton

Guter Rat, @ChrisStratton. Dies ist normalerweise das erste, was ich mit den meisten Teilen überprüfe, aber es ist immer noch gut zu wissen, dass es bei PLDs besonders problematisch ist.
Tyblu

Antworten:


7

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:

  1. 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.

  2. 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.

  3. Ü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.


Wenn Sie Ihre Antwort leicht erweitern, würde ich PAL / PLA / GAL gerne in den gleichen Warenkorb wie PLD / CPLD gruppieren, da ein sofortiger Start ohne Konfigurationszeit erfolgt und die Anbieter beginnen, CPLDs vor PAL / PLA / zu verschieben GAL-Geräte. Zum Beispiel arbeite ich mit einigen Gittergeräten und deren IC der CPLD-Familie sind deutlich billiger und bieten mehr Gates als die Cousins ​​von PAL / GAL / PLA. Die Kosten der letzteren sind für das, was sie anbieten, im Vergleich zu den ersteren unerschwinglich.
smashtastic

Die Linie verwischt definitiv ein bisschen. Ich dachte nicht, dass PAL / PLA / GALs Speicherelemente oder CLPDs SRAM hatten, bis ich die aufgeführten Tyblu-Teile nachgeschlagen habe. Es scheint, dass die PAL / PLA / GALs eher wie Entenband in einem Design sind als ein Kernteil.
W5VO

3

Eine gute "Faustregel" -Liste würde ungefähr so ​​aussehen:

  • PAL / PLA / GAL: Wird anstelle von diskreten IC-Logikgattern auf einer Leiterplatte verwendet
  • CPLD: Wird verwendet, wenn komplexe, nicht-DSP- und möglicherweise zeitkritische Aufgaben erforderlich sind (Laden des Boot-Codes auf ein FPGA aus dem Speicher, LUT-Sinusgenerator für DAC usw.)
  • FPGA: Wird verwendet, wenn zeitkritische, Multiplikations- oder DSP-Funktionen erforderlich sind (FIR-Filter, FFTs usw.).
  • FPGA mit harter MCU: Wird verwendet, wenn FPGA-Funktionalität erforderlich ist und Peripheriegeräte auf dem FPGA zugänglich sein müssen (Temperatursensoren) oder um der Einfachheit halber eine weniger zeitkritische Aufgabe in C anstelle von VHDL zu implementieren (UART / Serial Port-Funktionalität, PCB-Reinigung usw.)

Mit einer billigen CPLD unter einem Dollar in geringer Menge sind PAL / PLA / GAL bis auf ältere Anwendungen so gut wie tot.
Chris Stratton

Das werde ich nicht bestreiten. Ich konnte mir nur vorstellen, dass sie möglicherweise immer noch verwendet werden, wenn eine geringe (Batterie-) Leistung / geringe Größe eine Einschränkung darstellt, da sie möglicherweise vorteilhafter als eine CPDL sind, aber ich würde immer noch die kleinste / energieeffiziente CPLD verwenden, wenn es meine wäre Design.
Joel B

2

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).


2

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.


1
Ein Grund für die Beibehaltung einer CPLD besteht darin, dass derzeit noch kostengünstige CPLDs in Einzelversorgungsspannungstechnologien hergestellt werden, während die meisten aktuellen FPGAs mehrere Versorgungsspannungen erfordern. Wenn Sie also nicht viel tun müssen, ist es billiger, eine CPLD auf das Board zu setzen. Wenn Sie jedoch von einer großen CPLD sprechen, ist eine Low-End-FPGA möglicherweise billiger und bietet Ihnen mehr Raum für zukünftige Verbesserungen, insbesondere wenn Sie haben die Kernspannungsversorgungen bereits aus einem anderen Grund zur Verfügung.
Chris Stratton

Vielen Dank für Ihre Antwort, @BrianCarlton, und die Kommentare, @ChrisStratton. Die angegebenen Beispiele und die aktuelle Meinung sind großartige Informationen.
Tyblu
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.