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
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.
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
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.
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
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
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,
<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.
Probier mal die XC95XL oder XC95XV Typen. Die koennen bei gleicher Zellenzahl breitere Verknuefungen und sich auch noch billiger (aktuelle Technologies).
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
> 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"
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.