mikrocontroller.net

Forum: FPGA, VHDL & Co. Umstieg von FPGA auf CPLD


Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute!

Ich habe eine Implementierung für eine UART erstellt.
Für den FPGA xc4vfx12.

Hier funktioniert alles inklusive Programmfile-Generierung.

Jetzt habe ich aber vom CPLD-XC9536 gehört und wollte für diesen
ein ensprechendes Programmfile generieren.

Leider bricht er mir bei der Fit-Prozedur ab und meldet folgende
Warnings und Errors:
Warning: 936- the output buffer 'txerror_obuf' is missin an input and
will be deleted.
Error: CPLD:837 - Insufficient number of macrocells. The design needs
at least 76 but only 36 left after allocating other resources. Device
953644pc was disqualified.
Error: Cpld:868 - Cannot fit the design into any of the specified
devices with the selected implemntation options.
Error: Fit Failed.

Habe ich das richtig verstanden, dass dieser CPLD zu wenig Resourcen
besitzt?
Ich verstehe leider die Fehlermeldung nicht ganz, weil ich die
ensprechenden Hintergründe nicht kenne.

Bitte helft mir.

Danke.

Tschüss, Martin

Autor: FPGA-User (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja richtig, das CPLD hat nur 36 Macrozellen, Du benötigst
mindestens 76, also das Minimum wäre ein XC95108.
Der XC9536 ist definitiv zu klein.

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich bin vor Kurzem in die Welt der FPGAs eingetreten.
Darum habe ich noch ein bißchen Schwierigkeiten, mich zurecht zu
finden.
Es gibt unglaublich viele Bausteine. Leider habe ich noch keine
Ahnung nach welchen Kriterien ich so einen Baustein auswählen kann.

Nach welchen Kriterien wählt man so einen Baustein aus, auf welche
Gegebenheiten ist hier zu achten?
Wie weiß ich, dass mir der Baustein während der Entwicklungsphase nicht
zu knapp wird?

Was ist eine Macrozelle?

Danke für eure Antworten.

Gruß, Martin

Autor: FPGA-User (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Martin,

wenn Du schon einen Virtex-4 programmiert hast, solltest Du
eigentlich schon ganz gut Bescheid wissen, egal
nimm Dir einfach mal ein Datenblatt vom XC9536 o.ä.
da ist die Macrozelle gut erklärt.
Vereinfacht gesagt ist es ein FF mit reichlich Kombinatorik
drumrum.
Ein XC9536 hat also 36 FFs, ein XC95144 entsprechend 144.

Wie man einen Baustein auswählt könnte schon fast Thema
für eine Promotion sein, das geht schon in Richtung Philosophie.

Natürlich sollte man für eine Anwendung mit 15 FIR-Filtern,
einer Hardware-FFT und 2 Stück NCOs nicht unbedingt ein CPLD
anvisieren oder einen Baustein der keine Block-RAMs und keine
Hardware-Mulitplizierer hat - das wäre dumm ;-))

Damit es nicht zu knapp wird, macht man vorher eine Ressourcen-
Abschätzung, was sehr schwierig werden kann, wenn noch gar nicht
klar ist, welche Funktionen konkret benötigt werden, deshalb
ein größeres Device nehmen und dann schauen, dass man auf kleinere,
Pin-kompatible runtergehen kann.

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Wo liegt eigentlich genau der Unterschied zwischen FPGA und CPLD?
Habe mal im Wikipedia geschaut, aber ich konnte hier die Unterschiede
nicht wirklich gut erkennen.
Ich habe gehört, dass ein FPGA mehr Makrozellen haben soll oder so.
Wo liegt hier der eigentliche Vorteil eines FPGAs zu einem CPLD?

Gruß, Martin

