Forum: FPGA, VHDL & Co. Fitterproblem


von Ralph H. (guru)


Lesenswert?

Habt Ihr nen Tipp für mich, wie ich den Fitter dazubewegen kann, die 
interne Verteilung der Programmierung im CPLD XC9572XL anders zu 
realisieren?
Konkret hab ich das Problem, das ich einen VHDL Code (mit Eurer Hilfe) 
gebastelt hab, der auch funktioniert. Dann hab ich die vom Fitter 
vorgegebenen Pins auch so verwendet und ne Platine gemacht, die funzt 
prima !
Nun wollte ich noch einige Dinge im Design ändern und bekomme nach der 
Änderung die Meldung "Mapping a total of 72 equations into 4 function 
blocks.........................ERROR:Cpld:892"
Gut, wenn ich die Pinzuweisung neumachen lasse, dann bekommt die 
Software das hin. Ich mag aber die Platine nicht mehr ändern. Gibt es da 
ne Chance noch Erfolg zu haben ?

Vielen Dank für jeden kleinen Hinweis sagt Ralph

von Klaus Falser (Gast)


Lesenswert?

72 Equations heisst, das das CPLD gestopft voll ist, da ist es 
schwierig, etwas zu tun.
Du kannst entweder Funktionen raus nehmen, oder Dir vielleicht einen 
XC95144 mit gleichem Gehäuse besorgen.
Schau Dir die Gleichungen im Report an, vielleicht siehst Du etwas, das 
viel Logik benötigt und einfacher geschrieben werden kann, z.B. 
Endbedingungen von Zählern oder ähnliches. Im Allgemeinen ist es bei 
CPLDs ungünstig z.B. auf größer oder kleiner zu testen, besser ist auf 
Gleichheit.

von Ralph H. (guru)


Lesenswert?

Hm.. naja mal sehen.

Nützt es eigentlich etwas, wenn ich im VHDL Code etwas umsortiere?
Also die umfangreichen Prozesse zuerst und die einfachen Signal ggf. 
weiter hinten ?

von T. M. (xgcfx)


Lesenswert?

Die Reihenfolge ist egal. Eine Möglichkeit ist, wie bereits 
vorgeschlagen, die in VHDL beschriebene Logik besser an die Ressourcen 
des CPLDs anzupassen.

von Ralph H. (guru)


Lesenswert?

Hm.. ich kann damit nicht viel anfangen. Hab schon den Code mal 
testweise vereinfacht..aber festgesellt, das die intern erzeugten 
Veknüpfungen doch wieder gleich sind.
Konkret die Frage... Wie passe ich die Logik an die Ressourcen des 
XC9572XL an ?

von Klaus Falser (Gast)


Lesenswert?

Ralph H. schrieb:
> Konkret die Frage... Wie passe ich die Logik an die Ressourcen des
> XC9572XL an ?

Ein paar Tipps habe ich Dir ja weiter oben gegeben, ansonsten müsstest 
Du deine Logik vielleicht einmal herzeigen.

von Ralph H. (guru)


Angehängte Dateien:

Lesenswert?

Klaus Falser schrieb:
> Ralph H. schrieb:
>> Konkret die Frage... Wie passe ich die Logik an die Ressourcen des
>> XC9572XL an ?
OK ich kann nur den XC9572 nehmen,. es ist der einzige "Große" im PLC84 
Gehäuse, oder hab ich was übersehen?
Hier ist der Code.. allerdings jetzt grade wild rumprobiert...

von Ralph H. (guru)


Lesenswert?

Klaus Falser schrieb:
> Ein paar Tipps habe ich Dir ja weiter oben gegeben, ansonsten müsstest
> Du deine Logik vielleicht einmal herzeigen.
Bringt es etwas, wenn ich statt umfangreicher OR Verknüpfungen einfach 
erstmal mehr Zwischenergebnisse in Form von Signalen erzeuge und dann 
diese Signale erst zum Schluß verknüpfe ?
Ich denke mal NEIN, es wird nichts bringen, richtig ?

von Klaus F. (kfalser)


Lesenswert?

Ralph H. schrieb:
> Bringt es etwas, wenn ich statt umfangreicher OR Verknüpfungen einfach
> erstmal mehr Zwischenergebnisse in Form von Signalen erzeuge und dann
> diese Signale erst zum Schluß verknüpfe ?

Jain.
Dazu musst Du einerseits den Fitter dazu bringen, die Zwischensignale 
nicht aufzulösen, sondern zu behalten -> Stichword attribute oder 
constraint "KEEP".
Andererseits funktionieren CPLD nicht so wie FPGAs, die Und-Verknüpfung 
in den Produkttermen können alle Eingangssignale des Functionblocks ohne 
Nachteile verarbeiten. Problematisch ist es nur, wenn für die 
Gleichungen in den Macrozellen des Functionblock zu viele verschiedene 
Signale benötigen.
Aber Du solltest Dir den Fitter Report anchauen, dort die Gleichungen 
suchen, die groß und kompliziert sind, und diese eventuell vereinfachen.
Man kann mit collapsing PTERM Limit und collapsing input limit spielen.

Außerdem sollte es deb XC95108 im PLC84 gehäuse geben, aber aus den 
Posts ist noch nicht ganz klar ob Du nun die 5V XC9500 oder die XC9500XL 
Familie verwendest.

von Ralph H. (guru)


Lesenswert?

Ich setz bisher den XC9572XL also die 5V Variante ein, hab aber das 
ganze Projekt auch schon erfolgreich mit dem XC95108 kompiliert. Da ich 
den XC9572 aber da hab, wollte ich nicht die teurere Variante (19€ grrr) 
wählen.
Außerdem sind diese Probleme hier für mich auch ein gutes Training :-) 
und ich lerne viel dabei, auch wenn ich NOCH nicht immer alle Eure 
Abhandlungen verstehe :D

Danke für all die Unterstützung. Ich hoffe ich kann auch mal was zurück 
geben. Gruß Ralph

PS: Nicht das anfangen wird belohnt...sondern das DURCHHALTEN!

von Klaus F. (kfalser)


Lesenswert?

Ralph H. schrieb:
> XC9572XL also die 5V

Der XC9500XL ist die 3.3V Variante!
Die Eingänge sind zwar 5 V kompatibel, d.h. die Eingänge halten 5V aus 
ohne kaputt zu werden, aber Versorgung und I/O Spannung sind 3,3V.

von Ralph H. (guru)


Lesenswert?

Sorry, hab natürlich nur die 5V Variante. War ein doofer Schreibfehler.

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
Noch kein Account? Hier anmelden.