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