Autor: high_speed (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Martin

Einen FPGA kann man nicht mit einen CPLD vergleiche.
Sie sind grundverschieden im Aufbau.

FPGA:
Die logischen Verknüpfungen werden durch Logikelemente realisiert, die
alle eine Flip Flop
Funktionalität integriert haben.
So ein Logikelement besteht aus einer Luck up table  (Wertetabelle), in
der für jede Eingangskombination ein Ausgangszustand zugeordnet wird.
Des weiterem werden die logischen Verknüpfungen durch SRAM-Zellen
gespeichert.
Die Signallaufzeit vom Eingang bis zum Ausgang ist nicht konstant,
sondern abhängig von der logischen Verknüpfung.

CPLD:
Bestehen aus Macrozellen, in denen die logischen Verknüpfungen durch
eine Und-Oder-Logik generiert wirt.
Eingänge werden in der Matrix UND-Verknüpft und dann ODER-Verknüpft den
Ausgängen zugewiesen.
Die logischen Verknüpfungen werden durch EEPROM-Zellen gespeichert.
Die Signallaufzeit vom Eingang bis zum Ausgang ist konstant.

Für genauere Informationen sau dir die Datenblätter der Hersteller an.
Da wird der Aufbau auch sehr gut beschrieben.

MfG
Holger

Autor: FPGAküchle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Grob gesprochenen besteht ein FPGA aus einem schachbrett von CPLD's.

CPLD ist im Prinzip:
viele Eingagspins -> Kombinatorik (AND,OR) -> wenige FlipFlops ->
Ausgangpins.

FPGA dagegen:

paar Eingangpins -> Kombinatrik (LUT mit 4 Eingängen) -> FlipFlop ->
Kombinatorik -> FliFlop -> ... -> Ausgang pins.

FPGA's haben bis zu Zehntausende FF, die grössten CPLD's grad 500.

Beispiel: ein 8bit microkontroller wie der Picoblaze passt grade so
in den grössten Xilinx CPLD (512), während man in die kleineren
FPGA's
mehrere davon unterbringen kann.

CPLD's haben eine Konstante durchlaufzeit, während bei FPGA's das
interne Routing sehr unterschiedlich ausfallen kann.

CPLD's nimmt man gern für Addressdecoder und FPGA's für komplexe
digitale verarbeitung. CPLD's müssen nicht nach PowerUp geladen
werden, FPGA's schon. CPLD's vertragen meist 5V Eingangspegel.

Soweit in Kürze,

Autor: FPGAküchle (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
<arnings und Errors:
<Warning: 936- the output buffer 'txerror_obuf' is missin an input
and
<will be deleted.

Da wird wohl txerror kein Wert zugewiesen, die warning hat aber wohl
nix mit dem folgenden Error zu tun.

Error: CPLD:837 - Insufficient number of macrocells. The design needs
at least 76 but only 36 left after allocating other resources. Device
953644pc was disqualified.
Error: Cpld:868 - Cannot fit the design into any of the specified
devices with the selected implemntation options.
Error: Fit Failed.

Du vermutest richtig, derzeit ist das Design zu groß für den CPLD. Du
kannst mit anderen synthese (XST?) und Fitteroptions vielleicht noch
was rausholen, allerdings erscheint mir ein 36er für eine UART ein
bisserl klein.

Optionen die bei mir zu kleinen Designs führen habe ich als screenshots
beigefügt.
Ich bin skeptisch, das der UART ins cpld passt, probiere mal den 72er.
Doppelt so groß aber akzeptable Preise.

Autor: Uwe Bonnes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Probier mal die XC95XL oder XC95XV Typen. Die koennen bei gleicher
Zellenzahl breitere Verknuefungen und sich auch noch billiger (aktuelle
Technologies).

Autor: Eric (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

erst einmal sorry dass ich diesen alten Thread hervorhole, aber er passt 
am besten zu meiner Frage die folgende ist:

Beim Xilinx-Spartan-3 entspricht ein Slice 2.25 Logic Cells. (Eine Logic 
Cell = LUT mit vier Eingängen, ein FF und Verbindungsmöglichkeiten zu 
anderen "Zellen").
Wie rechne ich ein FPGA-Slice/LC oder CLB auf ein "Xilinx 
CPLD-Macrocell" um? Bei Xilinx bin ich nicht fündig geworden.

Danke,
Eric

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Bei Xilinx bin ich nicht fündig geworden.
Das kannst du nicht so einfach umrechnen.
Deine Frage ist in etwa: wie rechne ich Gurken in Tomaten um.
Ja klar, muß gehen, beides ist Gemüse.

Wie rechne ich CPLDs in FPGAs um.
Muß gehen, beides sind programmierbare Bausteine.

Ein CPLD kann in einer (1) Makrozelle sehr viele Eingänge und sehr viele 
Ausgänge von anderen Makrozellen zu einem Ergebnis kombinatorisch 
verknüpfen. Super z.B. für logiklastige Multiplexer oder Adressdecoder. 
Um das selbe zu erreichen bräuchtest du in einem FPGA etliche LUTs.

Aber leider hat in einem CPLD jede Makrozelle nur 1 Flipflop. Und ein 
20-Bit-Zähler frisst dir bei einem kleinen CPLD XC9536 mehr als die 
Hälfte der FFs. In FPGAs sind schon fast überflüssig viele FFs da. Daher 
sind FPGAs toll für Zähler, State-Machines usw...

Aber wie gesagt, mit einer Formel wie Makrozelle = x*Logikzelle kann so 
ohne weiteres nicht gedient werden.

Als kleine Zusatzinfo:
CPLDs werden aussterben, weil sie zu wenig flexibel sind.
Lattice (der CPLD-Hersteller schlechthin) machts vor mit MachXO,
Xilinx plant dem Vernehmen nach keine Fortführung der CPLD-Produkte.

Und zudem haben diese CPLDs immer zu wenig FFs   :-(
Sieh dir das an:
Beitrag "Re: Umstieg von FPGA auf CPLD"

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.