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
Spartan 3, Virtex 5? Hängt nun wirklich arg von der Art der Steuerung ab die du machen willst.
> 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
wenn geschwindigkeit und nur ein paar ein und ausgänge gebraucht werden warum dann überhaupt einen FPGA und nicht ein µC?
> 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.
Danke nochmals für die Hilfe, das Projekt wird jetzt umgestellt und mit einem uC realisiert, dazu findet Ihr einen neuen Beitrag im entsrechenden Forum. Beitrag "Steuerungsprojekt mit bidirektionaler Kommunikation" Steffen
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.