Forum: FPGA, VHDL & Co. Xilinx Coding-Techniken: FPGA vs. CPLD


von Anguel S. (anguel)


Lesenswert?

Hallo Leute!

Ich bin dabei, mir "richtiges" VHDL anzueignen ;) Da es mir vor allem 
auch darum geht, guten synthesefähigen Code zu erzeugen, schaue ich mir 
gerade einige Videos zu empfohlenen Coding-Techniken von Xilinx an, wie 
z.B.:
http://www.xilinx.com/support/training/rel/Basic_HDL_CodingTech.htm

Diese Techniken scheinen ausschließlich für FPGAs bestimmt zu sein. Das 
ist momentan auch kein Problem, weil ich das Spartan 3E Starter Board 
habe. Mein Design soll Daten vom A/D-Wandler holen, diese in den 
externen RAM schreiben und die Daten sollen daraus von einem PC per 
RS232 abgerufen werden können. Da das Gerät schließlich jedoch sehr 
wahrscheinlich USB-powered werden soll, befürchte ich allerdings, dass 
ich das Design später doch für ein CoolRunner II CPLD umschreiben muss. 
Ich denke, dass CoolRunner II schon große Vorteile ggü. FPGAs hat, wenn 
es um Low-Power bzw. Power-over-USB geht, oder?

Meine Frage ist deshalb, ob dieses spätere "Umschreiben" des Codes von 
FPGA nach CPLD problematisch ist oder nicht. Vor allem geht es auch 
darum, ob die oben gennanten Coding-Techniken von Xilinx überhaupt für 
CPLDs so ohne weiteres gelten und übernommen werden sollten. Damit meine 
ich z.B. die von Xilinx empfohlene Nutzung von synchronen Resets, 
Verwendung von Registern und FSM-Coding-Tipps, etc.

Es wäre sehr hilfreich für mich, wenn mir jemand hierzu einige 
Experten-Tipps geben könnte. Ich bedanke mich schon mal im Voraus!

Viele Grüße,
Anguel

von Klaus F. (kfalser)


Lesenswert?

Ich programmiere mit CPLD und FPGA und kann sagen, dass von den 
prinzipiellen Coding-Techniken kein Unterschied ist.
Eine synchron getaktete Schaltung wird immer gleich beschrieben, ebenso 
wie eine FSM.

Unterschiede gibt es natürlich in den verfügbaren Resourcen, ein 
CoolRunner hat weder Blockram noch spezielle IO Blöcke mit z.B. DDR.
Und wenn Du z.B. die Fähigkeit des Coolrunners ausnützen möchtest, auf 
beiden Flanken zu schalten, so geht das im FPGA nicht.

Unterschiede ergeben sich hauptsächlich durch die Geschwindigkeit der 
Resources. Während ich in einem FPGA noch nie Schwierigkeiten mit 
größeren Zählern oder komplexerer Logik hatte, so habe ich zumindest bei 
den XC9500er CPLDs manchmal ganz schön kämpfen müssen um z.B. eine 
Schaltung mit größer oder kleiner Vergleichen gegen einen Zähler im 
Baustein unterzubringen und trotzdem noch die Timingvorgabe einzuhalten.

von Anguel S. (anguel)


Lesenswert?

Erstmal Danke für die schnelle Antwort!

Klaus Falser schrieb:
> Ich programmiere mit CPLD und FPGA und kann sagen, dass von den
> prinzipiellen Coding-Techniken kein Unterschied ist.

Das ist beruhigend.

> Unterschiede gibt es natürlich in den verfügbaren Resourcen

Ok, das ist klar, was nicht drin ist, kann man auch nicht nutzen.

> Unterschiede ergeben sich hauptsächlich durch die Geschwindigkeit der
> Resources.

Wie schnell taktet man so einen CoolRunner II? Hast Du evtl. auch 
Erfahrungen was Low-Power angeht? Macht das wirklich einen großen 
Unterschied, ob man CPLD oder FPGA nimmt?

Viele Grüße,
Anguel

von Klaus F. (kfalser)


Lesenswert?

Anguel S. schrieb:
> Wie schnell taktet man so einen CoolRunner II? Hast Du evtl. auch
> Erfahrungen was Low-Power angeht? Macht das wirklich einen großen
> Unterschied, ob man CPLD oder FPGA nimmt?

Das kann man so nicht sagen, das hängt vom Design ab.
Beim Coolrunner hat man sicher den Vorteil, dass die Verlustleistung 
proportional zur Frequenz ist, und dass man die Verlustleistung fast 
beliebig klein machen kann indem man die Frequenz erniedrigt.
Das ganze nützt aber wenig, wenn die restlichen Komponenten auf der 
Platine den meisten Strom benötigen.

Überlege Dir einmal das Power Budget Deiner Gesamtschaltung, dann siehst 
Du besser wieviel Dir für das FPGA oder CPLD sinnvoll übrigbleibt.
Wenn Du schon Teile deiner Schaltung hast, dann kannst Du mit XPower 
abschätzten wieviel die eine oder andere Lösung benötigt.

von Anguel S. (anguel)


Lesenswert?

Klaus Falser schrieb:

> Überlege Dir einmal das Power Budget Deiner Gesamtschaltung, dann siehst
> Du besser wieviel Dir für das FPGA oder CPLD sinnvoll übrigbleibt.
> Wenn Du schon Teile deiner Schaltung hast, dann kannst Du mit XPower
> abschätzten wieviel die eine oder andere Lösung benötigt.

Danke, werde mich mal informieren. Wollte nur so im groben wissen, ob 
Spartan 3 überhaupt in Frage kommt, wenn man das ganze über USB 
versorgen möchte, oder ob man da gleich zu einem CPLD greift.

von Christian R. (supachris)


Lesenswert?

Also wir haben hier ein Messsystem mit Spartan 3e an USB bus-powered. 
Der Spartan nimmt dabei die wenigste Leistung. Die analogen Komponenten 
brauchen da viel mehr Strom. Externer Speicher (IDT FIFO) schluckt 
leider auch etwas. Aber insgesamt kommen wir mit den 500mA recht gut 
aus.

von Anguel S. (anguel)


Lesenswert?

Christian R. schrieb:
> Also wir haben hier ein Messsystem mit Spartan 3e an USB bus-powered.
> Der Spartan nimmt dabei die wenigste Leistung.

Danke, das hört sich schon ganz gut an.

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.