Hallo,
ich studiere Maschinenbau und komme daher aus einem etwas unüblichen
Bereich für die arbeit mit FPGAs, dennoch hat es sich so entwickelt,
dass ich nun eine auf einem FPGA basierende Steuerung realisieren soll.
Ich habe Erfahrungen mit Mikrokontrollertechnik und anderen
Programmiersystemen, aber mit FPGAs hatte ich bisher noch nicht zu tun.
Mit VHDL werde ich wohl ganz gut zurecht kommen, allerdings habe ich
keine Ahnung welchen FPGA ich am besten einsetzten soll und ich hoffe
Ihr könnt mir helfen mich im Marktangebot zurecht zu finden.
Natürlich weiß ich, dass der FPGA von der Anwendung abhängig ist aber da
fängt es schon an. Ich will nicht alle Spezifikationen für die Steuerung
hier auflisten, zumal sich da immernoch etwas ändern kann.
Vielleicht könntet ihr auch eine kleine Liste mit Fragen zusammenstellen
die ich mir stellen muss um die Auswahl einzugrenzen.
Danke im Voraus
Steffen
> Ich will nicht alle Spezifikationen für die Steuerung hier auflisten
Aber so ein paar Eckdaten wären schon sinnvoll fürs Ratespiel :-o
Sonst hat man ja alle Freiheitsgrade vom kleinsten Lattice MachXO (5€)
bis zu den absoluten High-End-Geräten (pro Stück 1k€ aufwärts).
Rechengeschwindigkeit?
IO-Bedarf?
Kosten?
BTW: eine Steuerung "nur" auf einem FPGA aufzubauen ist eigentlich
ineffizient. Denn dazu mußt du einen Prozessor ins FPGA implementieren,
der auf jeden Fall weniger effizient ist, als ein dedizierter
Rechenknecht. Im IO-Bereich und zum Vorverarbeiten von schnellen
Eingangssignalen (100kHz aufwärts) ist ein FPGA dagegen schon sinnvoll.
Oder vielleicht die Frage ob ein CPLD Reicht...Aktuelle CPLDs wie z.B.
der MAXII von Altera sind schon rel. komplex. Solang du keinen Softcore
für deine Steuerung benötigst, kannst dich zei mal in die Richtung
bewegen. Hauptvorteil hier ist neben dem Preis auch die Tatsache das ein
CPLD nichtflüchtig ist, du also keinen externen Config-Flash braucht.
Ich arbeite zur Zeit mit einer Kombindation aus MAXII CPLD in
kombination mit einem Atmega32, vlt. wäre eine solche rel.
kostengünstige Kombination besser als ein kompllexer FPGA mit extra
config-flash.
Gruß
Andz
Hallo,
erstmal danke für die Anworten.
Ich gehe derzeit davon aus, dass ich maximal 13 Ausgänge und 4 Eingänge
brauche, wobei 1 Ausgang eventuelle analog werden muss, also A/D-Wandler
mit geringer Auflösung. Zusätzliche 12 Ein-/Ausgänge gehören zur
Kommunikation, wo theoretisch auch ein BUS verwendet werden könnte. Die
Rechengeschwindigkeit ist eher nebensächlich der Preis schon wichtiger,
ein CPLD ist auch eine gute Möglichkeit.
Idealerweise wollen wir die Steuerung ohne MC realisieren und lediglich
mit Logig das Programm umsetzen. Vom reinen Programmablauf sehe ich da
eigentlich keine Probleme, da die komplexeren Strukturen für die Aktorik
von fertigen Motorsteuerungen übernommen werden und lediglich die
Eingangsbefehle für die Motorsteuerungen generiert werden müssen. Etwas
anderes ist die Erzeugung von Random Daten, die nach derzeitiger Planung
verwendet werden sollen. Kann man einen Zufallsgenerator auf CPLDs
realisieren oder benötigt man da unbedingt einen MC?
Kann man CPLDs genauso beschreiben(VHDL) wie FPGAs oder ist das wieder
eine eigene Sprache und Hardwareumgebung?
Wie kann man einen BUS an CPLDs bzw FPGAs anschließen, benötigt man
einen MC für die Kontrolle?
Gruß
Steffen
> Kann man einen Zufallsgenerator auf CPLDs realisieren
Ja, Stichwort LFSR
> Kann man CPLDs genauso beschreiben(VHDL) wie FPGAs oder ist das wieder> eine eigene Sprache
Nein. Das geht ganz gut in VHDL...
> und Hardwareumgebung?
Das allerdings. In CPLDs hast du nur sehr wenige Speicherelemente
(Flipflops).
> Die Rechengeschwindigkeit ist eher nebensächlich
Also ein uC.
> der Preis schon wichtiger,
Also ein uC.
Billiger wird das weder mit einem FPGA noch mit einem CPLD, weil:
> ein CPLD ist auch eine gute Möglichkeit.
... da passt sowas nicht rein, da bin ich mir sicher. Wenn du einen
uC-Core im FPGA implementierst, brauchst du externen Speicher.
> Idealerweise wollen wir die Steuerung ohne MC realisieren
Wer stellt diese (absurde) Anforderung?
Das ist wie wenn du ein Haus bauen sollst, aber idealerweise mit einem
Plasmaschneider und einem Schweißinverter. Das sind beides High-Tech
Werkzeuge, aber leider die falschen. Genauso ist ein FPGA für deine
Anforderungen (langsam, analog, billig) das falsche Werkzeug.
> Wie kann man einen BUS an CPLDs bzw FPGAs anschließen, benötigt man> einen MC für die Kontrolle?
Nein.
Aber irgendwie scheint mir, dir fehlt grundlegend das
Vorstellungvermögen, was deine Aufgabe ist, und wie die am
effizientesten zu lösen ist. Sieh dir doch einfach mal Evaluationboards
von FPGAs und Microcontrollern an und lies die Application-Notes und die
Programmbeispiele dazu.
Also wenn mich nicht alles täuscht, dann geht man bei der Entwicklung
von FPGA Projekten völlig anders vor als bei Mikrocontrollerprojekten.
Bei Mikrocontrollerprojekten legt man erst den uC fest und beginnt dann
mit dem Coden. Bei FPGA Projekten fängt man an zu programmieren und das
Tool wir einem dann schliesslich sagen, in welches Derivat das Zeug
schliesslich noch reinpasst.
Du müsstest also nur den Hersteller und die Produktefamilie ein wenig
eingrenzen um beginnen zu können.
Aber ich arbeite nicht mit FPGA's, daher ist mein Halbwissen vielleicht
nicht mehr aktuell...
Freut mich, dass Ihr das Ähnlich seht wie ich, je mehr ich mich mit
FPGAs oder CPLDs beschäftige desto mehr frage ich mich ob die Idee diese
Aufgabe so zu lösen wirklich sinnvoll ist. Ich habe bereits bei meiner
letzten Projektarbeit eine auf Mc basierende Steuerung für eine ähnliche
Aufgabe entwickelt und da währe eine CPLD Unterstützung sinnvoll
gewesen, da vier inkrementalgeber abgefragt werden mussten und der MC
damit schon zu 90% ausgelastet war. Aber das übernimmt hier die
Motorsteuerung des Herstellers.
Leider würde die Arbeit damit für mich etwas an Reiz verlieren, da ich
mit MCs schon gearbeitet habe und das kaum neues für mein Studium
bietet. Ich werde mal mit meinen Betreuern sprechen was wir am besten
machen.
Danke
Steffen
> und da währe eine CPLD Unterstützung sinnvoll> gewesen, da vier inkrementalgeber abgefragt werden mussten
Richtig, hier könnte ein CPLD gut weiterhelfen, insbesondere, weil die
wenigsten uC ein Quadratur-Interface haben.
Aber auch ein Softcore in einem FPGA ist letzendlich "nur" ein uC. Er
ist in VHDL beschrieben und wird dann auch wie ein uC programmiert: in C
oder Assembler. U.U. machst du dann auf dem FPGA genau das selbe wie mit
einem uC.